rspec integration pg12 1/8
Passed Started
by
@DylanGriffith

Dylan Griffith
1Running with gitlab-runner 14.4.0-rc1 (bc99a056)2 on docker-auto-scale-com d5ae8d253 feature flags: FF_USE_FASTZIP:true6Using Docker executor with image registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.7.patched-golang-1.16-git-2.33-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-12-graphicsmagick-1.3.36 ...7Starting service postgres:12 ...8Pulling docker image postgres:12 ...9Using docker image sha256:5c4789e9bb7bb119b87daeffe7ac587b6e6eff4072a1b43b11a5a4209ed7c265 for postgres:12 with digest postgres@sha256:03a821bf55c06afc5b1eca7d1ba2ca0fd13edbe0e2794a90d741f1fea31787af ...10Starting service redis:5.0-alpine ...11Pulling docker image redis:5.0-alpine ...12Using docker image sha256:a7a6051077c6c9cfc9ad478778271b49900cb5c4667e64a4128306d8f41a5396 for redis:5.0-alpine with digest redis@sha256:cb5840073dc475b45bf856eb666f5e4d19e3b1ae882e0f3a1396d399cfa23702 ...13Waiting for services to be up and running...14Authenticating with credentials from job payload (GitLab Registry)15Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.7.patched-golang-1.16-git-2.33-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-12-graphicsmagick-1.3.36 ...16Using docker image sha256:b8b4629afe237f58781d0f297f9802abe7234c61d769cef19072e62e539b44db for registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.7.patched-golang-1.16-git-2.33-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-12-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images@sha256:eafffa71075a6c3a6132f20dee186f63e8e6446d7fbde8f8a3aa5c1f8e66ba98 ...18Running on runner-d5ae8d25-project-278964-concurrent-0 via runner-d5ae8d25-gsrm-1635280643-9258211c...20$ eval "$CI_PRE_CLONE_SCRIPT"21Downloading archived master...22Connecting to storage.googleapis.com (172.217.193.128:443)23saving to '/tmp/gitlab.tar.gz'24gitlab.tar.gz 20% |****** | 70.3M 0:00:03 ETA25gitlab.tar.gz 92% |***************************** | 316M 0:00:00 ETA26gitlab.tar.gz 100% |********************************| 342M 0:00:00 ETA27'/tmp/gitlab.tar.gz' saved28Extracting tarball into /builds/gitlab-org/gitlab...29Fetching changes with git depth set to 20...30Initialized empty Git repository in /builds/gitlab-org/gitlab/.git/31Created fresh repository.32remote: Enumerating objects: 127042, done. 33remote: Counting objects: 100% (127042/127042), done. 34remote: Compressing objects: 100% (85632/85632), done. 35remote: Total 127042 (delta 58018), reused 87454 (delta 36683), pack-reused 0 36Receiving objects: 100% (127042/127042), 124.85 MiB | 27.59 MiB/s, done.37Resolving deltas: 100% (58018/58018), done.39 * [new ref] e28bf2006022fa717b8e023304aaae32593982e4 -> refs/pipelines/39605215340 * [new branch] master -> origin/master41Checking out e28bf200 as master...42Skipping Git submodules setup44Checking cache for ruby-gems-v1-5...45cache.zip is up to date 46Successfully extracted cache47Checking cache for gitaly-ruby-gems-v1-5...48Downloading cache.zip from https://storage.googleapis.com/gitlab-com-runners-cache/project/278964/gitaly-ruby-gems-v1-5 49Successfully extracted cache51Downloading artifacts for compile-test-assets (1718320136)...52Downloading artifacts from coordinator... ok id=1718320136 responseStatus=200 OK token=ransSmQE53Downloading artifacts for retrieve-tests-metadata (1718320147)...54Downloading artifacts from coordinator... ok id=1718320147 responseStatus=200 OK token=u5F8xuWx55Downloading artifacts for setup-test-env (1718320139)...56Downloading artifacts from coordinator... ok id=1718320139 responseStatus=200 OK token=GEzxAMiL58Using docker image sha256:b8b4629afe237f58781d0f297f9802abe7234c61d769cef19072e62e539b44db for registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.7.patched-golang-1.16-git-2.33-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-12-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images@sha256:eafffa71075a6c3a6132f20dee186f63e8e6446d7fbde8f8a3aa5c1f8e66ba98 ...59$ echo $FOSS_ONLY60$ [ "$FOSS_ONLY" = "1" ] && rm -rf ee/ qa/spec/ee/ qa/qa/specs/features/ee/ qa/qa/ee/ qa/qa/ee.rb61$ export GOPATH=$CI_PROJECT_DIR/.go62$ mkdir -p $GOPATH63$ source scripts/utils.sh64$ source scripts/prepare_build.sh65Bundler version 2.1.466production:development67Settings are listed in order of priority. The top value will be used.68path69Set for the current user (/root/.bundle/config): "/builds/gitlab-org/gitlab/vendor"70clean71Set for the current user (/root/.bundle/config): "true"72without73Set via BUNDLE_WITHOUT: [:production, :development]74install_flags75Set via BUNDLE_INSTALL_FLAGS: "--jobs=$(nproc) --retry=3 --quiet"76$ bundle install --jobs=$(nproc) --retry=3 --quiet && bundle check77The Gemfile's dependencies are satisfied78==> 'bundle install --jobs=$(nproc) --retry=3 --quiet && bundle check' succeeded in 2 seconds.79$ bundle pristine pg80Installing pg 1.2.3 with native extensions81==> 'bundle pristine pg' succeeded in 9 seconds.82$ setup_db_user_only83CREATE ROLE84GRANT85==> 'setup_db_user_only' succeeded in 0 seconds.86$ bundle exec rake db:drop db:create db:structure:load db:migrate gitlab:db:setup_ee87Dropped database 'gitlabhq_test'88Created database 'gitlabhq_test'89DEPRECATION WARNING: Using `bin/rails db:structure:load` is deprecated and will be removed in Rails 6.2. Configure the format using `config.active_record.schema_format = :sql` to use `structure.sql` and run `bin/rails db:schema:load` instead. (called from load at /builds/gitlab-org/gitlab/vendor/ruby/2.7.0/bin/rake:23)90Dropped database 'gitlabhq_geo_test'91Created database 'gitlabhq_geo_test'92==> 'bundle exec rake db:drop db:create db:structure:load db:migrate gitlab:db:setup_ee' succeeded in 31 seconds.93$ run_timed_command "gem install knapsack --no-document"94$ gem install knapsack --no-document95Successfully installed knapsack-4.0.0961 gem installed97==> 'gem install knapsack --no-document' succeeded in 0 seconds.98$ run_timed_command "scripts/gitaly-test-spawn"99$ scripts/gitaly-test-spawn100Don't run Bundler as root. Bundler can ask for sudo if it is needed, and101installing your bundle as root will break this application for all non-root102users on this machine.103Using abstract_type 0.0.7104Using concurrent-ruby 1.1.9105Using i18n 1.8.10106Using minitest 5.14.4107Using tzinfo 2.0.4108Using zeitwerk 2.4.2109Using activesupport 6.1.4.1110Using builder 3.2.4111Using erubi 1.10.0112Using mini_portile2 2.5.1113Using racc 1.5.2114Using nokogiri 1.11.7 (x86_64-linux)115Using rails-dom-testing 2.0.3116Using crass 1.0.6117Using loofah 2.12.0118Using rails-html-sanitizer 1.4.2119Using actionview 6.1.4.1120Using rack 2.2.3121Using rack-test 1.1.0122Using actionpack 6.1.4.1123Using ice_nine 0.11.2124Using thread_safe 0.3.6125Using memoizable 0.4.2126Using adamantium 0.2.0127Using public_suffix 4.0.6128Using addressable 2.7.0129Using ast 2.4.1130Using binding_ninja 0.2.3131Using bundler 2.1.4132Using charlock_holmes 0.7.7133Using coderay 1.1.2134Using equalizer 0.0.11135Using concord 0.1.5136Using diff-lcs 1.3137Using dotenv 2.7.6138Using escape_utils 1.2.1139Using factory_bot 5.0.2140Using multipart-post 2.1.1141Using faraday 1.0.1142Using ffi 1.15.3143Using json 2.5.1144Using gemojione 3.3.0145Using mini_mime 1.0.2146Using rugged 1.2.0147Using github-linguist 7.12.1148Using github-markup 1.7.0149Using mime-types-data 3.2020.1104150Using mime-types 3.3.1151Using gitlab-gollum-rugged_adapter 0.4.4.4.gitlab.1152Using rouge 3.26.0153Using nokogumbo 1.5.0154Using sanitize 4.6.6155Using stringex 2.8.5156Using gitlab-gollum-lib 4.2.7.10.gitlab.1157Using google-protobuf 3.17.3 (x86_64-linux)158Using googleapis-common-protos-types 1.1.0159Using grpc 1.30.2 (x86_64-linux)160Using opentracing 0.5.0161Using thrift 0.15.0162Using jaeger-client 1.1.0163Using pg_query 2.1.1164Using redis 4.4.0165Using gitlab-labkit 0.21.2166Using gitlab-markup 1.7.1167Using grpc-tools 1.30.2168Using sawyer 0.8.2169Using octokit 4.20.0170Using reverse_markdown 1.4.0171Using thor 1.1.0172Using licensee 9.14.1173Using method_source 0.9.2174Using msgpack 1.3.3175Using optimist 3.0.1176Using parallel 1.19.2177Using parser 2.7.2.0178Using procto 0.0.3179Using unparser 0.4.7180Using proc_to_ast 0.1.0181Using pry 0.12.2182Using rainbow 3.0.0183Using rbtrace 0.4.14184Using rdoc 6.3.2185Using regexp_parser 1.8.1186Using rexml 3.2.4187Using rspec-support 3.8.0188Using rspec-core 3.8.0189Using rspec-expectations 3.8.3190Using rspec-mocks 3.8.0191Using rspec 3.8.0192Using rspec-parameterized 0.4.2193Using rubocop-ast 0.2.0194Using ruby-progressbar 1.10.1195Using unicode-display_width 1.7.0196Using rubocop 0.86.0197Using sentry-raven 3.0.4198Using timecop 0.9.1199Bundle complete! 21 Gemfile dependencies, 96 gems now installed.200Gems in the groups production and development were not installed.201Bundled gems are installed into `/builds/gitlab-org/gitlab/vendor/gitaly-ruby`202Checking gitaly-ruby Gemfile...203Checking gitaly-ruby bundle...204The Gemfile's dependencies are satisfied205Trying to connect to gitaly: ............................................... OK206Trying to connect to gitaly2: ........................................................................ OK207Trying to connect to praefect: ......... OK208==> 'scripts/gitaly-test-spawn' succeeded in 15 seconds.209$ source ./scripts/rspec_helpers.sh210$ rspec_paralellized_job "--tag ~quarantine --tag ~geo --tag ~level:migration"211KNAPSACK_TEST_FILE_PATTERN: spec/{controllers,mailers,requests}{,/**/}*_spec.rb212Knapsack node specs:213spec/requests/api/npm_project_packages_spec.rb214spec/controllers/projects/issues_controller_spec.rb215spec/requests/api/discussions_spec.rb216spec/controllers/dashboard_controller_spec.rb217spec/controllers/groups_controller_spec.rb218spec/requests/api/wikis_spec.rb219spec/requests/api/snippets_spec.rb220spec/requests/api/project_export_spec.rb221spec/requests/api/internal/base_spec.rb222spec/controllers/application_controller_spec.rb223spec/requests/api/graphql/project/issues_spec.rb224spec/requests/api/ci/pipeline_schedules_spec.rb225spec/controllers/import/gitea_controller_spec.rb226spec/requests/api/project_import_spec.rb227spec/requests/api/protected_branches_spec.rb228spec/requests/api/deploy_tokens_spec.rb229spec/controllers/groups/group_members_controller_spec.rb230spec/requests/api/pages/public_access_spec.rb231spec/controllers/projects/merge_requests/conflicts_controller_spec.rb232spec/controllers/projects/compare_controller_spec.rb233spec/controllers/dashboard/projects_controller_spec.rb234spec/requests/api/graphql/metrics/dashboard_query_spec.rb235spec/controllers/projects/raw_controller_spec.rb236spec/controllers/concerns/group_tree_spec.rb237spec/controllers/projects/settings/operations_controller_spec.rb238spec/requests/projects/merge_requests/diffs_spec.rb239spec/controllers/import/available_namespaces_controller_spec.rb240spec/requests/api/graphql/mutations/award_emojis/add_spec.rb241spec/controllers/projects/design_management/designs/raw_images_controller_spec.rb242spec/mailers/emails/in_product_marketing_spec.rb243spec/controllers/projects/ci/lints_controller_spec.rb244spec/requests/api/graphql/project/pipeline_spec.rb245spec/controllers/repositories/git_http_controller_spec.rb246spec/controllers/groups/boards_controller_spec.rb247spec/controllers/projects/deployments_controller_spec.rb248spec/controllers/projects/graphs_controller_spec.rb249spec/requests/api/group_variables_spec.rb250spec/controllers/projects/hooks_controller_spec.rb251spec/requests/api/merge_request_approvals_spec.rb252spec/controllers/projects/tracings_controller_spec.rb253spec/requests/api/graphql/mutations/packages/destroy_file_spec.rb254spec/controllers/concerns/controller_with_cross_project_access_check_spec.rb255spec/requests/projects/issues/discussions_spec.rb256spec/controllers/groups/imports_controller_spec.rb257spec/controllers/admin/applications_controller_spec.rb258spec/controllers/profiles_controller_spec.rb259spec/requests/api/graphql/boards/board_list_query_spec.rb260spec/controllers/import/bulk_imports_controller_spec.rb261spec/requests/api/graphql/mutations/todos/mark_done_spec.rb262spec/requests/api/markdown_spec.rb263spec/requests/api/graphql/group/merge_requests_spec.rb264spec/controllers/concerns/renders_commits_spec.rb265spec/controllers/jira_connect/events_controller_spec.rb266spec/controllers/projects/cycle_analytics/events_controller_spec.rb267spec/requests/api/personal_access_tokens_spec.rb268spec/controllers/concerns/issuable_collections_spec.rb269spec/requests/api/ci/runner/runners_delete_spec.rb270spec/controllers/admin/groups_controller_spec.rb271spec/requests/api/remote_mirrors_spec.rb272spec/requests/api/ci/resource_groups_spec.rb273spec/controllers/projects/learn_gitlab_controller_spec.rb274spec/controllers/projects/mattermosts_controller_spec.rb275spec/requests/api/graphql/mutations/merge_requests/set_assignees_spec.rb276spec/controllers/groups/dependency_proxies_controller_spec.rb277spec/controllers/projects/refs_controller_spec.rb278spec/requests/members/mailgun/permanent_failure_spec.rb279spec/requests/api/pages/pages_spec.rb280spec/requests/api/graphql/mutations/todos/mark_all_done_spec.rb281spec/requests/api/api_guard/response_coercer_middleware_spec.rb282spec/requests/api/graphql/terraform/state/lock_spec.rb283spec/requests/api/graphql/mutations/commits/create_spec.rb284spec/requests/api/graphql/mutations/ci/job_token_scope/add_project_spec.rb285spec/requests/api/import_github_spec.rb286spec/controllers/oauth/jira/authorizations_controller_spec.rb287spec/requests/api/graphql/mutations/todos/restore_many_spec.rb288spec/requests/api/graphql/project/jira_service_spec.rb289spec/controllers/concerns/sorting_preference_spec.rb290spec/requests/projects/cluster_agents_controller_spec.rb291spec/requests/api/graphql/mutations/ci/job_unschedule_spec.rb292spec/requests/api/graphql/ci/application_setting_spec.rb293spec/requests/api/graphql/metadata_query_spec.rb294spec/controllers/projects/analytics/cycle_analytics/value_streams_controller_spec.rb295spec/requests/api/graphql/project/repository/blobs_spec.rb296spec/requests/api/graphql/mutations/alert_management/prometheus_integration/update_spec.rb297spec/controllers/admin/health_check_controller_spec.rb298spec/requests/api/graphql/mutations/alert_management/alerts/update_alert_status_spec.rb299spec/requests/api/container_registry_event_spec.rb300spec/mailers/email_rejection_mailer_spec.rb301spec/requests/api/conan_project_packages_spec.rb302Filter specs:303Running specs:304Running all node tests without filter305spec/requests/api/npm_project_packages_spec.rb306spec/controllers/projects/issues_controller_spec.rb307spec/requests/api/discussions_spec.rb308spec/controllers/dashboard_controller_spec.rb309spec/controllers/groups_controller_spec.rb310spec/requests/api/wikis_spec.rb311spec/requests/api/snippets_spec.rb312spec/requests/api/project_export_spec.rb313spec/requests/api/internal/base_spec.rb314spec/controllers/application_controller_spec.rb315spec/requests/api/graphql/project/issues_spec.rb316spec/requests/api/ci/pipeline_schedules_spec.rb317spec/controllers/import/gitea_controller_spec.rb318spec/requests/api/project_import_spec.rb319spec/requests/api/protected_branches_spec.rb320spec/requests/api/deploy_tokens_spec.rb321spec/controllers/groups/group_members_controller_spec.rb322spec/requests/api/pages/public_access_spec.rb323spec/controllers/projects/merge_requests/conflicts_controller_spec.rb324spec/controllers/projects/compare_controller_spec.rb325spec/controllers/dashboard/projects_controller_spec.rb326spec/requests/api/graphql/metrics/dashboard_query_spec.rb327spec/controllers/projects/raw_controller_spec.rb328spec/controllers/concerns/group_tree_spec.rb329spec/controllers/projects/settings/operations_controller_spec.rb330spec/requests/projects/merge_requests/diffs_spec.rb331spec/controllers/import/available_namespaces_controller_spec.rb332spec/requests/api/graphql/mutations/award_emojis/add_spec.rb333spec/controllers/projects/design_management/designs/raw_images_controller_spec.rb334spec/mailers/emails/in_product_marketing_spec.rb335spec/controllers/projects/ci/lints_controller_spec.rb336spec/requests/api/graphql/project/pipeline_spec.rb337spec/controllers/repositories/git_http_controller_spec.rb338spec/controllers/groups/boards_controller_spec.rb339spec/controllers/projects/deployments_controller_spec.rb340spec/controllers/projects/graphs_controller_spec.rb341spec/requests/api/group_variables_spec.rb342spec/controllers/projects/hooks_controller_spec.rb343spec/requests/api/merge_request_approvals_spec.rb344spec/controllers/projects/tracings_controller_spec.rb345spec/requests/api/graphql/mutations/packages/destroy_file_spec.rb346spec/controllers/concerns/controller_with_cross_project_access_check_spec.rb347spec/requests/projects/issues/discussions_spec.rb348spec/controllers/groups/imports_controller_spec.rb349spec/controllers/admin/applications_controller_spec.rb350spec/controllers/profiles_controller_spec.rb351spec/requests/api/graphql/boards/board_list_query_spec.rb352spec/controllers/import/bulk_imports_controller_spec.rb353spec/requests/api/graphql/mutations/todos/mark_done_spec.rb354spec/requests/api/markdown_spec.rb355spec/requests/api/graphql/group/merge_requests_spec.rb356spec/controllers/concerns/renders_commits_spec.rb357spec/controllers/jira_connect/events_controller_spec.rb358spec/controllers/projects/cycle_analytics/events_controller_spec.rb359spec/requests/api/personal_access_tokens_spec.rb360spec/controllers/concerns/issuable_collections_spec.rb361spec/requests/api/ci/runner/runners_delete_spec.rb362spec/controllers/admin/groups_controller_spec.rb363spec/requests/api/remote_mirrors_spec.rb364spec/requests/api/ci/resource_groups_spec.rb365spec/controllers/projects/learn_gitlab_controller_spec.rb366spec/controllers/projects/mattermosts_controller_spec.rb367spec/requests/api/graphql/mutations/merge_requests/set_assignees_spec.rb368Knapsack report generator started!369Run options: exclude {:quarantine=>true, :geo=>true, :level=>"migration"}370==> /builds/gitlab-org/gitlab/tmp/tests/gitlab-test_bare set up in 0.055424155 seconds...371Test environment set up in 0.841142471 seconds372API::NpmProjectPackages373 GET /api/v4/projects/:id/packages/npm/*package_name374 behaves like handling get metadata requests375 with a group namespace376 behaves like handling all conditions377 auth: nil, package_name_type: :scoped_naming_convention, request_forward: true, visibility: :public, user_role: nil, expected_result: :accept, expected_status: :ok378 behaves like accept metadata request379 accepts the metadata request380 avoids N+1 database queries381 auth: nil, package_name_type: :scoped_naming_convention, request_forward: false, visibility: :public, user_role: nil, expected_result: :accept, expected_status: :ok382 behaves like accept metadata request383 accepts the metadata request384 avoids N+1 database queries385 auth: nil, package_name_type: :scoped_no_naming_convention, request_forward: true, visibility: :public, user_role: nil, expected_result: :accept, expected_status: :ok386 behaves like accept metadata request387 accepts the metadata request388 avoids N+1 database queries389 auth: nil, package_name_type: :scoped_no_naming_convention, request_forward: false, visibility: :public, user_role: nil, expected_result: :accept, expected_status: :ok390 behaves like accept metadata request391 accepts the metadata request392 avoids N+1 database queries393 auth: nil, package_name_type: :unscoped, request_forward: true, visibility: :public, user_role: nil, expected_result: :accept, expected_status: :ok394 behaves like accept metadata request395 accepts the metadata request396 avoids N+1 database queries397 auth: nil, package_name_type: :unscoped, request_forward: false, visibility: :public, user_role: nil, expected_result: :accept, expected_status: :ok398 behaves like accept metadata request399 accepts the metadata request400 avoids N+1 database queries401 auth: nil, package_name_type: :non_existing, request_forward: true, visibility: :public, user_role: nil, expected_result: :redirect, expected_status: :redirected402 behaves like redirect metadata request403 redirects metadata request404 auth: nil, package_name_type: :non_existing, request_forward: false, visibility: :public, user_role: nil, expected_result: :reject, expected_status: :not_found405 behaves like reject metadata request406 rejects the metadata request407 auth: nil, package_name_type: :scoped_naming_convention, request_forward: true, visibility: :private, user_role: nil, expected_result: :reject, expected_status: :not_found408 behaves like reject metadata request409 rejects the metadata request410 auth: nil, package_name_type: :scoped_naming_convention, request_forward: false, visibility: :private, user_role: nil, expected_result: :reject, expected_status: :not_found411 behaves like reject metadata request412 rejects the metadata request413 auth: nil, package_name_type: :scoped_no_naming_convention, request_forward: true, visibility: :private, user_role: nil, expected_result: :reject, expected_status: :not_found414 behaves like reject metadata request415 rejects the metadata request416 auth: nil, package_name_type: :scoped_no_naming_convention, request_forward: false, visibility: :private, user_role: nil, expected_result: :reject, expected_status: :not_found417 behaves like reject metadata request418 rejects the metadata request419 auth: nil, package_name_type: :unscoped, request_forward: true, visibility: :private, user_role: nil, expected_result: :reject, expected_status: :not_found420 behaves like reject metadata request421 rejects the metadata request422 auth: nil, package_name_type: :unscoped, request_forward: false, visibility: :private, user_role: nil, expected_result: :reject, expected_status: :not_found423 behaves like reject metadata request424 rejects the metadata request425 auth: nil, package_name_type: :non_existing, request_forward: true, visibility: :private, user_role: nil, expected_result: :redirect, expected_status: :redirected426 behaves like redirect metadata request427 redirects metadata request428 auth: nil, package_name_type: :non_existing, request_forward: false, visibility: :private, user_role: nil, expected_result: :reject, expected_status: :not_found429 behaves like reject metadata request430 rejects the metadata request431 auth: nil, package_name_type: :scoped_naming_convention, request_forward: true, visibility: :internal, user_role: nil, expected_result: :reject, expected_status: :not_found432 behaves like reject metadata request433 rejects the metadata request434 auth: nil, package_name_type: :scoped_naming_convention, request_forward: false, visibility: :internal, user_role: nil, expected_result: :reject, expected_status: :not_found435 behaves like reject metadata request436 rejects the metadata request437 auth: nil, package_name_type: :scoped_no_naming_convention, request_forward: true, visibility: :internal, user_role: nil, expected_result: :reject, expected_status: :not_found438 behaves like reject metadata request439 rejects the metadata request440 auth: nil, package_name_type: :scoped_no_naming_convention, request_forward: false, visibility: :internal, user_role: nil, expected_result: :reject, expected_status: :not_found441 behaves like reject metadata request442 rejects the metadata request443 auth: nil, package_name_type: :unscoped, request_forward: true, visibility: :internal, user_role: nil, expected_result: :reject, expected_status: :not_found444 behaves like reject metadata request445 rejects the metadata request446 auth: nil, package_name_type: :unscoped, request_forward: false, visibility: :internal, user_role: nil, expected_result: :reject, expected_status: :not_found447 behaves like reject metadata request448 rejects the metadata request449 auth: nil, package_name_type: :non_existing, request_forward: true, visibility: :internal, user_role: nil, expected_result: :redirect, expected_status: :redirected450 behaves like redirect metadata request451 redirects metadata request452 auth: nil, package_name_type: :non_existing, request_forward: false, visibility: :internal, user_role: nil, expected_result: :reject, expected_status: :not_found453 behaves like reject metadata request454 rejects the metadata request455 auth: :oauth, package_name_type: :scoped_naming_convention, request_forward: true, visibility: :public, user_role: :guest, expected_result: :accept, expected_status: :ok456 behaves like accept metadata request457 accepts the metadata request458 avoids N+1 database queries459 auth: :oauth, package_name_type: :scoped_naming_convention, request_forward: true, visibility: :public, user_role: :reporter, expected_result: :accept, expected_status: :ok460 behaves like accept metadata request461 accepts the metadata request462 avoids N+1 database queries463 auth: :oauth, package_name_type: :scoped_naming_convention, request_forward: false, visibility: :public, user_role: :guest, expected_result: :accept, expected_status: :ok464 behaves like accept metadata request465 accepts the metadata request466 avoids N+1 database queries467 auth: :oauth, package_name_type: :scoped_naming_convention, request_forward: false, visibility: :public, user_role: :reporter, expected_result: :accept, expected_status: :ok468 behaves like accept metadata request469 accepts the metadata request470 avoids N+1 database queries471 auth: :oauth, package_name_type: :scoped_no_naming_convention, request_forward: true, visibility: :public, user_role: :guest, expected_result: :accept, expected_status: :ok472 behaves like accept metadata request473 accepts the metadata request474 avoids N+1 database queries475 auth: :oauth, package_name_type: :scoped_no_naming_convention, request_forward: true, visibility: :public, user_role: :reporter, expected_result: :accept, expected_status: :ok476 behaves like accept metadata request477 accepts the metadata request478 avoids N+1 database queries479 auth: :oauth, package_name_type: :scoped_no_naming_convention, request_forward: false, visibility: :public, user_role: :guest, expected_result: :accept, expected_status: :ok480 behaves like accept metadata request481 accepts the metadata request482 avoids N+1 database queries483 auth: :oauth, package_name_type: :scoped_no_naming_convention, request_forward: false, visibility: :public, user_role: :reporter, expected_result: :accept, expected_status: :ok484 behaves like accept metadata request485 accepts the metadata request486 avoids N+1 database queries487 auth: :oauth, package_name_type: :unscoped, request_forward: true, visibility: :public, user_role: :guest, expected_result: :accept, expected_status: :ok488 behaves like accept metadata request489 accepts the metadata request490 avoids N+1 database queries491 auth: :oauth, package_name_type: :unscoped, request_forward: true, visibility: :public, user_role: :reporter, expected_result: :accept, expected_status: :ok492 behaves like accept metadata request493 accepts the metadata request494 avoids N+1 database queries495 auth: :oauth, package_name_type: :unscoped, request_forward: false, visibility: :public, user_role: :guest, expected_result: :accept, expected_status: :ok496 behaves like accept metadata request497 accepts the metadata request498 avoids N+1 database queries499 auth: :oauth, package_name_type: :unscoped, request_forward: false, visibility: :public, user_role: :reporter, expected_result: :accept, expected_status: :ok500 behaves like accept metadata request501 accepts the metadata request502 avoids N+1 database queries503 auth: :oauth, package_name_type: :non_existing, request_forward: true, visibility: :public, user_role: :guest, expected_result: :redirect, expected_status: :redirected504 behaves like redirect metadata request505 redirects metadata request506 auth: :oauth, package_name_type: :non_existing, request_forward: true, visibility: :public, user_role: :reporter, expected_result: :redirect, expected_status: :redirected507 behaves like redirect metadata request508 redirects metadata request509 auth: :oauth, package_name_type: :non_existing, request_forward: false, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :not_found510 behaves like reject metadata request511 rejects the metadata request512 auth: :oauth, package_name_type: :non_existing, request_forward: false, visibility: :public, user_role: :reporter, expected_result: :reject, expected_status: :not_found513 behaves like reject metadata request514 rejects the metadata request515 auth: :oauth, package_name_type: :scoped_naming_convention, request_forward: true, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden516 behaves like reject metadata request517 rejects the metadata request518 auth: :oauth, package_name_type: :scoped_naming_convention, request_forward: true, visibility: :private, user_role: :reporter, expected_result: :accept, expected_status: :ok519 behaves like accept metadata request520 accepts the metadata request521 avoids N+1 database queries522 auth: :oauth, package_name_type: :scoped_naming_convention, request_forward: false, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden523 behaves like reject metadata request524 rejects the metadata request525 auth: :oauth, package_name_type: :scoped_naming_convention, request_forward: false, visibility: :private, user_role: :reporter, expected_result: :accept, expected_status: :ok526 behaves like accept metadata request527 accepts the metadata request528 avoids N+1 database queries529 auth: :oauth, package_name_type: :scoped_no_naming_convention, request_forward: true, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden530 behaves like reject metadata request531 rejects the metadata request532 auth: :oauth, package_name_type: :scoped_no_naming_convention, request_forward: true, visibility: :private, user_role: :reporter, expected_result: :accept, expected_status: :ok533 behaves like accept metadata request534 accepts the metadata request535 avoids N+1 database queries536 auth: :oauth, package_name_type: :scoped_no_naming_convention, request_forward: false, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden537 behaves like reject metadata request538 rejects the metadata request539 auth: :oauth, package_name_type: :scoped_no_naming_convention, request_forward: false, visibility: :private, user_role: :reporter, expected_result: :accept, expected_status: :ok540 behaves like accept metadata request541 accepts the metadata request542 avoids N+1 database queries543 auth: :oauth, package_name_type: :unscoped, request_forward: true, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden544 behaves like reject metadata request545 rejects the metadata request546 auth: :oauth, package_name_type: :unscoped, request_forward: true, visibility: :private, user_role: :reporter, expected_result: :accept, expected_status: :ok547 behaves like accept metadata request548 accepts the metadata request549 avoids N+1 database queries550 auth: :oauth, package_name_type: :unscoped, request_forward: false, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden551 behaves like reject metadata request552 rejects the metadata request553 auth: :oauth, package_name_type: :unscoped, request_forward: false, visibility: :private, user_role: :reporter, expected_result: :accept, expected_status: :ok554 behaves like accept metadata request555 accepts the metadata request556 avoids N+1 database queries557 auth: :oauth, package_name_type: :non_existing, request_forward: true, visibility: :private, user_role: :guest, expected_result: :redirect, expected_status: :redirected558 behaves like redirect metadata request559 redirects metadata request560 auth: :oauth, package_name_type: :non_existing, request_forward: true, visibility: :private, user_role: :reporter, expected_result: :redirect, expected_status: :redirected561 behaves like redirect metadata request562 redirects metadata request563 auth: :oauth, package_name_type: :non_existing, request_forward: false, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden564 behaves like reject metadata request565 rejects the metadata request566 auth: :oauth, package_name_type: :non_existing, request_forward: false, visibility: :private, user_role: :reporter, expected_result: :reject, expected_status: :not_found567 behaves like reject metadata request568 rejects the metadata request569 auth: :oauth, package_name_type: :scoped_naming_convention, request_forward: true, visibility: :internal, user_role: :guest, expected_result: :accept, expected_status: :ok570 behaves like accept metadata request571 accepts the metadata request572 avoids N+1 database queries573 auth: :oauth, package_name_type: :scoped_naming_convention, request_forward: true, visibility: :internal, user_role: :reporter, expected_result: :accept, expected_status: :ok574 behaves like accept metadata request575 accepts the metadata request576 avoids N+1 database queries577 auth: :oauth, package_name_type: :scoped_naming_convention, request_forward: false, visibility: :internal, user_role: :guest, expected_result: :accept, expected_status: :ok578 behaves like accept metadata request579 accepts the metadata request580 avoids N+1 database queries581 auth: :oauth, package_name_type: :scoped_naming_convention, request_forward: false, visibility: :internal, user_role: :reporter, expected_result: :accept, expected_status: :ok582 behaves like accept metadata request583 accepts the metadata request584 avoids N+1 database queries585 auth: :oauth, package_name_type: :scoped_no_naming_convention, request_forward: true, visibility: :internal, user_role: :guest, expected_result: :accept, expected_status: :ok586 behaves like accept metadata request587 accepts the metadata request588 avoids N+1 database queries589 auth: :oauth, package_name_type: :scoped_no_naming_convention, request_forward: true, visibility: :internal, user_role: :reporter, expected_result: :accept, expected_status: :ok590 behaves like accept metadata request591 accepts the metadata request592 avoids N+1 database queries593 auth: :oauth, package_name_type: :scoped_no_naming_convention, request_forward: false, visibility: :internal, user_role: :guest, expected_result: :accept, expected_status: :ok594 behaves like accept metadata request595 accepts the metadata request596 avoids N+1 database queries597 auth: :oauth, package_name_type: :scoped_no_naming_convention, request_forward: false, visibility: :internal, user_role: :reporter, expected_result: :accept, expected_status: :ok598 behaves like accept metadata request599 accepts the metadata request600 avoids N+1 database queries601 auth: :oauth, package_name_type: :unscoped, request_forward: true, visibility: :internal, user_role: :guest, expected_result: :accept, expected_status: :ok602 behaves like accept metadata request603 accepts the metadata request604 avoids N+1 database queries605 auth: :oauth, package_name_type: :unscoped, request_forward: true, visibility: :internal, user_role: :reporter, expected_result: :accept, expected_status: :ok606 behaves like accept metadata request607 accepts the metadata request608 avoids N+1 database queries609 auth: :oauth, package_name_type: :unscoped, request_forward: false, visibility: :internal, user_role: :guest, expected_result: :accept, expected_status: :ok610 behaves like accept metadata request611 accepts the metadata request612 avoids N+1 database queries613 auth: :oauth, package_name_type: :unscoped, request_forward: false, visibility: :internal, user_role: :reporter, expected_result: :accept, expected_status: :ok614 behaves like accept metadata request615 accepts the metadata request616 avoids N+1 database queries617 auth: :oauth, package_name_type: :non_existing, request_forward: true, visibility: :internal, user_role: :guest, expected_result: :redirect, expected_status: :redirected618 behaves like redirect metadata request619 redirects metadata request620 auth: :oauth, package_name_type: :non_existing, request_forward: true, visibility: :internal, user_role: :reporter, expected_result: :redirect, expected_status: :redirected621 behaves like redirect metadata request622 redirects metadata request623 auth: :oauth, package_name_type: :non_existing, request_forward: false, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :not_found624 behaves like reject metadata request625 rejects the metadata request626 auth: :oauth, package_name_type: :non_existing, request_forward: false, visibility: :internal, user_role: :reporter, expected_result: :reject, expected_status: :not_found627 behaves like reject metadata request628 rejects the metadata request629 auth: :personal_access_token, package_name_type: :scoped_naming_convention, request_forward: true, visibility: :public, user_role: :guest, expected_result: :accept, expected_status: :ok630 behaves like accept metadata request631 accepts the metadata request632 avoids N+1 database queries633 auth: :personal_access_token, package_name_type: :scoped_naming_convention, request_forward: true, visibility: :public, user_role: :reporter, expected_result: :accept, expected_status: :ok634 behaves like accept metadata request635 accepts the metadata request636 avoids N+1 database queries637 auth: :personal_access_token, package_name_type: :scoped_naming_convention, request_forward: false, visibility: :public, user_role: :guest, expected_result: :accept, expected_status: :ok638 behaves like accept metadata request639 accepts the metadata request640 avoids N+1 database queries641 auth: :personal_access_token, package_name_type: :scoped_naming_convention, request_forward: false, visibility: :public, user_role: :reporter, expected_result: :accept, expected_status: :ok642 behaves like accept metadata request643 accepts the metadata request644 avoids N+1 database queries645 auth: :personal_access_token, package_name_type: :scoped_no_naming_convention, request_forward: true, visibility: :public, user_role: :guest, expected_result: :accept, expected_status: :ok646 behaves like accept metadata request647 accepts the metadata request648 avoids N+1 database queries649 auth: :personal_access_token, package_name_type: :scoped_no_naming_convention, request_forward: true, visibility: :public, user_role: :reporter, expected_result: :accept, expected_status: :ok650 behaves like accept metadata request651 accepts the metadata request652 avoids N+1 database queries653 auth: :personal_access_token, package_name_type: :scoped_no_naming_convention, request_forward: false, visibility: :public, user_role: :guest, expected_result: :accept, expected_status: :ok654 behaves like accept metadata request655 accepts the metadata request656 avoids N+1 database queries657 auth: :personal_access_token, package_name_type: :scoped_no_naming_convention, request_forward: false, visibility: :public, user_role: :reporter, expected_result: :accept, expected_status: :ok658 behaves like accept metadata request659 accepts the metadata request660 avoids N+1 database queries661 auth: :personal_access_token, package_name_type: :unscoped, request_forward: true, visibility: :public, user_role: :guest, expected_result: :accept, expected_status: :ok662 behaves like accept metadata request663 accepts the metadata request664 avoids N+1 database queries665 auth: :personal_access_token, package_name_type: :unscoped, request_forward: true, visibility: :public, user_role: :reporter, expected_result: :accept, expected_status: :ok666 behaves like accept metadata request667 accepts the metadata request668 avoids N+1 database queries669 auth: :personal_access_token, package_name_type: :unscoped, request_forward: false, visibility: :public, user_role: :guest, expected_result: :accept, expected_status: :ok670 behaves like accept metadata request671 accepts the metadata request672 avoids N+1 database queries673 auth: :personal_access_token, package_name_type: :unscoped, request_forward: false, visibility: :public, user_role: :reporter, expected_result: :accept, expected_status: :ok674 behaves like accept metadata request675 accepts the metadata request676 avoids N+1 database queries677 auth: :personal_access_token, package_name_type: :non_existing, request_forward: true, visibility: :public, user_role: :guest, expected_result: :redirect, expected_status: :redirected678 behaves like redirect metadata request679 redirects metadata request680 auth: :personal_access_token, package_name_type: :non_existing, request_forward: true, visibility: :public, user_role: :reporter, expected_result: :redirect, expected_status: :redirected681 behaves like redirect metadata request682 redirects metadata request683 auth: :personal_access_token, package_name_type: :non_existing, request_forward: false, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :not_found684 behaves like reject metadata request685 rejects the metadata request686 auth: :personal_access_token, package_name_type: :non_existing, request_forward: false, visibility: :public, user_role: :reporter, expected_result: :reject, expected_status: :not_found687 behaves like reject metadata request688 rejects the metadata request689 auth: :personal_access_token, package_name_type: :scoped_naming_convention, request_forward: true, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden690 behaves like reject metadata request691 rejects the metadata request692 auth: :personal_access_token, package_name_type: :scoped_naming_convention, request_forward: true, visibility: :private, user_role: :reporter, expected_result: :accept, expected_status: :ok693 behaves like accept metadata request694 accepts the metadata request695 avoids N+1 database queries696 auth: :personal_access_token, package_name_type: :scoped_naming_convention, request_forward: false, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden697 behaves like reject metadata request698 rejects the metadata request699 auth: :personal_access_token, package_name_type: :scoped_naming_convention, request_forward: false, visibility: :private, user_role: :reporter, expected_result: :accept, expected_status: :ok700 behaves like accept metadata request701 accepts the metadata request702 avoids N+1 database queries703 auth: :personal_access_token, package_name_type: :scoped_no_naming_convention, request_forward: true, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden704 behaves like reject metadata request705 rejects the metadata request706 auth: :personal_access_token, package_name_type: :scoped_no_naming_convention, request_forward: true, visibility: :private, user_role: :reporter, expected_result: :accept, expected_status: :ok707 behaves like accept metadata request708 accepts the metadata request709 avoids N+1 database queries710 auth: :personal_access_token, package_name_type: :scoped_no_naming_convention, request_forward: false, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden711 behaves like reject metadata request712 rejects the metadata request713 auth: :personal_access_token, package_name_type: :scoped_no_naming_convention, request_forward: false, visibility: :private, user_role: :reporter, expected_result: :accept, expected_status: :ok714 behaves like accept metadata request715 accepts the metadata request716 avoids N+1 database queries717 auth: :personal_access_token, package_name_type: :unscoped, request_forward: true, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden718 behaves like reject metadata request719 rejects the metadata request720 auth: :personal_access_token, package_name_type: :unscoped, request_forward: true, visibility: :private, user_role: :reporter, expected_result: :accept, expected_status: :ok721 behaves like accept metadata request722 accepts the metadata request723 avoids N+1 database queries724 auth: :personal_access_token, package_name_type: :unscoped, request_forward: false, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden725 behaves like reject metadata request726 rejects the metadata request727 auth: :personal_access_token, package_name_type: :unscoped, request_forward: false, visibility: :private, user_role: :reporter, expected_result: :accept, expected_status: :ok728 behaves like accept metadata request729 accepts the metadata request730 avoids N+1 database queries731 auth: :personal_access_token, package_name_type: :non_existing, request_forward: true, visibility: :private, user_role: :guest, expected_result: :redirect, expected_status: :redirected732 behaves like redirect metadata request733 redirects metadata request734 auth: :personal_access_token, package_name_type: :non_existing, request_forward: true, visibility: :private, user_role: :reporter, expected_result: :redirect, expected_status: :redirected735 behaves like redirect metadata request736 redirects metadata request737 auth: :personal_access_token, package_name_type: :non_existing, request_forward: false, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden738 behaves like reject metadata request739 rejects the metadata request740 auth: :personal_access_token, package_name_type: :non_existing, request_forward: false, visibility: :private, user_role: :reporter, expected_result: :reject, expected_status: :not_found741 behaves like reject metadata request742 rejects the metadata request743 auth: :personal_access_token, package_name_type: :scoped_naming_convention, request_forward: true, visibility: :internal, user_role: :guest, expected_result: :accept, expected_status: :ok744 behaves like accept metadata request745 accepts the metadata request746 avoids N+1 database queries747 auth: :personal_access_token, package_name_type: :scoped_naming_convention, request_forward: true, visibility: :internal, user_role: :reporter, expected_result: :accept, expected_status: :ok748 behaves like accept metadata request749 accepts the metadata request750 avoids N+1 database queries751 auth: :personal_access_token, package_name_type: :scoped_naming_convention, request_forward: false, visibility: :internal, user_role: :guest, expected_result: :accept, expected_status: :ok752 behaves like accept metadata request753 accepts the metadata request754 avoids N+1 database queries755 auth: :personal_access_token, package_name_type: :scoped_naming_convention, request_forward: false, visibility: :internal, user_role: :reporter, expected_result: :accept, expected_status: :ok756 behaves like accept metadata request757 accepts the metadata request758 avoids N+1 database queries759 auth: :personal_access_token, package_name_type: :scoped_no_naming_convention, request_forward: true, visibility: :internal, user_role: :guest, expected_result: :accept, expected_status: :ok760 behaves like accept metadata request761 accepts the metadata request762 avoids N+1 database queries763 auth: :personal_access_token, package_name_type: :scoped_no_naming_convention, request_forward: true, visibility: :internal, user_role: :reporter, expected_result: :accept, expected_status: :ok764 behaves like accept metadata request765 accepts the metadata request766 avoids N+1 database queries767 auth: :personal_access_token, package_name_type: :scoped_no_naming_convention, request_forward: false, visibility: :internal, user_role: :guest, expected_result: :accept, expected_status: :ok768 behaves like accept metadata request769 accepts the metadata request770 avoids N+1 database queries771 auth: :personal_access_token, package_name_type: :scoped_no_naming_convention, request_forward: false, visibility: :internal, user_role: :reporter, expected_result: :accept, expected_status: :ok772 behaves like accept metadata request773 accepts the metadata request774 avoids N+1 database queries775 auth: :personal_access_token, package_name_type: :unscoped, request_forward: true, visibility: :internal, user_role: :guest, expected_result: :accept, expected_status: :ok776 behaves like accept metadata request777 accepts the metadata request778 avoids N+1 database queries779 auth: :personal_access_token, package_name_type: :unscoped, request_forward: true, visibility: :internal, user_role: :reporter, expected_result: :accept, expected_status: :ok780 behaves like accept metadata request781 accepts the metadata request782 avoids N+1 database queries783 auth: :personal_access_token, package_name_type: :unscoped, request_forward: false, visibility: :internal, user_role: :guest, expected_result: :accept, expected_status: :ok784 behaves like accept metadata request785 accepts the metadata request786 avoids N+1 database queries787 auth: :personal_access_token, package_name_type: :unscoped, request_forward: false, visibility: :internal, user_role: :reporter, expected_result: :accept, expected_status: :ok788 behaves like accept metadata request789 accepts the metadata request790 avoids N+1 database queries791 auth: :personal_access_token, package_name_type: :non_existing, request_forward: true, visibility: :internal, user_role: :guest, expected_result: :redirect, expected_status: :redirected792 behaves like redirect metadata request793 redirects metadata request794 auth: :personal_access_token, package_name_type: :non_existing, request_forward: true, visibility: :internal, user_role: :reporter, expected_result: :redirect, expected_status: :redirected795 behaves like redirect metadata request796 redirects metadata request797 auth: :personal_access_token, package_name_type: :non_existing, request_forward: false, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :not_found798 behaves like reject metadata request799 rejects the metadata request800 auth: :personal_access_token, package_name_type: :non_existing, request_forward: false, visibility: :internal, user_role: :reporter, expected_result: :reject, expected_status: :not_found801 behaves like reject metadata request802 rejects the metadata request803 auth: :job_token, package_name_type: :scoped_naming_convention, request_forward: true, visibility: :public, user_role: :developer, expected_result: :accept, expected_status: :ok804 behaves like accept metadata request805 accepts the metadata request806 avoids N+1 database queries807 auth: :job_token, package_name_type: :scoped_naming_convention, request_forward: false, visibility: :public, user_role: :developer, expected_result: :accept, expected_status: :ok808 behaves like accept metadata request809 accepts the metadata request810 avoids N+1 database queries811 auth: :job_token, package_name_type: :scoped_no_naming_convention, request_forward: true, visibility: :public, user_role: :developer, expected_result: :accept, expected_status: :ok812 behaves like accept metadata request813 accepts the metadata request814 avoids N+1 database queries815 auth: :job_token, package_name_type: :scoped_no_naming_convention, request_forward: false, visibility: :public, user_role: :developer, expected_result: :accept, expected_status: :ok816 behaves like accept metadata request817 accepts the metadata request818 avoids N+1 database queries819 auth: :job_token, package_name_type: :unscoped, request_forward: true, visibility: :public, user_role: :developer, expected_result: :accept, expected_status: :ok820 behaves like accept metadata request821 accepts the metadata request822 avoids N+1 database queries823 auth: :job_token, package_name_type: :unscoped, request_forward: false, visibility: :public, user_role: :developer, expected_result: :accept, expected_status: :ok824 behaves like accept metadata request825 accepts the metadata request826 avoids N+1 database queries827 auth: :job_token, package_name_type: :non_existing, request_forward: true, visibility: :public, user_role: :developer, expected_result: :redirect, expected_status: :redirected828 behaves like redirect metadata request829 redirects metadata request830 auth: :job_token, package_name_type: :non_existing, request_forward: false, visibility: :public, user_role: :developer, expected_result: :reject, expected_status: :not_found831 behaves like reject metadata request832 rejects the metadata request833 auth: :job_token, package_name_type: :scoped_naming_convention, request_forward: true, visibility: :private, user_role: :developer, expected_result: :accept, expected_status: :ok834 behaves like accept metadata request835 accepts the metadata request836 avoids N+1 database queries837 auth: :job_token, package_name_type: :scoped_naming_convention, request_forward: false, visibility: :private, user_role: :developer, expected_result: :accept, expected_status: :ok838 behaves like accept metadata request839 accepts the metadata request840 avoids N+1 database queries841 auth: :job_token, package_name_type: :scoped_no_naming_convention, request_forward: true, visibility: :private, user_role: :developer, expected_result: :accept, expected_status: :ok842 behaves like accept metadata request843 accepts the metadata request844 avoids N+1 database queries845 auth: :job_token, package_name_type: :scoped_no_naming_convention, request_forward: false, visibility: :private, user_role: :developer, expected_result: :accept, expected_status: :ok846 behaves like accept metadata request847 accepts the metadata request848 avoids N+1 database queries849 auth: :job_token, package_name_type: :unscoped, request_forward: true, visibility: :private, user_role: :developer, expected_result: :accept, expected_status: :ok850 behaves like accept metadata request851 accepts the metadata request852 avoids N+1 database queries853 auth: :job_token, package_name_type: :unscoped, request_forward: false, visibility: :private, user_role: :developer, expected_result: :accept, expected_status: :ok854 behaves like accept metadata request855 accepts the metadata request856 avoids N+1 database queries857 auth: :job_token, package_name_type: :non_existing, request_forward: true, visibility: :private, user_role: :developer, expected_result: :redirect, expected_status: :redirected858 behaves like redirect metadata request859 redirects metadata request860 auth: :job_token, package_name_type: :non_existing, request_forward: false, visibility: :private, user_role: :developer, expected_result: :reject, expected_status: :not_found861 behaves like reject metadata request862 rejects the metadata request863 auth: :job_token, package_name_type: :scoped_naming_convention, request_forward: true, visibility: :internal, user_role: :developer, expected_result: :accept, expected_status: :ok864 behaves like accept metadata request865 accepts the metadata request866 avoids N+1 database queries867 auth: :job_token, package_name_type: :scoped_naming_convention, request_forward: false, visibility: :internal, user_role: :developer, expected_result: :accept, expected_status: :ok868 behaves like accept metadata request869 accepts the metadata request870 avoids N+1 database queries871 auth: :job_token, package_name_type: :scoped_no_naming_convention, request_forward: true, visibility: :internal, user_role: :developer, expected_result: :accept, expected_status: :ok872 behaves like accept metadata request873 accepts the metadata request874 avoids N+1 database queries875 auth: :job_token, package_name_type: :scoped_no_naming_convention, request_forward: false, visibility: :internal, user_role: :developer, expected_result: :accept, expected_status: :ok876 behaves like accept metadata request877 accepts the metadata request878 avoids N+1 database queries879 auth: :job_token, package_name_type: :unscoped, request_forward: true, visibility: :internal, user_role: :developer, expected_result: :accept, expected_status: :ok880 behaves like accept metadata request881 accepts the metadata request882 avoids N+1 database queries883 auth: :job_token, package_name_type: :unscoped, request_forward: false, visibility: :internal, user_role: :developer, expected_result: :accept, expected_status: :ok884 behaves like accept metadata request885 accepts the metadata request886 avoids N+1 database queries887 auth: :job_token, package_name_type: :non_existing, request_forward: true, visibility: :internal, user_role: :developer, expected_result: :redirect, expected_status: :redirected888 behaves like redirect metadata request889 redirects metadata request890 auth: :job_token, package_name_type: :non_existing, request_forward: false, visibility: :internal, user_role: :developer, expected_result: :reject, expected_status: :not_found891 behaves like reject metadata request892 rejects the metadata request893 auth: :deploy_token, package_name_type: :scoped_naming_convention, request_forward: true, visibility: :public, user_role: nil, expected_result: :accept, expected_status: :ok894 behaves like accept metadata request895 accepts the metadata request896 avoids N+1 database queries897 auth: :deploy_token, package_name_type: :scoped_naming_convention, request_forward: false, visibility: :public, user_role: nil, expected_result: :accept, expected_status: :ok898 behaves like accept metadata request899 accepts the metadata request900 avoids N+1 database queries901 auth: :deploy_token, package_name_type: :scoped_no_naming_convention, request_forward: true, visibility: :public, user_role: nil, expected_result: :accept, expected_status: :ok902 behaves like accept metadata request903 accepts the metadata request904 avoids N+1 database queries905 auth: :deploy_token, package_name_type: :scoped_no_naming_convention, request_forward: false, visibility: :public, user_role: nil, expected_result: :accept, expected_status: :ok906 behaves like accept metadata request907 accepts the metadata request908 avoids N+1 database queries909 auth: :deploy_token, package_name_type: :unscoped, request_forward: true, visibility: :public, user_role: nil, expected_result: :accept, expected_status: :ok910 behaves like accept metadata request911 accepts the metadata request912 avoids N+1 database queries913 auth: :deploy_token, package_name_type: :unscoped, request_forward: false, visibility: :public, user_role: nil, expected_result: :accept, expected_status: :ok914 behaves like accept metadata request915 accepts the metadata request916 avoids N+1 database queries917 auth: :deploy_token, package_name_type: :non_existing, request_forward: true, visibility: :public, user_role: nil, expected_result: :redirect, expected_status: :redirected918 behaves like redirect metadata request919 redirects metadata request920 auth: :deploy_token, package_name_type: :non_existing, request_forward: false, visibility: :public, user_role: nil, expected_result: :reject, expected_status: :not_found921 behaves like reject metadata request922 rejects the metadata request923 auth: :deploy_token, package_name_type: :scoped_naming_convention, request_forward: true, visibility: :private, user_role: nil, expected_result: :accept, expected_status: :ok924 behaves like accept metadata request925 accepts the metadata request926 avoids N+1 database queries927 auth: :deploy_token, package_name_type: :scoped_naming_convention, request_forward: false, visibility: :private, user_role: nil, expected_result: :accept, expected_status: :ok928 behaves like accept metadata request929 accepts the metadata request930 avoids N+1 database queries931 auth: :deploy_token, package_name_type: :scoped_no_naming_convention, request_forward: true, visibility: :private, user_role: nil, expected_result: :accept, expected_status: :ok932 behaves like accept metadata request933 accepts the metadata request934 avoids N+1 database queries935 auth: :deploy_token, package_name_type: :scoped_no_naming_convention, request_forward: false, visibility: :private, user_role: nil, expected_result: :accept, expected_status: :ok936 behaves like accept metadata request937 accepts the metadata request938 avoids N+1 database queries939 auth: :deploy_token, package_name_type: :unscoped, request_forward: true, visibility: :private, user_role: nil, expected_result: :accept, expected_status: :ok940 behaves like accept metadata request941 accepts the metadata request942 avoids N+1 database queries943 auth: :deploy_token, package_name_type: :unscoped, request_forward: false, visibility: :private, user_role: nil, expected_result: :accept, expected_status: :ok944 behaves like accept metadata request945 accepts the metadata request946 avoids N+1 database queries947 auth: :deploy_token, package_name_type: :non_existing, request_forward: true, visibility: :private, user_role: nil, expected_result: :redirect, expected_status: :redirected948 behaves like redirect metadata request949 redirects metadata request950 auth: :deploy_token, package_name_type: :non_existing, request_forward: false, visibility: :private, user_role: nil, expected_result: :reject, expected_status: :not_found951 behaves like reject metadata request952 rejects the metadata request953 auth: :deploy_token, package_name_type: :scoped_naming_convention, request_forward: true, visibility: :internal, user_role: nil, expected_result: :accept, expected_status: :ok954 behaves like accept metadata request955 accepts the metadata request956 avoids N+1 database queries957 auth: :deploy_token, package_name_type: :scoped_naming_convention, request_forward: false, visibility: :internal, user_role: nil, expected_result: :accept, expected_status: :ok958 behaves like accept metadata request959 accepts the metadata request960 avoids N+1 database queries961 auth: :deploy_token, package_name_type: :scoped_no_naming_convention, request_forward: true, visibility: :internal, user_role: nil, expected_result: :accept, expected_status: :ok962 behaves like accept metadata request963 accepts the metadata request964 avoids N+1 database queries965 auth: :deploy_token, package_name_type: :scoped_no_naming_convention, request_forward: false, visibility: :internal, user_role: nil, expected_result: :accept, expected_status: :ok966 behaves like accept metadata request967 accepts the metadata request968 avoids N+1 database queries969 auth: :deploy_token, package_name_type: :unscoped, request_forward: true, visibility: :internal, user_role: nil, expected_result: :accept, expected_status: :ok970 behaves like accept metadata request971 accepts the metadata request972 avoids N+1 database queries973 auth: :deploy_token, package_name_type: :unscoped, request_forward: false, visibility: :internal, user_role: nil, expected_result: :accept, expected_status: :ok974 behaves like accept metadata request975 accepts the metadata request976 avoids N+1 database queries977 auth: :deploy_token, package_name_type: :non_existing, request_forward: true, visibility: :internal, user_role: nil, expected_result: :redirect, expected_status: :redirected978 behaves like redirect metadata request979 redirects metadata request980 auth: :deploy_token, package_name_type: :non_existing, request_forward: false, visibility: :internal, user_role: nil, expected_result: :reject, expected_status: :not_found981 behaves like reject metadata request982 rejects the metadata request983 with a developer984 project path with a dot985 behaves like accept metadata request986 accepts the metadata request987 avoids N+1 database queries988 with a job token989 behaves like reject metadata request990 rejects the metadata request991 GET /api/v4/projects/:id/packages/npm/-/package/*package_name/dist-tags992 behaves like handling get dist tags requests993 with a group namespace994 behaves like handling all conditions995 with oauth token996 behaves like handling different package names, visibilities and user roles997 package_name_type: :scoped_naming_convention, visibility: :public, user_role: :anonymous, expected_result: :accept, expected_status: :ok998 behaves like accept package tags request999 with valid package name1000 returns a valid json response1001 returns two package tags1002 behaves like returning response status1003 returns ok1004 with invalid package name1005 package_name: "%20", status: :bad_request1006 behaves like returning response status1007 returns bad_request1008 package_name: nil, status: :not_found1009 behaves like returning response status1010 returns not_found1011 package_name_type: :scoped_naming_convention, visibility: :public, user_role: :guest, expected_result: :accept, expected_status: :ok1012 behaves like accept package tags request1013 with valid package name1014 returns a valid json response1015 returns two package tags1016 behaves like returning response status1017 returns ok1018 with invalid package name1019 package_name: "%20", status: :bad_request1020 behaves like returning response status1021 returns bad_request1022 package_name: nil, status: :not_found1023 behaves like returning response status1024 returns not_found1025 package_name_type: :scoped_naming_convention, visibility: :public, user_role: :reporter, expected_result: :accept, expected_status: :ok1026 behaves like accept package tags request1027 with valid package name1028 returns a valid json response1029 returns two package tags1030 behaves like returning response status1031 returns ok1032 with invalid package name1033 package_name: "%20", status: :bad_request1034 behaves like returning response status1035 returns bad_request1036 package_name: nil, status: :not_found1037 behaves like returning response status1038 returns not_found1039 package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: :anonymous, expected_result: :accept, expected_status: :ok1040 behaves like accept package tags request1041 with valid package name1042 returns a valid json response1043 returns two package tags1044 behaves like returning response status1045 returns ok1046 with invalid package name1047 package_name: "%20", status: :bad_request1048 behaves like returning response status1049 returns bad_request1050 package_name: nil, status: :not_found1051 behaves like returning response status1052 returns not_found1053 package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: :guest, expected_result: :accept, expected_status: :ok1054 behaves like accept package tags request1055 with valid package name1056 returns a valid json response1057 returns two package tags1058 behaves like returning response status1059 returns ok1060 with invalid package name1061 package_name: "%20", status: :bad_request1062 behaves like returning response status1063 returns bad_request1064 package_name: nil, status: :not_found1065 behaves like returning response status1066 returns not_found1067 package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: :reporter, expected_result: :accept, expected_status: :ok1068 behaves like accept package tags request1069 with valid package name1070 returns a valid json response1071 returns two package tags1072 behaves like returning response status1073 returns ok1074 with invalid package name1075 package_name: "%20", status: :bad_request1076 behaves like returning response status1077 returns bad_request1078 package_name: nil, status: :not_found1079 behaves like returning response status1080 returns not_found1081 package_name_type: :unscoped, visibility: :public, user_role: :anonymous, expected_result: :accept, expected_status: :ok1082 behaves like accept package tags request1083 with valid package name1084 returns a valid json response1085 returns two package tags1086 behaves like returning response status1087 returns ok1088 with invalid package name1089 package_name: "%20", status: :bad_request1090 behaves like returning response status1091 returns bad_request1092 package_name: nil, status: :not_found1093 behaves like returning response status1094 returns not_found1095 package_name_type: :unscoped, visibility: :public, user_role: :guest, expected_result: :accept, expected_status: :ok1096 behaves like accept package tags request1097 with valid package name1098 returns a valid json response1099 returns two package tags1100 behaves like returning response status1101 returns ok1102 with invalid package name1103 package_name: "%20", status: :bad_request1104 behaves like returning response status1105 returns bad_request1106 package_name: nil, status: :not_found1107 behaves like returning response status1108 returns not_found1109 package_name_type: :unscoped, visibility: :public, user_role: :reporter, expected_result: :accept, expected_status: :ok1110 behaves like accept package tags request1111 with valid package name1112 returns a valid json response1113 returns two package tags1114 behaves like returning response status1115 returns ok1116 with invalid package name1117 package_name: "%20", status: :bad_request1118 behaves like returning response status1119 returns bad_request1120 package_name: nil, status: :not_found1121 behaves like returning response status1122 returns not_found1123 package_name_type: :non_existing, visibility: :public, user_role: :anonymous, expected_result: :reject, expected_status: :not_found1124 behaves like reject package tags request1125 behaves like returning response status1126 returns not_found1127 package_name_type: :non_existing, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :not_found1128 behaves like reject package tags request1129 behaves like returning response status1130 returns not_found1131 package_name_type: :non_existing, visibility: :public, user_role: :reporter, expected_result: :reject, expected_status: :not_found1132 behaves like reject package tags request1133 behaves like returning response status1134 returns not_found1135 package_name_type: :scoped_naming_convention, visibility: :private, user_role: :anonymous, expected_result: :reject, expected_status: :not_found1136 behaves like reject package tags request1137 behaves like returning response status1138 returns not_found1139 package_name_type: :scoped_naming_convention, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden1140 behaves like reject package tags request1141 behaves like returning response status1142 returns forbidden1143 package_name_type: :scoped_naming_convention, visibility: :private, user_role: :reporter, expected_result: :accept, expected_status: :ok1144 behaves like accept package tags request1145 with valid package name1146 returns a valid json response1147 returns two package tags1148 behaves like returning response status1149 returns ok1150 with invalid package name1151 package_name: "%20", status: :bad_request1152 behaves like returning response status1153 returns bad_request1154 package_name: nil, status: :not_found1155 behaves like returning response status1156 returns not_found1157 package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: :anonymous, expected_result: :reject, expected_status: :not_found1158 behaves like reject package tags request1159 behaves like returning response status1160 returns not_found1161 package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden1162 behaves like reject package tags request1163 behaves like returning response status1164 returns forbidden1165 package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: :reporter, expected_result: :accept, expected_status: :ok1166 behaves like accept package tags request1167 with valid package name1168 returns a valid json response1169 returns two package tags1170 behaves like returning response status1171 returns ok1172 with invalid package name1173 package_name: "%20", status: :bad_request1174 behaves like returning response status1175 returns bad_request1176 package_name: nil, status: :not_found1177 behaves like returning response status1178 returns not_found1179 package_name_type: :unscoped, visibility: :private, user_role: :anonymous, expected_result: :reject, expected_status: :not_found1180 behaves like reject package tags request1181 behaves like returning response status1182 returns not_found1183 package_name_type: :unscoped, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden1184 behaves like reject package tags request1185 behaves like returning response status1186 returns forbidden1187 package_name_type: :unscoped, visibility: :private, user_role: :reporter, expected_result: :accept, expected_status: :ok1188 behaves like accept package tags request1189 with valid package name1190 returns a valid json response1191 returns two package tags1192 behaves like returning response status1193 returns ok1194 with invalid package name1195 package_name: "%20", status: :bad_request1196 behaves like returning response status1197 returns bad_request1198 package_name: nil, status: :not_found1199 behaves like returning response status1200 returns not_found1201 package_name_type: :non_existing, visibility: :private, user_role: :anonymous, expected_result: :reject, expected_status: :not_found1202 behaves like reject package tags request1203 behaves like returning response status1204 returns not_found1205 package_name_type: :non_existing, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden1206 behaves like reject package tags request1207 behaves like returning response status1208 returns forbidden1209 package_name_type: :non_existing, visibility: :private, user_role: :reporter, expected_result: :reject, expected_status: :not_found1210 behaves like reject package tags request1211 behaves like returning response status1212 returns not_found1213 package_name_type: :scoped_naming_convention, visibility: :internal, user_role: :anonymous, expected_result: :reject, expected_status: :not_found1214 behaves like reject package tags request1215 behaves like returning response status1216 returns not_found1217 package_name_type: :scoped_naming_convention, visibility: :internal, user_role: :guest, expected_result: :accept, expected_status: :ok1218 behaves like accept package tags request1219 with valid package name1220 returns a valid json response1221 returns two package tags1222 behaves like returning response status1223 returns ok1224 with invalid package name1225 package_name: "%20", status: :bad_request1226 behaves like returning response status1227 returns bad_request1228 package_name: nil, status: :not_found1229 behaves like returning response status1230 returns not_found1231 package_name_type: :scoped_naming_convention, visibility: :internal, user_role: :reporter, expected_result: :accept, expected_status: :ok1232 behaves like accept package tags request1233 with valid package name1234 returns a valid json response1235 returns two package tags1236 behaves like returning response status1237 returns ok1238 with invalid package name1239 package_name: "%20", status: :bad_request1240 behaves like returning response status1241 returns bad_request1242 package_name: nil, status: :not_found1243 behaves like returning response status1244 returns not_found1245 package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: :anonymous, expected_result: :reject, expected_status: :not_found1246 behaves like reject package tags request1247 behaves like returning response status1248 returns not_found1249 package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: :guest, expected_result: :accept, expected_status: :ok1250 behaves like accept package tags request1251 with valid package name1252 returns a valid json response1253 returns two package tags1254 behaves like returning response status1255 returns ok1256 with invalid package name1257 package_name: "%20", status: :bad_request1258 behaves like returning response status1259 returns bad_request1260 package_name: nil, status: :not_found1261 behaves like returning response status1262 returns not_found1263 package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: :reporter, expected_result: :accept, expected_status: :ok1264 behaves like accept package tags request1265 with valid package name1266 returns a valid json response1267 returns two package tags1268 behaves like returning response status1269 returns ok1270 with invalid package name1271 package_name: "%20", status: :bad_request1272 behaves like returning response status1273 returns bad_request1274 package_name: nil, status: :not_found1275 behaves like returning response status1276 returns not_found1277 package_name_type: :unscoped, visibility: :internal, user_role: :anonymous, expected_result: :reject, expected_status: :not_found1278 behaves like reject package tags request1279 behaves like returning response status1280 returns not_found1281 package_name_type: :unscoped, visibility: :internal, user_role: :guest, expected_result: :accept, expected_status: :ok1282 behaves like accept package tags request1283 with valid package name1284 returns a valid json response1285 returns two package tags1286 behaves like returning response status1287 returns ok1288 with invalid package name1289 package_name: "%20", status: :bad_request1290 behaves like returning response status1291 returns bad_request1292 package_name: nil, status: :not_found1293 behaves like returning response status1294 returns not_found1295 package_name_type: :unscoped, visibility: :internal, user_role: :reporter, expected_result: :accept, expected_status: :ok1296 behaves like accept package tags request1297 with valid package name1298 returns a valid json response1299 returns two package tags1300 behaves like returning response status1301 returns ok1302 with invalid package name1303 package_name: "%20", status: :bad_request1304 behaves like returning response status1305 returns bad_request1306 package_name: nil, status: :not_found1307 behaves like returning response status1308 returns not_found1309 package_name_type: :non_existing, visibility: :internal, user_role: :anonymous, expected_result: :reject, expected_status: :not_found1310 behaves like reject package tags request1311 behaves like returning response status1312 returns not_found1313 package_name_type: :non_existing, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :not_found1314 behaves like reject package tags request1315 behaves like returning response status1316 returns not_found1317 package_name_type: :non_existing, visibility: :internal, user_role: :reporter, expected_result: :reject, expected_status: :not_found1318 behaves like reject package tags request1319 behaves like returning response status1320 returns not_found1321 with personal access token1322 behaves like handling different package names, visibilities and user roles1323 package_name_type: :scoped_naming_convention, visibility: :public, user_role: :anonymous, expected_result: :accept, expected_status: :ok1324 behaves like accept package tags request1325 with valid package name1326 returns a valid json response1327 returns two package tags1328 behaves like returning response status1329 returns ok1330 with invalid package name1331 package_name: "%20", status: :bad_request1332 behaves like returning response status1333 returns bad_request1334 package_name: nil, status: :not_found1335 behaves like returning response status1336 returns not_found1337 package_name_type: :scoped_naming_convention, visibility: :public, user_role: :guest, expected_result: :accept, expected_status: :ok1338 behaves like accept package tags request1339 with valid package name1340 returns a valid json response1341 returns two package tags1342 behaves like returning response status1343 returns ok1344 with invalid package name1345 package_name: "%20", status: :bad_request1346 behaves like returning response status1347 returns bad_request1348 package_name: nil, status: :not_found1349 behaves like returning response status1350 returns not_found1351 package_name_type: :scoped_naming_convention, visibility: :public, user_role: :reporter, expected_result: :accept, expected_status: :ok1352 behaves like accept package tags request1353 with valid package name1354 returns a valid json response1355 returns two package tags1356 behaves like returning response status1357 returns ok1358 with invalid package name1359 package_name: "%20", status: :bad_request1360 behaves like returning response status1361 returns bad_request1362 package_name: nil, status: :not_found1363 behaves like returning response status1364 returns not_found1365 package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: :anonymous, expected_result: :accept, expected_status: :ok1366 behaves like accept package tags request1367 with valid package name1368 returns a valid json response1369 returns two package tags1370 behaves like returning response status1371 returns ok1372 with invalid package name1373 package_name: "%20", status: :bad_request1374 behaves like returning response status1375 returns bad_request1376 package_name: nil, status: :not_found1377 behaves like returning response status1378 returns not_found1379 package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: :guest, expected_result: :accept, expected_status: :ok1380 behaves like accept package tags request1381 with valid package name1382 returns a valid json response1383 returns two package tags1384 behaves like returning response status1385 returns ok1386 with invalid package name1387 package_name: "%20", status: :bad_request1388 behaves like returning response status1389 returns bad_request1390 package_name: nil, status: :not_found1391 behaves like returning response status1392 returns not_found1393 package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: :reporter, expected_result: :accept, expected_status: :ok1394 behaves like accept package tags request1395 with valid package name1396 returns a valid json response1397 returns two package tags1398 behaves like returning response status1399 returns ok1400 with invalid package name1401 package_name: "%20", status: :bad_request1402 behaves like returning response status1403 returns bad_request1404 package_name: nil, status: :not_found1405 behaves like returning response status1406 returns not_found1407 package_name_type: :unscoped, visibility: :public, user_role: :anonymous, expected_result: :accept, expected_status: :ok1408 behaves like accept package tags request1409 with valid package name1410 returns a valid json response1411 returns two package tags1412 behaves like returning response status1413 returns ok1414 with invalid package name1415 package_name: "%20", status: :bad_request1416 behaves like returning response status1417 returns bad_request1418 package_name: nil, status: :not_found1419 behaves like returning response status1420 returns not_found1421 package_name_type: :unscoped, visibility: :public, user_role: :guest, expected_result: :accept, expected_status: :ok1422 behaves like accept package tags request1423 with valid package name1424 returns a valid json response1425 returns two package tags1426 behaves like returning response status1427 returns ok1428 with invalid package name1429 package_name: "%20", status: :bad_request1430 behaves like returning response status1431 returns bad_request1432 package_name: nil, status: :not_found1433 behaves like returning response status1434 returns not_found1435 package_name_type: :unscoped, visibility: :public, user_role: :reporter, expected_result: :accept, expected_status: :ok1436 behaves like accept package tags request1437 with valid package name1438 returns a valid json response1439 returns two package tags1440 behaves like returning response status1441 returns ok1442 with invalid package name1443 package_name: "%20", status: :bad_request1444 behaves like returning response status1445 returns bad_request1446 package_name: nil, status: :not_found1447 behaves like returning response status1448 returns not_found1449 package_name_type: :non_existing, visibility: :public, user_role: :anonymous, expected_result: :reject, expected_status: :not_found1450 behaves like reject package tags request1451 behaves like returning response status1452 returns not_found1453 package_name_type: :non_existing, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :not_found1454 behaves like reject package tags request1455 behaves like returning response status1456 returns not_found1457 package_name_type: :non_existing, visibility: :public, user_role: :reporter, expected_result: :reject, expected_status: :not_found1458 behaves like reject package tags request1459 behaves like returning response status1460 returns not_found1461 package_name_type: :scoped_naming_convention, visibility: :private, user_role: :anonymous, expected_result: :reject, expected_status: :not_found1462 behaves like reject package tags request1463 behaves like returning response status1464 returns not_found1465 package_name_type: :scoped_naming_convention, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden1466 behaves like reject package tags request1467 behaves like returning response status1468 returns forbidden1469 package_name_type: :scoped_naming_convention, visibility: :private, user_role: :reporter, expected_result: :accept, expected_status: :ok1470 behaves like accept package tags request1471 with valid package name1472 returns a valid json response1473 returns two package tags1474 behaves like returning response status1475 returns ok1476 with invalid package name1477 package_name: "%20", status: :bad_request1478 behaves like returning response status1479 returns bad_request1480 package_name: nil, status: :not_found1481 behaves like returning response status1482 returns not_found1483 package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: :anonymous, expected_result: :reject, expected_status: :not_found1484 behaves like reject package tags request1485 behaves like returning response status1486 returns not_found1487 package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden1488 behaves like reject package tags request1489 behaves like returning response status1490 returns forbidden1491 package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: :reporter, expected_result: :accept, expected_status: :ok1492 behaves like accept package tags request1493 with valid package name1494 returns a valid json response1495 returns two package tags1496 behaves like returning response status1497 returns ok1498 with invalid package name1499 package_name: "%20", status: :bad_request1500 behaves like returning response status1501 returns bad_request1502 package_name: nil, status: :not_found1503 behaves like returning response status1504 returns not_found1505 package_name_type: :unscoped, visibility: :private, user_role: :anonymous, expected_result: :reject, expected_status: :not_found1506 behaves like reject package tags request1507 behaves like returning response status1508 returns not_found1509 package_name_type: :unscoped, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden1510 behaves like reject package tags request1511 behaves like returning response status1512 returns forbidden1513 package_name_type: :unscoped, visibility: :private, user_role: :reporter, expected_result: :accept, expected_status: :ok1514 behaves like accept package tags request1515 with valid package name1516 returns a valid json response1517 returns two package tags1518 behaves like returning response status1519 returns ok1520 with invalid package name1521 package_name: "%20", status: :bad_request1522 behaves like returning response status1523 returns bad_request1524 package_name: nil, status: :not_found1525 behaves like returning response status1526 returns not_found1527 package_name_type: :non_existing, visibility: :private, user_role: :anonymous, expected_result: :reject, expected_status: :not_found1528 behaves like reject package tags request1529 behaves like returning response status1530 returns not_found1531 package_name_type: :non_existing, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden1532 behaves like reject package tags request1533 behaves like returning response status1534 returns forbidden1535 package_name_type: :non_existing, visibility: :private, user_role: :reporter, expected_result: :reject, expected_status: :not_found1536 behaves like reject package tags request1537 behaves like returning response status1538 returns not_found1539 package_name_type: :scoped_naming_convention, visibility: :internal, user_role: :anonymous, expected_result: :reject, expected_status: :not_found1540 behaves like reject package tags request1541 behaves like returning response status1542 returns not_found1543 package_name_type: :scoped_naming_convention, visibility: :internal, user_role: :guest, expected_result: :accept, expected_status: :ok1544 behaves like accept package tags request1545 with valid package name1546 returns a valid json response1547 returns two package tags1548 behaves like returning response status1549 returns ok1550 with invalid package name1551 package_name: "%20", status: :bad_request1552 behaves like returning response status1553 returns bad_request1554 package_name: nil, status: :not_found1555 behaves like returning response status1556 returns not_found1557 package_name_type: :scoped_naming_convention, visibility: :internal, user_role: :reporter, expected_result: :accept, expected_status: :ok1558 behaves like accept package tags request1559 with valid package name1560 returns a valid json response1561 returns two package tags1562 behaves like returning response status1563 returns ok1564 with invalid package name1565 package_name: "%20", status: :bad_request1566 behaves like returning response status1567 returns bad_request1568 package_name: nil, status: :not_found1569 behaves like returning response status1570 returns not_found1571 package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: :anonymous, expected_result: :reject, expected_status: :not_found1572 behaves like reject package tags request1573 behaves like returning response status1574 returns not_found1575 package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: :guest, expected_result: :accept, expected_status: :ok1576 behaves like accept package tags request1577 with valid package name1578 returns a valid json response1579 returns two package tags1580 behaves like returning response status1581 returns ok1582 with invalid package name1583 package_name: "%20", status: :bad_request1584 behaves like returning response status1585 returns bad_request1586 package_name: nil, status: :not_found1587 behaves like returning response status1588 returns not_found1589 package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: :reporter, expected_result: :accept, expected_status: :ok1590 behaves like accept package tags request1591 with valid package name1592 returns a valid json response1593 returns two package tags1594 behaves like returning response status1595 returns ok1596 with invalid package name1597 package_name: "%20", status: :bad_request1598 behaves like returning response status1599 returns bad_request1600 package_name: nil, status: :not_found1601 behaves like returning response status1602 returns not_found1603 package_name_type: :unscoped, visibility: :internal, user_role: :anonymous, expected_result: :reject, expected_status: :not_found1604 behaves like reject package tags request1605 behaves like returning response status1606 returns not_found1607 package_name_type: :unscoped, visibility: :internal, user_role: :guest, expected_result: :accept, expected_status: :ok1608 behaves like accept package tags request1609 with valid package name1610 returns a valid json response1611 returns two package tags1612 behaves like returning response status1613 returns ok1614 with invalid package name1615 package_name: "%20", status: :bad_request1616 behaves like returning response status1617 returns bad_request1618 package_name: nil, status: :not_found1619 behaves like returning response status1620 returns not_found1621 package_name_type: :unscoped, visibility: :internal, user_role: :reporter, expected_result: :accept, expected_status: :ok1622 behaves like accept package tags request1623 with valid package name1624 returns a valid json response1625 returns two package tags1626 behaves like returning response status1627 returns ok1628 with invalid package name1629 package_name: "%20", status: :bad_request1630 behaves like returning response status1631 returns bad_request1632 package_name: nil, status: :not_found1633 behaves like returning response status1634 returns not_found1635 package_name_type: :non_existing, visibility: :internal, user_role: :anonymous, expected_result: :reject, expected_status: :not_found1636 behaves like reject package tags request1637 behaves like returning response status1638 returns not_found1639 package_name_type: :non_existing, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :not_found1640 behaves like reject package tags request1641 behaves like returning response status1642 returns not_found1643 package_name_type: :non_existing, visibility: :internal, user_role: :reporter, expected_result: :reject, expected_status: :not_found1644 behaves like reject package tags request1645 behaves like returning response status1646 returns not_found1647 PUT /api/v4/projects/:id/packages/npm/-/package/*package_name/dist-tags/:tag1648 behaves like handling create dist tag requests1649 with a group namespace1650 behaves like handling all conditions1651 with oauth token1652 behaves like handling different package names, visibilities and user roles1653 package_name_type: :scoped_naming_convention, visibility: :public, user_role: :anonymous, expected_result: :reject, expected_status: :forbidden1654 behaves like reject create package tag request1655 behaves like returning response status1656 returns forbidden1657 package_name_type: :scoped_naming_convention, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :forbidden1658 behaves like reject create package tag request1659 behaves like returning response status1660 returns forbidden1661 package_name_type: :scoped_naming_convention, visibility: :public, user_role: :developer, expected_result: :accept, expected_status: :ok1662 behaves like accept create package tag request1663 with valid package name1664 creates the package tag1665 returns a valid response1666 behaves like returning response status1667 returns no_content1668 with already existing tag1669 reuses existing tag1670 returns a valid response1671 behaves like returning response status1672 returns no_content1673 with invalid package name1674 package_name: "unknown", status: :not_found1675 behaves like returning response status1676 returns not_found1677 package_name: "", status: :not_found1678 behaves like returning response status1679 returns not_found1680 package_name: "%20", status: :bad_request1681 behaves like returning response status1682 returns bad_request1683 with invalid tag name1684 tag_name: "", status: :not_found1685 behaves like returning response status1686 returns not_found1687 tag_name: "%20", status: :bad_request1688 behaves like returning response status1689 returns bad_request1690 with invalid version1691 version: " ", status: :bad_request1692 behaves like returning response status1693 returns bad_request1694 version: "", status: :bad_request1695 behaves like returning response status1696 returns bad_request1697 version: nil, status: :bad_request1698 behaves like returning response status1699 returns bad_request1700 package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: :anonymous, expected_result: :reject, expected_status: :forbidden1701 behaves like reject create package tag request1702 behaves like returning response status1703 returns forbidden1704 package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :forbidden1705 behaves like reject create package tag request1706 behaves like returning response status1707 returns forbidden1708 package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: :developer, expected_result: :accept, expected_status: :ok1709 behaves like accept create package tag request1710 with valid package name1711 creates the package tag1712 returns a valid response1713 behaves like returning response status1714 returns no_content1715 with already existing tag1716 reuses existing tag1717 returns a valid response1718 behaves like returning response status1719 returns no_content1720 with invalid package name1721 package_name: "unknown", status: :not_found1722 behaves like returning response status1723 returns not_found1724 package_name: "", status: :not_found1725 behaves like returning response status1726 returns not_found1727 package_name: "%20", status: :bad_request1728 behaves like returning response status1729 returns bad_request1730 with invalid tag name1731 tag_name: "", status: :not_found1732 behaves like returning response status1733 returns not_found1734 tag_name: "%20", status: :bad_request1735 behaves like returning response status1736 returns bad_request1737 with invalid version1738 version: " ", status: :bad_request1739 behaves like returning response status1740 returns bad_request1741 version: "", status: :bad_request1742 behaves like returning response status1743 returns bad_request1744 version: nil, status: :bad_request1745 behaves like returning response status1746 returns bad_request1747 package_name_type: :unscoped, visibility: :public, user_role: :anonymous, expected_result: :reject, expected_status: :forbidden1748 behaves like reject create package tag request1749 behaves like returning response status1750 returns forbidden1751 package_name_type: :unscoped, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :forbidden1752 behaves like reject create package tag request1753 behaves like returning response status1754 returns forbidden1755 package_name_type: :unscoped, visibility: :public, user_role: :developer, expected_result: :accept, expected_status: :ok1756 behaves like accept create package tag request1757 with valid package name1758 creates the package tag1759 returns a valid response1760 behaves like returning response status1761 returns no_content1762 with already existing tag1763 reuses existing tag1764 returns a valid response1765 behaves like returning response status1766 returns no_content1767 with invalid package name1768 package_name: "unknown", status: :not_found1769 behaves like returning response status1770 returns not_found1771 package_name: "", status: :not_found1772 behaves like returning response status1773 returns not_found1774 package_name: "%20", status: :bad_request1775 behaves like returning response status1776 returns bad_request1777 with invalid tag name1778 tag_name: "", status: :not_found1779 behaves like returning response status1780 returns not_found1781 tag_name: "%20", status: :bad_request1782 behaves like returning response status1783 returns bad_request1784 with invalid version1785 version: " ", status: :bad_request1786 behaves like returning response status1787 returns bad_request1788 version: "", status: :bad_request1789 behaves like returning response status1790 returns bad_request1791 version: nil, status: :bad_request1792 behaves like returning response status1793 returns bad_request1794 package_name_type: :non_existing, visibility: :public, user_role: :anonymous, expected_result: :reject, expected_status: :forbidden1795 behaves like reject create package tag request1796 behaves like returning response status1797 returns forbidden1798 package_name_type: :non_existing, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :forbidden1799 behaves like reject create package tag request1800 behaves like returning response status1801 returns forbidden1802 package_name_type: :non_existing, visibility: :public, user_role: :developer, expected_result: :reject, expected_status: :not_found1803 behaves like reject create package tag request1804 behaves like returning response status1805 returns not_found1806 package_name_type: :scoped_naming_convention, visibility: :private, user_role: :anonymous, expected_result: :reject, expected_status: :not_found1807 behaves like reject create package tag request1808 behaves like returning response status1809 returns not_found1810 package_name_type: :scoped_naming_convention, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden1811 behaves like reject create package tag request1812 behaves like returning response status1813 returns forbidden1814 package_name_type: :scoped_naming_convention, visibility: :private, user_role: :developer, expected_result: :accept, expected_status: :ok1815 behaves like accept create package tag request1816 with valid package name1817 creates the package tag1818 returns a valid response1819 behaves like returning response status1820 returns no_content1821 with already existing tag1822 reuses existing tag1823 returns a valid response1824 behaves like returning response status1825 returns no_content1826 with invalid package name1827 package_name: "unknown", status: :not_found1828 behaves like returning response status1829 returns not_found1830 package_name: "", status: :not_found1831 behaves like returning response status1832 returns not_found1833 package_name: "%20", status: :bad_request1834 behaves like returning response status1835 returns bad_request1836 with invalid tag name1837 tag_name: "", status: :not_found1838 behaves like returning response status1839 returns not_found1840 tag_name: "%20", status: :bad_request1841 behaves like returning response status1842 returns bad_request1843 with invalid version1844 version: " ", status: :bad_request1845 behaves like returning response status1846 returns bad_request1847 version: "", status: :bad_request1848 behaves like returning response status1849 returns bad_request1850 version: nil, status: :bad_request1851 behaves like returning response status1852 returns bad_request1853 package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: :anonymous, expected_result: :reject, expected_status: :not_found1854 behaves like reject create package tag request1855 behaves like returning response status1856 returns not_found1857 package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden1858 behaves like reject create package tag request1859 behaves like returning response status1860 returns forbidden1861 package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: :developer, expected_result: :accept, expected_status: :ok1862 behaves like accept create package tag request1863 with valid package name1864 creates the package tag1865 returns a valid response1866 behaves like returning response status1867 returns no_content1868 with already existing tag1869 reuses existing tag1870 returns a valid response1871 behaves like returning response status1872 returns no_content1873 with invalid package name1874 package_name: "unknown", status: :not_found1875 behaves like returning response status1876 returns not_found1877 package_name: "", status: :not_found1878 behaves like returning response status1879 returns not_found1880 package_name: "%20", status: :bad_request1881 behaves like returning response status1882 returns bad_request1883 with invalid tag name1884 tag_name: "", status: :not_found1885 behaves like returning response status1886 returns not_found1887 tag_name: "%20", status: :bad_request1888 behaves like returning response status1889 returns bad_request1890 with invalid version1891 version: " ", status: :bad_request1892 behaves like returning response status1893 returns bad_request1894 version: "", status: :bad_request1895 behaves like returning response status1896 returns bad_request1897 version: nil, status: :bad_request1898 behaves like returning response status1899 returns bad_request1900 package_name_type: :unscoped, visibility: :private, user_role: :anonymous, expected_result: :reject, expected_status: :not_found1901 behaves like reject create package tag request1902 behaves like returning response status1903 returns not_found1904 package_name_type: :unscoped, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden1905 behaves like reject create package tag request1906 behaves like returning response status1907 returns forbidden1908 package_name_type: :unscoped, visibility: :private, user_role: :developer, expected_result: :accept, expected_status: :ok1909 behaves like accept create package tag request1910 with valid package name1911 creates the package tag1912 returns a valid response1913 behaves like returning response status1914 returns no_content1915 with already existing tag1916 reuses existing tag1917 returns a valid response1918 behaves like returning response status1919 returns no_content1920 with invalid package name1921 package_name: "unknown", status: :not_found1922 behaves like returning response status1923 returns not_found1924 package_name: "", status: :not_found1925 behaves like returning response status1926 returns not_found1927 package_name: "%20", status: :bad_request1928 behaves like returning response status1929 returns bad_request1930 with invalid tag name1931 tag_name: "", status: :not_found1932 behaves like returning response status1933 returns not_found1934 tag_name: "%20", status: :bad_request1935 behaves like returning response status1936 returns bad_request1937 with invalid version1938 version: " ", status: :bad_request1939 behaves like returning response status1940 returns bad_request1941 version: "", status: :bad_request1942 behaves like returning response status1943 returns bad_request1944 version: nil, status: :bad_request1945 behaves like returning response status1946 returns bad_request1947 package_name_type: :non_existing, visibility: :private, user_role: :anonymous, expected_result: :reject, expected_status: :not_found1948 behaves like reject create package tag request1949 behaves like returning response status1950 returns not_found1951 package_name_type: :non_existing, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden1952 behaves like reject create package tag request1953 behaves like returning response status1954 returns forbidden1955 package_name_type: :non_existing, visibility: :private, user_role: :developer, expected_result: :reject, expected_status: :not_found1956 behaves like reject create package tag request1957 behaves like returning response status1958 returns not_found1959 package_name_type: :scoped_naming_convention, visibility: :internal, user_role: :anonymous, expected_result: :reject, expected_status: :forbidden1960 behaves like reject create package tag request1961 behaves like returning response status1962 returns forbidden1963 package_name_type: :scoped_naming_convention, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :forbidden1964 behaves like reject create package tag request1965 behaves like returning response status1966 returns forbidden1967 package_name_type: :scoped_naming_convention, visibility: :internal, user_role: :developer, expected_result: :accept, expected_status: :ok1968 behaves like accept create package tag request1969 with valid package name1970 creates the package tag1971 returns a valid response1972 behaves like returning response status1973 returns no_content1974 with already existing tag1975 reuses existing tag1976 returns a valid response1977 behaves like returning response status1978 returns no_content1979 with invalid package name1980 package_name: "unknown", status: :not_found1981 behaves like returning response status1982 returns not_found1983 package_name: "", status: :not_found1984 behaves like returning response status1985 returns not_found1986 package_name: "%20", status: :bad_request1987 behaves like returning response status1988 returns bad_request1989 with invalid tag name1990 tag_name: "", status: :not_found1991 behaves like returning response status1992 returns not_found1993 tag_name: "%20", status: :bad_request1994 behaves like returning response status1995 returns bad_request1996 with invalid version1997 version: " ", status: :bad_request1998 behaves like returning response status1999 returns bad_request2000 version: "", status: :bad_request2001 behaves like returning response status2002 returns bad_request2003 version: nil, status: :bad_request2004 behaves like returning response status2005 returns bad_request2006 package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: :anonymous, expected_result: :reject, expected_status: :forbidden2007 behaves like reject create package tag request2008 behaves like returning response status2009 returns forbidden2010 package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :forbidden2011 behaves like reject create package tag request2012 behaves like returning response status2013 returns forbidden2014 package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: :developer, expected_result: :accept, expected_status: :ok2015 behaves like accept create package tag request2016 with valid package name2017 creates the package tag2018 returns a valid response2019 behaves like returning response status2020 returns no_content2021 with already existing tag2022 reuses existing tag2023 returns a valid response2024 behaves like returning response status2025 returns no_content2026 with invalid package name2027 package_name: "unknown", status: :not_found2028 behaves like returning response status2029 returns not_found2030 package_name: "", status: :not_found2031 behaves like returning response status2032 returns not_found2033 package_name: "%20", status: :bad_request2034 behaves like returning response status2035 returns bad_request2036 with invalid tag name2037 tag_name: "", status: :not_found2038 behaves like returning response status2039 returns not_found2040 tag_name: "%20", status: :bad_request2041 behaves like returning response status2042 returns bad_request2043 with invalid version2044 version: " ", status: :bad_request2045 behaves like returning response status2046 returns bad_request2047 version: "", status: :bad_request2048 behaves like returning response status2049 returns bad_request2050 version: nil, status: :bad_request2051 behaves like returning response status2052 returns bad_request2053 package_name_type: :unscoped, visibility: :internal, user_role: :anonymous, expected_result: :reject, expected_status: :forbidden2054 behaves like reject create package tag request2055 behaves like returning response status2056 returns forbidden2057 package_name_type: :unscoped, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :forbidden2058 behaves like reject create package tag request2059 behaves like returning response status2060 returns forbidden2061 package_name_type: :unscoped, visibility: :internal, user_role: :developer, expected_result: :accept, expected_status: :ok2062 behaves like accept create package tag request2063 with valid package name2064 creates the package tag2065 returns a valid response2066 behaves like returning response status2067 returns no_content2068 with already existing tag2069 reuses existing tag2070 returns a valid response2071 behaves like returning response status2072 returns no_content2073 with invalid package name2074 package_name: "unknown", status: :not_found2075 behaves like returning response status2076 returns not_found2077 package_name: "", status: :not_found2078 behaves like returning response status2079 returns not_found2080 package_name: "%20", status: :bad_request2081 behaves like returning response status2082 returns bad_request2083 with invalid tag name2084 tag_name: "", status: :not_found2085 behaves like returning response status2086 returns not_found2087 tag_name: "%20", status: :bad_request2088 behaves like returning response status2089 returns bad_request2090 with invalid version2091 version: " ", status: :bad_request2092 behaves like returning response status2093 returns bad_request2094 version: "", status: :bad_request2095 behaves like returning response status2096 returns bad_request2097 version: nil, status: :bad_request2098 behaves like returning response status2099 returns bad_request2100 package_name_type: :non_existing, visibility: :internal, user_role: :anonymous, expected_result: :reject, expected_status: :forbidden2101 behaves like reject create package tag request2102 behaves like returning response status2103 returns forbidden2104 package_name_type: :non_existing, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :forbidden2105 behaves like reject create package tag request2106 behaves like returning response status2107 returns forbidden2108 package_name_type: :non_existing, visibility: :internal, user_role: :developer, expected_result: :reject, expected_status: :not_found2109 behaves like reject create package tag request2110 behaves like returning response status2111 returns not_found2112 with personal access token2113 behaves like handling different package names, visibilities and user roles2114 package_name_type: :scoped_naming_convention, visibility: :public, user_role: :anonymous, expected_result: :reject, expected_status: :forbidden2115 behaves like reject create package tag request2116 behaves like returning response status2117 returns forbidden2118 package_name_type: :scoped_naming_convention, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :forbidden2119 behaves like reject create package tag request2120 behaves like returning response status2121 returns forbidden2122 package_name_type: :scoped_naming_convention, visibility: :public, user_role: :developer, expected_result: :accept, expected_status: :ok2123 behaves like accept create package tag request2124 with valid package name2125 creates the package tag2126 returns a valid response2127 behaves like returning response status2128 returns no_content2129 with already existing tag2130 reuses existing tag2131 returns a valid response2132 behaves like returning response status2133 returns no_content2134 with invalid package name2135 package_name: "unknown", status: :not_found2136 behaves like returning response status2137 returns not_found2138 package_name: "", status: :not_found2139 behaves like returning response status2140 returns not_found2141 package_name: "%20", status: :bad_request2142 behaves like returning response status2143 returns bad_request2144 with invalid tag name2145 tag_name: "", status: :not_found2146 behaves like returning response status2147 returns not_found2148 tag_name: "%20", status: :bad_request2149 behaves like returning response status2150 returns bad_request2151 with invalid version2152 version: " ", status: :bad_request2153 behaves like returning response status2154 returns bad_request2155 version: "", status: :bad_request2156 behaves like returning response status2157 returns bad_request2158 version: nil, status: :bad_request2159 behaves like returning response status2160 returns bad_request2161 package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: :anonymous, expected_result: :reject, expected_status: :forbidden2162 behaves like reject create package tag request2163 behaves like returning response status2164 returns forbidden2165 package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :forbidden2166 behaves like reject create package tag request2167 behaves like returning response status2168 returns forbidden2169 package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: :developer, expected_result: :accept, expected_status: :ok2170 behaves like accept create package tag request2171 with valid package name2172 creates the package tag2173 returns a valid response2174 behaves like returning response status2175 returns no_content2176 with already existing tag2177 reuses existing tag2178 returns a valid response2179 behaves like returning response status2180 returns no_content2181 with invalid package name2182 package_name: "unknown", status: :not_found2183 behaves like returning response status2184 returns not_found2185 package_name: "", status: :not_found2186 behaves like returning response status2187 returns not_found2188 package_name: "%20", status: :bad_request2189 behaves like returning response status2190 returns bad_request2191 with invalid tag name2192 tag_name: "", status: :not_found2193 behaves like returning response status2194 returns not_found2195 tag_name: "%20", status: :bad_request2196 behaves like returning response status2197 returns bad_request2198 with invalid version2199 version: " ", status: :bad_request2200 behaves like returning response status2201 returns bad_request2202 version: "", status: :bad_request2203 behaves like returning response status2204 returns bad_request2205 version: nil, status: :bad_request2206 behaves like returning response status2207 returns bad_request2208 package_name_type: :unscoped, visibility: :public, user_role: :anonymous, expected_result: :reject, expected_status: :forbidden2209 behaves like reject create package tag request2210 behaves like returning response status2211 returns forbidden2212 package_name_type: :unscoped, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :forbidden2213 behaves like reject create package tag request2214 behaves like returning response status2215 returns forbidden2216 package_name_type: :unscoped, visibility: :public, user_role: :developer, expected_result: :accept, expected_status: :ok2217 behaves like accept create package tag request2218 with valid package name2219 creates the package tag2220 returns a valid response2221 behaves like returning response status2222 returns no_content2223 with already existing tag2224 reuses existing tag2225 returns a valid response2226 behaves like returning response status2227 returns no_content2228 with invalid package name2229 package_name: "unknown", status: :not_found2230 behaves like returning response status2231 returns not_found2232 package_name: "", status: :not_found2233 behaves like returning response status2234 returns not_found2235 package_name: "%20", status: :bad_request2236 behaves like returning response status2237 returns bad_request2238 with invalid tag name2239 tag_name: "", status: :not_found2240 behaves like returning response status2241 returns not_found2242 tag_name: "%20", status: :bad_request2243 behaves like returning response status2244 returns bad_request2245 with invalid version2246 version: " ", status: :bad_request2247 behaves like returning response status2248 returns bad_request2249 version: "", status: :bad_request2250 behaves like returning response status2251 returns bad_request2252 version: nil, status: :bad_request2253 behaves like returning response status2254 returns bad_request2255 package_name_type: :non_existing, visibility: :public, user_role: :anonymous, expected_result: :reject, expected_status: :forbidden2256 behaves like reject create package tag request2257 behaves like returning response status2258 returns forbidden2259 package_name_type: :non_existing, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :forbidden2260 behaves like reject create package tag request2261 behaves like returning response status2262 returns forbidden2263 package_name_type: :non_existing, visibility: :public, user_role: :developer, expected_result: :reject, expected_status: :not_found2264 behaves like reject create package tag request2265 behaves like returning response status2266 returns not_found2267 package_name_type: :scoped_naming_convention, visibility: :private, user_role: :anonymous, expected_result: :reject, expected_status: :not_found2268 behaves like reject create package tag request2269 behaves like returning response status2270 returns not_found2271 package_name_type: :scoped_naming_convention, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden2272 behaves like reject create package tag request2273 behaves like returning response status2274 returns forbidden2275 package_name_type: :scoped_naming_convention, visibility: :private, user_role: :developer, expected_result: :accept, expected_status: :ok2276 behaves like accept create package tag request2277 with valid package name2278 creates the package tag2279 returns a valid response2280 behaves like returning response status2281 returns no_content2282 with already existing tag2283 reuses existing tag2284 returns a valid response2285 behaves like returning response status2286 returns no_content2287 with invalid package name2288 package_name: "unknown", status: :not_found2289 behaves like returning response status2290 returns not_found2291 package_name: "", status: :not_found2292 behaves like returning response status2293 returns not_found2294 package_name: "%20", status: :bad_request2295 behaves like returning response status2296 returns bad_request2297 with invalid tag name2298 tag_name: "", status: :not_found2299 behaves like returning response status2300 returns not_found2301 tag_name: "%20", status: :bad_request2302 behaves like returning response status2303 returns bad_request2304 with invalid version2305 version: " ", status: :bad_request2306 behaves like returning response status2307 returns bad_request2308 version: "", status: :bad_request2309 behaves like returning response status2310 returns bad_request2311 version: nil, status: :bad_request2312 behaves like returning response status2313 returns bad_request2314 package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: :anonymous, expected_result: :reject, expected_status: :not_found2315 behaves like reject create package tag request2316 behaves like returning response status2317 returns not_found2318 package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden2319 behaves like reject create package tag request2320 behaves like returning response status2321 returns forbidden2322 package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: :developer, expected_result: :accept, expected_status: :ok2323 behaves like accept create package tag request2324 with valid package name2325 creates the package tag2326 returns a valid response2327 behaves like returning response status2328 returns no_content2329 with already existing tag2330 reuses existing tag2331 returns a valid response2332 behaves like returning response status2333 returns no_content2334 with invalid package name2335 package_name: "unknown", status: :not_found2336 behaves like returning response status2337 returns not_found2338 package_name: "", status: :not_found2339 behaves like returning response status2340 returns not_found2341 package_name: "%20", status: :bad_request2342 behaves like returning response status2343 returns bad_request2344 with invalid tag name2345 tag_name: "", status: :not_found2346 behaves like returning response status2347 returns not_found2348 tag_name: "%20", status: :bad_request2349 behaves like returning response status2350 returns bad_request2351 with invalid version2352 version: " ", status: :bad_request2353 behaves like returning response status2354 returns bad_request2355 version: "", status: :bad_request2356 behaves like returning response status2357 returns bad_request2358 version: nil, status: :bad_request2359 behaves like returning response status2360 returns bad_request2361 package_name_type: :unscoped, visibility: :private, user_role: :anonymous, expected_result: :reject, expected_status: :not_found2362 behaves like reject create package tag request2363 behaves like returning response status2364 returns not_found2365 package_name_type: :unscoped, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden2366 behaves like reject create package tag request2367 behaves like returning response status2368 returns forbidden2369 package_name_type: :unscoped, visibility: :private, user_role: :developer, expected_result: :accept, expected_status: :ok2370 behaves like accept create package tag request2371 with valid package name2372 creates the package tag2373 returns a valid response2374 behaves like returning response status2375 returns no_content2376 with already existing tag2377 reuses existing tag2378 returns a valid response2379 behaves like returning response status2380 returns no_content2381 with invalid package name2382 package_name: "unknown", status: :not_found2383 behaves like returning response status2384 returns not_found2385 package_name: "", status: :not_found2386 behaves like returning response status2387 returns not_found2388 package_name: "%20", status: :bad_request2389 behaves like returning response status2390 returns bad_request2391 with invalid tag name2392 tag_name: "", status: :not_found2393 behaves like returning response status2394 returns not_found2395 tag_name: "%20", status: :bad_request2396 behaves like returning response status2397 returns bad_request2398 with invalid version2399 version: " ", status: :bad_request2400 behaves like returning response status2401 returns bad_request2402 version: "", status: :bad_request2403 behaves like returning response status2404 returns bad_request2405 version: nil, status: :bad_request2406 behaves like returning response status2407 returns bad_request2408 package_name_type: :non_existing, visibility: :private, user_role: :anonymous, expected_result: :reject, expected_status: :not_found2409 behaves like reject create package tag request2410 behaves like returning response status2411 returns not_found2412 package_name_type: :non_existing, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden2413 behaves like reject create package tag request2414 behaves like returning response status2415 returns forbidden2416 package_name_type: :non_existing, visibility: :private, user_role: :developer, expected_result: :reject, expected_status: :not_found2417 behaves like reject create package tag request2418 behaves like returning response status2419 returns not_found2420 package_name_type: :scoped_naming_convention, visibility: :internal, user_role: :anonymous, expected_result: :reject, expected_status: :forbidden2421 behaves like reject create package tag request2422 behaves like returning response status2423 returns forbidden2424 package_name_type: :scoped_naming_convention, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :forbidden2425 behaves like reject create package tag request2426 behaves like returning response status2427 returns forbidden2428 package_name_type: :scoped_naming_convention, visibility: :internal, user_role: :developer, expected_result: :accept, expected_status: :ok2429 behaves like accept create package tag request2430 with valid package name2431 creates the package tag2432 returns a valid response2433 behaves like returning response status2434 returns no_content2435 with already existing tag2436 reuses existing tag2437 returns a valid response2438 behaves like returning response status2439 returns no_content2440 with invalid package name2441 package_name: "unknown", status: :not_found2442 behaves like returning response status2443 returns not_found2444 package_name: "", status: :not_found2445 behaves like returning response status2446 returns not_found2447 package_name: "%20", status: :bad_request2448 behaves like returning response status2449 returns bad_request2450 with invalid tag name2451 tag_name: "", status: :not_found2452 behaves like returning response status2453 returns not_found2454 tag_name: "%20", status: :bad_request2455 behaves like returning response status2456 returns bad_request2457 with invalid version2458 version: " ", status: :bad_request2459 behaves like returning response status2460 returns bad_request2461 version: "", status: :bad_request2462 behaves like returning response status2463 returns bad_request2464 version: nil, status: :bad_request2465 behaves like returning response status2466 returns bad_request2467 package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: :anonymous, expected_result: :reject, expected_status: :forbidden2468 behaves like reject create package tag request2469 behaves like returning response status2470 returns forbidden2471 package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :forbidden2472 behaves like reject create package tag request2473 behaves like returning response status2474 returns forbidden2475 package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: :developer, expected_result: :accept, expected_status: :ok2476 behaves like accept create package tag request2477 with valid package name2478 creates the package tag2479 returns a valid response2480 behaves like returning response status2481 returns no_content2482 with already existing tag2483 reuses existing tag2484 returns a valid response2485 behaves like returning response status2486 returns no_content2487 with invalid package name2488 package_name: "unknown", status: :not_found2489 behaves like returning response status2490 returns not_found2491 package_name: "", status: :not_found2492 behaves like returning response status2493 returns not_found2494 package_name: "%20", status: :bad_request2495 behaves like returning response status2496 returns bad_request2497 with invalid tag name2498 tag_name: "", status: :not_found2499 behaves like returning response status2500 returns not_found2501 tag_name: "%20", status: :bad_request2502 behaves like returning response status2503 returns bad_request2504 with invalid version2505 version: " ", status: :bad_request2506 behaves like returning response status2507 returns bad_request2508 version: "", status: :bad_request2509 behaves like returning response status2510 returns bad_request2511 version: nil, status: :bad_request2512 behaves like returning response status2513 returns bad_request2514 package_name_type: :unscoped, visibility: :internal, user_role: :anonymous, expected_result: :reject, expected_status: :forbidden2515 behaves like reject create package tag request2516 behaves like returning response status2517 returns forbidden2518 package_name_type: :unscoped, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :forbidden2519 behaves like reject create package tag request2520 behaves like returning response status2521 returns forbidden2522 package_name_type: :unscoped, visibility: :internal, user_role: :developer, expected_result: :accept, expected_status: :ok2523 behaves like accept create package tag request2524 with valid package name2525 creates the package tag2526 returns a valid response2527 behaves like returning response status2528 returns no_content2529 with already existing tag2530 reuses existing tag2531 returns a valid response2532 behaves like returning response status2533 returns no_content2534 with invalid package name2535 package_name: "unknown", status: :not_found2536 behaves like returning response status2537 returns not_found2538 package_name: "", status: :not_found2539 behaves like returning response status2540 returns not_found2541 package_name: "%20", status: :bad_request2542 behaves like returning response status2543 returns bad_request2544 with invalid tag name2545 tag_name: "", status: :not_found2546 behaves like returning response status2547 returns not_found2548 tag_name: "%20", status: :bad_request2549 behaves like returning response status2550 returns bad_request2551 with invalid version2552 version: " ", status: :bad_request2553 behaves like returning response status2554 returns bad_request2555 version: "", status: :bad_request2556 behaves like returning response status2557 returns bad_request2558 version: nil, status: :bad_request2559 behaves like returning response status2560 returns bad_request2561 package_name_type: :non_existing, visibility: :internal, user_role: :anonymous, expected_result: :reject, expected_status: :forbidden2562 behaves like reject create package tag request2563 behaves like returning response status2564 returns forbidden2565 package_name_type: :non_existing, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :forbidden2566 behaves like reject create package tag request2567 behaves like returning response status2568 returns forbidden2569 package_name_type: :non_existing, visibility: :internal, user_role: :developer, expected_result: :reject, expected_status: :not_found2570 behaves like reject create package tag request2571 behaves like returning response status2572 returns not_found2573 DELETE /api/v4/projects/:id/packages/npm/-/package/*package_name/dist-tags/:tag2574 behaves like handling delete dist tag requests2575 with a group namespace2576 behaves like handling all conditions2577 with oauth token2578 behaves like handling different package names, visibilities and user roles2579 package_name_type: :scoped_naming_convention, visibility: :public, user_role: :anonymous, expected_result: :reject, expected_status: :forbidden2580 behaves like reject delete package tag request2581 behaves like returning response status2582 returns forbidden2583 package_name_type: :scoped_naming_convention, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :forbidden2584 behaves like reject delete package tag request2585 behaves like returning response status2586 returns forbidden2587 package_name_type: :scoped_naming_convention, visibility: :public, user_role: :maintainer, expected_result: :accept, expected_status: :ok2588 behaves like accept delete package tag request2589 with valid package name2590 returns a valid response2591 destroy the package tag2592 behaves like returning response status2593 returns no_content2594 with tag from other package2595 behaves like returning response status2596 returns not_found2597 with invalid package name2598 package_name: "unknown", status: :not_found2599 behaves like returning response status2600 returns not_found2601 package_name: "", status: :not_found2602 behaves like returning response status2603 returns not_found2604 package_name: "%20", status: :bad_request2605 behaves like returning response status2606 returns bad_request2607 with invalid tag name2608 tag_name: "unknown", status: :not_found2609 behaves like returning response status2610 returns not_found2611 tag_name: "", status: :not_found2612 behaves like returning response status2613 returns not_found2614 tag_name: "%20", status: :bad_request2615 behaves like returning response status2616 returns bad_request2617 package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: :anonymous, expected_result: :reject, expected_status: :forbidden2618 behaves like reject delete package tag request2619 behaves like returning response status2620 returns forbidden2621 package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :forbidden2622 behaves like reject delete package tag request2623 behaves like returning response status2624 returns forbidden2625 package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: :maintainer, expected_result: :accept, expected_status: :ok2626 behaves like accept delete package tag request2627 with valid package name2628 returns a valid response2629 destroy the package tag2630 behaves like returning response status2631 returns no_content2632 with tag from other package2633 behaves like returning response status2634 returns not_found2635 with invalid package name2636 package_name: "unknown", status: :not_found2637 behaves like returning response status2638 returns not_found2639 package_name: "", status: :not_found2640 behaves like returning response status2641 returns not_found2642 package_name: "%20", status: :bad_request2643 behaves like returning response status2644 returns bad_request2645 with invalid tag name2646 tag_name: "unknown", status: :not_found2647 behaves like returning response status2648 returns not_found2649 tag_name: "", status: :not_found2650 behaves like returning response status2651 returns not_found2652 tag_name: "%20", status: :bad_request2653 behaves like returning response status2654 returns bad_request2655 package_name_type: :unscoped, visibility: :public, user_role: :anonymous, expected_result: :reject, expected_status: :forbidden2656 behaves like reject delete package tag request2657 behaves like returning response status2658 returns forbidden2659 package_name_type: :unscoped, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :forbidden2660 behaves like reject delete package tag request2661 behaves like returning response status2662 returns forbidden2663 package_name_type: :unscoped, visibility: :public, user_role: :maintainer, expected_result: :accept, expected_status: :ok2664 behaves like accept delete package tag request2665 with valid package name2666 returns a valid response2667 destroy the package tag2668 behaves like returning response status2669 returns no_content2670 with tag from other package2671 behaves like returning response status2672 returns not_found2673 with invalid package name2674 package_name: "unknown", status: :not_found2675 behaves like returning response status2676 returns not_found2677 package_name: "", status: :not_found2678 behaves like returning response status2679 returns not_found2680 package_name: "%20", status: :bad_request2681 behaves like returning response status2682 returns bad_request2683 with invalid tag name2684 tag_name: "unknown", status: :not_found2685 behaves like returning response status2686 returns not_found2687 tag_name: "", status: :not_found2688 behaves like returning response status2689 returns not_found2690 tag_name: "%20", status: :bad_request2691 behaves like returning response status2692 returns bad_request2693 package_name_type: :non_existing, visibility: :public, user_role: :anonymous, expected_result: :reject, expected_status: :forbidden2694 behaves like reject delete package tag request2695 behaves like returning response status2696 returns forbidden2697 package_name_type: :non_existing, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :forbidden2698 behaves like reject delete package tag request2699 behaves like returning response status2700 returns forbidden2701 package_name_type: :non_existing, visibility: :public, user_role: :maintainer, expected_result: :reject, expected_status: :not_found2702 behaves like reject delete package tag request2703 behaves like returning response status2704 returns not_found2705 package_name_type: :scoped_naming_convention, visibility: :private, user_role: :anonymous, expected_result: :reject, expected_status: :not_found2706 behaves like reject delete package tag request2707 behaves like returning response status2708 returns not_found2709 package_name_type: :scoped_naming_convention, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden2710 behaves like reject delete package tag request2711 behaves like returning response status2712 returns forbidden2713 package_name_type: :scoped_naming_convention, visibility: :private, user_role: :maintainer, expected_result: :accept, expected_status: :ok2714 behaves like accept delete package tag request2715 with valid package name2716 returns a valid response2717 destroy the package tag2718 behaves like returning response status2719 returns no_content2720 with tag from other package2721 behaves like returning response status2722 returns not_found2723 with invalid package name2724 package_name: "unknown", status: :not_found2725 behaves like returning response status2726 returns not_found2727 package_name: "", status: :not_found2728 behaves like returning response status2729 returns not_found2730 package_name: "%20", status: :bad_request2731 behaves like returning response status2732 returns bad_request2733 with invalid tag name2734 tag_name: "unknown", status: :not_found2735 behaves like returning response status2736 returns not_found2737 tag_name: "", status: :not_found2738 behaves like returning response status2739 returns not_found2740 tag_name: "%20", status: :bad_request2741 behaves like returning response status2742 returns bad_request2743 package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: :anonymous, expected_result: :reject, expected_status: :not_found2744 behaves like reject delete package tag request2745 behaves like returning response status2746 returns not_found2747 package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden2748 behaves like reject delete package tag request2749 behaves like returning response status2750 returns forbidden2751 package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: :maintainer, expected_result: :accept, expected_status: :ok2752 behaves like accept delete package tag request2753 with valid package name2754 returns a valid response2755 destroy the package tag2756 behaves like returning response status2757 returns no_content2758 with tag from other package2759 behaves like returning response status2760 returns not_found2761 with invalid package name2762 package_name: "unknown", status: :not_found2763 behaves like returning response status2764 returns not_found2765 package_name: "", status: :not_found2766 behaves like returning response status2767 returns not_found2768 package_name: "%20", status: :bad_request2769 behaves like returning response status2770 returns bad_request2771 with invalid tag name2772 tag_name: "unknown", status: :not_found2773 behaves like returning response status2774 returns not_found2775 tag_name: "", status: :not_found2776 behaves like returning response status2777 returns not_found2778 tag_name: "%20", status: :bad_request2779 behaves like returning response status2780 returns bad_request2781 package_name_type: :unscoped, visibility: :private, user_role: :anonymous, expected_result: :reject, expected_status: :not_found2782 behaves like reject delete package tag request2783 behaves like returning response status2784 returns not_found2785 package_name_type: :unscoped, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden2786 behaves like reject delete package tag request2787 behaves like returning response status2788 returns forbidden2789 package_name_type: :unscoped, visibility: :private, user_role: :maintainer, expected_result: :accept, expected_status: :ok2790 behaves like accept delete package tag request2791 with valid package name2792 returns a valid response2793 destroy the package tag2794 behaves like returning response status2795 returns no_content2796 with tag from other package2797 behaves like returning response status2798 returns not_found2799 with invalid package name2800 package_name: "unknown", status: :not_found2801 behaves like returning response status2802 returns not_found2803 package_name: "", status: :not_found2804 behaves like returning response status2805 returns not_found2806 package_name: "%20", status: :bad_request2807 behaves like returning response status2808 returns bad_request2809 with invalid tag name2810 tag_name: "unknown", status: :not_found2811 behaves like returning response status2812 returns not_found2813 tag_name: "", status: :not_found2814 behaves like returning response status2815 returns not_found2816 tag_name: "%20", status: :bad_request2817 behaves like returning response status2818 returns bad_request2819 package_name_type: :non_existing, visibility: :private, user_role: :anonymous, expected_result: :reject, expected_status: :not_found2820 behaves like reject delete package tag request2821 behaves like returning response status2822 returns not_found2823 package_name_type: :non_existing, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden2824 behaves like reject delete package tag request2825 behaves like returning response status2826 returns forbidden2827 package_name_type: :non_existing, visibility: :private, user_role: :maintainer, expected_result: :reject, expected_status: :not_found2828 behaves like reject delete package tag request2829 behaves like returning response status2830 returns not_found2831 package_name_type: :scoped_naming_convention, visibility: :internal, user_role: :anonymous, expected_result: :reject, expected_status: :forbidden2832 behaves like reject delete package tag request2833 behaves like returning response status2834 returns forbidden2835 package_name_type: :scoped_naming_convention, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :forbidden2836 behaves like reject delete package tag request2837 behaves like returning response status2838 returns forbidden2839 package_name_type: :scoped_naming_convention, visibility: :internal, user_role: :maintainer, expected_result: :accept, expected_status: :ok2840 behaves like accept delete package tag request2841 with valid package name2842 returns a valid response2843 destroy the package tag2844 behaves like returning response status2845 returns no_content2846 with tag from other package2847 behaves like returning response status2848 returns not_found2849 with invalid package name2850 package_name: "unknown", status: :not_found2851 behaves like returning response status2852 returns not_found2853 package_name: "", status: :not_found2854 behaves like returning response status2855 returns not_found2856 package_name: "%20", status: :bad_request2857 behaves like returning response status2858 returns bad_request2859 with invalid tag name2860 tag_name: "unknown", status: :not_found2861 behaves like returning response status2862 returns not_found2863 tag_name: "", status: :not_found2864 behaves like returning response status2865 returns not_found2866 tag_name: "%20", status: :bad_request2867 behaves like returning response status2868 returns bad_request2869 package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: :anonymous, expected_result: :reject, expected_status: :forbidden2870 behaves like reject delete package tag request2871 behaves like returning response status2872 returns forbidden2873 package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :forbidden2874 behaves like reject delete package tag request2875 behaves like returning response status2876 returns forbidden2877 package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: :maintainer, expected_result: :accept, expected_status: :ok2878 behaves like accept delete package tag request2879 with valid package name2880 returns a valid response2881 destroy the package tag2882 behaves like returning response status2883 returns no_content2884 with tag from other package2885 behaves like returning response status2886 returns not_found2887 with invalid package name2888 package_name: "unknown", status: :not_found2889 behaves like returning response status2890 returns not_found2891 package_name: "", status: :not_found2892 behaves like returning response status2893 returns not_found2894 package_name: "%20", status: :bad_request2895 behaves like returning response status2896 returns bad_request2897 with invalid tag name2898 tag_name: "unknown", status: :not_found2899 behaves like returning response status2900 returns not_found2901 tag_name: "", status: :not_found2902 behaves like returning response status2903 returns not_found2904 tag_name: "%20", status: :bad_request2905 behaves like returning response status2906 returns bad_request2907 package_name_type: :unscoped, visibility: :internal, user_role: :anonymous, expected_result: :reject, expected_status: :forbidden2908 behaves like reject delete package tag request2909 behaves like returning response status2910 returns forbidden2911 package_name_type: :unscoped, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :forbidden2912 behaves like reject delete package tag request2913 behaves like returning response status2914 returns forbidden2915 package_name_type: :unscoped, visibility: :internal, user_role: :maintainer, expected_result: :accept, expected_status: :ok2916 behaves like accept delete package tag request2917 with valid package name2918 returns a valid response2919 destroy the package tag2920 behaves like returning response status2921 returns no_content2922 with tag from other package2923 behaves like returning response status2924 returns not_found2925 with invalid package name2926 package_name: "unknown", status: :not_found2927 behaves like returning response status2928 returns not_found2929 package_name: "", status: :not_found2930 behaves like returning response status2931 returns not_found2932 package_name: "%20", status: :bad_request2933 behaves like returning response status2934 returns bad_request2935 with invalid tag name2936 tag_name: "unknown", status: :not_found2937 behaves like returning response status2938 returns not_found2939 tag_name: "", status: :not_found2940 behaves like returning response status2941 returns not_found2942 tag_name: "%20", status: :bad_request2943 behaves like returning response status2944 returns bad_request2945 package_name_type: :non_existing, visibility: :internal, user_role: :anonymous, expected_result: :reject, expected_status: :forbidden2946 behaves like reject delete package tag request2947 behaves like returning response status2948 returns forbidden2949 package_name_type: :non_existing, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :forbidden2950 behaves like reject delete package tag request2951 behaves like returning response status2952 returns forbidden2953 package_name_type: :non_existing, visibility: :internal, user_role: :maintainer, expected_result: :reject, expected_status: :not_found2954 behaves like reject delete package tag request2955 behaves like returning response status2956 returns not_found2957 with personal access token2958 behaves like handling different package names, visibilities and user roles2959 package_name_type: :scoped_naming_convention, visibility: :public, user_role: :anonymous, expected_result: :reject, expected_status: :forbidden2960 behaves like reject delete package tag request2961 behaves like returning response status2962 returns forbidden2963 package_name_type: :scoped_naming_convention, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :forbidden2964 behaves like reject delete package tag request2965 behaves like returning response status2966 returns forbidden2967 package_name_type: :scoped_naming_convention, visibility: :public, user_role: :maintainer, expected_result: :accept, expected_status: :ok2968 behaves like accept delete package tag request2969 with valid package name2970 returns a valid response2971 destroy the package tag2972 behaves like returning response status2973 returns no_content2974 with tag from other package2975 behaves like returning response status2976 returns not_found2977 with invalid package name2978 package_name: "unknown", status: :not_found2979 behaves like returning response status2980 returns not_found2981 package_name: "", status: :not_found2982 behaves like returning response status2983 returns not_found2984 package_name: "%20", status: :bad_request2985 behaves like returning response status2986 returns bad_request2987 with invalid tag name2988 tag_name: "unknown", status: :not_found2989 behaves like returning response status2990 returns not_found2991 tag_name: "", status: :not_found2992 behaves like returning response status2993 returns not_found2994 tag_name: "%20", status: :bad_request2995 behaves like returning response status2996 returns bad_request2997 package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: :anonymous, expected_result: :reject, expected_status: :forbidden2998 behaves like reject delete package tag request2999 behaves like returning response status3000 returns forbidden3001 package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :forbidden3002 behaves like reject delete package tag request3003 behaves like returning response status3004 returns forbidden3005 package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: :maintainer, expected_result: :accept, expected_status: :ok3006 behaves like accept delete package tag request3007 with valid package name3008 returns a valid response3009 destroy the package tag3010 behaves like returning response status3011 returns no_content3012 with tag from other package3013 behaves like returning response status3014 returns not_found3015 with invalid package name3016 package_name: "unknown", status: :not_found3017 behaves like returning response status3018 returns not_found3019 package_name: "", status: :not_found3020 behaves like returning response status3021 returns not_found3022 package_name: "%20", status: :bad_request3023 behaves like returning response status3024 returns bad_request3025 with invalid tag name3026 tag_name: "unknown", status: :not_found3027 behaves like returning response status3028 returns not_found3029 tag_name: "", status: :not_found3030 behaves like returning response status3031 returns not_found3032 tag_name: "%20", status: :bad_request3033 behaves like returning response status3034 returns bad_request3035 package_name_type: :unscoped, visibility: :public, user_role: :anonymous, expected_result: :reject, expected_status: :forbidden3036 behaves like reject delete package tag request3037 behaves like returning response status3038 returns forbidden3039 package_name_type: :unscoped, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :forbidden3040 behaves like reject delete package tag request3041 behaves like returning response status3042 returns forbidden3043 package_name_type: :unscoped, visibility: :public, user_role: :maintainer, expected_result: :accept, expected_status: :ok3044 behaves like accept delete package tag request3045 with valid package name3046 returns a valid response3047 destroy the package tag3048 behaves like returning response status3049 returns no_content3050 with tag from other package3051 behaves like returning response status3052 returns not_found3053 with invalid package name3054 package_name: "unknown", status: :not_found3055 behaves like returning response status3056 returns not_found3057 package_name: "", status: :not_found3058 behaves like returning response status3059 returns not_found3060 package_name: "%20", status: :bad_request3061 behaves like returning response status3062 returns bad_request3063 with invalid tag name3064 tag_name: "unknown", status: :not_found3065 behaves like returning response status3066 returns not_found3067 tag_name: "", status: :not_found3068 behaves like returning response status3069 returns not_found3070 tag_name: "%20", status: :bad_request3071 behaves like returning response status3072 returns bad_request3073 package_name_type: :non_existing, visibility: :public, user_role: :anonymous, expected_result: :reject, expected_status: :forbidden3074 behaves like reject delete package tag request3075 behaves like returning response status3076 returns forbidden3077 package_name_type: :non_existing, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :forbidden3078 behaves like reject delete package tag request3079 behaves like returning response status3080 returns forbidden3081 package_name_type: :non_existing, visibility: :public, user_role: :maintainer, expected_result: :reject, expected_status: :not_found3082 behaves like reject delete package tag request3083 behaves like returning response status3084 returns not_found3085 package_name_type: :scoped_naming_convention, visibility: :private, user_role: :anonymous, expected_result: :reject, expected_status: :not_found3086 behaves like reject delete package tag request3087 behaves like returning response status3088 returns not_found3089 package_name_type: :scoped_naming_convention, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden3090 behaves like reject delete package tag request3091 behaves like returning response status3092 returns forbidden3093 package_name_type: :scoped_naming_convention, visibility: :private, user_role: :maintainer, expected_result: :accept, expected_status: :ok3094 behaves like accept delete package tag request3095 with valid package name3096 returns a valid response3097 destroy the package tag3098 behaves like returning response status3099 returns no_content3100 with tag from other package3101 behaves like returning response status3102 returns not_found3103 with invalid package name3104 package_name: "unknown", status: :not_found3105 behaves like returning response status3106 returns not_found3107 package_name: "", status: :not_found3108 behaves like returning response status3109 returns not_found3110 package_name: "%20", status: :bad_request3111 behaves like returning response status3112 returns bad_request3113 with invalid tag name3114 tag_name: "unknown", status: :not_found3115 behaves like returning response status3116 returns not_found3117 tag_name: "", status: :not_found3118 behaves like returning response status3119 returns not_found3120 tag_name: "%20", status: :bad_request3121 behaves like returning response status3122 returns bad_request3123 package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: :anonymous, expected_result: :reject, expected_status: :not_found3124 behaves like reject delete package tag request3125 behaves like returning response status3126 returns not_found3127 package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden3128 behaves like reject delete package tag request3129 behaves like returning response status3130 returns forbidden3131 package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: :maintainer, expected_result: :accept, expected_status: :ok3132 behaves like accept delete package tag request3133 with valid package name3134 returns a valid response3135 destroy the package tag3136 behaves like returning response status3137 returns no_content3138 with tag from other package3139 behaves like returning response status3140 returns not_found3141 with invalid package name3142 package_name: "unknown", status: :not_found3143 behaves like returning response status3144 returns not_found3145 package_name: "", status: :not_found3146 behaves like returning response status3147 returns not_found3148 package_name: "%20", status: :bad_request3149 behaves like returning response status3150 returns bad_request3151 with invalid tag name3152 tag_name: "unknown", status: :not_found3153 behaves like returning response status3154 returns not_found3155 tag_name: "", status: :not_found3156 behaves like returning response status3157 returns not_found3158 tag_name: "%20", status: :bad_request3159 behaves like returning response status3160 returns bad_request3161 package_name_type: :unscoped, visibility: :private, user_role: :anonymous, expected_result: :reject, expected_status: :not_found3162 behaves like reject delete package tag request3163 behaves like returning response status3164 returns not_found3165 package_name_type: :unscoped, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden3166 behaves like reject delete package tag request3167 behaves like returning response status3168 returns forbidden3169 package_name_type: :unscoped, visibility: :private, user_role: :maintainer, expected_result: :accept, expected_status: :ok3170 behaves like accept delete package tag request3171 with valid package name3172 returns a valid response3173 destroy the package tag3174 behaves like returning response status3175 returns no_content3176 with tag from other package3177 behaves like returning response status3178 returns not_found3179 with invalid package name3180 package_name: "unknown", status: :not_found3181 behaves like returning response status3182 returns not_found3183 package_name: "", status: :not_found3184 behaves like returning response status3185 returns not_found3186 package_name: "%20", status: :bad_request3187 behaves like returning response status3188 returns bad_request3189 with invalid tag name3190 tag_name: "unknown", status: :not_found3191 behaves like returning response status3192 returns not_found3193 tag_name: "", status: :not_found3194 behaves like returning response status3195 returns not_found3196 tag_name: "%20", status: :bad_request3197 behaves like returning response status3198 returns bad_request3199 package_name_type: :non_existing, visibility: :private, user_role: :anonymous, expected_result: :reject, expected_status: :not_found3200 behaves like reject delete package tag request3201 behaves like returning response status3202 returns not_found3203 package_name_type: :non_existing, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden3204 behaves like reject delete package tag request3205 behaves like returning response status3206 returns forbidden3207 package_name_type: :non_existing, visibility: :private, user_role: :maintainer, expected_result: :reject, expected_status: :not_found3208 behaves like reject delete package tag request3209 behaves like returning response status3210 returns not_found3211 package_name_type: :scoped_naming_convention, visibility: :internal, user_role: :anonymous, expected_result: :reject, expected_status: :forbidden3212 behaves like reject delete package tag request3213 behaves like returning response status3214 returns forbidden3215 package_name_type: :scoped_naming_convention, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :forbidden3216 behaves like reject delete package tag request3217 behaves like returning response status3218 returns forbidden3219 package_name_type: :scoped_naming_convention, visibility: :internal, user_role: :maintainer, expected_result: :accept, expected_status: :ok3220 behaves like accept delete package tag request3221 with valid package name3222 returns a valid response3223 destroy the package tag3224 behaves like returning response status3225 returns no_content3226 with tag from other package3227 behaves like returning response status3228 returns not_found3229 with invalid package name3230 package_name: "unknown", status: :not_found3231 behaves like returning response status3232 returns not_found3233 package_name: "", status: :not_found3234 behaves like returning response status3235 returns not_found3236 package_name: "%20", status: :bad_request3237 behaves like returning response status3238 returns bad_request3239 with invalid tag name3240 tag_name: "unknown", status: :not_found3241 behaves like returning response status3242 returns not_found3243 tag_name: "", status: :not_found3244 behaves like returning response status3245 returns not_found3246 tag_name: "%20", status: :bad_request3247 behaves like returning response status3248 returns bad_request3249 package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: :anonymous, expected_result: :reject, expected_status: :forbidden3250 behaves like reject delete package tag request3251 behaves like returning response status3252 returns forbidden3253 package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :forbidden3254 behaves like reject delete package tag request3255 behaves like returning response status3256 returns forbidden3257 package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: :maintainer, expected_result: :accept, expected_status: :ok3258 behaves like accept delete package tag request3259 with valid package name3260 returns a valid response3261 destroy the package tag3262 behaves like returning response status3263 returns no_content3264 with tag from other package3265 behaves like returning response status3266 returns not_found3267 with invalid package name3268 package_name: "unknown", status: :not_found3269 behaves like returning response status3270 returns not_found3271 package_name: "", status: :not_found3272 behaves like returning response status3273 returns not_found3274 package_name: "%20", status: :bad_request3275 behaves like returning response status3276 returns bad_request3277 with invalid tag name3278 tag_name: "unknown", status: :not_found3279 behaves like returning response status3280 returns not_found3281 tag_name: "", status: :not_found3282 behaves like returning response status3283 returns not_found3284 tag_name: "%20", status: :bad_request3285 behaves like returning response status3286 returns bad_request3287 package_name_type: :unscoped, visibility: :internal, user_role: :anonymous, expected_result: :reject, expected_status: :forbidden3288 behaves like reject delete package tag request3289 behaves like returning response status3290 returns forbidden3291 package_name_type: :unscoped, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :forbidden3292 behaves like reject delete package tag request3293 behaves like returning response status3294 returns forbidden3295 package_name_type: :unscoped, visibility: :internal, user_role: :maintainer, expected_result: :accept, expected_status: :ok3296 behaves like accept delete package tag request3297 with valid package name3298 returns a valid response3299 destroy the package tag3300 behaves like returning response status3301 returns no_content3302 with tag from other package3303 behaves like returning response status3304 returns not_found3305 with invalid package name3306 package_name: "unknown", status: :not_found3307 behaves like returning response status3308 returns not_found3309 package_name: "", status: :not_found3310 behaves like returning response status3311 returns not_found3312 package_name: "%20", status: :bad_request3313 behaves like returning response status3314 returns bad_request3315 with invalid tag name3316 tag_name: "unknown", status: :not_found3317 behaves like returning response status3318 returns not_found3319 tag_name: "", status: :not_found3320 behaves like returning response status3321 returns not_found3322 tag_name: "%20", status: :bad_request3323 behaves like returning response status3324 returns bad_request3325 package_name_type: :non_existing, visibility: :internal, user_role: :anonymous, expected_result: :reject, expected_status: :forbidden3326 behaves like reject delete package tag request3327 behaves like returning response status3328 returns forbidden3329 package_name_type: :non_existing, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :forbidden3330 behaves like reject delete package tag request3331 behaves like returning response status3332 returns forbidden3333 package_name_type: :non_existing, visibility: :internal, user_role: :maintainer, expected_result: :reject, expected_status: :not_found3334 behaves like reject delete package tag request3335 behaves like returning response status3336 returns not_found3337 GET /api/v4/projects/:id/packages/npm/*package_name/-/*file_name3338 a public project3339 behaves like successfully downloads the file3340 returns the file3341 behaves like a package tracking event3342 creates a gitlab tracking event pull_package3343 with a job token for a different user3344 behaves like successfully downloads the file3345 returns the file3346 private project3347 behaves like a package file that requires auth3348 denies download with no token3349 with access token3350 behaves like successfully downloads the file3351 returns the file3352 with job token3353 behaves like successfully downloads the file3354 returns the file3355 with guest3356 denies download when not enough permissions3357 internal project3358 behaves like a package file that requires auth3359 denies download with no token3360 with access token3361 behaves like successfully downloads the file3362 returns the file3363 with job token3364 behaves like successfully downloads the file3365 returns the file3366 PUT /api/v4/projects/:id/packages/npm/:package_name3367 when params are correct3368 invalid package record3369 invalid package name3370 behaves like handling invalid record with 400 error3371 handles an ActiveRecord::RecordInvalid exception with 400 error3372 behaves like not a package tracking event3373 does not create a gitlab tracking event3374 invalid package version3375 version: "1"3376 behaves like handling invalid record with 400 error3377 handles an ActiveRecord::RecordInvalid exception with 400 error3378 behaves like not a package tracking event3379 does not create a gitlab tracking event3380 version: "1.2"3381 behaves like handling invalid record with 400 error3382 handles an ActiveRecord::RecordInvalid exception with 400 error3383 behaves like not a package tracking event3384 does not create a gitlab tracking event3385 version: "1./2.3"3386 behaves like handling invalid record with 400 error3387 handles an ActiveRecord::RecordInvalid exception with 400 error3388 behaves like not a package tracking event3389 does not create a gitlab tracking event3390 version: "../../../../../1.2.3"3391 behaves like handling invalid record with 400 error3392 handles an ActiveRecord::RecordInvalid exception with 400 error3393 behaves like not a package tracking event3394 does not create a gitlab tracking event3395 version: "%2e%2e%2f1.2.3"3396 behaves like handling invalid record with 400 error3397 handles an ActiveRecord::RecordInvalid exception with 400 error3398 behaves like not a package tracking event3399 does not create a gitlab tracking event3400 valid package params3401 with a scoped name3402 behaves like handling upload with different authentications3403 creates npm package with file with job token3404 with access token3405 creates npm package with file3406 behaves like a package tracking event3407 creates a gitlab tracking event push_package3408 with an authenticated job token3409 creates the package metadata3410 with any scoped name3411 behaves like handling upload with different authentications3412 creates npm package with file with job token3413 with access token3414 creates npm package with file3415 behaves like a package tracking event3416 creates a gitlab tracking event push_package3417 with an authenticated job token3418 creates the package metadata3419 with an unscoped name3420 behaves like handling upload with different authentications3421 creates npm package with file with job token3422 with access token3423 creates npm package with file3424 behaves like a package tracking event3425 creates a gitlab tracking event push_package3426 with an authenticated job token3427 creates the package metadata3428 with an existing package3429 following the naming convention3430 behaves like handling invalid record with 400 error3431 handles an ActiveRecord::RecordInvalid exception with 400 error3432 behaves like not a package tracking event3433 does not create a gitlab tracking event3434 with a new version3435 behaves like uploading the package3436 uploads the package3437 not following the naming convention3438 behaves like uploading the package3439 uploads the package3440 package creation fails3441 returns an error if the package already exists3442 behaves like not a package tracking event3443 does not create a gitlab tracking event3444 with dependencies3445 creates npm package with file and dependencies3446 with existing dependencies3447 reuses them3448Projects::IssuesController3449 GET #index3450 external issue tracker3451 when GitLab issues disabled3452 returns 404 status3453 when GitLab issues enabled3454 renders the "index" template3455 when project has moved3456 redirects to the new issue tracker from the old one3457 redirects from an old issue correctly3458 internal issue tracker3459 returns index3460 returns only list type issues3461 returns 301 if request path doesn't match project path3462 returns 404 when issues are disabled3463 behaves like issuables list meta-data3464 creates indexed meta-data object for issuable notes and votes count3465 avoids N+1 queries3466 searching3467 works when sorting by created_asc3468 works when sorting by created_at_asc3469 works when sorting by created_date3470 works when sorting by created_desc3471 works when sorting by created_at_desc3472 works when sorting by id_asc3473 works when sorting by id_desc3474 works when sorting by updated_asc3475 works when sorting by updated_at_asc3476 works when sorting by updated_desc3477 works when sorting by updated_at_desc3478 works when sorting by title_asc3479 works when sorting by title_desc3480 works when sorting by closest_future_date3481 works when sorting by closest_future_date_asc3482 works when sorting by due_date3483 works when sorting by due_date_asc3484 works when sorting by due_date_desc3485 works when sorting by relative_position3486 works when sorting by relative_position_asc3487 works when sorting by weight3488 works when sorting by weight_asc3489 works when sorting by weight_desc3490 works when sorting by popularity3491 works when sorting by priority3492 works when sorting by label_priority3493 when given empty collection3494 doesn't execute any queries with false conditions3495 behaves like set sort order from user preference3496 #set_sort_order_from_user_preference3497 when database is in read-only mode3498 does not update user preference3499 when database is not in read-only mode3500 updates user preference3501 behaves like issuable list with anonymous search disabled3502 when disable_anonymous_search is enabled3503 shows a flash message3504 when search param is not given3505 does not show a flash message3506 when user is signed-in3507 does not show a flash message3508 when format is not HTML3509DEPRECATION WARNING: Rendering actions with '.' in the name is deprecated: layouts/xml.atom (called from render at /builds/gitlab-org/gitlab/app/controllers/application_controller.rb:136)3510DEPRECATION WARNING: Rendering actions with '.' in the name is deprecated: layouts/xml.atom (called from render at /builds/gitlab-org/gitlab/app/controllers/application_controller.rb:136)3511 does not show a flash message3512 when disable_anonymous_search is disabled3513 does not show a flash message3514 behaves like paginated collection3515 renders a page number that is not ouf of range3516 redirects to last_page if page number is larger than number of pages3517 does not redirect to external sites when provided a host field3518 does not use pagination if disabled3519 with relative_position sorting3520 overrides the number allowed on the page3521 allows the default number on the page3522 external authorization3523 behaves like unauthorized when external service denies access3524 allows access when the authorization service allows it3525 allows access when the authorization service denies it3526 GET #show3527 returns issue_email_participants3528 with the invite_members_in_comment experiment3529 when user can invite3530 assigns the candidate experience and tracks the event3531 when user can not invite3532 does not track the event3533 GET #new3534 redirects to signin if not logged in3535 internal issue tracker3536 builds a new issue3537 fills in an issue for a merge request3538 fills in an issue for a discussion3539 conf_value: true, conf_result: true3540 sets the confidential flag to the expected value3541 conf_value: "true", conf_result: true3542 sets the confidential flag to the expected value3543 conf_value: "TRUE", conf_result: true3544 sets the confidential flag to the expected value3545 conf_value: false, conf_result: false3546 sets the confidential flag to the expected value3547 conf_value: "false", conf_result: false3548 sets the confidential flag to the expected value3549 conf_value: "FALSE", conf_result: false3550 sets the confidential flag to the expected value3551 setting issue type3552 is expected to eq "issue"3553 incident issue3554 is expected to eq "incident"3555 external issue tracker3556 when GitLab issues disabled3557 returns 404 status3558 when GitLab issues enabled3559 renders the "new" template3560 #related_branches3561 the current user cannot download code3562 prevents access3563 there are no related branches3564 assigns empty arrays3565 there are related branches3566 finds and assigns the appropriate branch information3567 Redirect after sign in3568 with a JSON request3569 does not store the visited URL3570 with an HTML request3571 stores the visited URL3572 POST #move3573 when moving issue to another private project3574 when user has access to move issue3575 moves issue to another project3576 when user does not have access to move issue3577 responds with 4043578 PUT #reorder3579 when user has access3580 with valid params3581 reorders issues and returns a successful 200 response3582 with invalid params3583 returns a unprocessable entity 422 response for invalid move ids3584 returns a not found 404 response for invalid issue id3585 returns a unprocessable entity 422 response for issues not in group3586 with unauthorized user3587 responds with 4043588 PUT #update3589 when user has access to update issue3590 updates the issue3591 with issue_type param3592 permits the parameter3593 when the SpamVerdictService disallows3594 when allow_possible_spam feature flag is false3595 renders json with spam_action_response_fields3596 when allow_possible_spam feature flag is true3597 updates the issue3598 when user does not have access to update issue3599 responds with 4043600 GET #realtime_changes3601 when an issue was edited3602 returns last edited time3603 when an issue was edited by a deleted user3604 returns 2003605 when getting the changes3606 returns the necessary data3607 Confidential Issues3608 GET #index3609 does not list confidential issues for guests3610 does not list confidential issues for non project members3611 does not list confidential issues for project members with guest role3612 lists confidential issues for author3613 lists confidential issues for assignee3614 lists confidential issues for project members3615 when admin mode is enabled3616 lists confidential issues for admin3617 when admin mode is disabled3618 does not list confidential issues for admin3619 PUT #update3620 behaves like restricted action3621 returns 404 for guests3622 returns 404 for non project members3623 returns 404 for project members with guest role3624 returns 200 for author3625 returns 200 for assignee3626 returns 200 for project members3627 when admin mode is enabled3628 returns 200 for admin3629 when admin mode is disabled3630 returns 404 for admin (PENDING: Temporarily skipped with xit)3631 behaves like update invalid issuable3632 when updating causes conflicts3633 renders edit when format is html3634 renders json error message when format is json3635 when updating an invalid issuable3636 renders edit when merge request is invalid3637 changing the assignee3638 limits the attributes exposed on the assignee3639 Recaptcha is enabled3640 when SpamVerdictService allows the issue3641 normally updates the issue3642 when an issue is identified as spam3643 when recaptcha is not verified3644 when allow_possible_spam feature flag is false3645 rejects an issue recognized as spam3646 rejects an issue recognized as a spam when reCAPTCHA disabled3647 creates a spam log3648 renders properly3649 renders spam_action_response_fields json response3650 when allow_possible_spam feature flag is true3651 updates the issue recognized as spam3652 creates a spam log3653 returns 200 status3654 when recaptcha is verified3655 returns 200 status3656 accepts an issue after reCAPTCHA is verified3657 marks spam log as recaptcha_verified3658 does not mark spam log as recaptcha_verified when it does not belong to current_user3659 GET #show3660 avoids (most) N+1s loading labels3661 logs the view with Gitlab::Search::RecentIssues3662 behaves like restricted action3663 returns 404 for guests3664 returns 404 for non project members3665 returns 404 for project members with guest role3666 returns 200 for author3667 returns 200 for assignee3668 returns 200 for project members3669 when admin mode is enabled3670 returns 200 for admin3671 when admin mode is disabled3672 returns 404 for admin (PENDING: Temporarily skipped with xit)3673 real-time sidebar feature flag3674 action_cable_in_app_enabled: true, feature_flag_enabled: true, gon_feature_flag: true3675 broadcasts to the issues channel based on ActionCable and feature flag values3676 action_cable_in_app_enabled: true, feature_flag_enabled: false, gon_feature_flag: true3677 broadcasts to the issues channel based on ActionCable and feature flag values3678 action_cable_in_app_enabled: false, feature_flag_enabled: true, gon_feature_flag: true3679 broadcasts to the issues channel based on ActionCable and feature flag values3680 action_cable_in_app_enabled: false, feature_flag_enabled: false, gon_feature_flag: false3681 broadcasts to the issues channel based on ActionCable and feature flag values3682 when not logged in3683 does not log the view with Gitlab::Search::RecentIssues3684 GET #realtime_changes3685 behaves like restricted action3686 returns 404 for guests3687 returns 404 for non project members3688 returns 404 for project members with guest role3689 returns 200 for author3690 returns 200 for assignee3691 returns 200 for project members3692 when admin mode is enabled3693 returns 200 for admin3694 when admin mode is disabled3695 returns 404 for admin (PENDING: Temporarily skipped with xit)3696 GET #edit3697 behaves like restricted action3698 returns 404 for guests3699 returns 404 for non project members3700 returns 404 for project members with guest role3701 returns 200 for author3702 returns 200 for assignee3703 returns 200 for project members3704 when admin mode is enabled3705 returns 200 for admin3706 when admin mode is disabled3707 returns 404 for admin (PENDING: Temporarily skipped with xit)3708 PUT #update3709 behaves like restricted action3710 returns 404 for guests3711 returns 404 for non project members3712 returns 404 for project members with guest role3713 returns 302 for author3714 returns 302 for assignee3715 returns 302 for project members3716 when admin mode is enabled3717 returns 302 for admin3718 when admin mode is disabled3719 returns 404 for admin (PENDING: Temporarily skipped with xit)3720 POST #create3721 creates the issue successfully3722 when creating an incident3723 sets the correct issue_type3724 resolving discussions in MergeRequest3725 creates an issue for the project3726 doesn't overwrite given params3727 resolves the discussion in the merge_request3728 sets a flash message3729 resolving a single discussion3730 resolves a single discussion3731 sets a flash message that one discussion was resolved3732 Recaptcha is enabled3733 when SpamVerdictService allows the issue3734 creates an issue3735 when SpamVerdictService requires recaptcha3736 when captcha is not verified3737 when allow_possible_spam feature flag is false3738 rejects an issue recognized as spam3739 creates a spam log3740 does not create an issue when it is not valid3741 does not create an issue when reCAPTCHA is not enabled3742 when allow_possible_spam feature flag is true3743 creates an issue recognized as spam3744 creates a spam log3745 does not create an issue when it is not valid3746 when Recaptcha is verified3747 accepts an issue after reCAPTCHA is verified3748 marks spam log as recaptcha_verified3749 does not mark spam log as recaptcha_verified when it does not belong to current_user3750 user agent details are saved3751 creates a user agent detail3752 when description has quick actions3753 can add spent time3754 can set the time estimate3755 when created from sentry error3756 creates an issue3757 creates a sentry issue3758 when the endpoint receives requests above the limit3759 when issue creation limits imposed3760 prevents from creating more issues3761 logs the event on auth.log3762 setting issue type3763 is expected to eq "issue"3764 incident issue3765 is expected to eq "incident"3766 POST #mark_as_spam3767 properly submits to Akismet3768 updates issue3769 DELETE #destroy3770 when the user is a developer3771 does not delete the issue, returning :not_found3772 when the user is owner3773 deletes the issue3774 prevents deletion if destroy_confirm is not set3775 prevents deletion in JSON format if destroy_confirm is not set3776 POST #toggle_award_emoji3777 toggles the award emoji3778 removes the already awarded emoji3779 marks Todos on the Issue as done3780 POST create_merge_request3781 creates a new merge request3782 render merge request as json3783 is not available when the project is archived3784 is not available for users who cannot create merge requests3785 invalid branch name3786 is unprocessable3787 target_project_id is set3788 creates a new merge request3789 POST #import_csv3790 unauthorized3791 returns 404 for guests3792 returns 404 for project members with reporter role3793 authorized3794 returns 302 for project members with developer role3795 shows error when upload fails3796 POST export_csv3797 when logged in3798 allows CSV export3799 when not logged in3800 redirects to the sign in page3801 GET service_desk3802 adds an author filter for the support bot user3803 does not allow any other author to be set3804 supports other filters3805 allows an assignee to be specified by id3806 GET #discussions3807 when authenticated3808 returns discussion json3809 renders the author status html if there is a status3810 does not cause an extra query for the status3812 behaves like discussions provider3813 returns the expected discussions3814 when user is setting notes filters3815 behaves like issuable notes filter3816 sets discussion filter3817 expires notes e-tag cache for issuable if filter changed3818 does not expires notes e-tag cache for issuable if filter did not change3819 does not set notes filter when database is in read-only mode3820 does not set notes filter when persist_filter param is false3821 returns only user comments3822 returns only activity notes3823 when filter is set to "only_comments"3824 does not merge label event notes3825 with cross-reference system note3826 filters notes that the user should not see3827 does not result in N+1 queries3828 private project3829 user is allowed access3830 displays all available notes3831 user is a guest3832 does not display notes w/type listed in TYPES_RESTRICTED_BY_ACCESS_LEVEL3833 GET #designs3834 when project has moved3835 redirects from an old issue/designs correctly3836 private project with token authentication3837 behaves like authenticates sessionless user3838 doesn't log the user in otherwise3839 when the 'personal_access_token' param is populated with the personal access token3840 logs the user in3841 when the personal access token has no api scope3842 does not log the user in3843 when the 'PERSONAL_ACCESS_TOKEN' header is populated with the personal access token3844 logs the user in3845 behaves like authenticates sessionless user3846 doesn't log the user in otherwise3847 when the 'personal_access_token' param is populated with the personal access token3848 logs the user in3849 when the personal access token has no api scope3850 does not log the user in3851 when the 'PERSONAL_ACCESS_TOKEN' header is populated with the personal access token3852 logs the user in3853 public project with token authentication3854 behaves like authenticates sessionless user3855 when the 'personal_access_token' param is populated with the personal access token3856 logs the user in3857 does not log the user in if page is public3858 when the 'PERSONAL_ACCESS_TOKEN' header is populated with the personal access token3859 logs the user in3860 behaves like authenticates sessionless user3861 when the 'personal_access_token' param is populated with the personal access token3862 logs the user in3863 does not log the user in if page is public3864 when the 'PERSONAL_ACCESS_TOKEN' header is populated with the personal access token3865 logs the user in3866API::Discussions3867 when discussions have cross-reference system notes3868 behaves like with cross-reference system notes3869 returns only the note that the user should see3870 avoids Git calls and N+1 SQL queries3871 when noteable is an Issue3872 behaves like discussions API3873 GET /projects/:id/issues/:noteable_id/discussions3874 returns an array of discussions3875 returns a 404 error when noteable id not found3876 returns 404 when not authorized3877 GET /projects/:id/issues/:noteable_id/discussions/:discussion_id3878 returns a discussion by id3879 returns a 404 error if discussion not found3880 POST /projects/:id/issues/:noteable_id/discussions3881 creates a new note3882 returns a 400 bad request error if body not given3883 returns a 401 unauthorized error if user not authenticated3884 tracks a Notes::CreateService event3885 with notes_create_service_tracking feature flag disabled3886 does not track any events3887 when an admin or owner makes the request3888 accepts the creation date to be set3889 when user does not have access to read the discussion3890 responds with 4043891 when a project is public with private repo access3892 when user is not a team member of private repo3893 creating a new note3894 raises 404 error3895 fetching a discussion3896 raises 404 error3897 POST /projects/:id/issues/:noteable_id/discussions/:discussion_id/notes3898 adds a new note to the discussion3899 returns a 400 bad request error if body not given3900 when the discussion is an individual note3901 creates a new discussion3902 PUT /projects/:id/issues/:noteable_id/discussions/:discussion_id/notes/:note_id3903 returns modified note3904 returns a 404 error when note id not found3905 returns a 400 bad request error if body not given3906 DELETE /projects/:id/issues/:noteable_id/discussions/:discussion_id/notes/:note_id3907 deletes a note3908 returns a 404 error when note id not found3909 behaves like 412 response3910 for a modified ressource3911 returns 412 with a JSON error3912 for an unmodified ressource3913 returns 204 with an empty body3914 when noteable is a Snippet3915 behaves like discussions API3916 GET /projects/:id/snippets/:noteable_id/discussions3917 returns an array of discussions3918 returns a 404 error when noteable id not found3919 returns 404 when not authorized3920 GET /projects/:id/snippets/:noteable_id/discussions/:discussion_id3921 returns a discussion by id3922 returns a 404 error if discussion not found3923 POST /projects/:id/snippets/:noteable_id/discussions3924 creates a new note3925 returns a 400 bad request error if body not given3926 returns a 401 unauthorized error if user not authenticated3927 tracks a Notes::CreateService event3928 with notes_create_service_tracking feature flag disabled3929 does not track any events3930 when an admin or owner makes the request3931 accepts the creation date to be set3932 when user does not have access to read the discussion3933 responds with 4043934 when a project is public with private repo access3935 when user is not a team member of private repo3936 creating a new note3937 raises 404 error3938 fetching a discussion3939 raises 404 error3940 POST /projects/:id/snippets/:noteable_id/discussions/:discussion_id/notes3941 adds a new note to the discussion3942 returns a 400 bad request error if body not given3943 when the discussion is an individual note3944 returns 400 bad request3945 PUT /projects/:id/snippets/:noteable_id/discussions/:discussion_id/notes/:note_id3946 returns modified note3947 returns a 404 error when note id not found3948 returns a 400 bad request error if body not given3949 DELETE /projects/:id/snippets/:noteable_id/discussions/:discussion_id/notes/:note_id3950 deletes a note3951 returns a 404 error when note id not found3952 behaves like 412 response3953 for a modified ressource3954 returns 412 with a JSON error3955 for an unmodified ressource3956 returns 204 with an empty body3957 when noteable is a Merge Request3958 behaves like discussions API3959 GET /projects/:id/merge_requests/:noteable_id/discussions3960 returns an array of discussions3961 returns a 404 error when noteable id not found3962 returns 404 when not authorized3963 GET /projects/:id/merge_requests/:noteable_id/discussions/:discussion_id3964 returns a discussion by id3965 returns a 404 error if discussion not found3966 POST /projects/:id/merge_requests/:noteable_id/discussions3967 creates a new note3968 returns a 400 bad request error if body not given3969 returns a 401 unauthorized error if user not authenticated3970 tracks a Notes::CreateService event3971 with notes_create_service_tracking feature flag disabled3972 does not track any events3973 when an admin or owner makes the request3974 accepts the creation date to be set3975 when user does not have access to read the discussion3976 responds with 4043977 when a project is public with private repo access3978 when user is not a team member of private repo3979 creating a new note3980 raises 404 error3981 fetching a discussion3982 raises 404 error3983 POST /projects/:id/merge_requests/:noteable_id/discussions/:discussion_id/notes3984 adds a new note to the discussion3985 returns a 400 bad request error if body not given3986 when the discussion is an individual note3987 creates a new discussion3988 PUT /projects/:id/merge_requests/:noteable_id/discussions/:discussion_id/notes/:note_id3989 returns modified note3990 returns a 404 error when note id not found3991 returns a 400 bad request error if body not given3992 DELETE /projects/:id/merge_requests/:noteable_id/discussions/:discussion_id/notes/:note_id3993 deletes a note3994 returns a 404 error when note id not found3995 behaves like 412 response3996 for a modified ressource3997 returns 412 with a JSON error3998 for an unmodified ressource3999 returns 204 with an empty body4000 behaves like diff discussions API4001 GET /projects/:id/merge_requests/:noteable_id/discussions4002 includes diff discussions4003 GET /projects/:id/merge_requests/:noteable_id/discussions/:discussion_id4004 returns a discussion by id4005 POST /projects/:id/merge_requests/:noteable_id/discussions4006 creates a new diff note4007 when position is invalid4008 returns a 400 bad request error when position is not plausible4009 returns a 400 bad request error when the position is not valid for this discussion4010 POST /projects/:id/merge_requests/:noteable_id/discussions/:discussion_id/notes4011 adds a new note to the diff discussion4012 behaves like resolvable discussions API4013 PUT /projects/:id/merge_requests/:noteable_id/discussions/:discussion_id4014 resolves discussion if resolved is true4015 unresolves discussion if resolved is false4016 returns a 400 bad request error if resolved parameter is not passed4017 returns a 401 unauthorized error if user is not authenticated4018 returns a 403 error if user resolves discussion of someone else4019 when user does not have access to read the discussion4020 responds with 4044021 PUT /projects/:id/merge_requests/:noteable_id/discussions/:discussion_id/notes/:note_id4022 returns resolved note when resolved parameter is true4023 returns a 404 error when note id not found4024 returns a 400 bad request error if neither body nor resolved parameter is given4025 returns a 403 error if user resolves note of someone else4026 when position is for a previous commit on the merge request4027 returns a 400 bad request error because the line_code is old4028 when a commit parameter is given4029 creates the discussion on that commit within the merge request4030 when noteable is a Commit4031 behaves like discussions API4032 GET /projects/:id/repository/commits/:noteable_id/discussions4033 returns an array of discussions4034 returns a 404 error when noteable id not found4035 returns 404 when not authorized4036 GET /projects/:id/repository/commits/:noteable_id/discussions/:discussion_id4037 returns a discussion by id4038 returns a 404 error if discussion not found4039 POST /projects/:id/repository/commits/:noteable_id/discussions4040 creates a new note4041 returns a 400 bad request error if body not given4042 returns a 401 unauthorized error if user not authenticated4043 tracks a Notes::CreateService event4044 with notes_create_service_tracking feature flag disabled4045 does not track any events4046 when an admin or owner makes the request4047 accepts the creation date to be set4048 when user does not have access to read the discussion4049 responds with 4044050 when a project is public with private repo access4051 when user is not a team member of private repo4052 creating a new note4053 raises 404 error4054 fetching a discussion4055 raises 404 error4056 POST /projects/:id/repository/commits/:noteable_id/discussions/:discussion_id/notes4057 adds a new note to the discussion4058 returns a 400 bad request error if body not given4059 when the discussion is an individual note4060 returns 400 bad request4061 PUT /projects/:id/repository/commits/:noteable_id/discussions/:discussion_id/notes/:note_id4062 returns modified note4063 returns a 404 error when note id not found4064 returns a 400 bad request error if body not given4065 DELETE /projects/:id/repository/commits/:noteable_id/discussions/:discussion_id/notes/:note_id4066 deletes a note4067 returns a 404 error when note id not found4068 behaves like 412 response4069 for a modified ressource4070 returns 412 with a JSON error4071 for an unmodified ressource4072 returns 204 with an empty body4073 behaves like diff discussions API4074 GET /projects/:id/repository/commits/:noteable_id/discussions4075 includes diff discussions4076 GET /projects/:id/repository/commits/:noteable_id/discussions/:discussion_id4077 returns a discussion by id4078 POST /projects/:id/repository/commits/:noteable_id/discussions4079 creates a new diff note4080 when position is invalid4081 returns a 400 bad request error when position is not plausible4082 returns a 400 bad request error when the position is not valid for this discussion4083 POST /projects/:id/repository/commits/:noteable_id/discussions/:discussion_id/notes4084 adds a new note to the diff discussion4085DashboardController4086 signed in4087 GET issues4088 behaves like issuables list meta-data4089 creates indexed meta-data object for issuable notes and votes count4090 avoids N+1 queries4091 searching4092 works when sorting by created_asc4093 works when sorting by created_at_asc4094 works when sorting by created_date4095 works when sorting by created_desc4096 works when sorting by created_at_desc4097 works when sorting by id_asc4098 works when sorting by id_desc4099 works when sorting by updated_asc4100 works when sorting by updated_at_asc4101 works when sorting by updated_desc4102 works when sorting by updated_at_desc4103 works when sorting by title_asc4104 works when sorting by title_desc4105 works when sorting by closest_future_date4106 works when sorting by closest_future_date_asc4107 works when sorting by due_date4108 works when sorting by due_date_asc4109 works when sorting by due_date_desc4110 works when sorting by relative_position4111 works when sorting by relative_position_asc4112 works when sorting by weight4113 works when sorting by weight_asc4114 works when sorting by weight_desc4115 works when sorting by popularity4116 works when sorting by priority4117 works when sorting by label_priority4118 when given empty collection4119 doesn't execute any queries with false conditions4120 behaves like issuables requiring filter4121 doesn't load any issuables if no filter is set4122 loads issuables if at least one filter is set4123 GET merge requests4124 behaves like issuables list meta-data4125 creates indexed meta-data object for issuable notes and votes count4126 avoids N+1 queries4127 searching4128 works when sorting by created_asc4129 works when sorting by created_at_asc4130 works when sorting by created_date4131 works when sorting by created_desc4132 works when sorting by created_at_desc4133 works when sorting by id_asc4134 works when sorting by id_desc4135 works when sorting by updated_asc4136 works when sorting by updated_at_asc4137 works when sorting by updated_desc4138 works when sorting by updated_at_desc4139 works when sorting by title_asc4140 works when sorting by title_desc4141 works when sorting by closest_future_date4142 works when sorting by closest_future_date_asc4143 works when sorting by due_date4144 works when sorting by due_date_asc4145 works when sorting by due_date_desc4146 works when sorting by relative_position4147 works when sorting by relative_position_asc4148 works when sorting by weight4149 works when sorting by weight_asc4150 works when sorting by weight_desc4151 works when sorting by popularity4152 works when sorting by priority4153 works when sorting by label_priority4154 when given empty collection4155 doesn't execute any queries with false conditions4156 behaves like issuables requiring filter4157 doesn't load any issuables if no filter is set4158 loads issuables if at least one filter is set4159 GET activity as JSON4160 when user has permission to see the event4161 returns count4162 when user has no permission to see the event4163 filters out invisible event4164 filters out invisible event when calculating the count4165 behaves like authenticates sessionless user4166 doesn't log the user in otherwise4167 when the 'personal_access_token' param is populated with the personal access token4168 logs the user in4169 when the personal access token has no api scope4170 does not log the user in4171 when the 'PERSONAL_ACCESS_TOKEN' header is populated with the personal access token4172 logs the user in4173 behaves like authenticates sessionless user4174 doesn't log the user in otherwise4175 when the 'personal_access_token' param is populated with the personal access token4176 logs the user in4177 when the personal access token has no api scope4178 does not log the user in4179 when the 'PERSONAL_ACCESS_TOKEN' header is populated with the personal access token4180 logs the user in4181 #check_filters_presence!4182 no filters4183 sets @no_filters_set to false4184 scalar filters4185 sets @no_filters_set to false4186 array filters4187 sets @no_filters_set to false4188GroupsController4189 GET #show4190 when the group is not importing4191 behaves like details view4192 is expected to render template groups/show4193 as atom4194 is expected to render template groups/show4195 assigns events for all the projects in the group4196 when the group is importing4197 redirects to the import status page4198 publishing the invite_members_for_task experiment4199 publishes the experiment data to the client4200 GET #details4201 behaves like details view4202 is expected to render template groups/show4203 as atom4204 is expected to render template groups/show4205 assigns events for all the projects in the group4206 GET edit4207 sets the badge API endpoint4208 GET #new4209 when creating subgroups4210 and can_create_group is true4211 and logged in as Admin_with_admin_mode4212 behaves like member with ability to create subgroups4213 renders the new page4214 and logged in as Owner4215 behaves like member with ability to create subgroups4216 renders the new page4217 and logged in as Maintainer4218 behaves like member with ability to create subgroups4219 renders the new page4220 and logged in as Guest4221 behaves like member without ability to create subgroups4222 renders the 404 page4223 and logged in as Developer4224 behaves like member without ability to create subgroups4225 renders the 404 page4226 and logged in as Admin_without_admin_mode4227 behaves like member without ability to create subgroups4228 renders the 404 page4229 and can_create_group is false4230 and logged in as Admin_with_admin_mode4231 behaves like member with ability to create subgroups4232 renders the new page4233 and logged in as Owner4234 behaves like member with ability to create subgroups4235 renders the new page4236 and logged in as Maintainer4237 behaves like member with ability to create subgroups4238 renders the new page4239 and logged in as Guest4240 behaves like member without ability to create subgroups4241 renders the 404 page4242 and logged in as Developer4243 behaves like member without ability to create subgroups4244 renders the 404 page4245 and logged in as Admin_without_admin_mode4246 behaves like member without ability to create subgroups4247 renders the 404 page4248 GET #activity4249 as json4250 includes events from all projects in group and subgroups4251 when user has no permission to see the event4252 filters out invisible event4253 POST #create4254 allows creating a group4255 authorization4256 allows an admin to create a group4257 when creating subgroups4258 and can_create_group is true4259 and logged in as Owner4260 creates the subgroup4261 and logged in as Developer4262 renders the new template4263 and can_create_group is false4264 and logged in as Owner4265 creates the subgroup4266 and logged in as Developer4267 renders the new template4268 when creating a top level group4269 and can_create_group is enabled4270 creates the Group4271 and can_create_group is disabled4272 does not create the Group4273 malicious group name4274 is expected not to change `Group.count`4275 is expected to render template new4276 when creating a group with `default_branch_protection` attribute4277 for users who have the ability to create a group with `default_branch_protection`4278 creates group with the specified branch protection level4279 for users who do not have the ability to create a group with `default_branch_protection`4280 does not create the group with the specified branch protection level4281 when creating a group with captcha protection4282 displays an error when the reCAPTCHA is not solved4283 allows creating a group when the reCAPTCHA is solved4284 allows creating a sub-group without checking the captcha4285 with feature flag switched off4286 allows creating a group without the reCAPTCHA4287 when creating a group with the `role` attribute present4288 changes the users role4289 when creating a group with the `setup_for_company` attribute present4290 sets the groups `setup_for_company` value4291 when the user already has a value for `setup_for_company`4292 does not change the users `setup_for_company` value4293 when the user has no value for `setup_for_company`4294 changes the users `setup_for_company` value4295 when creating a group with the `jobs_to_be_done` attribute present4296 sets the groups `jobs_to_be_done` value4297 GET #index4298 as a user4299 redirects to Groups Dashboard4300 as a guest4301 redirects to Explore Groups4302 GET #issues4303 sorting by votes4304 sorts most popular issues4305 sorts least popular issues4306 searching4307 works with popularity sort4308 works with priority sort4309 works with label priority sort4310 GET #merge_requests4311 sorting by votes4312 sorts most popular merge requests4313 sorts least popular merge requests4314 DELETE #destroy4315 as another user4316 returns 4044317 as the group owner4318 schedules a group destroy4319 redirects to the root path4320 PUT update4321 updates the path successfully4322 does not update the path on error4323 updates the project_creation_level successfully4324 updating default_branch_protection4325 for users who have the ability to update default_branch_protection4326 updates the attribute4327 for users who do not have the ability to update default_branch_protection4328 does not update the attribute4329 updating default_branch_name4330 updates the attribute4331 to empty string4332 does not update the attribute4333 when there is a conflicting group path4334 does not render references to the conflicting group4335 when a project inside the group has container repositories4336 does allow the group to be renamed4337 does not allow to path of the group to be changed4338 updating :resource_access_token_creation_allowed4339 when user is a group owner4340 updates the attribute4341 when not a group owner4342 does not update the attribute4343 updating :prevent_sharing_groups_outside_hierarchy4344 when user is a group owner4345 updates the attribute4346 when not a group owner4347 does not update the attribute4348 #ensure_canonical_path4349 for a GET request4350 when requesting groups at the root path4351 when requesting the canonical path with different casing4352 redirects to the correct casing4353 when requesting a redirected path4354 redirects to the canonical path4355 when the old group path is a substring of the scheme or host4356 does not modify the requested host4357 when the old group path is substring of groups4358 does not modify the /groups part of the path4359 when requesting groups under the /groups path4360 when requesting the canonical path4361 non-show path4362 with exactly matching casing4363 does not redirect4364 with different casing4365 redirects to the correct casing4366 show path4367 with exactly matching casing4368 does not redirect4369 with different casing4370 redirects to the correct casing at the root path4371 when requesting a redirected path4372 redirects to the canonical path4373 when the old group path is a substring of the scheme or host4374 does not modify the requested host4375 when the old group path is substring of groups4376 does not modify the /groups part of the path4377 when the old group path is substring of groups plus the new path4378 does not modify the /groups part of the path4379 for a POST request4380 when requesting the canonical path with different casing4381 does not 4044382 does not redirect to the correct casing4383 when requesting a redirected path4384 returns not found4385 for a DELETE request4386 when requesting the canonical path with different casing4387 does not 4044388 does not redirect to the correct casing4389 when requesting a redirected path4390 returns not found4391 PUT transfer4392 when transferring to a subgroup goes right4393 returns a notice and redirects to the new path4394 when converting to a root group goes right4395 returns a notice and redirects to the new path4396 When the transfer goes wrong4397 returns an alert and redirects to the current path4398 when the user is not allowed to transfer the group4399 is denied4400 transferring when a project has container images4401 does not allow the group to be transferred4402 POST #export4403 when the group export feature flag is not enabled4404 returns a not found error4405 when the user does not have permission to export the group4406 returns an error4407 when supplied valid params4408 triggers the export job4409 redirects to the edit page4410 when the endpoint receives requests above the rate limit4411 throttles the endpoint4412 GET #download_export4413 when there is a file available to download4414 sends the file4415 when the file is no longer present on disk4416 returns not found4417 when there is no file available to download4418 returns not found4419 when the group export feature flag is not enabled4420 returns a not found error4421 when the user does not have the required permissions4422 returns not_found4423 when the endpoint receives requests above the rate limit4424 throttles the endpoint4425 token authentication4426 behaves like authenticates sessionless user4427 when the 'personal_access_token' param is populated with the personal access token4428 logs the user in4429 does not log the user in if page is public4430 when the 'PERSONAL_ACCESS_TOKEN' header is populated with the personal access token4431 logs the user in4432 behaves like authenticates sessionless user4433 when the 'personal_access_token' param is populated with the personal access token4434 logs the user in4435 does not log the user in if page is public4436 when the 'PERSONAL_ACCESS_TOKEN' header is populated with the personal access token4437 logs the user in4438 behaves like authenticates sessionless user4439 when the 'personal_access_token' param is populated with the personal access token4440 logs the user in4441 does not log the user in if page is public4442 when the 'PERSONAL_ACCESS_TOKEN' header is populated with the personal access token4443 logs the user in4444 external authorization4445 with external authorization service enabled4446 GET #show4447 is successful4448 does not allow other formats4449 GET #edit4450 is successful4451 GET #new4452 is successful4453 GET #index4454 is successful4455 POST #create4456 creates a group4457 PUT #update4458 updates a group4459 malicious group name4460 is expected to render template edit4461 does not update name4462 DELETE #destroy4463 deletes the group4464 GET #activity4465 behaves like disabled when using an external authorization service4466 works when the feature is not enabled4467 renders a 404 with a message when the feature is enabled4468 GET #activity as JSON4469 returns count4470 GET #issues4471 behaves like disabled when using an external authorization service4472 works when the feature is not enabled4473 renders a 404 with a message when the feature is enabled4474 GET #merge_requests4475 behaves like disabled when using an external authorization service4476 works when the feature is not enabled4477 renders a 404 with a message when the feature is enabled4478 GET #unfoldered_environment_names4479 shows the environment names of a public project to an anonymous user4480 does not show environment names of private projects to anonymous users4481 shows environment names of a private project to a group member4482 does not show environment names of private projects to a logged-in non-member4483API::Wikis4484 GET /projects/:id/wikis4485 when wiki is disabled4486 when user is guest4487 returns 404 Project Not Found4488 when user is developer4489 returns 403 Forbidden4490 when user is maintainer4491 returns 403 Forbidden4492 when wiki is available only for team members4493 when user is guest4494 returns 404 Project Not Found4495 when user is developer4496 return the empty list of wiki pages4497 when wiki has pages4498 returns the list of wiki pages without content4499 returns the list of wiki pages with content4500 when user is maintainer4501 return the empty list of wiki pages4502 when wiki has pages4503 returns the list of wiki pages without content4504 returns the list of wiki pages with content4505 when wiki is available for everyone with access4506 when user is guest4507 returns 404 Project Not Found4508 when user is developer4509 return the empty list of wiki pages4510 when wiki has pages4511 returns the list of wiki pages without content4512 returns the list of wiki pages with content4513 when user is maintainer4514 return the empty list of wiki pages4515 when wiki has pages4516 returns the list of wiki pages without content4517 returns the list of wiki pages with content4518 GET /projects/:id/wikis/:slug4519 when wiki is disabled4520 when user is guest4521 returns 404 Project Not Found4522 when user is developer4523 returns 403 Forbidden4524 when user is maintainer4525 returns 403 Forbidden4526 when wiki is available only for team members4527 when user is guest4528 returns 404 Project Not Found4529 when user is developer4530 returns the wiki page4531 when page is not existing4532 returns 404 Wiki Page Not Found4533 when user is maintainer4534 returns the wiki page4535 when page is not existing4536 returns 404 Wiki Page Not Found4537 when wiki is available for everyone with access4538 when user is guest4539 returns 404 Project Not Found4540 when user is developer4541 returns the wiki page4542 when page is not existing4543 returns 404 Wiki Page Not Found4544 when user is maintainer4545 returns the wiki page4546 when page is not existing4547 returns 404 Wiki Page Not Found4548 POST /projects/:id/wikis4549 when wiki is disabled4550 when user is guest4551 returns 404 Project Not Found4552 when user is developer4553 returns 403 Forbidden4554 when user is maintainer4555 returns 403 Forbidden4556 when wiki is available only for team members4557 when user is guest4558 returns 404 Project Not Found4559 when user is developer4560DEPRECATION 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 wiki_event at /builds/gitlab-org/gitlab/app/services/event_create_service.rb:124)4561 creates the wiki page4562 responds with validation error on empty title4563 responds with validation error on empty content4564 when user is maintainer4565DEPRECATION 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 wiki_event at /builds/gitlab-org/gitlab/app/services/event_create_service.rb:124)4566 creates the wiki page4567 responds with validation error on empty title4568 responds with validation error on empty content4569 when wiki is available for everyone with access4570 when user is guest4571 returns 404 Project Not Found4572 when user is developer4573DEPRECATION 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 wiki_event at /builds/gitlab-org/gitlab/app/services/event_create_service.rb:124)4574 creates the wiki page4575 responds with validation error on empty title4576 responds with validation error on empty content4577 when user is maintainer4578DEPRECATION 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 wiki_event at /builds/gitlab-org/gitlab/app/services/event_create_service.rb:124)4579 creates the wiki page4580 responds with validation error on empty title4581 responds with validation error on empty content4582 PUT /projects/:id/wikis/:slug4583 when wiki is disabled4584 when user is guest4585 returns 404 Project Not Found4586 when user is developer4587 returns 403 Forbidden4588 when user is maintainer4589 returns 403 Forbidden4590 when wiki is available only for team members4591 when user is guest4592 returns 404 Project Not Found4593 when user is developer4594DEPRECATION 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 wiki_event at /builds/gitlab-org/gitlab/app/services/event_create_service.rb:124)4595 updates the wiki page4596DEPRECATION 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 wiki_event at /builds/gitlab-org/gitlab/app/services/event_create_service.rb:124)4597 updates with wiki with missing title4598DEPRECATION 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 wiki_event at /builds/gitlab-org/gitlab/app/services/event_create_service.rb:124)4599 updates with wiki with missing content4600DEPRECATION 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 wiki_event at /builds/gitlab-org/gitlab/app/services/event_create_service.rb:124)4601 updates with wiki with missing format4602 when page is not existing4603 returns 404 Wiki Page Not Found4604 when user is maintainer4605DEPRECATION 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 wiki_event at /builds/gitlab-org/gitlab/app/services/event_create_service.rb:124)4606 updates the wiki page4607DEPRECATION 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 wiki_event at /builds/gitlab-org/gitlab/app/services/event_create_service.rb:124)4608 updates with wiki with missing title4609DEPRECATION 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 wiki_event at /builds/gitlab-org/gitlab/app/services/event_create_service.rb:124)4610 updates with wiki with missing content4611DEPRECATION 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 wiki_event at /builds/gitlab-org/gitlab/app/services/event_create_service.rb:124)4612 updates with wiki with missing format4613 when page is not existing4614 returns 404 Wiki Page Not Found4615 when wiki is available for everyone with access4616 when user is guest4617 returns 404 Project Not Found4618 when user is developer4619DEPRECATION 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 wiki_event at /builds/gitlab-org/gitlab/app/services/event_create_service.rb:124)4620 updates the wiki page4621DEPRECATION 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 wiki_event at /builds/gitlab-org/gitlab/app/services/event_create_service.rb:124)4622 updates with wiki with missing title4623DEPRECATION 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 wiki_event at /builds/gitlab-org/gitlab/app/services/event_create_service.rb:124)4624 updates with wiki with missing content4625DEPRECATION 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 wiki_event at /builds/gitlab-org/gitlab/app/services/event_create_service.rb:124)4626 updates with wiki with missing format4627 when page is not existing4628 returns 404 Wiki Page Not Found4629 when user is maintainer4630DEPRECATION 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 wiki_event at /builds/gitlab-org/gitlab/app/services/event_create_service.rb:124)4631 updates the wiki page4632DEPRECATION 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 wiki_event at /builds/gitlab-org/gitlab/app/services/event_create_service.rb:124)4633 updates with wiki with missing title4634DEPRECATION 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 wiki_event at /builds/gitlab-org/gitlab/app/services/event_create_service.rb:124)4635 updates with wiki with missing content4636DEPRECATION 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 wiki_event at /builds/gitlab-org/gitlab/app/services/event_create_service.rb:124)4637 updates with wiki with missing format4638 when page is not existing4639 returns 404 Wiki Page Not Found4640 when wiki belongs to a group project4641DEPRECATION 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 wiki_event at /builds/gitlab-org/gitlab/app/services/event_create_service.rb:124)4642 updates the wiki page4643DEPRECATION 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 wiki_event at /builds/gitlab-org/gitlab/app/services/event_create_service.rb:124)4644 updates with wiki with missing title4645 updates with wiki with missing content4646 updates with wiki with missing format4647 DELETE /projects/:id/wikis/:slug4648 when wiki is disabled4649 when user is guest4650 returns 404 Project Not Found4651 when user is developer4652 returns 403 Forbidden4653 when user is maintainer4654 returns 403 Forbidden4655 when wiki is available only for team members4656 when user is guest4657 returns 404 Project Not Found4658 when user is developer4659 returns 403 Forbidden4660 when user is maintainer4661DEPRECATION 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 wiki_event at /builds/gitlab-org/gitlab/app/services/event_create_service.rb:124)4662 returns 204 No Content4663 when wiki is available for everyone with access4664 when user is guest4665 returns 404 Project Not Found4666 when user is developer4667 returns 403 Forbidden4668 when user is maintainer4669DEPRECATION 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 wiki_event at /builds/gitlab-org/gitlab/app/services/event_create_service.rb:124)4670 returns 204 No Content4671 when page is not existing4672 returns 404 Wiki Page Not Found4673 when there is an error deleting the page4674 returns 4224675 when wiki belongs to a group project4676DEPRECATION 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 wiki_event at /builds/gitlab-org/gitlab/app/services/event_create_service.rb:124)4677 returns 204 No Content4678 POST /projects/:id/wikis/attachments4679 when wiki is disabled4680 when user is guest4681 returns 404 Project Not Found4682 when user is developer4683 returns 403 Forbidden4684 when user is maintainer4685 returns 403 Forbidden4686 when wiki is available only for team members4687 when user is guest4688 returns 404 Project Not Found4689 when user is developer4690 pushes attachment to the wiki repository4691 responds with validation error on empty file4692 responds with validation error on invalid temp file4693 is backward compatible with regular multipart uploads4694 when user is maintainer4695 pushes attachment to the wiki repository4696 responds with validation error on empty file4697 responds with validation error on invalid temp file4698 is backward compatible with regular multipart uploads4699 when wiki is available for everyone with access4700 when user is guest4701 returns 404 Project Not Found4702 when user is developer4703 pushes attachment to the wiki repository4704 responds with validation error on empty file4705 responds with validation error on invalid temp file4706 is backward compatible with regular multipart uploads4707 when user is maintainer4708 pushes attachment to the wiki repository4709 responds with validation error on empty file4710 responds with validation error on invalid temp file4711 is backward compatible with regular multipart uploads4712API::Snippets4713 GET /snippets/4714 returns snippets available for user4715 hides private snippets from regular user4716 returns 401 for non-authenticated4717 does not return snippets related to a project with disable feature visibility4718 GET /snippets/public4719 returns only public snippets from all users when authenticated4720 requires authentication4721 GET /snippets/:id/raw4722 returns raw text4723 returns 404 for invalid snippet id4724 behaves like snippet access with different users4725 requester: :admin, visibility: :public, status: :ok4726 returns the correct response4727 requester: :admin, visibility: :private, status: :ok4728 returns the correct response4729 requester: :admin, visibility: :internal, status: :ok4730 returns the correct response4731 requester: :author, visibility: :public, status: :ok4732 returns the correct response4733 requester: :author, visibility: :private, status: :ok4734 returns the correct response4735 requester: :author, visibility: :internal, status: :ok4736 returns the correct response4737 requester: :other, visibility: :public, status: :ok4738 returns the correct response4739 requester: :other, visibility: :private, status: :not_found4740 returns the correct response4741 requester: :other, visibility: :internal, status: :ok4742 returns the correct response4743 requester: nil, visibility: :public, status: :ok4744 returns the correct response4745 requester: nil, visibility: :private, status: :not_found4746 returns the correct response4747 requester: nil, visibility: :internal, status: :not_found4748 returns the correct response4749 behaves like snippet blob content4750 returns content from repository4751 when snippet repository is empty4752 returns content from database4753 GET /snippets/:id/files/:ref/:file_path/raw4754 behaves like raw snippet files4755 with an invalid snippet ID4756 returns 4044757 with valid params4758 returns the raw file info4759 with unauthorized user4760 returns 4044761 with invalid params4762 file_path: "%2Egitattributes", ref: "invalid-ref", status: :not_found, key: "message", message: "404 Reference Not Found"4763 returns the proper response code and message4764 file_path: "%2Egitattributes", ref: nil, status: :not_found, key: "error", message: "404 Not Found"4765 returns the proper response code and message4766 file_path: "%2Egitattributes", ref: "", status: :not_found, key: "error", message: "404 Not Found"4767 returns the proper response code and message4768 file_path: "doesnotexist.rb", ref: "master", status: :not_found, key: "message", message: "404 File Not Found"4769 returns the proper response code and message4770 file_path: "/does/not/exist.rb", ref: "master", status: :not_found, key: "error", message: "404 Not Found"4771 returns the proper response code and message4772 file_path: "%2E%2E%2Fetc%2Fpasswd", ref: "master", status: :bad_request, key: "error", message: "file_path should be a valid file path"4773 returns the proper response code and message4774 file_path: "%2Fetc%2Fpasswd", ref: "master", status: :bad_request, key: "error", message: "file_path should be a valid file path"4775 returns the proper response code and message4776 file_path: "../../etc/passwd", ref: "master", status: :not_found, key: "error", message: "404 Not Found"4777 returns the proper response code and message4778 behaves like snippet access with different users4779 requester: :admin, visibility: :public, status: :ok4780 returns the correct response4781 requester: :admin, visibility: :private, status: :ok4782 returns the correct response4783 requester: :admin, visibility: :internal, status: :ok4784 returns the correct response4785 requester: :author, visibility: :public, status: :ok4786 returns the correct response4787 requester: :author, visibility: :private, status: :ok4788 returns the correct response4789 requester: :author, visibility: :internal, status: :ok4790 returns the correct response4791 requester: :other, visibility: :public, status: :ok4792 returns the correct response4793 requester: :other, visibility: :private, status: :not_found4794 returns the correct response4795 requester: :other, visibility: :internal, status: :ok4796 returns the correct response4797 requester: nil, visibility: :public, status: :ok4798 returns the correct response4799 requester: nil, visibility: :private, status: :not_found4800 returns the correct response4801 requester: nil, visibility: :internal, status: :not_found4802 returns the correct response4803 GET /snippets/:id4804 with the author4805 returns snippet json4806 with a non-existent snippet ID4807 returns 4044808 behaves like snippet access with different users4809 requester: :admin, visibility: :public, status: :ok4810 returns the correct response4811 requester: :admin, visibility: :private, status: :ok4812 returns the correct response4813 requester: :admin, visibility: :internal, status: :ok4814 returns the correct response4815 requester: :author, visibility: :public, status: :ok4816 returns the correct response4817 requester: :author, visibility: :private, status: :ok4818 returns the correct response4819 requester: :author, visibility: :internal, status: :ok4820 returns the correct response4821 requester: :other, visibility: :public, status: :ok4822 returns the correct response4823 requester: :other, visibility: :private, status: :not_found4824 returns the correct response4825 requester: :other, visibility: :internal, status: :ok4826 returns the correct response4827 requester: nil, visibility: :public, status: :ok4828 returns the correct response4829 requester: nil, visibility: :private, status: :not_found4830 returns the correct response4831 requester: nil, visibility: :internal, status: :not_found4832 returns the correct response4833 POST /snippets/4834 returns 400 for missing parameters4835 returns 400 if title is blank4836 with files parameter4837 behaves like snippet creation with files parameter4838 returns 400 if both files and content are provided4839 returns 400 when neither files or content are provided4840 path: ".gitattributes", content: "file content", status: :created, error: nil4841 responds correctly4842 path: "valid/path/file.rb", content: "file content", status: :created, error: nil4843 responds correctly4844 path: ".gitattributes", content: nil, status: :bad_request, error: "files[0][content] is empty"4845 responds correctly4846 path: ".gitattributes", content: "", status: :bad_request, error: "files[0][content] is empty"4847 responds correctly4848 path: "", content: "file content", status: :bad_request, error: "files[0][file_path] is empty"4849 responds correctly4850 path: nil, content: "file content", status: :bad_request, error: "files[0][file_path] should be a valid file path, files[0][file_path] is empty"4851 responds correctly4852 path: "../../etc/passwd", content: "file content", status: :bad_request, error: "files[0][file_path] should be a valid file path"4853 responds correctly4854 with multiple files4855 behaves like snippet creation4856 creates a new snippet4857 creates repository4858 commit the files to the repository4859 behaves like snippet creation without files parameter4860 allows file_name and content parameters4861 returns 400 if file_name and content are not both provided4862 returns 400 if content is blank4863 with restricted visibility settings4864 behaves like snippet creation4865 creates a new snippet4866 creates repository4867 commit the files to the repository4868 behaves like snippet creation4869 creates a new snippet4870 creates repository4871 commit the files to the repository4872 with an external user4873 does not create a new snippet4874 when save fails because the repository could not be created4875 returns 4004876 when the snippet is spam4877 when the snippet is private4878 creates the snippet4879 when the snippet is public4880 rejects the snippet4881 creates a spam log4882 PUT /snippets/:id4883 returns 404 for another user's snippet4884 behaves like snippet file updates4885 with various snippet file changes4886 is_multi_file: true, file_name: nil, content: nil, files: [{:action=>"create", :file_path=>"foo.txt", :content=>"bar"}], status: :success4887 has the correct response4888 is_multi_file: true, file_name: nil, content: nil, files: [{:action=>"update", :file_path=>"CHANGELOG", :content=>"bar"}], status: :success4889 has the correct response4890 is_multi_file: true, file_name: nil, content: nil, files: [{:action=>"move", :file_path=>".old-gitattributes", :previous_path=>".gitattributes"}], status: :success4891 has the correct response4892 is_multi_file: true, file_name: nil, content: nil, files: [{:action=>"delete", :file_path=>"CONTRIBUTING.md"}], status: :success4893 has the correct response4894 is_multi_file: true, file_name: nil, content: nil, files: [{:action=>"create", :file_path=>"foo.txt", :content=>"bar"}, {:action=>"update", :file_path=>"CHANGELOG", :content=>"bar"}], status: :success4895 has the correct response4896 is_multi_file: true, file_name: "foo.txt", content: "bar", files: [{:action=>"create", :file_path=>"foo.txt", :content=>"bar"}], status: :bad_request4897 has the correct response4898 is_multi_file: true, file_name: "foo.txt", content: "bar", files: nil, status: :bad_request4899 has the correct response4900 is_multi_file: true, file_name: nil, content: nil, files: nil, status: :bad_request4901 has the correct response4902 is_multi_file: true, file_name: "foo.txt", content: nil, files: [{:action=>"create", :file_path=>"foo.txt", :content=>"bar"}], status: :bad_request4903 has the correct response4904 is_multi_file: true, file_name: nil, content: "bar", files: [{:action=>"create", :file_path=>"foo.txt", :content=>"bar"}], status: :bad_request4905 has the correct response4906 is_multi_file: true, file_name: "", content: nil, files: [{:action=>"create", :file_path=>"foo.txt", :content=>"bar"}], status: :bad_request4907 has the correct response4908 is_multi_file: true, file_name: nil, content: "", files: [{:action=>"create", :file_path=>"foo.txt", :content=>"bar"}], status: :bad_request4909 has the correct response4910 is_multi_file: true, file_name: nil, content: nil, files: [{:action=>"create", :file_path=>"../../etc/passwd", :content=>"bar"}], status: :bad_request4911 has the correct response4912 is_multi_file: true, file_name: nil, content: nil, files: [{:action=>"create", :previous_path=>"../../etc/passwd", :file_path=>"CHANGELOG", :content=>"bar"}], status: :bad_request4913 has the correct response4914 is_multi_file: true, file_name: nil, content: nil, files: [{:action=>"move", :file_path=>"missing_previous_path.txt"}], status: :unprocessable_entity4915 has the correct response4916 is_multi_file: false, file_name: "foo.txt", content: "bar", files: nil, status: :success4917 has the correct response4918 is_multi_file: false, file_name: "foo.txt", content: nil, files: nil, status: :success4919 has the correct response4920 is_multi_file: false, file_name: nil, content: "bar", files: nil, status: :success4921 has the correct response4922 is_multi_file: false, file_name: "foo.txt", content: "bar", files: [{:action=>"create", :file_path=>"foo.txt", :content=>"bar"}], status: :bad_request4923 has the correct response4924 is_multi_file: false, file_name: nil, content: nil, files: nil, status: :bad_request4925 has the correct response4926 is_multi_file: false, file_name: nil, content: "", files: nil, status: :bad_request4927 has the correct response4928 is_multi_file: false, file_name: nil, content: nil, files: [{:action=>"create", :file_path=>"../../etc/passwd", :content=>"bar"}], status: :bad_request4929 has the correct response4930 is_multi_file: false, file_name: nil, content: nil, files: [{:action=>"create", :previous_path=>"../../etc/passwd", :file_path=>"CHANGELOG", :content=>"bar"}], status: :bad_request4931 has the correct response4932 when save fails due to a repository commit error4933 returns a bad request response4934 behaves like snippet non-file updates4935 updates a snippet non-file attributes4936 behaves like snippet individual non-file updates4937 attribute: :description, updated_value: "new description"4938 updates the attribute4939 attribute: :title, updated_value: "new title"4940 updates the attribute4941 attribute: :visibility, updated_value: "private"4942 updates the attribute4943 behaves like invalid snippet updates4944 returns 404 for invalid snippet id4945 returns 400 for missing parameters4946 returns 400 if content is blank4947 returns 400 if title is blank4948 with restricted visibility settings4949 behaves like snippet non-file updates4950 updates a snippet non-file attributes4951 behaves like update with repository actions4952 when the repository exists4953 commits the changes to the repository4954 when the repository does not exist4955 when update attributes does not include file_name or content4956 does not create the repository4957 when update attributes include file_name or content4958 creates the repository4959 commits the file to the repository4960 when save fails due to a repository creation error4961 returns 4004962 does not save the changes to the snippet object4963 when the snippet is spam4964 when the snippet is private4965 updates the snippet4966 when the snippet is public4967 rejects the snippet4968 creates a spam log4969 when a private snippet is made public4970 rejects the snippet4971 creates a spam log4972 when admin4973 when sudo is defined4974 returns 200 and updates snippet visibility4975 does not commit data4976 DELETE /snippets/:id4977 deletes snippet4978 returns 404 for invalid snippet id4979 behaves like 412 response4980 for a modified ressource4981 returns 412 with a JSON error4982 for an unmodified ressource4983 returns 204 with an empty body4984 GET /snippets/:id/user_agent_detail4985 exposes known attributes4986 returns unauthorized for non-admin users4987API::ProjectExport4988 GET /projects/:project_id/export4989 behaves like when project export is disabled4990 behaves like 404 response4991 returns 4044992 when project export is enabled4993 when user is an admin4994 behaves like get project export status ok4995 is none4996 when project export has started4997 returns status started4998 when project export has finished4999 returns status finished5000 when project export is being regenerated5001 returns status regeneration_in_progress5002 when user is a maintainer5003 behaves like get project export status ok5004 is none5005 when project export has started5006 returns status started5007 when project export has finished5008 returns status finished5009 when project export is being regenerated5010 returns status regeneration_in_progress5011 when user is a developer5012 behaves like get project export status denied5013 behaves like 403 response5014 returns 4035015 when user is a reporter5016 behaves like get project export status denied5017 behaves like 403 response5018 returns 4035019 when user is a guest5020 behaves like get project export status denied5021 behaves like 403 response5022 returns 4035023 when user is not a member5024 behaves like get project export status not found5025 behaves like 404 response5026 returns 4045027 GET /projects/:project_id/export/download5028 behaves like when project export is disabled5029 behaves like 404 response5030 returns 4045031 when project export is enabled5032 when user is an admin5033 behaves like get project download by strategy5034 when upload strategy set5035 behaves like get project export upload after action5036 and is uploading5037 downloads5038 when export object is not present5039 returns 4045040 when upload complete5041/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/carrierwave-1.3.2/lib/carrierwave/mounter.rb:113: warning: deprecated Object#=~ is called on TrueClass; it always returns nil5042 has removed the export5043 behaves like 404 response5044/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/carrierwave-1.3.2/lib/carrierwave/mounter.rb:113: warning: deprecated Object#=~ is called on TrueClass; it always returns nil5045 returns 4045046 when download strategy set5047 behaves like get project export download5048 downloads5049 behaves like 404 response5050 returns 4045051 behaves like 404 response5052 returns 4045053 when rate limit is exceeded5054 prevents requesting project export5055 when user is a maintainer5056 behaves like get project download by strategy5057 when upload strategy set5058 behaves like get project export upload after action5059 and is uploading5060 downloads5061 when export object is not present5062 returns 4045063 when upload complete5064/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/carrierwave-1.3.2/lib/carrierwave/mounter.rb:113: warning: deprecated Object#=~ is called on TrueClass; it always returns nil5065 has removed the export5066 behaves like 404 response5067/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/carrierwave-1.3.2/lib/carrierwave/mounter.rb:113: warning: deprecated Object#=~ is called on TrueClass; it always returns nil5068 returns 4045069 when download strategy set5070 behaves like get project export download5071 downloads5072 behaves like 404 response5073 returns 4045074 behaves like 404 response5075 returns 4045076 when user is a developer5077 behaves like get project export download denied5078 behaves like 403 response5079 returns 4035080 when user is a reporter5081 behaves like get project export download denied5082 behaves like 403 response5083 returns 4035084 when user is a guest5085 behaves like get project export download denied5086 behaves like 403 response5087 returns 4035088 when user is not a member5089 behaves like get project export download not found5090 behaves like 404 response5091 returns 4045092 when an uploader is used5093 behaves like get project download by strategy5094 when upload strategy set5095 behaves like get project export upload after action5096 and is uploading5097 downloads5098 when export object is not present5099 returns 4045100 when upload complete5101/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/carrierwave-1.3.2/lib/carrierwave/mounter.rb:113: warning: deprecated Object#=~ is called on TrueClass; it always returns nil5102 has removed the export5103 behaves like 404 response5104/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/carrierwave-1.3.2/lib/carrierwave/mounter.rb:113: warning: deprecated Object#=~ is called on TrueClass; it always returns nil5105 returns 4045106 when download strategy set5107 behaves like get project export download5108 downloads5109 behaves like 404 response5110 returns 4045111 behaves like 404 response5112 returns 4045113 POST /projects/:project_id/export5114 behaves like when project export is disabled5115 behaves like 404 response5116 returns 4045117 when project export is enabled5118 when user is an admin5119 behaves like post project export start5120 with upload strategy5121 starts5122 when params invalid5123 behaves like 400 response5124 returns 4005125 with download strategy5126/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/carrierwave-1.3.2/lib/carrierwave/mounter.rb:113: warning: deprecated Object#=~ is called on TrueClass; it always returns nil5127 starts5128 removes previously exported archive file5129 when rate limit is exceeded across projects5130 prevents requesting project export5131 when user is a maintainer5132 behaves like post project export start5133 with upload strategy5134 starts5135 when params invalid5136 behaves like 400 response5137 returns 4005138 with download strategy5139 starts5140 removes previously exported archive file5141 when user is a developer5142 behaves like post project export start denied5143 behaves like 403 response5144 returns 4035145 when user is a reporter5146 behaves like post project export start denied5147 behaves like 403 response5148 returns 4035149 when user is a guest5150 behaves like post project export start denied5151 behaves like 403 response5152 returns 4035153 when user is not a member5154 behaves like post project export start not found5155 behaves like 404 response5156 returns 4045157 when overriding description5158 starts5159 export relations5160 when user is a maintainer5161 POST /projects/:id/export_relations5162 accepts the request5163 when response is not success5164 returns api error5165 GET /projects/:id/export_relations/download5166 when export file exists5167 downloads exported project relation archive5168 when relation is not portable5169 behaves like 400 response5170 returns 4005171 when export file does not exist5172 returns 4045173 GET /projects/:id/export_relations/status5174 returns a list of relation export statuses5175 with bulk_import FF disabled5176 POST /projects/:id/export_relations5177 behaves like 404 response5178 returns 4045179 GET /projects/:id/export_relations/download5180 behaves like 404 response5181 returns 4045182 GET /projects/:id/export_relations/status5183 behaves like 404 response5184 returns 4045185 when user is a developer5186 POST /projects/:id/export_relations5187 behaves like 403 response5188 returns 4035189 GET /projects/:id/export_relations/download5190 behaves like 403 response5191 returns 4035192 GET /projects/:id/export_relations/status5193 behaves like 403 response5194 returns 4035195API::Internal::Base5196 GET /internal/check5197 is expected to equal true5198 returns false for field `redis` when redis is unavailable5199 authenticating5200 authenticates using a header5201 returns 401 when no credentials provided5202 GET /internal/two_factor_recovery_codes5203 behaves like actor key validations5204 key does not exist5205 returns an error message5206 key without user5207 returns an error message5208 key is a deploy key5209 returns an error message5210 when two-factor is enabled5211 returns new recovery codes when the user exists5212 when two-factor is not enabled5213 returns an error message5214 POST /internal/personal_access_token5215 returns an error message when given an non existent user5216 returns an error message when no name parameter is received5217 returns an error message when no scopes parameter is received5218 returns an error message when expires_at contains an invalid date5219 returns an error message when it receives an invalid scope5220 returns a token without expiry when the expires_at parameter is missing5221 returns a token with expiry when it receives a valid expires_at parameter5222 behaves like actor key validations5223 key does not exist5224 returns an error message5225 key without user5226 returns an error message5227 key is a deploy key5228 returns an error message5229 POST /internal/lfs_authenticate5230 user key5231 returns the correct information about the key5232 returns the correct information about the user5233 returns a 404 when no key or user is provided5234 returns a 404 when the wrong key is provided5235 returns a 404 when the wrong user is provided5236 returns a 404 when LFS is disabled on the project5237 other repository types5238 returns the correct information for a project wiki5239 returns a 404 when the container does not support LFS5240 deploy key5241 returns the correct information about the key5242 GET /internal/discover5243 finds a user by key id5244 finds a user by username5245 responds successfully when a user is not found5246 response successfully when passing invalid params5247 GET /internal/authorized_keys5248 returns 404 with a partial key5249 returns 404 with an not valid base64 string5250 using an existing key5251 finds the key5252 exposes the comment of the key as a simple identifier of username + hostname5253 POST /internal/allowed5254 access granted5255 git push with project.wiki5256 responds with success5257 behaves like sets hook env5258 with env passed as a JSON5259 sets env in RequestStore5260 git pull with project.wiki5261 responds with success5262 git push with personal snippet5263 responds with success5264 behaves like sets hook env5265 with env passed as a JSON5266 sets env in RequestStore5267 git pull with personal snippet5268 responds with success5269 git push with project snippet5270 responds with success5271 behaves like sets hook env5272 with env passed as a JSON5273 sets env in RequestStore5274 git pull with project snippet5275 responds with success5276 git pull5277 with a feature flag enabled globally5278 has the correct payload5279 with a feature flag enabled for a project5280 has the flag set to true for that project5281 has the flag set to false for other projects5282 git push5283 project as namespace/project5284 is expected to be nil5285 when receive_max_input_size has been updated5286 returns maxInputSize and partial clone git config5287 when receive_max_input_size is empty5288 returns partial clone git config5289 with Project5290 behaves like storing arguments in the application context for the API5291 places the expected params in the application context5292 with PersonalSnippet5293 behaves like storing arguments in the application context for the API5294 places the expected params in the application context5295 with ProjectSnippet5296 behaves like storing arguments in the application context for the API5297 places the expected params in the application context5298 access denied5299 git pull5300 is expected to be nil5301 git push5302 is expected to be nil5303 custom action5304 git push5305 is expected to be nil5306 console message5307 git pull5308 with a key that has expired5309 includes the `key expired` message in the response5310 with a key that will expire in the next 7 days5311 includes the `key expiring soon` message in the response5312 with a key that has no expiry5313 does not include any message in the response5314 blocked user5315 git pull5316 is expected to be nil5317 git push5318 is expected to be nil5319 request times out5320 git push5321 responds with a gateway timeout5322 archived project5323 git pull5324 is expected to be truthy5325 git push5326 is expected to be falsey5327 deploy key5328 added to project5329 is expected to eq "secret"5330 not added to project5331 is expected to be falsey5332 project does not exist5333 git pull5334 returns a 200 response with status: false5335 returns a 200 response when using a project path that does not exist5336 git push5337 from a user/group namespace5338 creates the project5339 from the personal snippet path5340 does not create snippet5341 from a project path5342 from an non existent project path5343 does not create project5344 does not create snippet5345 from an existent project path5346 does not create snippet5347 user does not exist5348 is expected to be falsey5349 ssh access has been disabled5350 rejects the SSH push5351 rejects the SSH pull5352 http access has been disabled5353 rejects the HTTP push5354 rejects the HTTP pull5355 web actions are always allowed5356 allows WEB push5357 the project path was changed5358 rejects the push5359 rejects the SSH pull5360 for design repositories5361 does not allow access5362 admin mode5363 application setting :admin_mode is enabled5364 with an admin user5365 is member of the project5366 behaves like pushes succeed for ssh and http5367 accepts the SSH push5368 accepts the HTTP push5369 is not member of the project5370 behaves like pushes succeed for ssh and http5371 accepts the SSH push5372 accepts the HTTP push5373 with a regular user5374 is member of the project5375 behaves like pushes succeed for ssh and http5376 accepts the SSH push5377 accepts the HTTP push5378 is not member of the project5379 behaves like pushes fail for ssh and http5380 rejects the SSH push5381 rejects the HTTP push5382 application setting :admin_mode is disabled5383 with an admin user5384 is member of the project5385 behaves like pushes succeed for ssh and http5386 accepts the SSH push5387 accepts the HTTP push5388 is not member of the project5389 behaves like pushes succeed for ssh and http5390 accepts the SSH push5391 accepts the HTTP push5392 with a regular user5393 is member of the project5394 behaves like pushes succeed for ssh and http5395 accepts the SSH push5396 accepts the HTTP push5397 is not member of the project5398 behaves like pushes fail for ssh and http5399 rejects the SSH push5400 rejects the HTTP push5401 POST /internal/post_receive5402 with Project5403 behaves like runs post-receive hooks5404 executes PostReceiveService5405 tries to notify that the container has moved5406 behaves like storing arguments in the application context for the API5407 places the expected params in the application context5408 with PersonalSnippet5409 behaves like runs post-receive hooks5410 executes PostReceiveService5411 tries to notify that the container has moved5412 behaves like storing arguments in the application context for the API5413 places the expected params in the application context5414 with ProjectSnippet5415 behaves like runs post-receive hooks5416 executes PostReceiveService5417 tries to notify that the container has moved5418 behaves like storing arguments in the application context for the API5419 places the expected params in the application context5420 with ProjectWiki5421 behaves like runs post-receive hooks5422 executes PostReceiveService5423 tries to notify that the container has moved5424 behaves like storing arguments in the application context for the API5425 places the expected params in the application context5426 with an orphaned write deploy key5427 does not try to notify that project moved5428 when container is nil5429 does not try to notify that project moved5430 POST /internal/pre_receive5431 decreases the reference counter and returns the result5432 POST /internal/two_factor_config5433 behaves like actor key validations5434 key does not exist5435 returns an error message5436 key without user5437 returns an error message5438 when the key is a deploy key5439 does not required two factor5440 when two-factor is enabled5441 returns user two factor config5442 when two-factor is not enabled5443 returns an error message5444 two_factor_for_cli feature is disabled5445 when two-factor is enabled for the user5446 returns user two factor config5447 POST /internal/two_factor_otp_check5448 is not available5449ApplicationController5450 #check_password_expiration5451 redirects if the user is over their password expiry5452 does not redirect if the user is under their password expiry5453 does not redirect if the user is over their password expiry but they are an ldap user5454 does not redirect if the user is over their password expiry but password authentication is disabled for the web interface5455 #add_gon_variables5456 with html format5457 behaves like setting gon variables5458 sets gon variables5459 with json format5460 behaves like not setting gon variables5461 does not set gon variables5462 with atom format5463 behaves like not setting gon variables5464 does not set gon variables5465 session expiration5466 authenticated user5467 does not set the expire_after option5468 unauthenticated user5469 sets the expire_after option5470 response format5471 when format is handled5472 returns 200 response5473 when format is not handled5474 returns 404 response5475 #route_not_found5476 renders 404 if authenticated5477 renders 404 if client is a search engine crawler5478 redirects to login page if not authenticated5479 redirects if unauthenticated and request format is unknown5480 #set_page_title_header5481 URI encodes UTF-8 characters in the title5482 two-factor authentication5483 #check_two_factor_requirement5484 does not redirect if user has temporary oauth email5485 does not redirect if 2FA is not required5486 does not redirect if user is not logged in5487 does not redirect if user has 2FA enabled5488 does not redirect if 2FA setup can be skipped5489 redirects to 2FA setup otherwise5490 #two_factor_authentication_required?5491 returns false if no 2FA requirement is present5492 returns true if a 2FA requirement is set in the application settings5493 returns true if a 2FA requirement is set on the user5494 #two_factor_grace_period5495 returns the grace period from the application settings5496 with a 2FA requirement set on the user5497 returns the user grace period if lower than the application grace period5498 returns the application grace period if lower than the user grace period5499 #two_factor_grace_period_expired?5500 returns false if the user has not started their grace period yet5501 with grace period started5502 returns true if the grace period has expired5503 returns false if the grace period is still active5504 #two_factor_skippable5505 returns false if 2FA is not required5506 returns false if the user has already enabled 2FA5507 returns false if the 2FA grace period has expired5508 returns true otherwise5509 #skip_two_factor?5510 returns false if 2FA setup was not skipped5511 with 2FA setup skipped5512 returns false if the grace period has expired5513 returns true if the grace period is still active5514 deactivated user5515 signs out a deactivated user5516 terms5517 does not query more when terms are enforced5518 when terms are enforced5519 redirects if the user did not accept the terms5520 does not redirect when the user accepted terms5521 #append_info_to_payload5522 does not log errors with a 200 response5523 does log correlation id5524 adds context metadata to the payload5525 urgency information5526 adds default urgency information to the payload5527 adds customized urgency information to the payload5528 #access_denied5529 renders a 404 without a message5530 renders a 403 when a message is passed to access denied5531 renders a status passed to access denied5532 when invalid UTF-8 parameters are received5533 html5534 renders 4125535 js5536 renders 4125537 X-GitLab-Custom-Error header5538 given a 422 error page5539 sets a custom header5540 given a 500 error page5541 sets a custom header5542 given a 200 success page5543 does not set a custom header5544 given a json response5545 sets a custom header5546 for html request5547 sets a custom header5548 for 200 response5549 does not set a custom header5550 control headers5551 user not logged in5552 sets the default headers5553 user logged in5554 sets the default headers5555 does not set the "no-store" header for XHR requests5556 #stream_csv_headers5557 sets no-cache headers5558 sets stream headers5559 sets the csv specific headers5560 Gitlab::Session5561 is set on web requests5562 with sessionless user5563 is not set5564 #current_user_mode5565 with a regular user5566 admin mode is not set5567 with an admin user5568 admin mode is not set5569 that re-authenticated5570 admin mode is set5571 #required_signup_info5572 user with required role5573 is expected to redirect to "/users/sign_up/welcome"5574 user without a required role5575 is expected not to redirect to "/users/sign_up/welcome"5576 rescue_from Gitlab::Auth::IpBlacklisted5577 returns a 403 and logs the request5578 #set_current_context5579 does not break anything when no group or project method is defined5580 sets the username in the context when signed in5581 sets the group if it was available5582 sets the project if one was available5583 sets the caller_id as controller#action5584 sets the feature_category as defined in the controller5585 assigns the context to a variable for logging5586 assigns the context when the action caused an error5587 .endpoint_id_for_action5588 returns an expected endpoint id5589 #current_user5590 when being impersonated5591 returns a User with impersonator5592 when not being impersonated5593 returns a User5594 locale5595 sets user's locale5596 setting permissions-policy header5597 with FloC enabled5598 does not set the Permissions-Policy header5599 with FloC disabled5600 sets the Permissions-Policy header5601getting an issue list for a project5602 includes a web_url5603 includes discussion locked5604 behaves like a working graphql query5605 returns a successful response5606 when both assignee_username filters are provided5607 returns a mutually exclusive param error5608 filtering by my_reaction_emoji5609 value: "thumbsup", gids: lazy { [issue_a_gid] }5610 returns correctly filtered issues5611 value: "ANY", gids: lazy { [issue_a_gid] }5612 returns correctly filtered issues5613 value: "any", gids: lazy { [issue_a_gid] }5614 returns correctly filtered issues5615 value: "AnY", gids: lazy { [issue_a_gid] }5616 returns correctly filtered issues5617 value: "NONE", gids: lazy { [issue_b_gid] }5618 returns correctly filtered issues5619 value: "thumbsdown", gids: lazy { [] }5620 returns correctly filtered issues5621 when limiting the number of results5622 is expected to check permissions on the first issue only5623 behaves like a working graphql query5624 returns a successful response5625 only returns N issues5626 when no limit is provided5627 returns all issues5628 when the user does not have access to the issue5629 returns nil5630 when there is a confidential issue5631 when the user cannot see confidential issues5632 returns issues without confidential issues5633 filtering for confidential issues5634 returns no issues5635 filtering for non-confidential issues5636 returns correctly filtered issues5637 when the user can see confidential issues5638 returns issues with confidential issues5639 filtering for confidential issues5640 returns correctly filtered issues5641 filtering for non-confidential issues5642 returns correctly filtered issues5643 sorting and pagination5644 when sorting by due date5645 when ascending5646 behaves like sorted paginated query5647 behaves like requires variables5648 shared example requires variables to be set5650 when sorting5651 sorts correctly5652 when paginating5653 paginates correctly5654 when descending5655 behaves like sorted paginated query5656 behaves like requires variables5657 shared example requires variables to be set5659 when sorting5660 sorts correctly5661 when paginating5662 paginates correctly5663 when sorting by relative position5664 when ascending5665 behaves like sorted paginated query5666 behaves like requires variables5667 shared example requires variables to be set5669 when sorting5670 sorts correctly5671 when paginating5672 paginates correctly5673 when sorting by priority5674 when ascending5675 behaves like sorted paginated query5676 behaves like requires variables5677 shared example requires variables to be set5679 when sorting5680 sorts correctly5681 when paginating5682 paginates correctly5683 when descending5684 behaves like sorted paginated query5685 behaves like requires variables5686 shared example requires variables to be set5688 when sorting5689 sorts correctly5690 when paginating5691 paginates correctly5692 when sorting by label priority5693 when ascending5694 behaves like sorted paginated query5695 behaves like requires variables5696 shared example requires variables to be set5698 when sorting5699 sorts correctly5700 when paginating5701 paginates correctly5702 when descending5703 behaves like sorted paginated query5704 behaves like requires variables5705 shared example requires variables to be set5707 when sorting5708 sorts correctly5709 when paginating5710 paginates correctly5711 when sorting by milestone due date5712 when ascending5713 behaves like sorted paginated query5714 behaves like requires variables5715 shared example requires variables to be set5717 when sorting5718 sorts correctly5719 when paginating5720 paginates correctly5721 when descending5722 behaves like sorted paginated query5723 behaves like requires variables5724 shared example requires variables to be set5726 when sorting5727 sorts correctly5728 when paginating5729 paginates correctly5730 when fetching alert management alert5731 avoids N+1 queries5732 returns the alert data5733 when fetching customer_relations_contacts5734 avoids N+1 queries5735 when fetching labels5736 avoids N+1 queries5737 when fetching assignees5738 avoids N+1 queries5739 N+1 query checks5740 when requesting `user_notes_count`5741 prevents N+1 queries5742 when requesting `user_discussions_count`5743 prevents N+1 queries5744 when requesting `merge_requests_count`5745 prevents N+1 queries5746 when requesting `timelogs`5747 prevents N+1 queries5748API::Ci::PipelineSchedules5749 GET /projects/:id/pipeline_schedules5750 authenticated user with valid permissions5751 returns list of pipeline_schedules5752 avoids N + 1 queries5753 when scope is active5754 returns matched pipeline schedules5755 when scope is inactive5756 returns matched pipeline schedules5757 authenticated user with invalid permissions5758 does not return pipeline_schedules list5759 unauthenticated user5760 does not return pipeline_schedules list5761 GET /projects/:id/pipeline_schedules/:pipeline_schedule_id5762 with private project5763 behaves like request with schedule ownership5764 authenticated user with pipeline schedule ownership5765 returns pipeline_schedule details5766 behaves like request with project permissions5767 authenticated user with project permisions5768 returns pipeline_schedule details5769 behaves like request with unauthenticated user5770 with unauthenticated user5771 does not return pipeline_schedule5772 behaves like request with non-existing pipeline_schedule5773 responds with 404 Not Found if requesting non-existing pipeline_schedule5774 authenticated user with no project permissions5775 does not return pipeline_schedule5776 authenticated user with insufficient project permissions5777 does not return pipeline_schedule5778 with public project5779 behaves like request with schedule ownership5780 authenticated user with pipeline schedule ownership5781 returns pipeline_schedule details5782 behaves like request with project permissions5783 authenticated user with project permisions5784 returns pipeline_schedule details5785 behaves like request with unauthenticated user5786 with unauthenticated user5787 does not return pipeline_schedule5788 behaves like request with non-existing pipeline_schedule5789 responds with 404 Not Found if requesting non-existing pipeline_schedule5790 authenticated user with no project permissions5791 returns pipeline_schedule with no variables5792 authenticated user with insufficient project permissions5793 returns pipeline_schedule with no variables5794 POST /projects/:id/pipeline_schedules5795 authenticated user with valid permissions5796 with required parameters5797 creates pipeline_schedule5798 without required parameters5799 does not create pipeline_schedule5800 when cron has validation error5801 does not create pipeline_schedule5802 authenticated user with invalid permissions5803 does not create pipeline_schedule5804 unauthenticated user5805 does not create pipeline_schedule5806 PUT /projects/:id/pipeline_schedules/:pipeline_schedule_id5807 authenticated user with valid permissions5808 updates cron5809 when cron has validation error5810 does not update pipeline_schedule5811 authenticated user with invalid permissions5812 does not update pipeline_schedule5813 unauthenticated user5814 does not update pipeline_schedule5815 POST /projects/:id/pipeline_schedules/:pipeline_schedule_id/take_ownership5816 authenticated user with valid permissions5817 updates owner5818 authenticated user with invalid permissions5819 does not update owner5820 unauthenticated user5821 does not update owner5822 DELETE /projects/:id/pipeline_schedules/:pipeline_schedule_id5823 authenticated user with valid permissions5824 deletes pipeline_schedule5825 responds with 404 Not Found if requesting non-existing pipeline_schedule5826 behaves like 412 response5827 for a modified ressource5828 returns 412 with a JSON error5829 for an unmodified ressource5830 returns 204 with an empty body5831 authenticated user with invalid permissions5832 does not delete pipeline_schedule5833 unauthenticated user5834 does not delete pipeline_schedule5835 POST /projects/:id/pipeline_schedules/:pipeline_schedule_id/play5836 authenticated user with `:play_pipeline_schedule` permission5837 schedules a pipeline worker5838 renders an error if scheduling failed5839 authenticated user with insufficient access5840 responds with not found5841 unauthenticated user5842 responds with unauthorized5843 POST /projects/:id/pipeline_schedules/:pipeline_schedule_id/variables5844 authenticated user with valid permissions5845 with required parameters5846 creates pipeline_schedule_variable5847 without required parameters5848 does not create pipeline_schedule_variable5849 when key has validation error5850 does not create pipeline_schedule_variable5851 authenticated user with invalid permissions5852 does not create pipeline_schedule_variable5853 unauthenticated user5854 does not create pipeline_schedule_variable5855 PUT /projects/:id/pipeline_schedules/:pipeline_schedule_id/variables/:key5856 authenticated user with valid permissions5857 updates pipeline_schedule_variable5858 authenticated user with invalid permissions5859 does not update pipeline_schedule_variable5860 unauthenticated user5861 does not update pipeline_schedule_variable5862 DELETE /projects/:id/pipeline_schedules/:pipeline_schedule_id/variables/:key5863 authenticated user with valid permissions5864 deletes pipeline_schedule_variable5865 responds with 404 Not Found if requesting non-existing pipeline_schedule_variable5866 authenticated user with invalid permissions5867 does not delete pipeline_schedule_variable5868 unauthenticated user5869 does not delete pipeline_schedule_variable5870Import::GiteaController5871 GET new5872 behaves like a GitHub-ish import controller: GET new5873 redirects to status if we already have a token5874 renders the :new page if no token is present in session5875 POST personal_access_token5876 behaves like a GitHub-ish import controller: POST personal_access_token5877 updates access token5878 strips access token with spaces5879 GET status5880 behaves like a GitHub-ish import controller: GET status5881 returns variables for json request5882 touches the etag cache store5883 handles an invalid access token5884 does not produce N+1 database queries5885 requests provider repos list5886 when filtering5887 filters list of repositories by name5888 filters the list, ignoring the case of the name5889 when user input contains html5890 sanitizes user input5891 when the client returns a non-string name5892 does not raise an error5893 when host url is local or not http5894 denies network request5895 denies network request5896 denies network request5897 when DNS Rebinding protection is enabled5898 when provided host url is using https5899 uses unchanged host url to send request to Gitea5900 when provided host url is using http5901 uses changed host url to send request to Gitea5902 POST create5903 behaves like a GitHub-ish import controller: POST create5904 returns 200 response when the project is imported successfully5905 returns 422 response with the base error when the project could not be imported5906 touches the etag cache store5907 when the repository owner is the provider user5908 when the provider user and GitLab user's usernames match5909 takes the current user's namespace5910 when the provider user and GitLab user's usernames don't match5911 takes the current user's namespace5912 when the repository owner is not the provider user5913 when a namespace with the provider user's username already exists5914 when the namespace is owned by the GitLab user5915 takes the existing namespace5916 when the namespace is not owned by the GitLab user5917 creates a project using user's namespace5918 when a namespace with the provider user's username doesn't exist5919 when current user can create namespaces5920 creates the namespace5921 takes the new namespace5922 when current user can't create namespaces5923 doesn't create the namespace5924 takes the current user's namespace5925 user has chosen a namespace and name for the project5926 takes the selected namespace and name5927 takes the selected name and default namespace5928 user has chosen an existing nested namespace and name for the project5929 takes the selected namespace and name5930 user has chosen a non-existent nested namespaces and name for the project5931 takes the selected namespace and name5932 creates the namespaces5933 new namespace has the right parent5934 user has chosen existent and non-existent nested namespaces and name for the project5935 takes the selected namespace and name5936 creates the namespaces5937 does not create a new namespace under the user namespace5938 user cannot create a subgroup inside a group is not a member of5939 does not take the selected namespace and name5940 does not create the namespaces5941 user can use a group without having permissions to create a group5942 takes the selected namespace and name5943 when user can not create projects in the chosen namespace5944 returns 422 response5945 behaves like project import rate limiter5946 when limit exceeds5947 notifies and redirects user5948 GET realtime_changes5949 behaves like a GitHub-ish import controller: GET realtime_changes5950 sets a Poll-Interval header5951API::ProjectImport5952 POST /projects/import5953 executes a limited number of queries5954 schedules an import using a namespace5955 schedules an import using the namespace path5956 schedules an import at the user namespace level5957 does not schedule an import for a namespace that does not exist5958 does not schedule an import if the user has no permission to the namespace5959 stores params that can be overridden5960 does not store params that are not allowed5961 when a name is explicitly set5962 schedules an import using a namespace and a different name5963 schedules an import using the namespace path and a different name5964 sets name correctly5965 sets name correctly with an overwrite5966 schedules an import using the path and name explicitly set to nil5967 if user uploads no valid file5968 does not schedule an import if the user uploads no valid file5969 when target path already exists in namespace5970 does not schedule an import5971 when param overwrite is true5972 schedules an import5973 when request exceeds the rate limit5974 prevents users from importing projects5975 when using remote storage5976 schedules an import5977 POST /projects/remote-import5978 returns NOT FOUND when the feature is disabled5979 when the feature flag is enabled5980 when the response is successful5981 schedules the import successfully5982 when the service returns an error5983 fails to schedule the import5984 GET /projects/:id/import5985 returns the import status5986 returns the import status and the error if failed5987 POST /projects/import/authorize5988 authorizes importing project with workhorse header5989 rejects requests that bypassed gitlab-workhorse5990 when using remote storage5991 when direct upload is enabled5992 responds with status 200, location of file remote store and object details5993 when direct upload is disabled5994 handles as a local file5995API::ProtectedBranches5996 GET /projects/:id/protected_branches5997 when authenticated as a maintainer5998 when search param is not present5999 behaves like protected branches6000 returns the protected branches6001 when search param is present6002 behaves like protected branches6003 returns the protected branches6004 when authenticated as a guest6005 behaves like 403 response6006 returns 4036007 GET /projects/:id/protected_branches/:branch6008 when authenticated as a maintainer6009 behaves like protected branch6010 returns the protected branch6011 when protected branch does not exist6012 behaves like 404 response6013 returns 4046014 when protected branch contains a wildcard6015 behaves like protected branch6016 returns the protected branch6017 when protected branch does not exist6018 behaves like 404 response6019 returns 4046020 when protected branch contains a period6021 behaves like protected branch6022 returns the protected branch6023 when protected branch does not exist6024 behaves like 404 response6025 returns 4046026 when authenticated as a guest6027 behaves like 403 response6028 returns 4036029 POST /projects/:id/protected_branches6030 when authenticated as a maintainer6031 protects a single branch6032 protects a single branch and developers can push6033 protects a single branch and developers can merge6034 protects a single branch and developers can push and merge6035 protects a single branch and no one can push6036 protects a single branch and no one can merge6037 protects a single branch and no one can push or merge6038 protects a single branch and allows force pushes6039 returns a 409 error if the same branch is protected twice6040 when branch has a wildcard in its name6041 protects multiple branches with a wildcard in the name6042 when a policy restricts rule deletion6043 prevents deletion of the protected branch rule6044 when authenticated as a guest6045 returns a 403 error if guest6046 DELETE /projects/:id/protected_branches/unprotect/:branch6047 unprotects a single branch6048 returns 404 if branch does not exist6049 behaves like 412 response6050 for a modified ressource6051 returns 412 with a JSON error6052 for an unmodified ressource6053 returns 204 with an empty body6054 when a policy restricts rule deletion6055 prevents deletion of the protected branch rule6056 when branch has a wildcard in its name6057 unprotects a wildcard branch6058API::DeployTokens6059 GET /deploy_tokens6060 when unauthenticated6061 is expected to respond with numeric status code unauthorized6062 when authenticated as non-admin user6063 is expected to respond with numeric status code forbidden6064 when authenticated as admin6065 is expected to respond with numeric status code ok6066 returns all deploy tokens6067 and active=true6068 only returns active deploy tokens6069 GET /projects/:id/deploy_tokens6070 when unauthenticated6071 is expected to respond with numeric status code not_found6072 when authenticated as non-admin user6073 is expected to respond with numeric status code forbidden6074 when authenticated as maintainer6075 is expected to respond with numeric status code ok6076 returns all deploy tokens for the project6077 does not return deploy tokens for other projects6078 and active=true6079 only returns active deploy tokens for the project6080 GET /groups/:id/deploy_tokens6081 when unauthenticated6082 is expected to respond with numeric status code forbidden6083 when authenticated as non-admin user6084 is expected to respond with numeric status code forbidden6085 when authenticated as maintainer6086 is expected to respond with numeric status code ok6087 returns all deploy tokens for the group6088 does not return deploy tokens for other groups6089 and active=true6090 only returns active deploy tokens for the group6091 DELETE /projects/:id/deploy_tokens/:token_id6092 when unauthenticated6093 is expected to respond with numeric status code not_found6094 when authenticated as non-admin user6095 is expected to respond with numeric status code forbidden6096 when authenticated as maintainer6097 is expected to respond with numeric status code no_content6098 calls the deploy token destroy service6099 invalid request6100 returns not found with invalid group id6101 returns bad_request with invalid token id6102 deploy token creation6103 POST /projects/:id/deploy_tokens6104 behaves like creating a deploy token6105 when unauthenticated6106 is expected to respond with numeric status code not_found6107 when authenticated as non-admin user6108 is expected to respond with numeric status code forbidden6109 when authenticated as maintainer6110 creates the deploy token6111 with no optional params given6112 creates the deploy token with default values6113 with an invalid scope6114 is expected to respond with numeric status code bad_request6115 POST /groups/:id/deploy_tokens6116 behaves like creating a deploy token6117 when unauthenticated6118 is expected to respond with numeric status code forbidden6119 when authenticated as non-admin user6120 is expected to respond with numeric status code forbidden6121 when authenticated as owner6122 creates the deploy token6123 with no optional params given6124 creates the deploy token with default values6125 with an invalid scope6126 is expected to respond with numeric status code bad_request6127 when authenticated as maintainer6128 is expected to respond with numeric status code forbidden6129 DELETE /groups/:id/deploy_tokens/:token_id6130 when unauthenticated6131 is expected to respond with numeric status code forbidden6132 when authenticated as non-admin user6133 is expected to respond with numeric status code forbidden6134 when authenticated as maintainer6135 is expected to respond with numeric status code forbidden6136 when authenticated as owner6137 calls the deploy token destroy service6138 invalid request6139 returns bad request with invalid group id6140 returns not found with invalid deploy token id6141Groups::GroupMembersController6142 GET index6143 renders index with 200 status code6144 when user can manage members6145 assigns invited members6146 assigns skip groups6147 restricts search to one email6148 paginates invited list6149 when user cannot manage members6150 does not assign invited members or skip_groups6151 when user has owner access to subgroup6152 lists inherited group members by default6153 lists direct group members only6154 lists inherited group members only6155 POST create6156 when user does not have enough rights6157 returns 4036158 when user has enough rights6159 adds user to members6160 adds no user to members6161 access expiry date6162 when set to a date in the past6163 does not add user to members6164 when set to a date in the future6165 adds user to members6166 PUT update6167 access level6168 can change the access level to Guest6169 can change the access level to Reporter6170 can change the access level to Developer6171 can change the access level to Maintainer6172 access expiry date6173 when set to a date in the past6174 does not update the member6175 returns error status6176 returns error message6177 when set to a date in the future6178 updates the member6179 expiration date6180 when `expires_at` is set6181 returns correct json response6182 when `expires_at` is not set6183 returns empty json response6184 DELETE destroy6185 when member is not found6186 returns 4036187 when member is found6188 when user does not have enough rights6189 returns 4036190 when user has enough rights6191 [HTML] removes user from members6192 [HTML] removes user from members including subgroups and projects6193 [JS] removes user from members6194 DELETE leave6195 when member is not found6196 returns 4046197 when member is found6198 and is not an owner6199 removes user from members6200 supports json request6201 and is an owner6202 cannot removes himself from the group6203 and is a requester6204 removes user from members6205 POST request_access6206 creates a new GroupMember that is not a team member6207 POST approve_access_request6208 when member is not found6209 returns 4036210 when member is found6211 when user does not have enough rights6212 returns 4036213 when user has enough rights6214 adds user to members6215 with external authorization enabled6216 GET #index6217 is successful6218 POST #create6219 is successful6220 PUT #update6221 is successful6222 DELETE #destroy6223 is successful6224 POST #destroy6225 is successful6226 POST #approve_request_access6227 is successful6228 DELETE #leave6229 is successful6230 POST #resend_invite6231 is successful6232Public Project Pages Access6233 Project should be public6234 #public?6235 is expected to be truthy6236 GET /projects/:id/pages_access6237 access depends on the level6238 pages_access_level: 0, with_user: "admin", expected_result: 4036239 correct return value6240 pages_access_level: 0, with_user: "owner", expected_result: 4036241 correct return value6242 pages_access_level: 0, with_user: "master", expected_result: 4036243 correct return value6244 pages_access_level: 0, with_user: "developer", expected_result: 4036245 correct return value6246 pages_access_level: 0, with_user: "reporter", expected_result: 4036247 correct return value6248 pages_access_level: 0, with_user: "guest", expected_result: 4036249 correct return value6250 pages_access_level: 0, with_user: "user", expected_result: 4036251 correct return value6252 pages_access_level: 0, with_user: nil, expected_result: 4036253 correct return value6254 pages_access_level: 30, with_user: "admin", expected_result: 2006255 correct return value6256 pages_access_level: 30, with_user: "owner", expected_result: 2006257 correct return value6258 pages_access_level: 30, with_user: "master", expected_result: 2006259 correct return value6260 pages_access_level: 30, with_user: "developer", expected_result: 2006261 correct return value6262 pages_access_level: 30, with_user: "reporter", expected_result: 2006263 correct return value6264 pages_access_level: 30, with_user: "guest", expected_result: 2006265 correct return value6266 pages_access_level: 30, with_user: "user", expected_result: 2006267 correct return value6268 pages_access_level: 30, with_user: nil, expected_result: 2006269 correct return value6270 pages_access_level: 20, with_user: "admin", expected_result: 2006271 correct return value6272 pages_access_level: 20, with_user: "owner", expected_result: 2006273 correct return value6274 pages_access_level: 20, with_user: "master", expected_result: 2006275 correct return value6276 pages_access_level: 20, with_user: "developer", expected_result: 2006277 correct return value6278 pages_access_level: 20, with_user: "reporter", expected_result: 2006279 correct return value6280 pages_access_level: 20, with_user: "guest", expected_result: 2006281 correct return value6282 pages_access_level: 20, with_user: "user", expected_result: 2006283 correct return value6284 pages_access_level: 20, with_user: nil, expected_result: 2006285 correct return value6286 pages_access_level: 10, with_user: "admin", expected_result: 2006287 correct return value6288 pages_access_level: 10, with_user: "owner", expected_result: 2006289 correct return value6290 pages_access_level: 10, with_user: "master", expected_result: 2006291 correct return value6292 pages_access_level: 10, with_user: "developer", expected_result: 2006293 correct return value6294 pages_access_level: 10, with_user: "reporter", expected_result: 2006295 correct return value6296 pages_access_level: 10, with_user: "guest", expected_result: 2006297 correct return value6298 pages_access_level: 10, with_user: "user", expected_result: 4036299 correct return value6300 pages_access_level: 10, with_user: nil, expected_result: 4036301 correct return value6302Projects::MergeRequests::ConflictsController6303 GET show6304 when the request is html6305 does tracks the resolve call6306 when the conflicts cannot be resolved in the UI6307 returns a 200 status code6308 returns JSON with a message6309 does not track the resolve call6310 with valid conflicts6311 matches the schema6312 includes meta info about the MR6313 includes each file that has conflicts6314 splits files into sections with lines6315 has unique section IDs across files6316 GET conflict_for_path6317 when the conflicts cannot be resolved in the UI6318 returns a 404 status code6319 when the file does not exist cannot be resolved in the UI6320 returns a 404 status code6321 with an existing file6322 returns a 200 and the file in JSON format6323 POST resolve_conflicts6324 with valid params6325 handles the success case6326 when sections are missing6327 handles the error case6328 when files are missing6329 handles the error case6330 when a file has identical content to the conflict6331 handles the error case6332Projects::CompareController6333 GET index6334 returns successfully6335 GET show6336 when the refs exist in the same project6337 when we set the white space param6338 shows some diffs with ignore whitespace change option6339 when we do not set the white space param6340 sets the diffs and commits ivars6341 when the refs exist in different projects that the user can see6342 shows the diff6343 when the refs exist in different projects but the user cannot see6344 does not show the diff6345 when the source ref does not exist6346 sets empty diff and commit ivars6347 when the target ref does not exist6348 sets empty diff and commit ivars6349 when the target ref is invalid6350 shows a flash message and redirects6351 when the source ref is invalid6352 shows a flash message and redirects6353 when the both refs are invalid6354 shows a flash message and redirects6355 GET diff_for_path6356 when the source and target refs exist in the same project6357 when the user has access target the project6358 when the path exists in the diff6359 disables diff notes6360 only renders the diffs for the path given6361 when the path does not exist in the diff6362 returns a 4046363 when the user does not have access target the project6364 returns a 4046365 when the source and target refs exist in different projects and the user can see6366 shows the diff for that path6367 when the source and target refs exist in different projects and the user cannot see6368 does not show the diff for that path6369 when the source ref does not exist6370 returns a 4046371 when the target ref does not exist6372 returns a 4046373 POST create6374 when sending valid params6375 without a from_project_id6376 redirects to the show page6377 with a from_project_id6378 redirects to the show page without interpreting from_project_id6379 when sending invalid params6380 from_ref: "", to_ref: "", from_project_id: "", expected_redirect_params: {}6381 redirects back to the index6382 from_ref: "main", to_ref: "", from_project_id: "", expected_redirect_params: {:from=>"main"}6383 redirects back to the index6384 from_ref: "", to_ref: "main", from_project_id: "", expected_redirect_params: {:to=>"main"}6385 redirects back to the index6386 from_ref: "", to_ref: "", from_project_id: "1", expected_redirect_params: {:from_project_id=>1}6387 redirects back to the index6388 from_ref: "main", to_ref: "", from_project_id: "1", expected_redirect_params: {:from=>"main", :from_project_id=>1}6389 redirects back to the index6390 from_ref: "", to_ref: "main", from_project_id: "1", expected_redirect_params: {:to=>"main", :from_project_id=>1}6391 redirects back to the index6392 GET signatures6393 when the source and target refs exist6394 when the user has access to the project6395 returns only the commit with a signature6396 when the user does not have access to the project6397 returns a 4046398 when the source ref does not exist6399 returns no signatures6400 when the target ref does not exist6401 returns no signatures6402Dashboard::ProjectsController6403 #index6404 user not logged in6405 behaves like authenticates sessionless user6406 doesn't log the user in otherwise6407 when the 'personal_access_token' param is populated with the personal access token6408 logs the user in6409 when the personal access token has no api scope6410 does not log the user in6411 when the 'PERSONAL_ACCESS_TOKEN' header is populated with the personal access token6412 logs the user in6413 user logged in6414 orders the projects by name by default6415 external authorization6416 works when the external authorization service is enabled6417 project sorting6418 behaves like set sort order from user preference6419 #set_sort_order_from_user_preference6420 when database is in read-only mode6421 does not update user preference6422 when database is not in read-only mode6423 updates user preference6424 with search and sort parameters6425 behaves like search and sort parameters6426 returns a single project with no ambiguous column errors6427 behaves like search and sort parameters6428 returns a single project with no ambiguous column errors6429 behaves like search and sort parameters6430 returns a single project with no ambiguous column errors6431 behaves like search and sort parameters6432 returns a single project with no ambiguous column errors6433 behaves like search and sort parameters6434 returns a single project with no ambiguous column errors6435 with deleted project6436 does not display deleted project6437 json requests6438 GET /projects.json6439 is expected to respond with 2006440 GET /starred.json6441 returns success6442 paginates the records6443 atom requests6444 #index6445 project pagination6446 does not paginate projects, even if normally restricted by pagination6447 rendering6448 renders all kinds of event without error6449 with deleted project6450 does not display deleted project6451Getting Metrics Dashboard6452 with metrics_dashboard_exhaustive_validations feature flag off6453 for anonymous user6454 requested dashboard is available6455 returns nil6456 behaves like a working graphql query6457 returns a successful response6458 for user with developer access6459 requested dashboard is available6460 returns metrics dashboard6461 behaves like a working graphql query6462 returns a successful response6463 invalid dashboard6464DEPRECATION WARNING: Enumerating ActiveModel::Errors as a hash has been deprecated.6465In Rails 6.1, `errors` is an array of Error objects,6466therefore it should be accessed by a block with a single block6467parameter like this:6468person.errors.each do |error|6469 attribute = error.attribute6470 message = error.message6471end6472You are passing a block expecting two parameters,6473so the old hash behavior is simulated. As this is deprecated,6474this will result in an ArgumentError in Rails 6.2.6475 (called from map at /builds/gitlab-org/gitlab/app/models/performance_monitoring/prometheus_dashboard.rb:63)6476 returns metrics dashboard6477 empty dashboard6478DEPRECATION WARNING: Enumerating ActiveModel::Errors as a hash has been deprecated.6479In Rails 6.1, `errors` is an array of Error objects,6480therefore it should be accessed by a block with a single block6481parameter like this:6482person.errors.each do |error|6483 attribute = error.attribute6484 message = error.message6485end6486You are passing a block expecting two parameters,6487so the old hash behavior is simulated. As this is deprecated,6488this will result in an ArgumentError in Rails 6.2.6489 (called from map at /builds/gitlab-org/gitlab/app/models/performance_monitoring/prometheus_dashboard.rb:63)6490 returns metrics dashboard6491 requested dashboard can not be found6492 returns nil6493 behaves like a working graphql query6494 returns a successful response6495 with metrics_dashboard_exhaustive_validations feature flag on6496 for anonymous user6497 requested dashboard is available6498 returns nil6499 behaves like a working graphql query6500 returns a successful response6501 for user with developer access6502 requested dashboard is available6503 returns metrics dashboard6504 behaves like a working graphql query6505 returns a successful response6506 invalid dashboard6507 returns metrics dashboard6508 empty dashboard6509 returns metrics dashboard6510 requested dashboard can not be found6511 returns nil6512 behaves like a working graphql query6513 returns a successful response6514Projects::RawController6515 GET #show6516 regular filename6517 delivers ASCII file6518 makes a single Gitaly request6519 behaves like project cache control headers6520 when project is public6521 returns cache_control public header to true6522 when project is private6523 returns cache_control public header to true6524 when project is internal6525 returns cache_control public header to true6526 behaves like content disposition headers6527 sets content disposition to inline6528 when inline param is false6529 sets content disposition to attachment6530 image header6531 leaves image content disposition6532 makes a single Gitaly request6533 behaves like project cache control headers6534 when project is public6535 returns cache_control public header to true6536 when project is private6537 returns cache_control public header to true6538 when project is internal6539 returns cache_control public header to true6540 behaves like content disposition headers6541 sets content disposition to inline6542 when inline param is false6543 sets content disposition to attachment6544 with LFS files6545 makes a single Gitaly request6546 behaves like a controller that can serve LFS files6547 when lfs is enabled6548 when the project is linked to the LfsObject6549 serves the file6550 and lfs uses object storage6551 responds with redirect to file6552 sets content disposition6553 when project is not linked to the LfsObject6554 does not serve the file6555 when the project is part of a fork network6556 when the project is the root of the fork network6557 behaves like a controller that correctly serves lfs files within a fork network6558 is expected not to eq #<Project id:564 namespace417/project561>>6559 does not serve the file if no members are linked to the LfsObject6560 serves the file when the fork network root is linked to the LfsObject6561 serves the file when the fork network member is linked to the LfsObject6562 when the project is a downstream member of the fork network6563 behaves like a controller that correctly serves lfs files within a fork network6564 is expected not to eq #<Project id:569 namespace422/project566>>6565 does not serve the file if no members are linked to the LfsObject6566 serves the file when the fork network root is linked to the LfsObject6567 serves the file when the fork network member is linked to the LfsObject6568 when lfs is not enabled6569 delivers ASCII file6570 behaves like project cache control headers6571 when project is public6572 returns cache_control public header to true6573 when project is private6574 returns cache_control public header to true6575 when project is internal6576 returns cache_control public header to true6577 when the endpoint receives requests above the limit6578 prevents from accessing the raw file6579 logs the event on auth.log6580 when receiving an external storage request6581 does not prevent from accessing the raw file6582 when the request uses a different version of a commit6583 prevents from accessing the raw file6584 when the throttling has been disabled6585 does not prevent from accessing the raw file6586 with case-sensitive files6587 prevents from accessing the specific file6588 as a sessionless user6589 when no token is provided6590 redirects to sign in page6591 when a token param is present6592 when token is correct6593 calls the action normally6594 when token is incorrect6595 redirects to sign in page6596 when a token header is present6597 when token is correct6598 calls the action normally6599 when token is incorrect6600 redirects to sign in page6601 caching6602 sets appropriate caching headers6603 when a public project has private repo6604 does not set public caching header6605 when If-None-Match header is set6606 returns a 304 status6607GroupTree6608 GET #index6609 behaves like returns filtered groups6610 filters groups6611 for subgroups6612 only renders root groups when no parent was given6613 contains only the subgroup when a parent was given6614 allows filtering for subgroups and includes the parents for rendering6615 does not include groups the user does not have access to6616 preloads parents regardless of pagination6617 json content6618 shows groups as json6619 nested groups6620 expands the tree when filtering6621Projects::Settings::OperationsController6622 GET #show6623 renders show template6624 with insufficient permissions6625 renders 4046626 as an anonymous user6627 redirects to signup page6628 PATCH #update6629 with insufficient permissions6630 renders 4046631 as an anonymous user6632 redirects to signup page6633 incident management6634 GET #show6635 with existing setting6636 loads existing setting6637 without an existing setting6638 builds a new setting6639 PATCH #update6640 behaves like PATCHable6641 format json6642 when update succeeds6643 returns success status6644 when update fails6645 returns error6646 updating each incident management setting6647 behaves like a gitlab tracking event6648 creates a gitlab tracking event enabled_issue_auto_creation_on_alerts6649 behaves like a gitlab tracking event6650 creates a gitlab tracking event disabled_issue_auto_creation_on_alerts6651 behaves like a gitlab tracking event6652 creates a gitlab tracking event enabled_issue_template_on_alerts6653 behaves like a gitlab tracking event6654 creates a gitlab tracking event disabled_issue_template_on_alerts6655 behaves like a gitlab tracking event6656 creates a gitlab tracking event enabled_sending_emails6657 behaves like a gitlab tracking event6658 creates a gitlab tracking event disabled_sending_emails6659 behaves like a gitlab tracking event6660 creates a gitlab tracking event enabled_pagerduty_webhook6661 behaves like a gitlab tracking event6662 creates a gitlab tracking event disabled_pagerduty_webhook6663 behaves like a gitlab tracking event6664 creates a gitlab tracking event enabled_auto_close_incident6665 behaves like a gitlab tracking event6666 creates a gitlab tracking event disabled_auto_close_incident6667 POST #reset_pagerduty_token6668 with existing incident management setting has active PagerDuty webhook6669 returns newly reset token6670 without existing incident management setting6671 does not reset a token6672 when update fails6673 returns unprocessable_entity6674 with insufficient permissions6675 returns 4046676 as an anonymous user6677 returns a redirect6678 error tracking6679 GET #show6680 with existing setting6681 loads existing setting6682 without an existing setting6683 builds a new setting6684 PATCH #update6685 behaves like PATCHable6686 format json6687 when update succeeds6688 returns success status6689 when update fails6690 returns error6691 metrics dashboard setting6692 PATCH #update6693 behaves like PATCHable6694 format json6695 when update succeeds6696 returns success status6697 when update fails6698 returns error6699 grafana integration6700 PATCH #update6701 behaves like PATCHable6702 format json6703 when update succeeds6704 returns success status6705 when update fails6706 returns error6707 prometheus integration6708 PATCH #update6709 feature flag :settings_operations_prometheus_service is enabled6710 behaves like PATCHable6711 format json6712 when update succeeds6713 returns success status6714 when update fails6715 returns error6716 feature flag :settings_operations_prometheus_service is disabled6717 behaves like PATCHable6718 format json6719 when update succeeds6720 returns success status6721 when update fails6722 returns error6723 POST #reset_alerting_token6724 with existing alerting setting6725 returns newly reset token6726 without existing alerting setting6727 creates a token6728 when update fails6729 returns unprocessable_entity6730 with insufficient permissions6731 returns 4046732 as an anonymous user6733 returns a redirect6734 tracing integration6735 GET #show6736 with existing setting6737 loads existing setting6738 without an existing setting6739 builds a new setting6740 PATCH #update6741 behaves like PATCHable6742 format json6743 when update succeeds6744 returns success status6745 when update fails6746 returns error6747 gitlab tracking6748 without existing setting6749 when creating a new setting6750 behaves like event tracking6751 tracks an event6752 with invalid external_url6753 behaves like no event tracking6754 does not track an event6755 with existing setting6756 when changing external_url6757 behaves like no event tracking6758 does not track an event6759 with unchanged external_url6760 behaves like no event tracking6761 does not track an event6762 with invalid external_url6763 behaves like no event tracking6764 does not track an event6765Merge Requests Diffs6766 GET diffs_batch6767 with caching6768 when the request has not been cached6769 behaves like serializes diffs with expected arguments6770 serializes paginated merge request diff collection6771 when the request has already been cached6772 does not serialize diffs6773 with the different user6774 behaves like serializes diffs with expected arguments6775 serializes paginated merge request diff collection6776 with a new unfoldable diff position6777 behaves like serializes diffs with expected arguments6778 serializes paginated merge request diff collection6779 with a new environment6780 behaves like serializes diffs with expected arguments6781 serializes paginated merge request diff collection6782 with disabled display_merge_conflicts_in_diff feature6783 behaves like serializes diffs with expected arguments6784 serializes paginated merge request diff collection6785 with diff_head option6786 behaves like serializes diffs with expected arguments6787 serializes paginated merge request diff collection6788 with the different pagination option6789 behaves like serializes diffs with expected arguments6790 serializes paginated merge request diff collection6791 with the different diff_view6792 behaves like serializes diffs with expected arguments6793 serializes paginated merge request diff collection6794 with the different expanded option6795 behaves like serializes diffs with expected arguments6796 serializes paginated merge request diff collection6797 with the different ignore_whitespace_change option6798 behaves like serializes diffs with expected arguments6799 serializes paginated merge request diff collection6800 when the paths is given6801 does not use cache6802Import::AvailableNamespacesController6803 GET index6804 when having group with role never allowed to create projects6805 role: :guest, default_project_creation_access: 1, group_project_creation_level: nil6806 does not include group with access level guest in list6807 role: :guest, default_project_creation_access: 1, group_project_creation_level: 16808 does not include group with access level guest in list6809 role: :guest, default_project_creation_access: 1, group_project_creation_level: 26810 does not include group with access level guest in list6811 role: :guest, default_project_creation_access: 2, group_project_creation_level: nil6812 does not include group with access level guest in list6813 role: :guest, default_project_creation_access: 2, group_project_creation_level: 16814 does not include group with access level guest in list6815 role: :guest, default_project_creation_access: 2, group_project_creation_level: 26816 does not include group with access level guest in list6817 role: :reporter, default_project_creation_access: 1, group_project_creation_level: nil6818 does not include group with access level reporter in list6819 role: :reporter, default_project_creation_access: 1, group_project_creation_level: 16820 does not include group with access level reporter in list6821 role: :reporter, default_project_creation_access: 1, group_project_creation_level: 26822 does not include group with access level reporter in list6823 role: :reporter, default_project_creation_access: 2, group_project_creation_level: nil6824 does not include group with access level reporter in list6825 role: :reporter, default_project_creation_access: 2, group_project_creation_level: 16826 does not include group with access level reporter in list6827 role: :reporter, default_project_creation_access: 2, group_project_creation_level: 26828 does not include group with access level reporter in list6829 when having group with role always allowed to create projects6830 role: :maintainer, default_project_creation_access: 1, group_project_creation_level: nil6831 does not include group with access level maintainer in list6832 role: :maintainer, default_project_creation_access: 1, group_project_creation_level: 16833 does not include group with access level maintainer in list6834 role: :maintainer, default_project_creation_access: 1, group_project_creation_level: 26835 does not include group with access level maintainer in list6836 role: :maintainer, default_project_creation_access: 2, group_project_creation_level: nil6837 does not include group with access level maintainer in list6838 role: :maintainer, default_project_creation_access: 2, group_project_creation_level: 16839 does not include group with access level maintainer in list6840 role: :maintainer, default_project_creation_access: 2, group_project_creation_level: 26841 does not include group with access level maintainer in list6842 role: :owner, default_project_creation_access: 1, group_project_creation_level: nil6843 does not include group with access level owner in list6844 role: :owner, default_project_creation_access: 1, group_project_creation_level: 16845 does not include group with access level owner in list6846 role: :owner, default_project_creation_access: 1, group_project_creation_level: 26847 does not include group with access level owner in list6848 role: :owner, default_project_creation_access: 2, group_project_creation_level: nil6849 does not include group with access level owner in list6850 role: :owner, default_project_creation_access: 2, group_project_creation_level: 16851 does not include group with access level owner in list6852 role: :owner, default_project_creation_access: 2, group_project_creation_level: 26853 does not include group with access level owner in list6854 when having developer role6855 default_project_creation_access: 1, project_creation_level: nil, is_visible: false6856 does not include group with access level in list6857 default_project_creation_access: 1, project_creation_level: 2, is_visible: true6858 includes group with access level in list6859 default_project_creation_access: 2, project_creation_level: nil, is_visible: true6860 includes group with access level in list6861 default_project_creation_access: 2, project_creation_level: 1, is_visible: false6862 does not include group with access level in list6863 with an anonymous user6864 redirects to sign-in page6865Adding an AwardEmoji6866 when the user does not have permission6867 behaves like a mutation that does not create an AwardEmoji6868 is expected not to change `AwardEmoji.count`6869 behaves like a mutation that returns a top-level access error6870 is expected to eq ["The resource that you are attempting to access does not exist or you don't have permission to perform this action"]6871 when the user has permission6872 when the given awardable is not an Awardable6873 behaves like a mutation that does not create an AwardEmoji6874 is expected not to change `AwardEmoji.count`6875 behaves like a mutation that returns top-level errors6876 is expected to include /was provided invalid value for awardableId/6877 when the given awardable is an Awardable but still cannot be awarded an emoji6878 behaves like a mutation that does not create an AwardEmoji6879 is expected not to change `AwardEmoji.count`6880 behaves like a mutation that returns top-level errors6881 is expected to eq ["You cannot award emoji to this resource."]6882 when the given awardable is an Awardable6883 creates an emoji6884 returns the emoji6885 marking Todos as done6886 type: :issue, expectation: true6887 is expected to eq true6888 type: :merge_request, expectation: true6889 is expected to eq true6890 type: :project_snippet, expectation: false6891 is expected to eq false6892 for notes6893 regular Notes6894 marks the Todo as done6895 PersonalSnippet Notes6896 does not mark the Todo as done6897 when there were active record validation errors6898 returns an empty awardEmoji6899 behaves like a mutation that does not create an AwardEmoji6900 is expected not to change `AwardEmoji.count`6901 behaves like a mutation that returns errors in the response6902 is expected to contain exactly "Error 1" and "Error 2"6903Projects::DesignManagement::Designs::RawImagesController6904 GET #show6905 when the design is not an LFS file6906 serves files with `Content-Disposition` header set to attachment plus the filename6907 serves files with Workhorse6908 behaves like project cache control headers6909 when project is public6910 returns cache_control public header to true6911 when project is private6912 returns cache_control public header to true6913 when project is internal6914 returns cache_control public header to true6915 when the user does not have permission6916 is expected to respond with numeric status code not_found6917 when design does not exist6918 is expected to respond with numeric status code not_found6919 sha param6920 is expected not to eq "cf0713bbdecd8be1c1e25fcdef5a6499bf0d7c85"6921 when sha is the newest version sha6922 behaves like a successful request for sha6923 is expected to respond with numeric status code ok6924 when sha is the oldest version sha6925 behaves like a successful request for sha6926 is expected to respond with numeric status code ok6927 when sha is nil6928 behaves like a successful request for sha6929 is expected to respond with numeric status code ok6930 when the design is an LFS file6931 serves files with `Content-Disposition: attachment`6932 sets appropriate caching headers6933 behaves like a controller that can serve LFS files6934 when lfs is enabled6935 when the project is linked to the LfsObject6936 serves the file6937 and lfs uses object storage6938 responds with redirect to file6939 sets content disposition6940 when project is not linked to the LfsObject6941 does not serve the file6942 when the project is part of a fork network6943 when the project is the root of the fork network6944 behaves like a controller that correctly serves lfs files within a fork network6945 is expected not to eq #<Project id:582 namespace435/project579>>6946 does not serve the file if no members are linked to the LfsObject6947 serves the file when the fork network root is linked to the LfsObject6948 serves the file when the fork network member is linked to the LfsObject6949 when the project is a downstream member of the fork network6950 behaves like a controller that correctly serves lfs files within a fork network6951 is expected not to eq #<Project id:587 namespace440/project584>>6952 does not serve the file if no members are linked to the LfsObject6953 serves the file when the fork network root is linked to the LfsObject6954 serves the file when the fork network member is linked to the LfsObject6955 when lfs is not enabled6956 delivers ASCII file (PENDING: Calling spec asked to skip testing LFS disabled scenario)6957Emails::InProductMarketing6958 #in_product_marketing_email6959 sends to the right user with a link to unsubscribe6960 when on gitlab.com6961 has custom headers6962 track: :create, series: 06963 has the correct subject and content6964 track: :create, series: 16965 has the correct subject and content6966 track: :create, series: 26967 has the correct subject and content6968 track: :verify, series: 06969 has the correct subject and content6970 track: :verify, series: 16971 has the correct subject and content6972 track: :verify, series: 26973 has the correct subject and content6974 track: :trial, series: 06975 has the correct subject and content6976 track: :trial, series: 16977 has the correct subject and content6978 track: :trial, series: 26979 has the correct subject and content6980 track: :team, series: 06981 has the correct subject and content6982 track: :team, series: 16983 has the correct subject and content6984 track: :team, series: 26985 has the correct subject and content6986 track: :experience, series: 06987 has the correct subject and content6988 track: :team_short, series: 06989 has the correct subject and content6990 track: :trial_short, series: 06991 has the correct subject and content6992 track: :admin_verify, series: 06993 has the correct subject and content6994 track: :invite_team, series: 06995 has the correct subject and content6996Projects::Ci::LintsController6997 GET #show6998 with enough privileges6999 is expected to respond with numeric status code ok7000 renders show page7001 retrieves project7002 without enough privileges7003 responds with 4047004 POST #create7005 with a valid gitlab-ci.yml7006 behaves like returns a successful validation7007 returns successfully7008 renders json7009 retrieves project7010 using legacy validation (YamlProcessor)7011 runs validations through YamlProcessor7012 behaves like returns a successful validation7013 returns successfully7014 renders json7015 retrieves project7016 using dry_run mode7017 runs validations through Ci::CreatePipelineService7018 behaves like returns a successful validation7019 returns successfully7020 renders json7021 retrieves project7022 with an invalid gitlab-ci.yml7023 assigns result with errors7024 behaves like returns a successful validation7025 returns successfully7026 renders json7027 retrieves project7028 with dry_run mode7029 assigns result with errors7030 behaves like returns a successful validation7031 returns successfully7032 renders json7033 retrieves project7034 without enough privileges7035 responds with 4047036getting pipeline information nested in a project7037 contains pipeline information7038 contains configSource7039 behaves like a working graphql query7040 returns a successful response7041 when batching7042 executes the finder once7043 keeps the queries under the threshold7044 when enough data is requested7045DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.7046DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.7047DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.7048DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.7049DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.7050DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.7051 contains jobs7052 when requesting only builds with certain statuses7053 can filter build jobs by status7054 when requesting a specific job7055 can request a build by name7056 can request a build by ID7057 when we request nested fields of the build7058 returns the nested data7059 requires a constant number of queries7060 when requesting a specific test suite7061 can request a test suite by an array of build_ids7062 when pipeline has no builds that matches the given build_ids7063 returns nil7064 N+1 queries on stages jobs7065 does not generate N+1 queries7066Repositories::GitHttpController7067 when repository container is a project7068 behaves like Repositories::GitHttpController7069 HEAD #info_refs7070 returns 4037071 GET #info_refs7072 returns 401 for unauthenticated requests to public repositories when http protocol is disabled7073 calls the right access checker class with the right object7074 with authorized user7075 returns 2007076 updates the user activity7077 adds user info to the logs7078 POST #git_upload_pack7079 returns 2007080 behaves like handles unavailable Gitaly7081 when Gitaly is unavailable7082 responds with a 503 message7083 POST #git_upload_pack7084 updates project statistics sync for projects7085 on a read-only instance7086 does not update project statistics7087 recording the onboarding progress7088 is expected to equal true7089 when disable_git_http_fetch_writes is enabled7090 does not increment statistics7091 when repository container is a project wiki7092 behaves like Repositories::GitHttpController7093 HEAD #info_refs7094 returns 4037095 GET #info_refs7096 returns 401 for unauthenticated requests to public repositories when http protocol is disabled7097 calls the right access checker class with the right object7098 with authorized user7099 returns 2007100 updates the user activity7101 adds user info to the logs7102 POST #git_upload_pack7103 returns 2007104 when repository container is a personal snippet7105 behaves like Repositories::GitHttpController7106 HEAD #info_refs7107 returns 4037108 GET #info_refs7109 returns 401 for unauthenticated requests to public repositories when http protocol is disabled7110 calls the right access checker class with the right object7111 with authorized user7112 returns 2007113 updates the user activity7114 adds user info to the logs7115 POST #git_upload_pack7116 returns 2007117 behaves like handles unavailable Gitaly7118 when Gitaly is unavailable7119 responds with a 503 message7120 when repository container is a project snippet7121 behaves like Repositories::GitHttpController7122 HEAD #info_refs7123 returns 4037124 GET #info_refs7125 returns 401 for unauthenticated requests to public repositories when http protocol is disabled7126 calls the right access checker class with the right object7127 with authorized user7128 returns 2007129 updates the user activity7130 adds user info to the logs7131 POST #git_upload_pack7132 returns 2007133 behaves like handles unavailable Gitaly7134 when Gitaly is unavailable7135 responds with a 503 message7136Groups::BoardsController7137 GET index7138 creates a new board when group does not have one7139 pushes swimlanes_buffered_rendering feature flag7140 when format is HTML7141 renders template7142 with unauthorized user7143 returns a not found 404 response7144 when user is signed out7145 renders template7146 when format is JSON7147 return an array with one group board7148 with unauthorized user7149 returns a not found 404 response7150 behaves like disabled when using an external authorization service7151 works when the feature is not enabled7152 renders a 404 with a message when the feature is enabled7153 GET show7154 pushes swimlanes_buffered_rendering feature flag7155 when format is HTML7156 renders template7157 with unauthorized user7158 returns a not found 404 response7159 when user is signed out7160 does not save visit7161 when format is JSON7162 returns project board7163 with unauthorized user7164 returns a not found 404 response7165 when board does not belong to group7166 returns a not found 404 response7167 behaves like disabled when using an external authorization service7168 works when the feature is not enabled7169 renders a 404 with a message when the feature is enabled7170Projects::DeploymentsController7171 GET #index7172 returns list of deployments from last 8 hours7173 returns a list with deployments information7174 anonymous user7175 project and metrics dashboard are public7176 returns a list with deployments information7177 project and metrics dashboard are private7178 responds with not found7179 GET #metrics7180 when metrics are disabled7181 responds with not found7182 when metrics are enabled7183 when environment has no metrics7184 returns an empty 204 response7185 when environment has some metrics7186 returns a metrics JSON document7187 returns a 404 if the deployment failed7188 GET #additional_metrics7189 when metrics are disabled7190 responds with not found7191 when metrics are enabled7192 when environment has no metrics7193 returns a empty response 204 response7194 when environment has some metrics7195 returns a metrics JSON document7196Projects::GraphsController7197 GET languages7198 redirects_to action charts7199 GET commits7200 redirects_to action charts7201 charts7202 with an anonymous user7203 renders charts with 200 status code7204 when anonymous users can read build report results7205 sets the daily coverage options7206 when anonymous users cannot read build report results7207 does not set daily coverage options7208 behaves like tracking unique visits7209 tracks unique visit if the format is HTML7210 tracks unique visit if DNT is not enabled7211 does not track unique visit if DNT is enabled7212 does not track unique visit if the format is JSON7213 when languages were previously detected7214 sets the languages properly7215API::GroupVariables7216 GET /groups/:id/variables7217 authorized user with proper permissions7218 returns group variables7219 authorized user with invalid permissions7220 does not return group variables7221 unauthorized user7222 does not return group variables7223 GET /groups/:id/variables/:key7224 authorized user with proper permissions7225 returns group variable details7226 responds with 404 Not Found if requesting non-existing variable7227 authorized user with invalid permissions7228 does not return group variable details7229 unauthorized user7230 does not return group variable details7231 POST /groups/:id/variables7232 authorized user with proper permissions7233 creates variable7234 creates variable with optional attributes7235 does not allow to duplicate variable key7236 authorized user with invalid permissions7237 does not create variable7238 unauthorized user7239 does not create variable7240 PUT /groups/:id/variables/:key7241 authorized user with proper permissions7242 updates variable data7243 responds with 404 Not Found if requesting non-existing variable7244 responds with 400 if the update fails7245 authorized user with invalid permissions7246 does not update variable7247 unauthorized user7248 does not update variable7249 DELETE /groups/:id/variables/:key7250 authorized user with proper permissions7251 deletes variable7252 responds with 404 Not Found if requesting non-existing variable7253 behaves like 412 response7254 for a modified ressource7255 returns 412 with a JSON error7256 for an unmodified ressource7257 returns 204 with an empty body7258 authorized user with invalid permissions7259 does not delete variable7260 unauthorized user7261 does not delete variable7262Projects::HooksController7263 #index7264 renders index with 200 status code7265 #edit7266 does not error if the hook cannot be found7267 assigns hook_logs7268 handles when logs are present7269 can paginate logs7270 #create7271 sets all parameters7272 DELETE #destroy7273 behaves like Web hook destroyer7274 displays a message about synchronous delete7275 displays a message about async delete7276 displays an error if deletion failed7277 #test7278 when the endpoint receives requests above the limit7279 prevents making test requests7280API::MergeRequestApprovals7281 GET :id/merge_requests/:merge_request_iid/approvals7282 retrieves the approval status7283 when merge request author has only guest access7284 behaves like rejects user from accessing merge request info7285 returns a 404 error7286 POST :id/merge_requests/:merge_request_iid/approve7287 as a valid approver7288 when the sha param is not set7289 approves the merge request7290 when the sha param is correct7291 approves the merge request7292 when the sha param is incorrect7293 does not approve the merge request7294 POST :id/merge_requests/:merge_request_iid/unapprove7295 as a user who has approved the merge request7296 unapproves the merge request7297Projects::TracingsController7298 GET show7299 with maintainer role7300 behaves like user with read access7301 with a public project and developer role7302 renders OK7303 with a public project and maintainer role7304 renders OK7305 behaves like user with read access7306 with a internal project and developer role7307 renders OK7308 with a internal project and maintainer role7309 renders OK7310 behaves like user with read access7311 with a private project and developer role7312 renders OK7313 with a private project and maintainer role7314 renders OK7315 without maintainer role7316 behaves like user without read access7317 with a public project and guest role7318 returns 4047319 with a public project and reporter role7320 returns 4047321 behaves like user without read access7322 with a internal project and guest role7323 returns 4047324 with a internal project and reporter role7325 returns 4047326 behaves like user without read access7327 with a private project and guest role7328 returns 4047329 with a private project and reporter role7330 returns 4047331Destroying a package file7332 post graphql mutation7333 with valid id7334 user_role: :maintainer, shared_examples_name: "destroying the package file"7335 behaves like destroying the package file7336 destroy the package file7337 behaves like returning response status7338 returns success7339 user_role: :developer, shared_examples_name: "denying the mutation request"7340 behaves like denying the mutation request7341 does not destroy the package file7342 behaves like returning response status7343 returns success7344 user_role: :reporter, shared_examples_name: "denying the mutation request"7345 behaves like denying the mutation request7346 does not destroy the package file7347 behaves like returning response status7348 returns success7349 user_role: :guest, shared_examples_name: "denying the mutation request"7350 behaves like denying the mutation request7351 does not destroy the package file7352 behaves like returning response status7353 returns success7354 user_role: :anonymous, shared_examples_name: "denying the mutation request"7355 behaves like denying the mutation request7356 does not destroy the package file7357 behaves like returning response status7358 returns success7359 with invalid id7360 behaves like denying the mutation request7361 does not destroy the package file7362 behaves like returning response status7363 returns success7364 when an error occures7365 returns the errors in the response7366ControllerWithCrossProjectAccessCheck7367 When reading cross project is not allowed7368 #requires_cross_project_access7369 renders a 403 with trying to access a cross project page7370 is skipped when the `if` condition returns false7371 is skipped when the `unless` condition returns true7372 correctly renders an action that does not require cross project access7373 #skip_cross_project_access_check7374 renders a success when the check is skipped7375 is executed when the `if` condition returns false7376 is executed when the `unless` condition returns true7377 does not skip the check on an action that is not skipped7378 does not skip the check on an action that was not defined to skip7379issue discussions7380 GET /:namespace/:project/-/issues/:iid/discussions7381 when issue_discussions_http_cache is disabled7382 behaves like cache miss7383 returns 200 and serializes JSON7384 when issue_discussions_http_cache is enabled7385 behaves like cache hit7386 returns 304 without serializing JSON7387 when user role changes7388 behaves like cache miss7389 returns 200 and serializes JSON7390 when emoji is awarded to a note7391 behaves like cache miss7392 returns 200 and serializes JSON7393 when note author name changes7394 behaves like cache miss7395 returns 200 and serializes JSON7396 when note author status changes7397 behaves like cache miss7398 returns 200 and serializes JSON7399 when note author role changes7400 behaves like cache miss7401 returns 200 and serializes JSON7402 when note is added7403 behaves like cache miss7404 returns 200 and serializes JSON7405 when note is modified7406 behaves like cache miss7407 returns 200 and serializes JSON7408 when note is deleted7409 behaves like cache miss7410 returns 200 and serializes JSON7411Groups::ImportsController7412 GET #show7413 when the user has permission to view the group7414 when the import is in progress7415 renders the show template7416 sets the flash notice7417 when the import has failed7418 redirects to the new group path7419 sets a flash error7420 when the import has finished7421 redirects to the group page7422 when there is no import state7423 redirects to the group page7424 when the user does not have permission to view the group7425 returns a 4047426Admin::ApplicationsController7427 GET #index7428 renders the application form7429 GET #new7430 renders the application form7431 GET #edit7432 renders the application form7433 POST #create7434 creates the application7435 renders the application form on errors7436 when the params are for a confidential application7437 creates a confidential application7438 when scopes are not present7439 renders the application form on errors7440 PATCH #update7441 updates the application7442 renders the application form on errors7443 when updating the application to be confidential7444 successfully sets the application to confidential7445ProfilesController7446 POST update7447 does not update password7448 PUT update7449 allows an email update from a user without an external email address7450 allows an email update without confirmation if existing verified email7451 ignores an email update from a user with an external email address7452 ignores an email and name update but allows a location update from a user with external email and name, but not external location7453 allows setting a user status7454 allows updating user specified job title7455 allows updating user specified pronouns7456 allows updating user specified pronunciation7457 GET audit_log7458 tracks search event7459 PUT update_username7460 allows username change7461 updates a username using JSON request7462 renders an error message when the username was not updated7463 raises a correct error when the username is missing7464 with legacy storage7465 moves dependent projects to new namespace7466 with hashed storage7467 keeps repository location unchanged on disk7468Querying a Board list7469 does not have an N+1 performance issue7470 when the user has access to the list7471 is expected to include {"issuesCount" => 2, "title" => "foo"}7472 behaves like a working graphql query7473 returns a successful response7474 with matching issue filters7475 filters issues metadata7476 with unmatching issue filters7477 filters issues metadata7478 when the user does not have access to the list7479 is expected to be nil7480 when ID argument is missing7481 raises an exception7482 when list ID is not found7483 is expected to be nil7484Import::BulkImportsController7485 when user is signed in7486 when bulk_import feature flag is enabled7487 POST configure7488 sets the session variables7489 strips access token with spaces7490 when no params are passed in7491 clears out existing session7492 GET status7493 serialized group data7494 returns serialized group data7495 forwards pagination headers7496 when filtering7497 returns filtered result7498 when host url is local or not http7499 denies network request7500 denies network request7501 denies network request7502 when local requests are allowed7503 allows network request7504 allows network request7505 when connection error occurs7506 returns 4227507 clears session7508 GET realtime_changes7509 returns bulk imports created by current user7510 sets a Poll-Interval header7511 POST create7512 executes BulkImpors::CreatetService7513 returns error when validation fails7514 when bulk_import feature flag is disabled7515 POST configure7516 returns 4047517 GET status7518 returns 4047519 when user is signed out7520 POST configure7521 redirects to sign in page7522 GET status7523 redirects to sign in page7524Marking todos done7525 marks a single todo as done7526 when todo is already marked done7527 has the expected response7528 when todo does not belong to requesting user7529 results in the correct todo states7530 behaves like a mutation that returns a top-level access error7531 is expected to eq ["The resource that you are attempting to access does not exist or you don't have permission to perform this action"]7532 when using an invalid gid7533 contains the expected error7534API::Markdown7535 POST /markdown7536 when arguments are invalid7537 when text is missing7538 responses with 400 Bad Request7539 when project is not found7540 behaves like 404 Project Not Found7541 responses with 404 Not Found7542 when arguments are valid7543 when not using gfm7544 without project7545 behaves like rendered markdown text without GFM7546 renders markdown text7547 with project7548 when not authorized7549 behaves like 404 Project Not Found7550 responses with 404 Not Found7551 when authorized7552 behaves like rendered markdown text without GFM7553 renders markdown text7554 when using gfm7555 without project7556 renders markdown text7557 with project7558 renders markdown text7559 with a public project and confidential issue7560 when not logged in7561 behaves like user without proper access7562 does not render the title or link7563 when logged in as user without access7564 behaves like user without proper access7565 does not render the title or link7566 when logged in as author7567 renders the title or link7568Query.group.mergeRequests7569 not passing any arguments7570 can find all merge requests in the group, excluding sub-groups7571 restricting by author7572 can find all merge requests with user as author7573 restricting by assignee7574 can find all merge requests assigned to user7575 passing include_subgroups: true7576 can find all merge requests in the group, including sub-groups7577RendersCommits7578 sets instance variables for counts7579 rendering commits7580 avoids N + 17581 .prepare_commits_for_rendering7582 avoids N+175841st Try error in ./spec/controllers/concerns/renders_commits_spec.rb:62:7585Expected a maximum of 5 queries, got 12:7586SELECT "users".* FROM ((SELECT "users".* FROM "users" WHERE (LOWER("users"."email") IN (LOWER('job@gitlab.com'), LOWER('tiagonbotelho@hotmail.com'), LOWER('stanhu@gmail.com'), LOWER('gitlab@winniehell.de'), LOWER('douwe@gitlab.com'), LOWER('jneen@jneen.net'), LOWER('dbalexandre@gmail.com'), LOWER('marin@gitlab.com'), LOWER('maxlazio@gmail.com'), LOWER('minsik.yoon@samsung.com'), LOWER('stanhu@packetzoom.com'), LOWER('sytse@gitlab.com'), LOWER('marmis85@gmail.com'), LOWER('dmitriy.zaporozhets@gmail.com'))) AND "users"."confirmed_at" IS NOT NULL)7587UNION7588(SELECT "users".* FROM "users" INNER JOIN "emails" ON "emails"."user_id" = "users"."id" WHERE "emails"."email" IN ('job@gitlab.com', 'tiagonbotelho@hotmail.com', 'stanhu@gmail.com', 'gitlab@winniehell.de', 'douwe@gitlab.com', 'jneen@jneen.net', 'dbalexandre@gmail.com', 'marin@gitlab.com', 'maxlazio@gmail.com', 'minsik.yoon@samsung.com', 'stanhu@packetzoom.com', 'sytse@gitlab.com', 'marmis85@gmail.com', 'dmitriy.zaporozhets@gmail.com') AND "users"."confirmed_at" IS NOT NULL AND "emails"."confirmed_at" IS NOT NULL)) users /*application:test,correlation_id:95841d2106e110b53bf1cc6f644828fb,db_config_name:main*/7589SELECT "merge_requests".* FROM "merge_requests" WHERE "merge_requests"."target_project_id" = 657 AND "merge_requests"."iid" = 4 /*application:test,correlation_id:95841d2106e110b53bf1cc6f644828fb,db_config_name:main*/7590SELECT "merge_requests".* FROM "merge_requests" WHERE "merge_requests"."target_project_id" = 657 AND "merge_requests"."iid" = 3 /*application:test,correlation_id:95841d2106e110b53bf1cc6f644828fb,db_config_name:main*/7591SELECT "issues".* FROM "issues" WHERE "issues"."project_id" = 657 AND "issues"."iid" = 275 /*application:test,correlation_id:95841d2106e110b53bf1cc6f644828fb,db_config_name:main*/7592SELECT "merge_requests".* FROM "merge_requests" WHERE "merge_requests"."target_project_id" = 657 AND "merge_requests"."iid" = 2 /*application:test,correlation_id:95841d2106e110b53bf1cc6f644828fb,db_config_name:main*/7593SELECT "users".* FROM ((SELECT "users".* FROM "users" WHERE (LOWER("users"."email") IN (LOWER('dmitriy.zaporozhets@gmail.com'))))7594UNION7595(SELECT "users".* FROM "users" INNER JOIN "emails" ON "emails"."user_id" = "users"."id" WHERE "emails"."email" = 'dmitriy.zaporozhets@gmail.com')) users LIMIT 1 /*application:test,correlation_id:95841d2106e110b53bf1cc6f644828fb,db_config_name:main*/7596SELECT "users".* FROM ((SELECT "users".* FROM "users" WHERE (LOWER("users"."email") IN (LOWER('dmitriy.zaporozhets@gmail.com'))))7597UNION7598(SELECT "users".* FROM "users" INNER JOIN "emails" ON "emails"."user_id" = "users"."id" WHERE "emails"."email" = 'dmitriy.zaporozhets@gmail.com')) users LIMIT 1 /*application:test,correlation_id:95841d2106e110b53bf1cc6f644828fb,db_config_name:main*/7599SELECT "users".* FROM ((SELECT "users".* FROM "users" WHERE (LOWER("users"."email") IN (LOWER('dmitriy.zaporozhets@gmail.com'))))7600UNION7601(SELECT "users".* FROM "users" INNER JOIN "emails" ON "emails"."user_id" = "users"."id" WHERE "emails"."email" = 'dmitriy.zaporozhets@gmail.com')) users LIMIT 1 /*application:test,correlation_id:95841d2106e110b53bf1cc6f644828fb,db_config_name:main*/7602SELECT "users".* FROM ((SELECT "users".* FROM "users" WHERE (LOWER("users"."email") IN (LOWER('dmitriy.zaporozhets@gmail.com'))))7603UNION7604(SELECT "users".* FROM "users" INNER JOIN "emails" ON "emails"."user_id" = "users"."id" WHERE "emails"."email" = 'dmitriy.zaporozhets@gmail.com')) users LIMIT 1 /*application:test,correlation_id:95841d2106e110b53bf1cc6f644828fb,db_config_name:main*/7605SELECT "users".* FROM ((SELECT "users".* FROM "users" WHERE (LOWER("users"."email") IN (LOWER('dmitriy.zaporozhets@gmail.com'))))7606UNION7607(SELECT "users".* FROM "users" INNER JOIN "emails" ON "emails"."user_id" = "users"."id" WHERE "emails"."email" = 'dmitriy.zaporozhets@gmail.com')) users LIMIT 1 /*application:test,correlation_id:95841d2106e110b53bf1cc6f644828fb,db_config_name:main*/7608SELECT "users".* FROM ((SELECT "users".* FROM "users" WHERE (LOWER("users"."email") IN (LOWER('dmitriy.zaporozhets@gmail.com'))))7609UNION7610(SELECT "users".* FROM "users" INNER JOIN "emails" ON "emails"."user_id" = "users"."id" WHERE "emails"."email" = 'dmitriy.zaporozhets@gmail.com')) users LIMIT 1 /*application:test,correlation_id:95841d2106e110b53bf1cc6f644828fb,db_config_name:main*/7611SELECT DISTINCT ON (sha) * FROM "ci_pipelines" WHERE "ci_pipelines"."project_id" = 657 AND ("ci_pipelines"."source" IN (1, 2, 3, 4, 5, 6, 7, 8, 10, 11) OR "ci_pipelines"."source" IS NULL) AND "ci_pipelines"."sha" IN ('b83d6e391c22777fca1ed3012fce84f633d7fed0', '498214de67004b1da3d820901307bed2a68a8ef6', '1b12f15a11fc6e62177bef08f47bc7b5ce50b141', '38008cb17ce1466d8fec2dfa6f6ab8dcfe5cf49e', '6907208d755b60ebeacb2e9dfea74c92c3449a1f', 'c347ca2e140aa667b968e51ed0ffe055501fe4f4', 'd59c60028b053793cecfb4022de34602e1a9218e', '281d3a76f31c812dbf48abce82ccf6860adedd81', 'a5391128b0ef5d21df5dd23d98557f4ef12fae20', '54fcc214b94e78d7a41a9a8fe6d87a5e59500e51', 'be93687618e4b132087f430a4d8fc3a609c9b77c', '048721d90c449b244b7b4c53a9186b04330174ec', '5f923865dde3436854e9ceb9cdb7815618d4e849', 'd2d430676773caa88cdaf7c55944073b2fd5561a', '2ea1f3dec713d940208fb5ce4a38765ecb5d3f73', '59e29889be61e6e0e5e223bfa9ac2721d31605b8', '66eceea0db202bb39c4e445e8ca28689645366c5', '08f22f255f082689c0d7d39d19205085311542bc', '19e2e9b4ef76b422ce1154af39a91323ccc57434', 'c642fe9b8b9f28f9225d7ea953fe14e74748d53b', '9a944d90955aaf45f6d0c88f30e27f8d2c41cec0', 'c7fbe50c7c7419d9701eebe64b1fdacc3df5b9dd', 'e56497bb5f03a90a51293fc6d516788730953899', '4cd80ccab63c82b4bad16faa5193fbd2aa06df40', '5937ac0a7beb003549fc5fd26fc247adbce4a52e', '570e7b2abdd848b95f2f578043fc23bd6f6fd24d', '6f6d7e7ed97bb5f0054f2b1df789b39ca89b6ff9', 'd14d6c0abdd253381df51a723d58691b2ee1ab08', 'c1acaa58bbcbc3eafe538cb8274ba387047b69f8') ORDER BY "ci_pipelines"."sha" ASC, "ci_pipelines"."id" DESC /*application:test,correlation_id:95841d2106e110b53bf1cc6f644828fb,db_config_name:main*/7613RSpec::Retry: 2nd try ./spec/controllers/concerns/renders_commits_spec.rb:627614JiraConnect::EventsController7615 #installed7616 saves the jira installation data7617 saves the correct values7618 behaves like verifies asymmetric JWT token7619 when token is valid7620 renders successful7621 when token is invalid7622 renders unauthorized7623 when jira_connect_asymmetric_jwt is disabled7624 saves the jira installation data without JWT validation7625 when it is a version update and shared_secret is not sent7626 returns 4227627 and an installation exists7628 validates the JWT token in authorization header and returns 200 without creating a new installation7629 when jira_connect_asymmetric_jwt is disabled7630 decodes the JWT token in authorization header and returns 200 without creating a new installation7631 #uninstalled7632 behaves like verifies asymmetric JWT token7633 when token is valid7634 renders successful7635 when token is invalid7636 renders unauthorized7637 when JWT is invalid7638 does not delete the installation7639 when jira_connect_asymmetric_jwt is disabled7640 returns 4037641 does not delete the installation7642 when JWT is valid7643 calls the DestroyService and returns ok in case of success7644 calls the DestroyService and returns unprocessable_entity in case of failure7645 when jira_connect_asymmetric_jwt is disabled7646 calls the DestroyService and returns ok in case of success7647 calls the DestroyService and returns unprocessable_entity in case of failure7648Projects::CycleAnalytics::EventsController7649 includes GracefulTimeoutHandling7650 value stream analytics not set up flag7651 with no data7652 is empty7653 with data7654 is not empty7655 contains event detais7656 with data older than start date7657 is empty7658API::PersonalAccessTokens7659 GET /personal_access_tokens7660 logged in as an Administrator7661 returns all PATs by default7662 filtered with user_id parameter7663 returns only PATs belonging to that user7664 logged in as a non-Administrator7665 returns all PATs belonging to the signed-in user7666 filtered with user_id parameter7667 returns PATs belonging to the specific user7668 is unauthorized if filtered by a user other than current_user7669 not authenticated7670 is forbidden7671 DELETE /personal_access_tokens/:id7672 when current_user is an administrator7673 revokes a different users token7674 revokes their own token7675 when current_user is not an administrator7676 fails revokes a different users token7677 revokes their own token7678 cannot revoke impersonation token7679IssuableCollections7680 #page_count_for_relation7681 row count is known7682 returns the number of pages7683 row_count is unknown7684 page_param: nil, expected: 27685 returns current page + 1 if the row count is unknown7686 page_param: 1, expected: 27687 returns current page + 1 if the row count is unknown7688 page_param: "1", expected: 27689 returns current page + 1 if the row count is unknown7690 page_param: 2, expected: 37691 returns current page + 1 if the row count is unknown7692 #finder_options7693 scalar params7694 only allows whitelisted params7695 array params7696 only allows whitelisted params7697 search using an issue iid7698 mutates the search into a filter by iid7699API::Ci::Runner7700 /api/v4/runners7701 DELETE /api/v4/runners7702 when no token is provided7703 returns 400 error7704 when invalid token is provided7705 returns 403 error7706 when valid token is provided7707 deletes Runner7708 behaves like 412 response7709 for a modified ressource7710 returns 412 with a JSON error7711 for an unmodified ressource7712 returns 204 with an empty body7713 behaves like storing arguments in the application context for the API7714 places the expected params in the application context7715Admin::GroupsController7716 DELETE #destroy7717 schedules a group destroy7718 redirects to the admin group path7719 POST #create7720 creates group7721 creates namespace_settings for group7722 creates admin_note for group7723 PUT #members_update7724 adds user to members7725 can add unlimited members7726 adds no user to members7727 updates the project_creation_level successfully7728 updates the subgroup_creation_level successfully7729API::RemoteMirrors7730 GET /projects/:id/remote_mirrors7731 requires `admin_remote_mirror` permission7732 returns a list of remote mirrors7733 POST /projects/:id/remote_mirrors7734 requires `admin_remote_mirror` permission7735 returns error if url is invalid7736 creates a remote mirror7737 disabled by default7738 behaves like creates a remote mirror7739 creates a remote mirror and returns reponse7740 enabled7741 behaves like creates a remote mirror7742 creates a remote mirror and returns reponse7743 PUT /projects/:id/remote_mirrors/:mirror_id7744 requires `admin_remote_mirror` permission7745 updates a remote mirror7746API::Ci::ResourceGroups7747 GET /projects/:id/resource_groups/:key7748 returns a resource group7749 when user is reporter7750 returns forbidden7751 when there is no corresponding resource group7752 returns not found7753 PUT /projects/:id/resource_groups/:key7754 changes the process mode of a resource group7755 with invalid parameter7756 returns bad request7757 when user is reporter7758 returns forbidden7759 when there is no corresponding resource group7760 returns not found7761Projects::LearnGitlabController7762 GET #index7763 unauthenticated user7764 is expected to respond with numeric status code redirect7765 authenticated user7766 is expected to render template index7767 learn_gitlab experiment not enabled7768 is expected to respond with numeric status code not_found7769Projects::MattermostsController7770 GET #new7771 accepts the request7772 POST #create7773 no request can be made to mattermost7774 shows the error7775 the request is succesull7776 redirects to the new page7777Setting assignees of a merge request7778 returns an error if the user is not allowed to update the merge request7779 when the current user does not have permission to add assignees7780 does not change the assignees7781 with assignees already assigned7782 replaces the assignee7783 when passing an empty list of assignees7784 removes assignee7785 when passing append as true7786 does not replace the assignee in CE7787 when passing remove as true7788 removes the users in the list, while adding none7789Groups::DependencyProxiesController7790 GET #show7791 returns 404 when feature is disabled7792 feature enabled7793 returns 200 and renders the view7794 PUT #update7795 returns 404 when feature is disabled7796 feature enabled7797 redirects back to show page7798Projects::RefsController7799 GET #logs_tree7800 never throws MissingTemplate7801 renders 404 for HTML requests7802 when json is requested7803 renders JSON7804receive a permanent failure7805 POST /members/mailgun/permanent_failures7806 marks the member invite email success as false7807 when the change to a member is not made7808 with incorrect signing key7809 with incorrect signing key7810 does not change member status and responds as not_found7811 with nil signing key7812 does not change member status and responds as not_found7813 when the feature is not enabled7814 does not change member status and responds as expected7815 when it is not an invite email7816 does not change member status and responds as expected7817API::Pages7818 DELETE /projects/:id/pages7819 when Pages is disabled7820 behaves like 404 response7821 returns 4047822 when Pages is enabled7823 when Pages are deployed7824 returns 2047825 removes the pages7826 when pages are not deployed7827 returns 2047828 when there is no project7829 returns 4047830Marking all todos done7831 marks all pending todos as done7832 behaves as expected if there are no todos for the requesting user7833 when user is not logged in7834 behaves like a mutation that returns a top-level access error7835 is expected to eq ["The resource that you are attempting to access does not exist or you don't have permission to perform this action"]7836API::APIGuard::ResponseCoercerMiddleware7837 is loaded7838 #call7839 returns a String body7840 returns a String body7841 returns a String body7842 returns a String body7843 allows nil body7844 allows nil body7845 allows nil body7846lock a terraform state7847 returns a successful response7848 locks the state7849Creation of a new commit7850 the user is not allowed to create a commit7851 behaves like a mutation that returns a top-level access error7852 is expected to eq ["The resource that you are attempting to access does not exist or you don't have permission to perform this action"]7853 when user has permissions to create a commit7854 behaves like a commit is successful7855 creates a new commit7856 when branch is not correct7857 behaves like a mutation that returns errors in the response7858 is expected to contain exactly "You can only create or edit files when you are on a branch"7859 when branch is new, and a start_branch is defined7860 behaves like a commit is successful7861 creates a new commit7862CiJobTokenScopeAddProject7863 when unauthorized7864 when not a maintainer7865 has graphql errors7866 when authorized7867 adds the target project to the job token scope7868 when invalid target project is provided7869 has mutation errors7870API::ImportGithub7871 POST /import/github7872 rejects requests when Github Importer is disabled7873 returns 201 response when the project is imported successfully7874 returns 201 response when the project is imported successfully from GHE7875 returns 422 response when user can not create projects in the chosen namespace7876Oauth::Jira::AuthorizationsController7877 GET new7878 redirects to OAuth authorization with correct params7879 replaces the GitHub "repo" scope with "api"7880 GET callback7881 redirects to redirect_uri on session with code param7882 redirects to redirect_uri on session with code param preserving existing query7883 POST access_token7884 returns oauth params in a format Jira expects7885Restoring many Todos7886 restores many todos7887 when using an invalid gid7888 contains the expected error7889query Jira service7890 behaves like unauthorized users cannot read services7891 when anonymous user7892 is expected to equal nil7893 when user developer7894 is expected to equal nil7895 when user can access project services7896 retuns list of jira imports7897 behaves like a working graphql query7898 returns a successful response7899SortingPreference7900 #set_sort_order_from_user_preference7901 when sort param given7902 when sorting_field is defined7903 sets user_preference with the right value7904 when no sorting_field is defined on the controller7905 does not touch user_preference7906 when a user sorting preference exists7907 returns the set preference7908 #set_set_order_from_cookie7909 when sort param given7910 sets the cookie with the right values and flags7911 when cookie exists7912 sets the cookie with the right values and flags7913Projects::ClusterAgentsController7914 GET #show7915 when user is unauthorized7916 shows 4047917 when user is authorized7918 renders content7919JobUnschedule7920 returns an error if the user is not allowed to unschedule the job7921 unschedules a job7922getting Application Settings7923 without admin permissions7924 is expected to equal nil7925 behaves like a working graphql query7926 returns a successful response7927 with admin permissions7928 fetches the settings data7929 behaves like a working graphql query7930 returns a successful response7931getting project information7932 logged in7933 kas is enabled7934 returns version, revision, kas_enabled, kas_version, kas_external_url7935 kas is disabled7936 returns version and revision7937 anonymous user7938 returns nothing7939Projects::Analytics::CycleAnalytics::ValueStreamsController7940 GET index7941 when user is member of the project7942 succeeds7943 exposes the default value stream7944 when user is not member of the project7945 renders 4047946getting blobs in a project repository7947 returns the blob7948Updating an existing Prometheus Integration7949 updates the integration7950Admin::HealthCheckController7951 GET show7952 loads the health information7953Setting the status of an alert7954 updates the status of the alert7955API::ContainerRegistryEvent7956 POST /container_registry_event/events7957 returns 200 status and events are passed to event handler7958 returns 401 error status when token is invalid7959EmailRejectionMailer7960 #rejection7961 behaves like appearance header and footer enabled7962 contains header and footer7963 behaves like appearance header and footer not enabled7964 does not contain header and footer7965Knapsack report was generated. Preview:7966{7967 "spec/requests/api/npm_project_packages_spec.rb": 406.5860174270001,7968 "spec/controllers/projects/issues_controller_spec.rb": 110.96080627399988,7969 "spec/requests/api/discussions_spec.rb": 112.67397265499994,7970 "spec/controllers/dashboard_controller_spec.rb": 66.45960064499968,7971 "spec/controllers/groups_controller_spec.rb": 50.25707560000001,7972 "spec/requests/api/wikis_spec.rb": 60.20142239799998,7973 "spec/requests/api/snippets_spec.rb": 27.40802540499999,7974 "spec/requests/api/project_export_spec.rb": 48.5643325369997,7975 "spec/requests/api/internal/base_spec.rb": 26.475045750999925,7976 "spec/controllers/application_controller_spec.rb": 26.47680228199988,7977 "spec/requests/api/graphql/project/issues_spec.rb": 30.27738715400028,7978 "spec/requests/api/ci/pipeline_schedules_spec.rb": 17.480908234000253,7979 "spec/controllers/import/gitea_controller_spec.rb": 25.450117897999917,7980 "spec/requests/api/project_import_spec.rb": 16.954318893000163,7981 "spec/requests/api/protected_branches_spec.rb": 19.256669858999885,7982 "spec/requests/api/deploy_tokens_spec.rb": 17.8215811150003,7983 "spec/controllers/groups/group_members_controller_spec.rb": 18.994309318999967,7984 "spec/requests/api/pages/public_access_spec.rb": 23.93947514399997,7985 "spec/controllers/projects/merge_requests/conflicts_controller_spec.rb": 16.20368434999955,7986 "spec/controllers/projects/compare_controller_spec.rb": 20.433053287999883,7987 "spec/controllers/dashboard/projects_controller_spec.rb": 8.662117332000435,7988 "spec/requests/api/graphql/metrics/dashboard_query_spec.rb": 10.078392363000148,7989 "spec/controllers/projects/raw_controller_spec.rb": 9.872693167999842,7990 "spec/controllers/concerns/group_tree_spec.rb": 8.877843065999969,7991 "spec/controllers/projects/settings/operations_controller_spec.rb": 9.074977191000016,7992 "spec/requests/projects/merge_requests/diffs_spec.rb": 11.87549389500009,7993 "spec/controllers/import/available_namespaces_controller_spec.rb": 8.48190916600015,7994 "spec/requests/api/graphql/mutations/award_emojis/add_spec.rb": 7.124461609999798,7995 "spec/controllers/projects/design_management/designs/raw_images_controller_spec.rb": 8.131818812999882,7996 "spec/mailers/emails/in_product_marketing_spec.rb": 7.226283652999882,7997 "spec/controllers/projects/ci/lints_controller_spec.rb": 7.847389683999609,7998 "spec/requests/api/graphql/project/pipeline_spec.rb": 7.908441459999722,7999 "spec/controllers/repositories/git_http_controller_spec.rb": 4.540984109999954,8000 "spec/controllers/groups/boards_controller_spec.rb": 7.851499285000045,8001 "spec/controllers/projects/deployments_controller_spec.rb": 9.045242562000112,8002 "spec/controllers/projects/graphs_controller_spec.rb": 6.661951995999971,8003 "spec/requests/api/group_variables_spec.rb": 4.901438532000157,8004 "spec/controllers/projects/hooks_controller_spec.rb": 4.55832220900038,8005 "spec/requests/api/merge_request_approvals_spec.rb": 5.083715997999661,8006 "spec/controllers/projects/tracings_controller_spec.rb": 5.99900722700022,8007 "spec/requests/api/graphql/mutations/packages/destroy_file_spec.rb": 3.4882675710000512,8008 "spec/controllers/concerns/controller_with_cross_project_access_check_spec.rb": 5.22090039700015,8009 "spec/requests/projects/issues/discussions_spec.rb": 6.5334921860003305,8010 "spec/controllers/groups/imports_controller_spec.rb": 2.424083014000189,8011 "spec/controllers/admin/applications_controller_spec.rb": 2.282724934000271,8012 "spec/controllers/profiles_controller_spec.rb": 4.342111075000048,8013 "spec/requests/api/graphql/boards/board_list_query_spec.rb": 2.413120133999655,8014 "spec/controllers/import/bulk_imports_controller_spec.rb": 2.229775027999949,8015 "spec/requests/api/graphql/mutations/todos/mark_done_spec.rb": 2.1940679709996402,8016 "spec/requests/api/markdown_spec.rb": 2.637260266999874,8017 "spec/requests/api/graphql/group/merge_requests_spec.rb": 3.821233515000131,8018 "spec/controllers/concerns/renders_commits_spec.rb": 5.467545287999656,8019 "spec/controllers/jira_connect/events_controller_spec.rb": 2.078684539999813,8020 "spec/controllers/projects/cycle_analytics/events_controller_spec.rb": 3.799324517000059,8021 "spec/requests/api/personal_access_tokens_spec.rb": 2.0737547200001245,8022 "spec/controllers/concerns/issuable_collections_spec.rb": 1.3464586260001852,8023 "spec/requests/api/ci/runner/runners_delete_spec.rb": 0.6825594470001306,8024 "spec/controllers/admin/groups_controller_spec.rb": 3.083081261999723,8025 "spec/requests/api/remote_mirrors_spec.rb": 3.129534708999927,8026 "spec/requests/api/ci/resource_groups_spec.rb": 1.3620941350000066,8027 "spec/controllers/projects/learn_gitlab_controller_spec.rb": 0.6549541189997399,8028 "spec/controllers/projects/mattermosts_controller_spec.rb": 1.4928167149996625,8029 "spec/requests/api/graphql/mutations/merge_requests/set_assignees_spec.rb": 3.4850842420000845,8030 "spec/controllers/groups/dependency_proxies_controller_spec.rb": 1.595128797000143,8031 "spec/controllers/projects/refs_controller_spec.rb": 1.6723043820002204,8032 "spec/requests/members/mailgun/permanent_failure_spec.rb": 0.9004273000000467,8033 "spec/requests/api/pages/pages_spec.rb": 1.7699269629997616,8034 "spec/requests/api/graphql/mutations/todos/mark_all_done_spec.rb": 1.8883144540000103,8035 "spec/requests/api/api_guard/response_coercer_middleware_spec.rb": 0.3526139430000512,8036 "spec/requests/api/graphql/terraform/state/lock_spec.rb": 0.9773274539998056,8037 "spec/requests/api/graphql/mutations/commits/create_spec.rb": 1.9296541310000066,8038 "spec/requests/api/graphql/mutations/ci/job_token_scope/add_project_spec.rb": 1.7067083090000779,8039 "spec/requests/api/import_github_spec.rb": 1.5750613380000686,8040 "spec/controllers/oauth/jira/authorizations_controller_spec.rb": 0.28751882799997475,8041 "spec/requests/api/graphql/mutations/todos/restore_many_spec.rb": 2.01559827400024,8042 "spec/requests/api/graphql/project/jira_service_spec.rb": 1.0043599730001915,8043 "spec/controllers/concerns/sorting_preference_spec.rb": 0.919083548999879,8044 "spec/requests/projects/cluster_agents_controller_spec.rb": 1.1947973879996425,8045 "spec/requests/api/graphql/mutations/ci/job_unschedule_spec.rb": 1.2802852709996841,8046 "spec/requests/api/graphql/ci/application_setting_spec.rb": 0.9993913029998112,8047 "spec/requests/api/graphql/metadata_query_spec.rb": 0.8746147420001762,8048 "spec/controllers/projects/analytics/cycle_analytics/value_streams_controller_spec.rb": 1.0453520189998926,8049 "spec/requests/api/graphql/project/repository/blobs_spec.rb": 0.6856110769999759,8050 "spec/requests/api/graphql/mutations/alert_management/prometheus_integration/update_spec.rb": 0.7822485699998651,8051 "spec/controllers/admin/health_check_controller_spec.rb": 0.5215898989999914,8052 "spec/requests/api/graphql/mutations/alert_management/alerts/update_alert_status_spec.rb": 0.8185761270001422,8053 "spec/requests/api/container_registry_event_spec.rb": 0.20341209499974866,8054 "spec/mailers/email_rejection_mailer_spec.rb": 0.34785361299964288055}8056Knapsack global time execution for tests: 23m 10s8057Pending: (Failures listed here are expected and do not affect your suite's status)8058 1) Projects::IssuesController Confidential Issues PUT #update behaves like restricted action when admin mode is disabled returns 404 for admin8059 # Temporarily skipped with xit8060 # ./spec/controllers/projects/issues_controller_spec.rb:8938061 2) Projects::IssuesController Confidential Issues GET #show behaves like restricted action when admin mode is disabled returns 404 for admin8062 # Temporarily skipped with xit8063 # ./spec/controllers/projects/issues_controller_spec.rb:8938064 3) Projects::IssuesController Confidential Issues GET #realtime_changes behaves like restricted action when admin mode is disabled returns 404 for admin8065 # Temporarily skipped with xit8066 # ./spec/controllers/projects/issues_controller_spec.rb:8938067 4) Projects::IssuesController Confidential Issues GET #edit behaves like restricted action when admin mode is disabled returns 404 for admin8068 # Temporarily skipped with xit8069 # ./spec/controllers/projects/issues_controller_spec.rb:8938070 5) Projects::IssuesController Confidential Issues PUT #update behaves like restricted action when admin mode is disabled returns 404 for admin8071 # Temporarily skipped with xit8072 # ./spec/controllers/projects/issues_controller_spec.rb:8938073 6) Projects::DesignManagement::Designs::RawImagesController GET #show behaves like a controller that can serve LFS files when lfs is not enabled delivers ASCII file8074 # Calling spec asked to skip testing LFS disabled scenario8075 # ./spec/support/shared_examples/controllers/repository_lfs_file_load_shared_examples.rb:1508076Finished in 23 minutes 13 seconds (files took 1 minute 3.73 seconds to load)80773225 examples, 0 failures, 6 pending8078Tue 26 Oct 2021 09:45:58 PM UTC8080Not uploading cache ruby-gems-v1-5 due to policy8081Not uploading cache gitaly-ruby-gems-v1-5 due to policy8083Uploading artifacts...8084coverage/: found 5 matching files and directories 8085WARNING: crystalball/: no matching files 8086deprecations/: found 11 matching files and directories 8087knapsack/: found 3 matching files and directories 8088rspec_flaky/: found 4 matching files and directories 8089rspec_profiling/: found 1 matching files and directories 8090WARNING: tmp/capybara/: no matching files 8091tmp/memory_test/: found 2 matching files and directories 8092log/*.log: found 18 matching files and directories 8093Uploading artifacts as "archive" to coordinator... ok id=1718320235 responseStatus=201 Created token=m8LC3AxS8094Uploading artifacts...8095junit_rspec.xml: found 1 matching files and directories 8096Uploading artifacts as "junit" to coordinator... ok id=1718320235 responseStatus=201 Created token=m8LC3AxS8098Job succeeded