rspec integration pg12 3/10
Passed Started
by
@jerasmus

Jacques Erasmus
1Running with gitlab-runner 14.10.0~beta.50.g1f2fe53e (1f2fe53e)2 on green-3.shared-gitlab-org.runners-manager.gitlab.com/default EuhiQzPR3 feature flags: FF_USE_FASTZIP:true6Using Docker executor with image registry.gitlab.com/gitlab-org/gitlab-build-images:debian-bullseye-ruby-2.7.patched-golang-1.16-git-2.33-lfs-2.9-chrome-97-node-16.14-yarn-1.22-postgresql-12-graphicsmagick-1.3.36 ...7Starting service postgres:12 ...8Pulling docker image postgres:12 ...9Using docker image sha256:19789c9e83692f61ca3314294926bb26b68068f08aab1bd207915dcbd1a629c7 for postgres:12 with digest postgres@sha256:f2765d6a2a6459578274645b4d801345060322da2ba855af3d84878be28fe923 ...10Starting service redis:6.0-alpine ...11Pulling docker image redis:6.0-alpine ...12Using docker image sha256:131bc9ee328cff6485bae97a15d5867539c2902681d2bb30ab20117132936344 for redis:6.0-alpine with digest redis@sha256:54cd3000b43117c720f7d1ae77692b798ad8b4d54e304dbd8e49e799e77494a1 ...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:debian-bullseye-ruby-2.7.patched-golang-1.16-git-2.33-lfs-2.9-chrome-97-node-16.14-yarn-1.22-postgresql-12-graphicsmagick-1.3.36 ...16Using docker image sha256:f5ccee577b270c6a832d9828384f62b437fcd3314314b5a98a5ab1cd248c3455 for registry.gitlab.com/gitlab-org/gitlab-build-images:debian-bullseye-ruby-2.7.patched-golang-1.16-git-2.33-lfs-2.9-chrome-97-node-16.14-yarn-1.22-postgresql-12-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images@sha256:7291ca4981a34fb65e8293b932eab1b4a4949bffa86bf4427b9f12c73f3483b7 ...18Running on runner-euhiqzpr-project-278964-concurrent-0 via runner-euhiqzpr-shared-gitlab-org-1651134850-7bf8f48b...20$ eval "$CI_PRE_CLONE_SCRIPT"21Fetching changes with git depth set to 20...22Initialized empty Git repository in /builds/gitlab-org/gitlab/.git/23Created fresh repository.24remote: Enumerating objects: 103295, done. 25remote: Counting objects: 100% (103295/103295), done. 26remote: Compressing objects: 100% (73122/73122), done. 27remote: Total 103295 (delta 39893), reused 68736 (delta 26495), pack-reused 0 28Receiving objects: 100% (103295/103295), 104.30 MiB | 28.72 MiB/s, done.29Resolving deltas: 100% (39893/39893), done.31 * [new ref] refs/pipelines/526772223 -> refs/pipelines/52677222332 * [new branch] master -> origin/master33Checking out d5ce7ff4 as master...34Skipping Git submodules setup36Checking cache for ruby-gems-bullseye-9-protected...37Downloading cache.zip from https://storage.googleapis.com/gitlab-com-runners-cache/project/278964/ruby-gems-bullseye-9-protected 38Successfully extracted cache39Checking cache for gitaly-ruby-gems-bullseye-9-protected...40Downloading cache.zip from https://storage.googleapis.com/gitlab-com-runners-cache/project/278964/gitaly-ruby-gems-bullseye-9-protected 41Successfully extracted cache43Downloading artifacts for compile-test-assets (2388875148)...44Downloading artifacts from coordinator... ok id=2388875148 responseStatus=200 OK token=Hwaf-unk45Downloading artifacts for detect-tests (2388875168)...46Downloading artifacts from coordinator... ok id=2388875168 responseStatus=200 OK token=C51XdtG347Downloading artifacts for retrieve-tests-metadata (2388875184)...48Downloading artifacts from coordinator... ok id=2388875184 responseStatus=200 OK token=DVXPaLbN49Downloading artifacts for setup-test-env (2388875163)...50Downloading artifacts from coordinator... ok id=2388875163 responseStatus=200 OK token=qLL8tAwL52Using docker image sha256:f5ccee577b270c6a832d9828384f62b437fcd3314314b5a98a5ab1cd248c3455 for registry.gitlab.com/gitlab-org/gitlab-build-images:debian-bullseye-ruby-2.7.patched-golang-1.16-git-2.33-lfs-2.9-chrome-97-node-16.14-yarn-1.22-postgresql-12-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images@sha256:7291ca4981a34fb65e8293b932eab1b4a4949bffa86bf4427b9f12c73f3483b7 ...53$ echo $FOSS_ONLY54$ [ "$FOSS_ONLY" = "1" ] && rm -rf ee/ qa/spec/ee/ qa/qa/specs/features/ee/ qa/qa/ee/ qa/qa/ee.rb55$ export GOPATH=$CI_PROJECT_DIR/.go56$ mkdir -p $GOPATH57$ source scripts/utils.sh58$ source scripts/prepare_build.sh59Successfully installed bundler-2.3.6601 gem installed61Bundler version 2.3.662production:development63Settings are listed in order of priority. The top value will be used.64clean65Set for the current user (/root/.bundle/config): true66install_flags67Set via BUNDLE_INSTALL_FLAGS: "--jobs=$(nproc) --retry=3 --quiet"68path69Set for the current user (/root/.bundle/config): "/builds/gitlab-org/gitlab/vendor"70without71Set via BUNDLE_WITHOUT: [:production, :development]72$ bundle install --jobs=$(nproc) --retry=3 --quiet && bundle check73Don't run Bundler as root. Bundler can ask for sudo if it is needed, and74installing your bundle as root will break this application for all non-root75users on this machine.76The Gemfile's dependencies are satisfied77==> 'bundle install --jobs=$(nproc) --retry=3 --quiet && bundle check' succeeded in 8 seconds.78$ bundle pristine pg79Installing pg 1.2.3 with native extensions80==> 'bundle pristine pg' succeeded in 15 seconds.81Using decomposed database config (config/database.yml.decomposed-postgresql)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_ee87DEPRECATION WARNING: Database connection should not be called during initializers. Read more at https://docs.gitlab.com/ee/development/rails_initializers.html#database-connections-in-initializers (called from block in <module:HasVariable> at app/models/concerns/ci/has_variable.rb:22)88DEPRECATION WARNING: Database connection should not be called during initializers. Read more at https://docs.gitlab.com/ee/development/rails_initializers.html#database-connections-in-initializers (called from block in <module:NewHasVariable> at app/models/concerns/ci/new_has_variable.rb:9)89DEPRECATION WARNING: Database connection should not be called during initializers. Read more at https://docs.gitlab.com/ee/development/rails_initializers.html#database-connections-in-initializers (called from <class:Kubernetes> at app/models/clusters/platforms/kubernetes.rb:29)90DEPRECATION WARNING: Database connection should not be called during initializers. Read more at https://docs.gitlab.com/ee/development/rails_initializers.html#database-connections-in-initializers (called from <class:Kubernetes> at app/models/clusters/platforms/kubernetes.rb:34)91DEPRECATION WARNING: Database connection should not be called during initializers. Read more at https://docs.gitlab.com/ee/development/rails_initializers.html#database-connections-in-initializers (called from block in <module:HasVariable> at app/models/concerns/ci/has_variable.rb:22)92DEPRECATION WARNING: Database connection should not be called during initializers. Read more at https://docs.gitlab.com/ee/development/rails_initializers.html#database-connections-in-initializers (called from exists? at lib/gitlab/database/reflection.rb:94)93DEPRECATION WARNING: Database connection should not be called during initializers. Read more at https://docs.gitlab.com/ee/development/rails_initializers.html#database-connections-in-initializers (called from exists? at lib/gitlab/database/reflection.rb:94)94DEPRECATION WARNING: Database connection should not be called during initializers. Read more at https://docs.gitlab.com/ee/development/rails_initializers.html#database-connections-in-initializers (called from block in <module:HasVariable> at app/models/concerns/ci/has_variable.rb:22)95DEPRECATION WARNING: Database connection should not be called during initializers. Read more at https://docs.gitlab.com/ee/development/rails_initializers.html#database-connections-in-initializers (called from exists? at lib/gitlab/database/reflection.rb:94)96DEPRECATION WARNING: Database connection should not be called during initializers. Read more at https://docs.gitlab.com/ee/development/rails_initializers.html#database-connections-in-initializers (called from exists? at lib/gitlab/database/reflection.rb:94)97DEPRECATION WARNING: Database connection should not be called during initializers. Read more at https://docs.gitlab.com/ee/development/rails_initializers.html#database-connections-in-initializers (called from exists? at lib/gitlab/database/reflection.rb:94)98DEPRECATION WARNING: Database connection should not be called during initializers. Read more at https://docs.gitlab.com/ee/development/rails_initializers.html#database-connections-in-initializers (called from exists? at lib/gitlab/database/reflection.rb:94)99DEPRECATION WARNING: Database connection should not be called during initializers. Read more at https://docs.gitlab.com/ee/development/rails_initializers.html#database-connections-in-initializers (called from block in <module:HasVariable> at app/models/concerns/ci/has_variable.rb:22)100DEPRECATION WARNING: Database connection should not be called during initializers. Read more at https://docs.gitlab.com/ee/development/rails_initializers.html#database-connections-in-initializers (called from <class:Integration> at app/models/integration.rb:52)101DEPRECATION WARNING: Database connection should not be called during initializers. Read more at https://docs.gitlab.com/ee/development/rails_initializers.html#database-connections-in-initializers (called from <class:Helm> at app/models/clusters/applications/helm.rb:12)102DEPRECATION WARNING: Database connection should not be called during initializers. Read more at https://docs.gitlab.com/ee/development/rails_initializers.html#database-connections-in-initializers (called from <class:Prometheus> at app/models/clusters/applications/prometheus.rb:23)103DEPRECATION WARNING: Database connection should not be called during initializers. Read more at https://docs.gitlab.com/ee/development/rails_initializers.html#database-connections-in-initializers (called from exists? at lib/gitlab/database/reflection.rb:94)104DEPRECATION WARNING: Database connection should not be called during initializers. Read more at https://docs.gitlab.com/ee/development/rails_initializers.html#database-connections-in-initializers (called from exists? at lib/gitlab/database/reflection.rb:94)105DEPRECATION WARNING: Database connection should not be called during initializers. Read more at https://docs.gitlab.com/ee/development/rails_initializers.html#database-connections-in-initializers (called from exists? at lib/gitlab/database/reflection.rb:94)106DEPRECATION WARNING: Database connection should not be called during initializers. Read more at https://docs.gitlab.com/ee/development/rails_initializers.html#database-connections-in-initializers (called from connected? at ee/lib/gitlab/geo.rb:79)107Dropped database 'gitlabhq_test'108Dropped database 'gitlabhq_test_ci'109Dropped database 'gitlabhq_geo_test'110Created database 'gitlabhq_test'111Created database 'gitlabhq_test_ci'112Created database 'gitlabhq_geo_test'113DEPRECATION 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)114Dropped database 'gitlabhq_geo_test'115Created database 'gitlabhq_geo_test'116==> 'bundle exec rake db:drop db:create db:structure:load db:migrate gitlab:db:setup_ee' succeeded in 45 seconds.117$ run_timed_command "gem install knapsack --no-document"118$ gem install knapsack --no-document119Successfully installed knapsack-4.0.01201 gem installed121==> 'gem install knapsack --no-document' succeeded in 0 seconds.122$ run_timed_command "scripts/gitaly-test-spawn"123$ scripts/gitaly-test-spawn124find: ‘/builds/gitlab-org/gitlab/tmp/tests/gitaly/cmd’: No such file or directory125find: ‘/builds/gitlab-org/gitlab/tmp/tests/gitaly/cmd’: No such file or directory126find: ‘/builds/gitlab-org/gitlab/tmp/tests/gitaly/cmd’: No such file or directory127Don't run Bundler as root. Bundler can ask for sudo if it is needed, and128installing your bundle as root will break this application for all non-root129users on this machine.130Using abstract_type 0.0.7131Using concurrent-ruby 1.1.10132Using i18n 1.10.0133Using minitest 5.15.0134Using tzinfo 2.0.4135Using zeitwerk 2.5.4136Using activesupport 6.1.4.7137Using builder 3.2.4138Using erubi 1.10.0139Using mini_portile2 2.8.0140Using racc 1.6.0141Using nokogiri 1.13.3 (x86_64-linux)142Using rails-dom-testing 2.0.3143Using crass 1.0.6144Using loofah 2.16.0145Using rails-html-sanitizer 1.4.2146Using actionview 6.1.4.7147Using rack 2.2.3148Using rack-test 1.1.0149Using actionpack 6.1.4.7150Using ice_nine 0.11.2151Using thread_safe 0.3.6152Using memoizable 0.4.2153Using adamantium 0.2.0154Using public_suffix 4.0.6155Using addressable 2.7.0156Using ast 2.4.2157Using binding_ninja 0.2.3158Using bundler 2.1.4159Using charlock_holmes 0.7.7160Using coderay 1.1.2161Using equalizer 0.0.11162Using concord 0.1.5163Using diff-lcs 1.3164Using dotenv 2.7.6165Using escape_utils 1.2.1166Using factory_bot 5.0.2167Using multipart-post 2.1.1168Using faraday 1.0.1169Using ffi 1.15.3170Using json 2.6.1171Using gemojione 3.3.0172Using mini_mime 1.0.2173Using rugged 1.2.0174Using github-linguist 7.12.1175Using github-markup 1.7.0176Using mime-types-data 3.2020.1104177Using mime-types 3.3.1178Using gitlab-gollum-rugged_adapter 0.4.4.4.gitlab.1179Using rouge 3.27.0180Using sanitize 6.0.0181Using stringex 2.8.5182Using gitlab-gollum-lib 4.2.7.10.gitlab.2183Using google-protobuf 3.19.1 (x86_64-linux)184Using googleapis-common-protos-types 1.3.0185Using grpc 1.42.0 (x86_64-linux)186Using opentracing 0.5.0187Using thrift 0.15.0188Using jaeger-client 1.1.0189Using pg_query 2.1.1190Using redis 4.4.0191Using gitlab-labkit 0.21.2192Using rubyzip 2.3.2193Using thor 1.1.0194Using tomlrb 2.0.1195Using with_env 1.1.0196Using rexml 3.2.5197Using xml-simple 1.1.9198Using gitlab-license_finder 6.14.2.1199Using gitlab-markup 1.7.1200Using grpc-tools 1.42.0201Using sawyer 0.8.2202Using octokit 4.20.0203Using reverse_markdown 1.4.0204Using licensee 9.14.1205Using method_source 0.9.2206Using msgpack 1.3.3207Using optimist 3.0.1208Using parallel 1.19.2209Using parser 3.0.3.2210Using procto 0.0.3211Using unparser 0.4.7212Using proc_to_ast 0.1.0213Using pry 0.12.2214Using rainbow 3.0.0215Using rbtrace 0.4.14216Using rdoc 6.3.2217Using regexp_parser 1.8.1218Using rspec-support 3.8.0219Using rspec-core 3.8.0220Using rspec-expectations 3.8.3221Using rspec-mocks 3.8.0222Using rspec 3.8.0223Using rspec-parameterized 0.4.2224Using rubocop-ast 0.2.0225Using ruby-progressbar 1.10.1226Using unicode-display_width 1.7.0227Using rubocop 0.86.0228Using sentry-raven 3.0.4229Using timecop 0.9.1230Bundle complete! 22 Gemfile dependencies, 100 gems now installed.231Gems in the groups production and development were not installed.232Bundled gems are installed into `/builds/gitlab-org/gitlab/vendor/gitaly-ruby`233Checking gitaly-ruby Gemfile...234Checking gitaly-ruby bundle...235The Gemfile's dependencies are satisfied236Trying to connect to gitaly: ............................................... OK237Trying to connect to gitaly2: ...................................................................... OK238Trying to connect to praefect: ........ OK239==> 'scripts/gitaly-test-spawn' succeeded in 14 seconds.240$ source ./scripts/rspec_helpers.sh241$ rspec_paralellized_job "--tag ~quarantine --tag ~geo --tag ~level:migration"242SKIP_FLAKY_TESTS_AUTOMATICALLY: true243RETRY_FAILED_TESTS_IN_NEW_PROCESS: true244KNAPSACK_GENERATE_REPORT: true245FLAKY_RSPEC_GENERATE_REPORT: true246KNAPSACK_TEST_FILE_PATTERN: spec/{commands,controllers,mailers,requests}{,/**/}*_spec.rb247KNAPSACK_LOG_LEVEL: debug248KNAPSACK_REPORT_PATH: knapsack/rspec_integration_pg12_3_10_report.json249FLAKY_RSPEC_SUITE_REPORT_PATH: rspec/flaky/report-suite.json250FLAKY_RSPEC_REPORT_PATH: rspec/flaky/all_rspec_integration_pg12_3_10_report.json251NEW_FLAKY_RSPEC_REPORT_PATH: rspec/flaky/new_rspec_integration_pg12_3_10_report.json252SKIPPED_FLAKY_TESTS_REPORT_PATH: rspec/flaky/skipped_flaky_tests_rspec_integration_pg12_3_10_report.txt253RETRIED_TESTS_REPORT_PATH: rspec/flaky/retried_tests_rspec_integration_pg12_3_10_report.txt254CRYSTALBALL: 255Knapsack node specs:256spec/mailers/notify_spec.rb257spec/controllers/projects/merge_requests_controller_spec.rb258spec/requests/api/composer_packages_spec.rb259spec/requests/api/terraform/modules/v1/packages_spec.rb260spec/requests/api/project_packages_spec.rb261spec/requests/api/project_snippets_spec.rb262spec/requests/api/project_export_spec.rb263spec/controllers/autocomplete_controller_spec.rb264spec/requests/api/group_labels_spec.rb265spec/controllers/application_controller_spec.rb266spec/commands/metrics_server/metrics_server_spec.rb267spec/controllers/sessions_controller_spec.rb268spec/controllers/projects/blob_controller_spec.rb269spec/requests/api/project_milestones_spec.rb270spec/requests/projects/issues_controller_spec.rb271spec/controllers/projects/merge_requests/creations_controller_spec.rb272spec/controllers/projects/snippets/blobs_controller_spec.rb273spec/requests/api/usage_data_queries_spec.rb274spec/requests/health_controller_spec.rb275spec/requests/api/group_boards_spec.rb276spec/requests/api/access_requests_spec.rb277spec/requests/api/alert_management_alerts_spec.rb278spec/requests/api/graphql/mutations/award_emojis/toggle_spec.rb279spec/requests/projects/google_cloud/service_accounts_controller_spec.rb280spec/controllers/profiles/two_factor_auths_controller_spec.rb281spec/requests/jwt_controller_spec.rb282spec/requests/lfs_locks_api_spec.rb283spec/requests/api/snippet_repository_storage_moves_spec.rb284spec/requests/projects/merge_requests/diffs_spec.rb285spec/requests/dashboard_controller_spec.rb286spec/controllers/groups/boards_controller_spec.rb287spec/controllers/explore/snippets_controller_spec.rb288spec/requests/api/system_hooks_spec.rb289spec/controllers/projects/performance_monitoring/dashboards_controller_spec.rb290spec/requests/api/graphql/mutations/packages/destroy_file_spec.rb291spec/controllers/projects/tags/releases_controller_spec.rb292spec/requests/projects/google_cloud/deployments_controller_spec.rb293spec/requests/api/graphql/project/repository_spec.rb294spec/requests/api/metrics/dashboard/annotations_spec.rb295spec/requests/api/version_spec.rb296spec/requests/api/graphql/mutations/container_repository/destroy_tags_spec.rb297spec/controllers/projects/cycle_analytics_controller_spec.rb298spec/controllers/root_controller_spec.rb299spec/requests/recursive_webhook_detection_spec.rb300spec/mailers/emails/pipelines_spec.rb301spec/requests/api/graphql/project/project_pipeline_statistics_spec.rb302spec/requests/api/ci/runner/runners_post_spec.rb303spec/controllers/google_api/authorizations_controller_spec.rb304spec/controllers/concerns/renders_commits_spec.rb305spec/controllers/projects/refs_controller_spec.rb306spec/requests/api/graphql/mutations/boards/issues/issue_move_list_spec.rb307spec/requests/api/graphql/mutations/boards/destroy_spec.rb308spec/requests/api/internal/mail_room_spec.rb309spec/controllers/projects/blame_controller_spec.rb310spec/requests/api/pages/pages_spec.rb311spec/requests/api/graphql/project/jira_service_spec.rb312spec/requests/api/graphql/mutations/discussions/toggle_resolve_spec.rb313spec/requests/api/graphql/ci/job_spec.rb314spec/requests/api/graphql/group/recent_issue_boards_query_spec.rb315spec/requests/projects/usage_quotas_spec.rb316spec/controllers/projects/ci/secure_files_controller_spec.rb317spec/controllers/concerns/graceful_timeout_handling_spec.rb318spec/requests/api/graphql/project/alert_management/alert/metrics_dashboard_url_spec.rb319spec/requests/api/project_statistics_spec.rb320spec/requests/api/graphql/mutations/alert_management/alerts/create_alert_issue_spec.rb321spec/controllers/concerns/boards_responses_spec.rb322spec/controllers/groups/dependency_proxies_controller_spec.rb323spec/requests/projects/noteable_notes_spec.rb324spec/requests/api/graphql/mutations/environments/canary_ingress/update_spec.rb325spec/requests/product_analytics/collector_app_spec.rb326spec/controllers/projects/alert_management_controller_spec.rb327spec/requests/api/graphql/mutations/dependency_proxy/image_ttl_group_policy/update_spec.rb328spec/requests/api/graphql/project/jobs_spec.rb329spec/requests/api/graphql/mutations/dependency_proxy/group_settings/update_spec.rb330spec/requests/projects/incident_management/pagerduty_incidents_spec.rb331spec/controllers/projects/packages/packages_controller_spec.rb332spec/requests/api/graphql/namespace/package_settings_spec.rb333spec/requests/user_sends_malformed_strings_spec.rb334spec/requests/sandbox_controller_spec.rb335Filter specs:336Running specs:337Running all node tests without filter338spec/mailers/notify_spec.rb339spec/controllers/projects/merge_requests_controller_spec.rb340spec/requests/api/composer_packages_spec.rb341spec/requests/api/terraform/modules/v1/packages_spec.rb342spec/requests/api/project_packages_spec.rb343spec/requests/api/project_snippets_spec.rb344spec/requests/api/project_export_spec.rb345spec/controllers/autocomplete_controller_spec.rb346spec/requests/api/group_labels_spec.rb347spec/controllers/application_controller_spec.rb348spec/commands/metrics_server/metrics_server_spec.rb349spec/controllers/sessions_controller_spec.rb350spec/controllers/projects/blob_controller_spec.rb351spec/requests/api/project_milestones_spec.rb352spec/requests/projects/issues_controller_spec.rb353spec/controllers/projects/merge_requests/creations_controller_spec.rb354spec/controllers/projects/snippets/blobs_controller_spec.rb355spec/requests/api/usage_data_queries_spec.rb356spec/requests/health_controller_spec.rb357spec/requests/api/group_boards_spec.rb358spec/requests/api/access_requests_spec.rb359spec/requests/api/alert_management_alerts_spec.rb360spec/requests/api/graphql/mutations/award_emojis/toggle_spec.rb361spec/requests/projects/google_cloud/service_accounts_controller_spec.rb362spec/controllers/profiles/two_factor_auths_controller_spec.rb363spec/requests/jwt_controller_spec.rb364spec/requests/lfs_locks_api_spec.rb365spec/requests/api/snippet_repository_storage_moves_spec.rb366spec/requests/projects/merge_requests/diffs_spec.rb367spec/requests/dashboard_controller_spec.rb368spec/controllers/groups/boards_controller_spec.rb369spec/controllers/explore/snippets_controller_spec.rb370spec/requests/api/system_hooks_spec.rb371spec/controllers/projects/performance_monitoring/dashboards_controller_spec.rb372spec/requests/api/graphql/mutations/packages/destroy_file_spec.rb373spec/controllers/projects/tags/releases_controller_spec.rb374spec/requests/projects/google_cloud/deployments_controller_spec.rb375spec/requests/api/graphql/project/repository_spec.rb376spec/requests/api/metrics/dashboard/annotations_spec.rb377spec/requests/api/version_spec.rb378spec/requests/api/graphql/mutations/container_repository/destroy_tags_spec.rb379spec/controllers/projects/cycle_analytics_controller_spec.rb380spec/controllers/root_controller_spec.rb381spec/requests/recursive_webhook_detection_spec.rb382spec/mailers/emails/pipelines_spec.rb383spec/requests/api/graphql/project/project_pipeline_statistics_spec.rb384spec/requests/api/ci/runner/runners_post_spec.rb385spec/controllers/google_api/authorizations_controller_spec.rb386spec/controllers/concerns/renders_commits_spec.rb387spec/controllers/projects/refs_controller_spec.rb388spec/requests/api/graphql/mutations/boards/issues/issue_move_list_spec.rb389spec/requests/api/graphql/mutations/boards/destroy_spec.rb390spec/requests/api/internal/mail_room_spec.rb391spec/controllers/projects/blame_controller_spec.rb392spec/requests/api/pages/pages_spec.rb393spec/requests/api/graphql/project/jira_service_spec.rb394spec/requests/api/graphql/mutations/discussions/toggle_resolve_spec.rb395spec/requests/api/graphql/ci/job_spec.rb396spec/requests/api/graphql/group/recent_issue_boards_query_spec.rb397spec/requests/projects/usage_quotas_spec.rb398spec/controllers/projects/ci/secure_files_controller_spec.rb399spec/controllers/concerns/graceful_timeout_handling_spec.rb400spec/requests/api/graphql/project/alert_management/alert/metrics_dashboard_url_spec.rb401spec/requests/api/project_statistics_spec.rb402spec/requests/api/graphql/mutations/alert_management/alerts/create_alert_issue_spec.rb403spec/controllers/concerns/boards_responses_spec.rb404spec/controllers/groups/dependency_proxies_controller_spec.rb405spec/requests/projects/noteable_notes_spec.rb406spec/requests/api/graphql/mutations/environments/canary_ingress/update_spec.rb407spec/requests/product_analytics/collector_app_spec.rb408spec/controllers/projects/alert_management_controller_spec.rbKnapsack report generator started!409DEPRECATION WARNING: Database connection should not be called during initializers. Read more at https://docs.gitlab.com/ee/development/rails_initializers.html#database-connections-in-initializers (called from connected? at ee/lib/gitlab/geo.rb:79)410DEPRECATION WARNING: Database connection should not be called during initializers. Read more at https://docs.gitlab.com/ee/development/rails_initializers.html#database-connections-in-initializers (called from block in <module:HasVariable> at app/models/concerns/ci/has_variable.rb:22)411DEPRECATION WARNING: Database connection should not be called during initializers. Read more at https://docs.gitlab.com/ee/development/rails_initializers.html#database-connections-in-initializers (called from exists? at lib/gitlab/database/reflection.rb:94)412WARNING: Shared example group 'creates terraform module package files' has been previously defined at:413 /builds/gitlab-org/gitlab/spec/support/shared_examples/requests/api/terraform/modules/v1/packages_shared_examples.rb:165414...and you are now defining it at:415 /builds/gitlab-org/gitlab/spec/support/shared_examples/requests/api/terraform/modules/v1/packages_shared_examples.rb:165416The new definition will overwrite the original one.417WARNING: Shared example group 'creates terraform module package files' has been previously defined at:418 /builds/gitlab-org/gitlab/spec/support/shared_examples/requests/api/terraform/modules/v1/packages_shared_examples.rb:165419...and you are now defining it at:420 /builds/gitlab-org/gitlab/spec/support/shared_examples/requests/api/terraform/modules/v1/packages_shared_examples.rb:165421The new definition will overwrite the original one.422WARNING: Shared example group 'creates terraform module package files' has been previously defined at:423 /builds/gitlab-org/gitlab/spec/support/shared_examples/requests/api/terraform/modules/v1/packages_shared_examples.rb:165424...and you are now defining it at:425 /builds/gitlab-org/gitlab/spec/support/shared_examples/requests/api/terraform/modules/v1/packages_shared_examples.rb:165426The new definition will overwrite the original one.427WARNING: Shared example group 'creates terraform module package files' has been previously defined at:428 /builds/gitlab-org/gitlab/spec/support/shared_examples/requests/api/terraform/modules/v1/packages_shared_examples.rb:165429...and you are now defining it at:430 /builds/gitlab-org/gitlab/spec/support/shared_examples/requests/api/terraform/modules/v1/packages_shared_examples.rb:165431The new definition will overwrite the original one.432WARNING: Shared example group 'creates terraform module package files' has been previously defined at:433 /builds/gitlab-org/gitlab/spec/support/shared_examples/requests/api/terraform/modules/v1/packages_shared_examples.rb:165434...and you are now defining it at:435 /builds/gitlab-org/gitlab/spec/support/shared_examples/requests/api/terraform/modules/v1/packages_shared_examples.rb:165436The new definition will overwrite the original one.437Run options: exclude {:quarantine=>true, :geo=>true, :level=>"migration"}438==> /builds/gitlab-org/gitlab/tmp/tests/gitlab-test_bare set up in 0.044107566 seconds...439Test environment set up in 2.096912158 seconds440Notify441 with HTML-encoded entities442 retains 7bit encoding443 for a project444 for issues445 that are new446 has the correct subject and body447 contains the description448 does not add a reason header449 contains a link to issue author450 contains a link to the issue451 behaves like an assignee email452 is sent to the assignee as the author453 behaves like an email sent to a user454 is sent to user's global notification email address455 with group notification email456 is sent to user's group notification email457 behaves like an email starting a new thread with reply-by-email enabled458 has X-GitLab-Project headers459 has X-GitLab-*-ID header460 has X-GitLab-*-IID header if model has iid defined461 has the characteristics of a threaded email462 includes "Reply to this email directly or <View it on GitLab>"463 when reply-by-email is enabled with incoming address with %{key}464 has a Reply-To header465 when reply-by-email is enabled with incoming address without %{key}466 has the characteristics of a threaded email467 has a Reply-To header468 behaves like it should show Gmail Actions View Issue link469 is expected to have body including "View Issue"470 behaves like it should have Gmail Actions links471 is expected to have body including "ViewAction"472 behaves like an unsubscribeable thread473 has a List-Unsubscribe header in the correct format, and a body link474 behaves like an unsubscribeable thread with incoming address without %{key}475 has a List-Unsubscribe header in the correct format, and a body link476 behaves like appearance header and footer enabled477 contains header and footer478 behaves like appearance header and footer not enabled479 does not contain header and footer480 when sent with a reason481 includes the reason in a header482 behaves like appearance header and footer enabled483 contains header and footer484 behaves like appearance header and footer not enabled485 does not contain header and footer486 that are reassigned487 is sent as the author488 has the correct subject and body489 behaves like a multiple recipients email490 is sent to the given recipient491 behaves like an answer to an existing thread with reply-by-email enabled492 has X-GitLab-Project headers493 has X-GitLab-*-ID header494 has X-GitLab-*-IID header if model has iid defined495 has X-GitLab-Project headers496 has X-GitLab-*-ID header497 has X-GitLab-*-IID header if model has iid defined498 has the characteristics of a threaded reply499 when reply-by-email is enabled with incoming address with %{key}500 has a Reply-To header501 when reply-by-email is enabled with incoming address without %{key}502 has X-GitLab-Project headers503 has X-GitLab-*-ID header504 has X-GitLab-*-IID header if model has iid defined505 has the characteristics of a threaded reply506 has a Reply-To header507 behaves like it should show Gmail Actions View Issue link508 is expected to have body including "View Issue"509 behaves like it should have Gmail Actions links510 is expected to have body including "ViewAction"511 behaves like an unsubscribeable thread512 has a List-Unsubscribe header in the correct format, and a body link513 behaves like an unsubscribeable thread with incoming address without %{key}514 has a List-Unsubscribe header in the correct format, and a body link515 behaves like appearance header and footer enabled516 contains header and footer517 behaves like appearance header and footer not enabled518 does not contain header and footer519 when sent with a reason520 includes the reason in a header521 behaves like appearance header and footer enabled522 contains header and footer523 behaves like appearance header and footer not enabled524 does not contain header and footer525 that have been relabeled526 is sent as the author527 has the correct subject and body528 behaves like a multiple recipients email529 is sent to the given recipient530 behaves like an answer to an existing thread with reply-by-email enabled531 has X-GitLab-Project headers532 has X-GitLab-*-ID header533 has X-GitLab-*-IID header if model has iid defined534 has X-GitLab-Project headers535 has X-GitLab-*-ID header536 has X-GitLab-*-IID header if model has iid defined537 has the characteristics of a threaded reply538 when reply-by-email is enabled with incoming address with %{key}539 has a Reply-To header540 when reply-by-email is enabled with incoming address without %{key}541 has X-GitLab-Project headers542 has X-GitLab-*-ID header543 has X-GitLab-*-IID header if model has iid defined544 has the characteristics of a threaded reply545 has a Reply-To header546 behaves like it should show Gmail Actions View Issue link547 is expected to have body including "View Issue"548 behaves like it should have Gmail Actions links549 is expected to have body including "ViewAction"550 behaves like a user cannot unsubscribe through footer link551 does not have a List-Unsubscribe header or a body link552 behaves like an email with a labels subscriptions link in its footer553 is expected to have body including "label subscriptions"554 behaves like appearance header and footer enabled555 contains header and footer556 behaves like appearance header and footer not enabled557 does not contain header and footer558 with a preferred language559 always generates the email using the default language560 that are due soon561 contains a link to the issue562 behaves like an answer to an existing thread with reply-by-email enabled563 has X-GitLab-Project headers564 has X-GitLab-*-ID header565 has X-GitLab-*-IID header if model has iid defined566 has X-GitLab-Project headers567 has X-GitLab-*-ID header568 has X-GitLab-*-IID header if model has iid defined569 has the characteristics of a threaded reply570 when reply-by-email is enabled with incoming address with %{key}571 has a Reply-To header572 when reply-by-email is enabled with incoming address without %{key}573 has X-GitLab-Project headers574 has X-GitLab-*-ID header575 has X-GitLab-*-IID header if model has iid defined576 has the characteristics of a threaded reply577 has a Reply-To header578 behaves like it should show Gmail Actions View Issue link579 is expected to have body including "View Issue"580 behaves like it should have Gmail Actions links581 is expected to have body including "ViewAction"582 behaves like an unsubscribeable thread583 has a List-Unsubscribe header in the correct format, and a body link584 behaves like an unsubscribeable thread with incoming address without %{key}585 has a List-Unsubscribe header in the correct format, and a body link586 behaves like appearance header and footer enabled587 contains header and footer588 behaves like appearance header and footer not enabled589 does not contain header and footer590 status changed591 is sent as the author592 has the correct subject and body593 behaves like an answer to an existing thread with reply-by-email enabled594 has X-GitLab-Project headers595 has X-GitLab-*-ID header596 has X-GitLab-*-IID header if model has iid defined597 has X-GitLab-Project headers598 has X-GitLab-*-ID header599 has X-GitLab-*-IID header if model has iid defined600 has the characteristics of a threaded reply601 when reply-by-email is enabled with incoming address with %{key}602 has a Reply-To header603 when reply-by-email is enabled with incoming address without %{key}604 has X-GitLab-Project headers605 has X-GitLab-*-ID header606 has X-GitLab-*-IID header if model has iid defined607 has the characteristics of a threaded reply608 has a Reply-To header609 behaves like it should show Gmail Actions View Issue link610 is expected to have body including "View Issue"611 behaves like it should have Gmail Actions links612 is expected to have body including "ViewAction"613 behaves like an unsubscribeable thread614 has a List-Unsubscribe header in the correct format, and a body link615 behaves like an unsubscribeable thread with incoming address without %{key}616 has a List-Unsubscribe header in the correct format, and a body link617 behaves like appearance header and footer enabled618 contains header and footer619 behaves like appearance header and footer not enabled620 does not contain header and footer621 moved to another project622 when a user has permissions to access the new issue623 contains description about action taken624 has the correct subject and body625 contains the issue title626 behaves like an answer to an existing thread with reply-by-email enabled627 has X-GitLab-Project headers628 has X-GitLab-*-ID header629 has X-GitLab-*-IID header if model has iid defined630 has X-GitLab-Project headers631 has X-GitLab-*-ID header632 has X-GitLab-*-IID header if model has iid defined633 has the characteristics of a threaded reply634 when reply-by-email is enabled with incoming address with %{key}635 has a Reply-To header636 when reply-by-email is enabled with incoming address without %{key}637 has X-GitLab-Project headers638 has X-GitLab-*-ID header639 has X-GitLab-*-IID header if model has iid defined640 has the characteristics of a threaded reply641 has a Reply-To header642 behaves like it should show Gmail Actions View Issue link643 is expected to have body including "View Issue"644 behaves like it should have Gmail Actions links645 is expected to have body including "ViewAction"646 behaves like an unsubscribeable thread647 has a List-Unsubscribe header in the correct format, and a body link648 behaves like an unsubscribeable thread with incoming address without %{key}649 has a List-Unsubscribe header in the correct format, and a body link650 when a user does not permissions to access the new issue651 has the correct subject and body652 does not contain the issue title653 contains information about missing permissions654 for merge requests655 that are new656 has the correct subject and body657 contains the description658 contains a link to merge request author659 contains a link to the merge request url660 behaves like an assignee email661 is sent to the assignee as the author662 behaves like an email sent to a user663 is sent to user's global notification email address664 with group notification email665 is sent to user's group notification email666 behaves like an email starting a new thread with reply-by-email enabled667 has X-GitLab-Project headers668 has X-GitLab-*-ID header669 has X-GitLab-*-IID header if model has iid defined670 has the characteristics of a threaded email671 includes "Reply to this email directly or <View it on GitLab>"672 when reply-by-email is enabled with incoming address with %{key}673 has a Reply-To header674 when reply-by-email is enabled with incoming address without %{key}675 has the characteristics of a threaded email676 has a Reply-To header677 behaves like it should show Gmail Actions View Merge request link678 is expected to have body including "View Merge request"679 behaves like it should have Gmail Actions links680 is expected to have body including "ViewAction"681 behaves like an unsubscribeable thread682 has a List-Unsubscribe header in the correct format, and a body link683 behaves like an unsubscribeable thread with incoming address without %{key}684 has a List-Unsubscribe header in the correct format, and a body link685 behaves like appearance header and footer enabled686 contains header and footer687 behaves like appearance header and footer not enabled688 does not contain header and footer689 when sent with a reason690 includes the reason in a header691 behaves like appearance header and footer enabled692 contains header and footer693 behaves like appearance header and footer not enabled694 does not contain header and footer695 that are reassigned696 is sent as the author697 has the correct subject and body698 behaves like a multiple recipients email699 is sent to the given recipient700 behaves like an answer to an existing thread with reply-by-email enabled701 has X-GitLab-Project headers702 has X-GitLab-*-ID header703 has X-GitLab-*-IID header if model has iid defined704 has X-GitLab-Project headers705 has X-GitLab-*-ID header706 has X-GitLab-*-IID header if model has iid defined707 has the characteristics of a threaded reply708 when reply-by-email is enabled with incoming address with %{key}709 has a Reply-To header710 when reply-by-email is enabled with incoming address without %{key}711 has X-GitLab-Project headers712 has X-GitLab-*-ID header713 has X-GitLab-*-IID header if model has iid defined714 has the characteristics of a threaded reply715 has a Reply-To header716 behaves like it should show Gmail Actions View Merge request link717 is expected to have body including "View Merge request"718 behaves like it should have Gmail Actions links719 is expected to have body including "ViewAction"720 behaves like an unsubscribeable thread721 has a List-Unsubscribe header in the correct format, and a body link722 behaves like an unsubscribeable thread with incoming address without %{key}723 has a List-Unsubscribe header in the correct format, and a body link724 behaves like appearance header and footer enabled725 contains header and footer726 behaves like appearance header and footer not enabled727 does not contain header and footer728 when sent with a reason729 includes the reason in a header730 includes the reason in the footer731 behaves like appearance header and footer enabled732 contains header and footer733 behaves like appearance header and footer not enabled734 does not contain header and footer735 that are new with a description736 contains the description737 behaves like it should show Gmail Actions View Merge request link738 is expected to have body including "View Merge request"739 behaves like it should have Gmail Actions links740 is expected to have body including "ViewAction"741 behaves like an unsubscribeable thread742 has a List-Unsubscribe header in the correct format, and a body link743 behaves like an unsubscribeable thread with incoming address without %{key}744 has a List-Unsubscribe header in the correct format, and a body link745 behaves like appearance header and footer enabled746 contains header and footer747 behaves like appearance header and footer not enabled748 does not contain header and footer749 that have been relabeled750 is sent as the author751 has the correct subject and body752 behaves like a multiple recipients email753 is sent to the given recipient754 behaves like an answer to an existing thread with reply-by-email enabled755 has X-GitLab-Project headers756 has X-GitLab-*-ID header757 has X-GitLab-*-IID header if model has iid defined758 has X-GitLab-Project headers759 has X-GitLab-*-ID header760 has X-GitLab-*-IID header if model has iid defined761 has the characteristics of a threaded reply762 when reply-by-email is enabled with incoming address with %{key}763 has a Reply-To header764 when reply-by-email is enabled with incoming address without %{key}765 has X-GitLab-Project headers766 has X-GitLab-*-ID header767 has X-GitLab-*-IID header if model has iid defined768 has the characteristics of a threaded reply769 has a Reply-To header770 behaves like it should show Gmail Actions View Merge request link771 is expected to have body including "View Merge request"772 behaves like it should have Gmail Actions links773 is expected to have body including "ViewAction"774 behaves like a user cannot unsubscribe through footer link775 does not have a List-Unsubscribe header or a body link776 behaves like an email with a labels subscriptions link in its footer777 is expected to have body including "label subscriptions"778 behaves like appearance header and footer enabled779 contains header and footer780 behaves like appearance header and footer not enabled781 does not contain header and footer782 that have no new commits783 behaves like a push to an existing merge request784 is sent as the push user785 has the correct subject and body786 behaves like a multiple recipients email787 is sent to the given recipient788 behaves like an answer to an existing thread with reply-by-email enabled789 has X-GitLab-Project headers790 has X-GitLab-*-ID header791 has X-GitLab-*-IID header if model has iid defined792 has X-GitLab-Project headers793 has X-GitLab-*-ID header794 has X-GitLab-*-IID header if model has iid defined795 has the characteristics of a threaded reply796 when reply-by-email is enabled with incoming address with %{key}797 has a Reply-To header798 when reply-by-email is enabled with incoming address without %{key}799 has X-GitLab-Project headers800 has X-GitLab-*-ID header801 has X-GitLab-*-IID header if model has iid defined802 has the characteristics of a threaded reply803 has a Reply-To header804 behaves like it should show Gmail Actions View Merge request link805 is expected to have body including "View Merge request"806 behaves like it should have Gmail Actions links807 is expected to have body including "ViewAction"808 behaves like an unsubscribeable thread809 has a List-Unsubscribe header in the correct format, and a body link810 behaves like an unsubscribeable thread with incoming address without %{key}811 has a List-Unsubscribe header in the correct format, and a body link812 behaves like appearance header and footer enabled813 contains header and footer814 behaves like appearance header and footer not enabled815 does not contain header and footer816 that have fewer than the commit truncation limit817 behaves like a push to an existing merge request818 is sent as the push user819 has the correct subject and body820 behaves like a multiple recipients email821 is sent to the given recipient822 behaves like an answer to an existing thread with reply-by-email enabled823 has X-GitLab-Project headers824 has X-GitLab-*-ID header825 has X-GitLab-*-IID header if model has iid defined826 has X-GitLab-Project headers827 has X-GitLab-*-ID header828 has X-GitLab-*-IID header if model has iid defined829 has the characteristics of a threaded reply830 when reply-by-email is enabled with incoming address with %{key}831 has a Reply-To header832 when reply-by-email is enabled with incoming address without %{key}833 has X-GitLab-Project headers834 has X-GitLab-*-ID header835 has X-GitLab-*-IID header if model has iid defined836 has the characteristics of a threaded reply837 has a Reply-To header838 behaves like it should show Gmail Actions View Merge request link839 is expected to have body including "View Merge request"840 behaves like it should have Gmail Actions links841 is expected to have body including "ViewAction"842 behaves like an unsubscribeable thread843 has a List-Unsubscribe header in the correct format, and a body link844 behaves like an unsubscribeable thread with incoming address without %{key}845 has a List-Unsubscribe header in the correct format, and a body link846 behaves like appearance header and footer enabled847 contains header and footer848 behaves like appearance header and footer not enabled849 does not contain header and footer850 behaves like shows new commit urls851 shows new commit urls852 does not show hidden new commit urls853 that have more than the commit truncation limit854 shows "and more" message855 behaves like a push to an existing merge request856 is sent as the push user857 has the correct subject and body858 behaves like a multiple recipients email859 is sent to the given recipient860 behaves like an answer to an existing thread with reply-by-email enabled861 has X-GitLab-Project headers862 has X-GitLab-*-ID header863 has X-GitLab-*-IID header if model has iid defined864 has X-GitLab-Project headers865 has X-GitLab-*-ID header866 has X-GitLab-*-IID header if model has iid defined867 has the characteristics of a threaded reply868 when reply-by-email is enabled with incoming address with %{key}869 has a Reply-To header870 when reply-by-email is enabled with incoming address without %{key}871 has X-GitLab-Project headers872 has X-GitLab-*-ID header873 has X-GitLab-*-IID header if model has iid defined874 has the characteristics of a threaded reply875 has a Reply-To header876 behaves like it should show Gmail Actions View Merge request link877 is expected to have body including "View Merge request"878 behaves like it should have Gmail Actions links879 is expected to have body including "ViewAction"880 behaves like an unsubscribeable thread881 has a List-Unsubscribe header in the correct format, and a body link882 behaves like an unsubscribeable thread with incoming address without %{key}883 has a List-Unsubscribe header in the correct format, and a body link884 behaves like appearance header and footer enabled885 contains header and footer886 behaves like appearance header and footer not enabled887 does not contain header and footer888 behaves like shows new commit urls889 shows new commit urls890 does not show hidden new commit urls891 that have new commits on top of an existing one892 shows the existing commit893 behaves like a push to an existing merge request894 is sent as the push user895 has the correct subject and body896 behaves like a multiple recipients email897 is sent to the given recipient898 behaves like an answer to an existing thread with reply-by-email enabled899 has X-GitLab-Project headers900 has X-GitLab-*-ID header901 has X-GitLab-*-IID header if model has iid defined902 has X-GitLab-Project headers903 has X-GitLab-*-ID header904 has X-GitLab-*-IID header if model has iid defined905 has the characteristics of a threaded reply906 when reply-by-email is enabled with incoming address with %{key}907 has a Reply-To header908 when reply-by-email is enabled with incoming address without %{key}909 has X-GitLab-Project headers910 has X-GitLab-*-ID header911 has X-GitLab-*-IID header if model has iid defined912 has the characteristics of a threaded reply913 has a Reply-To header914 behaves like it should show Gmail Actions View Merge request link915 is expected to have body including "View Merge request"916 behaves like it should have Gmail Actions links917 is expected to have body including "ViewAction"918 behaves like an unsubscribeable thread919 has a List-Unsubscribe header in the correct format, and a body link920 behaves like an unsubscribeable thread with incoming address without %{key}921 has a List-Unsubscribe header in the correct format, and a body link922 behaves like appearance header and footer enabled923 contains header and footer924 behaves like appearance header and footer not enabled925 does not contain header and footer926 that have new commits on top of two existing ones927 behaves like a push to an existing merge request928 is sent as the push user929 has the correct subject and body930 behaves like a multiple recipients email931 is sent to the given recipient932 behaves like an answer to an existing thread with reply-by-email enabled933 has X-GitLab-Project headers934 has X-GitLab-*-ID header935 has X-GitLab-*-IID header if model has iid defined936 has X-GitLab-Project headers937 has X-GitLab-*-ID header938 has X-GitLab-*-IID header if model has iid defined939 has the characteristics of a threaded reply940 when reply-by-email is enabled with incoming address with %{key}941 has a Reply-To header942 when reply-by-email is enabled with incoming address without %{key}943 has X-GitLab-Project headers944 has X-GitLab-*-ID header945 has X-GitLab-*-IID header if model has iid defined946 has the characteristics of a threaded reply947 has a Reply-To header948 behaves like it should show Gmail Actions View Merge request link949 is expected to have body including "View Merge request"950 behaves like it should have Gmail Actions links951 is expected to have body including "ViewAction"952 behaves like an unsubscribeable thread953 has a List-Unsubscribe header in the correct format, and a body link954 behaves like an unsubscribeable thread with incoming address without %{key}955 has a List-Unsubscribe header in the correct format, and a body link956 behaves like appearance header and footer enabled957 contains header and footer958 behaves like appearance header and footer not enabled959 does not contain header and footer960 behaves like shows the compare url between first and last commits961 shows the compare url between first and last commits962 that have new commits on top of more than two existing ones963 behaves like a push to an existing merge request964 is sent as the push user965 has the correct subject and body966 behaves like a multiple recipients email967 is sent to the given recipient968 behaves like an answer to an existing thread with reply-by-email enabled969 has X-GitLab-Project headers970 has X-GitLab-*-ID header971 has X-GitLab-*-IID header if model has iid defined972 has X-GitLab-Project headers973 has X-GitLab-*-ID header974 has X-GitLab-*-IID header if model has iid defined975 has the characteristics of a threaded reply976 when reply-by-email is enabled with incoming address with %{key}977 has a Reply-To header978 when reply-by-email is enabled with incoming address without %{key}979 has X-GitLab-Project headers980 has X-GitLab-*-ID header981 has X-GitLab-*-IID header if model has iid defined982 has the characteristics of a threaded reply983 has a Reply-To header984 behaves like it should show Gmail Actions View Merge request link985 is expected to have body including "View Merge request"986 behaves like it should have Gmail Actions links987 is expected to have body including "ViewAction"988 behaves like an unsubscribeable thread989 has a List-Unsubscribe header in the correct format, and a body link990 behaves like an unsubscribeable thread with incoming address without %{key}991 has a List-Unsubscribe header in the correct format, and a body link992 behaves like appearance header and footer enabled993 contains header and footer994 behaves like appearance header and footer not enabled995 does not contain header and footer996 behaves like shows the compare url between first and last commits997 shows the compare url between first and last commits998 #mail_thread999 the model has no namespace1000 has X-GitLab-Namespaced-Thing-ID header1001 the model has a namespace1002 has X-GitLab-Namespaced-Thing-ID header1003 for issue notes1004 in discussion1005 has In-Reply-To header pointing to previous note in discussion1006 has References header including the notes and issue of the discussion1007 has X-GitLab-Discussion-ID header1008 behaves like an email sent to a user1009 is sent to user's global notification email address1010 with group notification email1011 is sent to user's group notification email1012 behaves like appearance header and footer enabled1013 contains header and footer1014 behaves like appearance header and footer not enabled1015 does not contain header and footer1016 individual issue comments1017 has In-Reply-To header pointing to the issue1018 has References header including the notes and issue of the discussion1019 behaves like an email sent to a user1020 is sent to user's global notification email address1021 with group notification email1022 is sent to user's group notification email1023 behaves like appearance header and footer enabled1024 contains header and footer1025 behaves like appearance header and footer not enabled1026 does not contain header and footer1027 with private references accessible to the recipient1028 does not redact the reference1029 renders expanded issue references1030 for snippet notes1031 has the correct subject1032 has the correct body1033 links to the project snippet1034 behaves like appearance header and footer enabled1035 contains header and footer1036 behaves like appearance header and footer not enabled1037 does not contain header and footer1038 behaves like an answer to an existing thread with reply-by-email enabled1039 has X-GitLab-Project headers1040 has X-GitLab-*-ID header1041 has X-GitLab-*-IID header if model has iid defined1042 has X-GitLab-Project headers1043 has X-GitLab-*-ID header1044 has X-GitLab-*-IID header if model has iid defined1045 has the characteristics of a threaded reply1046 when reply-by-email is enabled with incoming address with %{key}1047 has a Reply-To header1048 when reply-by-email is enabled with incoming address without %{key}1049 has X-GitLab-Project headers1050 has X-GitLab-*-ID header1051 has X-GitLab-*-IID header if model has iid defined1052 has the characteristics of a threaded reply1053 has a Reply-To header1054 behaves like a user cannot unsubscribe through footer link1055 does not have a List-Unsubscribe header or a body link1056 for design notes1057 is expected to have header X-Gitlab-DesignManagement-Design-ID: 11058 is expected to have body including "homescreen-1.jpg"1059 is expected to have attributes {:subject => (a string including "homescreen-1.jpg")}1060 project was moved1061 has the correct subject and body1062 behaves like an email sent to a user1063 is sent to user's global notification email address1064 with group notification email1065 is sent to user's group notification email1066 behaves like an email sent from GitLab1067 has the characteristics of an email sent from GitLab1068 behaves like it should not have Gmail Actions links1069 is expected not to have body including "ViewAction"1070 behaves like a user cannot unsubscribe through footer link1071 does not have a List-Unsubscribe header or a body link1072 behaves like appearance header and footer enabled1073 contains header and footer1074 behaves like appearance header and footer not enabled1075 does not contain header and footer1076 project access requested1077 contains all the useful information1078 behaves like an email sent from GitLab1079 has the characteristics of an email sent from GitLab1080 behaves like it should not have Gmail Actions links1081 is expected not to have body including "ViewAction"1082 behaves like a user cannot unsubscribe through footer link1083 does not have a List-Unsubscribe header or a body link1084 behaves like appearance header and footer enabled1085 contains header and footer1086 behaves like appearance header and footer not enabled1087 does not contain header and footer1088 project access denied1089 contains all the useful information1090 behaves like an email sent from GitLab1091 has the characteristics of an email sent from GitLab1092 behaves like it should not have Gmail Actions links1093 is expected not to have body including "ViewAction"1094 behaves like a user cannot unsubscribe through footer link1095 does not have a List-Unsubscribe header or a body link1096 behaves like appearance header and footer enabled1097 contains header and footer1098 behaves like appearance header and footer not enabled1099 does not contain header and footer1100 when user can not read project1101 hides project name from subject and body1102 project access changed1103 contains all the useful information1104 behaves like an email sent from GitLab1105 has the characteristics of an email sent from GitLab1106 behaves like it should not have Gmail Actions links1107 is expected not to have body including "ViewAction"1108 behaves like a user cannot unsubscribe through footer link1109 does not have a List-Unsubscribe header or a body link1110 behaves like appearance header and footer enabled1111 contains header and footer1112 behaves like appearance header and footer not enabled1113 does not contain header and footer1114 with tasks to be done present1115 contains the assigned tasks to be done1116 project invitation1117 behaves like an email sent from GitLab1118 has the characteristics of an email sent from GitLab1119 behaves like it should show Gmail Actions Join now link1120 is expected to have body including "Join now"1121 behaves like it should have Gmail Actions links1122 is expected to have body including "ViewAction"1123 behaves like a user cannot unsubscribe through footer link1124 does not have a List-Unsubscribe header or a body link1125 behaves like appearance header and footer enabled1126 contains header and footer1127 behaves like appearance header and footer not enabled1128 does not contain header and footer1129 behaves like does not render a manage notifications link1130 is expected not to have body including "http://localhost/-/profile/notifications"1131 when there is an inviter1132 contains all the useful information1133 when there is no inviter1134 contains all the useful information1135 when invite email sent is tracked1136 tracks the sent invite1137 when mailgun events are enabled1138 has custom headers1139 with tasks to be done present1140 contains the assigned tasks to be done1141 project invitation accepted1142 contains all the useful information1143 behaves like an email sent from GitLab1144 has the characteristics of an email sent from GitLab1145 behaves like an email sent to a user1146 is sent to user's global notification email address1147 with group notification email1148 is sent to user's group notification email1149 behaves like it should not have Gmail Actions links1150 is expected not to have body including "ViewAction"1151 behaves like a user cannot unsubscribe through footer link1152 does not have a List-Unsubscribe header or a body link1153 behaves like appearance header and footer enabled1154 contains header and footer1155 behaves like appearance header and footer not enabled1156 does not contain header and footer1157 project invitation declined1158 contains all the useful information1159 behaves like an email sent from GitLab1160 has the characteristics of an email sent from GitLab1161 behaves like an email sent to a user1162 is sent to user's global notification email address1163 with group notification email1164 is sent to user's group notification email1165 behaves like it should not have Gmail Actions links1166 is expected not to have body including "ViewAction"1167 behaves like a user cannot unsubscribe through footer link1168 does not have a List-Unsubscribe header or a body link1169 behaves like appearance header and footer enabled1170 contains header and footer1171 behaves like appearance header and footer not enabled1172 does not contain header and footer1173 items that are noteable, the email for a note1174 on a commit1175 has the correct subject and body1176 behaves like a note email1177 is sent to the given recipient as the author1178 contains the message from the note1179 contains a link to note author1180 behaves like it should have Gmail Actions links1181 is expected to have body including "ViewAction"1182 behaves like an answer to an existing thread with reply-by-email enabled1183 has X-GitLab-Project headers1184 has X-GitLab-*-ID header1185 has X-GitLab-*-IID header if model has iid defined1186 has X-GitLab-Project headers1187 has X-GitLab-*-ID header1188 has X-GitLab-*-IID header if model has iid defined1189 has the characteristics of a threaded reply1190 when reply-by-email is enabled with incoming address with %{key}1191 has a Reply-To header1192 when reply-by-email is enabled with incoming address without %{key}1193 has X-GitLab-Project headers1194 has X-GitLab-*-ID header1195 has X-GitLab-*-IID header if model has iid defined1196 has the characteristics of a threaded reply1197 has a Reply-To header1198 behaves like it should show Gmail Actions View Commit link1199 is expected to have body including "View Commit"1200 behaves like it should have Gmail Actions links1201 is expected to have body including "ViewAction"1202 behaves like a user cannot unsubscribe through footer link1203 does not have a List-Unsubscribe header or a body link1204 behaves like appearance header and footer enabled1205 contains header and footer1206 behaves like appearance header and footer not enabled1207 does not contain header and footer1208 on a merge request1209 has the correct subject and body1210 behaves like a note email1211 is sent to the given recipient as the author1212 contains the message from the note1213 contains a link to note author1214 behaves like it should have Gmail Actions links1215 is expected to have body including "ViewAction"1216 behaves like an answer to an existing thread with reply-by-email enabled1217 has X-GitLab-Project headers1218 has X-GitLab-*-ID header1219 has X-GitLab-*-IID header if model has iid defined1220 has X-GitLab-Project headers1221 has X-GitLab-*-ID header1222 has X-GitLab-*-IID header if model has iid defined1223 has the characteristics of a threaded reply1224 when reply-by-email is enabled with incoming address with %{key}1225 has a Reply-To header1226 when reply-by-email is enabled with incoming address without %{key}1227 has X-GitLab-Project headers1228 has X-GitLab-*-ID header1229 has X-GitLab-*-IID header if model has iid defined1230 has the characteristics of a threaded reply1231 has a Reply-To header1232 behaves like it should show Gmail Actions View Merge request link1233 is expected to have body including "View Merge request"1234 behaves like it should have Gmail Actions links1235 is expected to have body including "ViewAction"1236 behaves like an unsubscribeable thread1237 has a List-Unsubscribe header in the correct format, and a body link1238 behaves like an unsubscribeable thread with incoming address without %{key}1239 has a List-Unsubscribe header in the correct format, and a body link1240 behaves like appearance header and footer enabled1241 contains header and footer1242 behaves like appearance header and footer not enabled1243 does not contain header and footer1244 on an issue1245 has the correct subject and body1246 behaves like a note email1247 is sent to the given recipient as the author1248 contains the message from the note1249 contains a link to note author1250 behaves like it should have Gmail Actions links1251 is expected to have body including "ViewAction"1252 behaves like an answer to an existing thread with reply-by-email enabled1253 has X-GitLab-Project headers1254 has X-GitLab-*-ID header1255 has X-GitLab-*-IID header if model has iid defined1256 has X-GitLab-Project headers1257 has X-GitLab-*-ID header1258 has X-GitLab-*-IID header if model has iid defined1259 has the characteristics of a threaded reply1260 when reply-by-email is enabled with incoming address with %{key}1261 has a Reply-To header1262 when reply-by-email is enabled with incoming address without %{key}1263 has X-GitLab-Project headers1264 has X-GitLab-*-ID header1265 has X-GitLab-*-IID header if model has iid defined1266 has the characteristics of a threaded reply1267 has a Reply-To header1268 behaves like it should show Gmail Actions View Issue link1269 is expected to have body including "View Issue"1270 behaves like it should have Gmail Actions links1271 is expected to have body including "ViewAction"1272 behaves like an unsubscribeable thread1273 has a List-Unsubscribe header in the correct format, and a body link1274 behaves like an unsubscribeable thread with incoming address without %{key}1275 has a List-Unsubscribe header in the correct format, and a body link1276 behaves like appearance header and footer enabled1277 contains header and footer1278 behaves like appearance header and footer not enabled1279 does not contain header and footer1280 items that are noteable, the email for a discussion note1281 on a commit1282 has the correct subject1283 contains a link to the commit1284 behaves like a discussion note email1285 is sent to the given recipient as the author1286 contains the message from the note1287 contains an introduction1288 behaves like it should have Gmail Actions links1289 is expected to have body including "ViewAction"1290 when a comment on an existing discussion1291 contains an introduction1292 behaves like an answer to an existing thread with reply-by-email enabled1293 has X-GitLab-Project headers1294 has X-GitLab-*-ID header1295 has X-GitLab-*-IID header if model has iid defined1296 has X-GitLab-Project headers1297 has X-GitLab-*-ID header1298 has X-GitLab-*-IID header if model has iid defined1299 has the characteristics of a threaded reply1300 when reply-by-email is enabled with incoming address with %{key}1301 has a Reply-To header1302 when reply-by-email is enabled with incoming address without %{key}1303 has X-GitLab-Project headers1304 has X-GitLab-*-ID header1305 has X-GitLab-*-IID header if model has iid defined1306 has the characteristics of a threaded reply1307 has a Reply-To header1308 behaves like it should show Gmail Actions View Commit link1309 is expected to have body including "View Commit"1310 behaves like it should have Gmail Actions links1311 is expected to have body including "ViewAction"1312 behaves like a user cannot unsubscribe through footer link1313 does not have a List-Unsubscribe header or a body link1314 behaves like appearance header and footer enabled1315 contains header and footer1316 behaves like appearance header and footer not enabled1317 does not contain header and footer1318 on a merge request1319 has the correct subject1320 contains a link to the merge request note1321 behaves like a discussion note email1322 is sent to the given recipient as the author1323 contains the message from the note1324 contains an introduction1325 behaves like it should have Gmail Actions links1326 is expected to have body including "ViewAction"1327 when a comment on an existing discussion1328 contains an introduction1329 behaves like an answer to an existing thread with reply-by-email enabled1330 has X-GitLab-Project headers1331 has X-GitLab-*-ID header1332 has X-GitLab-*-IID header if model has iid defined1333 has X-GitLab-Project headers1334 has X-GitLab-*-ID header1335 has X-GitLab-*-IID header if model has iid defined1336 has the characteristics of a threaded reply1337 when reply-by-email is enabled with incoming address with %{key}1338 has a Reply-To header1339 when reply-by-email is enabled with incoming address without %{key}1340 has X-GitLab-Project headers1341 has X-GitLab-*-ID header1342 has X-GitLab-*-IID header if model has iid defined1343 has the characteristics of a threaded reply1344 has a Reply-To header1345 behaves like it should show Gmail Actions View Merge request link1346 is expected to have body including "View Merge request"1347 behaves like it should have Gmail Actions links1348 is expected to have body including "ViewAction"1349 behaves like an unsubscribeable thread1350 has a List-Unsubscribe header in the correct format, and a body link1351 behaves like an unsubscribeable thread with incoming address without %{key}1352 has a List-Unsubscribe header in the correct format, and a body link1353 behaves like appearance header and footer enabled1354 contains header and footer1355 behaves like appearance header and footer not enabled1356 does not contain header and footer1357 on an issue1358 has the correct subject1359 contains a link to the issue note1360 behaves like a discussion note email1361 is sent to the given recipient as the author1362 contains the message from the note1363 contains an introduction1364 behaves like it should have Gmail Actions links1365 is expected to have body including "ViewAction"1366 when a comment on an existing discussion1367 contains an introduction1368 behaves like an answer to an existing thread with reply-by-email enabled1369 has X-GitLab-Project headers1370 has X-GitLab-*-ID header1371 has X-GitLab-*-IID header if model has iid defined1372 has X-GitLab-Project headers1373 has X-GitLab-*-ID header1374 has X-GitLab-*-IID header if model has iid defined1375 has the characteristics of a threaded reply1376 when reply-by-email is enabled with incoming address with %{key}1377 has a Reply-To header1378 when reply-by-email is enabled with incoming address without %{key}1379 has X-GitLab-Project headers1380 has X-GitLab-*-ID header1381 has X-GitLab-*-IID header if model has iid defined1382 has the characteristics of a threaded reply1383 has a Reply-To header1384 behaves like it should show Gmail Actions View Issue link1385 is expected to have body including "View Issue"1386 behaves like it should have Gmail Actions links1387 is expected to have body including "ViewAction"1388 behaves like an unsubscribeable thread1389 has a List-Unsubscribe header in the correct format, and a body link1390 behaves like an unsubscribeable thread with incoming address without %{key}1391 has a List-Unsubscribe header in the correct format, and a body link1392 behaves like appearance header and footer enabled1393 contains header and footer1394 behaves like appearance header and footer not enabled1395 does not contain header and footer1396 items that are noteable, the email for a diff discussion note1397 on a commit1398 behaves like an email for a note on a diff discussion1399 includes diffs with character-level highlighting1400 contains a link to the diff file1401 is sent to the given recipient as the author1402 contains the message from the note1403 contains an introduction1404 when note is not on text1405 does not include diffs with character-level highlighting1406 behaves like it should have Gmail Actions links1407 is expected to have body including "ViewAction"1408 when a comment on an existing discussion1409 contains an introduction1410 behaves like it should show Gmail Actions View Commit link1411 is expected to have body including "View Commit"1412 behaves like it should have Gmail Actions links1413 is expected to have body including "ViewAction"1414 behaves like a user cannot unsubscribe through footer link1415 does not have a List-Unsubscribe header or a body link1416 behaves like appearance header and footer enabled1417 contains header and footer1418 behaves like appearance header and footer not enabled1419 does not contain header and footer1420 on a merge request1421 behaves like an email for a note on a diff discussion1422 includes diffs with character-level highlighting1423 contains a link to the diff file1424 is sent to the given recipient as the author1425 contains the message from the note1426 contains an introduction1427 when note is not on text1428 does not include diffs with character-level highlighting1429 behaves like it should have Gmail Actions links1430 is expected to have body including "ViewAction"1431 when a comment on an existing discussion1432 contains an introduction1433 behaves like it should show Gmail Actions View Merge request link1434 is expected to have body including "View Merge request"1435 behaves like it should have Gmail Actions links1436 is expected to have body including "ViewAction"1437 behaves like an unsubscribeable thread1438 has a List-Unsubscribe header in the correct format, and a body link1439 behaves like an unsubscribeable thread with incoming address without %{key}1440 has a List-Unsubscribe header in the correct format, and a body link1441 behaves like appearance header and footer enabled1442 contains header and footer1443 behaves like appearance header and footer not enabled1444 does not contain header and footer1445 for service desk issues1446 thank you email1447 has the correct recipient1448 has the correct subject and body1449 uses service bot name by default1450 behaves like an unsubscribeable thread1451 has a List-Unsubscribe header in the correct format, and a body link1452 behaves like an unsubscribeable thread with incoming address without %{key}1453 has a List-Unsubscribe header in the correct format, and a body link1454 when custom outgoing name is set1455 uses custom name in "from" header1456 when custom outgoing name is empty1457 uses service bot name1458 new note email1459 has the correct recipient1460 uses author's name in "from" header1461 has the correct subject and body1462 behaves like an unsubscribeable thread1463 has a List-Unsubscribe header in the correct format, and a body link1464 behaves like an unsubscribeable thread with incoming address without %{key}1465 has a List-Unsubscribe header in the correct format, and a body link1466 for a group1467 group access requested1468 contains all the useful information1469 behaves like an email sent from GitLab1470 has the characteristics of an email sent from GitLab1471 behaves like an email sent to a user1472 is sent to user's global notification email address1473 with group notification email1474 is sent to user's group notification email1475 behaves like it should not have Gmail Actions links1476 is expected not to have body including "ViewAction"1477 behaves like a user cannot unsubscribe through footer link1478 does not have a List-Unsubscribe header or a body link1479 behaves like appearance header and footer enabled1480 contains header and footer1481 behaves like appearance header and footer not enabled1482 does not contain header and footer1483 group access denied1484 contains all the useful information1485 behaves like an email sent from GitLab1486 has the characteristics of an email sent from GitLab1487 behaves like an email sent to a user1488 is sent to user's global notification email address1489 with group notification email1490 is sent to user's group notification email1491 behaves like it should not have Gmail Actions links1492 is expected not to have body including "ViewAction"1493 behaves like a user cannot unsubscribe through footer link1494 does not have a List-Unsubscribe header or a body link1495 behaves like appearance header and footer enabled1496 contains header and footer1497 behaves like appearance header and footer not enabled1498 does not contain header and footer1499 when user can not read group1500 hides group name from subject and body1501 group access changed1502 contains all the useful information1503 behaves like an email sent from GitLab1504 has the characteristics of an email sent from GitLab1505 behaves like an email sent to a user1506 is sent to user's global notification email address1507 with group notification email1508 is sent to user's group notification email1509 behaves like it should not have Gmail Actions links1510 is expected not to have body including "ViewAction"1511 behaves like a user cannot unsubscribe through footer link1512 does not have a List-Unsubscribe header or a body link1513 behaves like appearance header and footer enabled1514 contains header and footer1515 behaves like appearance header and footer not enabled1516 does not contain header and footer1517 behaves like it requires a group1518 when given an deleted group1519 returns NullMail type message1520 invitations1521 behaves like an email sent from GitLab1522 has the characteristics of an email sent from GitLab1523 behaves like it should show Gmail Actions Join now link1524 is expected to have body including "Join now"1525 behaves like it should have Gmail Actions links1526 is expected to have body including "ViewAction"1527 behaves like a user cannot unsubscribe through footer link1528 does not have a List-Unsubscribe header or a body link1529 behaves like appearance header and footer enabled1530 contains header and footer1531 behaves like appearance header and footer not enabled1532 does not contain header and footer1533 behaves like it requires a group1534 when given an deleted group1535 returns NullMail type message1536 behaves like does not render a manage notifications link1537 is expected not to have body including "http://localhost/-/profile/notifications"1538 when there is an inviter1539 contains all the useful information1540 when there is no inviter1541 contains all the useful information1542 with tasks to be done present1543 contains the assigned tasks to be done1544 when there is no inviter1545 does not contain the assigned tasks to be done1546 group invitation reminders1547 not sending a reminder1548 member does not exist1549 behaves like no email is sent1550 does not send an email1551 member is not created by a user1552 behaves like no email is sent1553 does not send an email1554 member is a known user1555 behaves like no email is sent1556 does not send an email1557 the first reminder1558 contains all the useful information1559 behaves like an email sent from GitLab1560 has the characteristics of an email sent from GitLab1561 behaves like it should not have Gmail Actions links1562 is expected not to have body including "ViewAction"1563 behaves like a user cannot unsubscribe through footer link1564 does not have a List-Unsubscribe header or a body link1565 the second reminder1566 contains all the useful information1567 behaves like an email sent from GitLab1568 has the characteristics of an email sent from GitLab1569 behaves like it should not have Gmail Actions links1570 is expected not to have body including "ViewAction"1571 behaves like a user cannot unsubscribe through footer link1572 does not have a List-Unsubscribe header or a body link1573 the third reminder1574 contains all the useful information1575 behaves like an email sent from GitLab1576 has the characteristics of an email sent from GitLab1577 behaves like it should not have Gmail Actions links1578 is expected not to have body including "ViewAction"1579 behaves like a user cannot unsubscribe through footer link1580 does not have a List-Unsubscribe header or a body link1581 group invitation accepted1582 contains all the useful information1583 behaves like an email sent from GitLab1584 has the characteristics of an email sent from GitLab1585 behaves like it should not have Gmail Actions links1586 is expected not to have body including "ViewAction"1587 behaves like a user cannot unsubscribe through footer link1588 does not have a List-Unsubscribe header or a body link1589 behaves like appearance header and footer enabled1590 contains header and footer1591 behaves like appearance header and footer not enabled1592 does not contain header and footer1593 behaves like it requires a group1594 when given an deleted group1595 returns NullMail type message1596 group invitation declined1597 contains all the useful information1598 behaves like an email sent from GitLab1599 has the characteristics of an email sent from GitLab1600 behaves like it should not have Gmail Actions links1601 is expected not to have body including "ViewAction"1602 behaves like a user cannot unsubscribe through footer link1603 does not have a List-Unsubscribe header or a body link1604 behaves like appearance header and footer enabled1605 contains header and footer1606 behaves like appearance header and footer not enabled1607 does not contain header and footer1608 group expiration date updated1609 when expiration date is changed1610 behaves like an email sent from GitLab1611 has the characteristics of an email sent from GitLab1612 behaves like it should not have Gmail Actions links1613 is expected not to have body including "ViewAction"1614 behaves like a user cannot unsubscribe through footer link1615 does not have a List-Unsubscribe header or a body link1616 behaves like appearance header and footer enabled1617 contains header and footer1618 behaves like appearance header and footer not enabled1619 does not contain header and footer1620 when expiration date is one day away1621 contains all the useful information1622 when expiration date is more than one day away1623 contains all the useful information1624 when a group member is newly given an expiration date1625 contains all the useful information1626 when expiration date is removed1627 contains all the useful information1628 behaves like an email sent from GitLab1629 has the characteristics of an email sent from GitLab1630 behaves like it should not have Gmail Actions links1631 is expected not to have body including "ViewAction"1632 behaves like a user cannot unsubscribe through footer link1633 does not have a List-Unsubscribe header or a body link1634 behaves like appearance header and footer enabled1635 contains header and footer1636 behaves like appearance header and footer not enabled1637 does not contain header and footer1638 admin notification1639 is sent as the author1640 is sent to recipient1641 has the correct subject1642 includes unsubscribe link1643 confirmation if email changed1644 is sent to the new user1645 has the correct subject and body1646 behaves like an email sent from GitLab1647 has the characteristics of an email sent from GitLab1648 behaves like a user cannot unsubscribe through footer link1649 does not have a List-Unsubscribe header or a body link1650 email on push for a created branch1651 is sent as the author1652 has the correct subject and body1653 behaves like it should not have Gmail Actions links1654 is expected not to have body including "ViewAction"1655 behaves like a user cannot unsubscribe through footer link1656 does not have a List-Unsubscribe header or a body link1657 behaves like an email with X-GitLab headers containing project details1658 has X-GitLab-Project headers1659 behaves like an email that contains a header with author username1660 has X-GitLab-Author header containing author's username1661 behaves like appearance header and footer enabled1662 contains header and footer1663 behaves like appearance header and footer not enabled1664 does not contain header and footer1665 email on push for a created tag1666 is sent as the author1667 has the correct subject and body1668 behaves like it should not have Gmail Actions links1669 is expected not to have body including "ViewAction"1670 behaves like a user cannot unsubscribe through footer link1671 does not have a List-Unsubscribe header or a body link1672 behaves like an email with X-GitLab headers containing project details1673 has X-GitLab-Project headers1674 behaves like an email that contains a header with author username1675 has X-GitLab-Author header containing author's username1676 behaves like appearance header and footer enabled1677 contains header and footer1678 behaves like appearance header and footer not enabled1679 does not contain header and footer1680 email on push for a deleted branch1681 is sent as the author1682 has the correct subject1683 behaves like it should not have Gmail Actions links1684 is expected not to have body including "ViewAction"1685 behaves like a user cannot unsubscribe through footer link1686 does not have a List-Unsubscribe header or a body link1687 behaves like an email with X-GitLab headers containing project details1688 has X-GitLab-Project headers1689 behaves like an email that contains a header with author username1690 has X-GitLab-Author header containing author's username1691 behaves like appearance header and footer enabled1692 contains header and footer1693 behaves like appearance header and footer not enabled1694 does not contain header and footer1695 email on push for a deleted tag1696 is sent as the author1697 has the correct subject1698 behaves like it should not have Gmail Actions links1699 is expected not to have body including "ViewAction"1700 behaves like a user cannot unsubscribe through footer link1701 does not have a List-Unsubscribe header or a body link1702 behaves like an email with X-GitLab headers containing project details1703 has X-GitLab-Project headers1704 behaves like an email that contains a header with author username1705 has X-GitLab-Author header containing author's username1706 behaves like appearance header and footer enabled1707 contains header and footer1708 behaves like appearance header and footer not enabled1709 does not contain header and footer1710 email on push with multiple commits1711 is sent as the author1712 has the correct subject and body1713 behaves like it should not have Gmail Actions links1714 is expected not to have body including "ViewAction"1715 behaves like a user cannot unsubscribe through footer link1716 does not have a List-Unsubscribe header or a body link1717 behaves like an email with X-GitLab headers containing project details1718 has X-GitLab-Project headers1719 behaves like an email that contains a header with author username1720 has X-GitLab-Author header containing author's username1721 behaves like appearance header and footer enabled1722 contains header and footer1723 behaves like appearance header and footer not enabled1724 does not contain header and footer1725 when set to send from committer email if domain matches1726 when the committer email domain is within the GitLab domain1727 is sent from the committer email1728 when the committer email domain is not completely within the GitLab domain1729 is sent from the default email1730 when the committer email domain is outside the GitLab domain1731 is sent from the default email1732 email on push with a single commit1733 is sent as the author1734 has the correct subject and body1735 behaves like it should show Gmail Actions View Commit link1736 is expected to have body including "View Commit"1737 behaves like it should have Gmail Actions links1738 is expected to have body including "ViewAction"1739 behaves like a user cannot unsubscribe through footer link1740 does not have a List-Unsubscribe header or a body link1741 behaves like an email with X-GitLab headers containing project details1742 has X-GitLab-Project headers1743 behaves like an email that contains a header with author username1744 has X-GitLab-Author header containing author's username1745 behaves like appearance header and footer enabled1746 contains header and footer1747 behaves like appearance header and footer not enabled1748 does not contain header and footer1749 HTML emails setting1750 behaves like appearance header and footer enabled1751 contains header and footer1752 behaves like appearance header and footer not enabled1753 does not contain header and footer1754 when disabled1755 only sends the text template1756 when enabled1757 sends a multipart message1758 for personal snippet notes1759 has the correct subject1760 has the correct body1761 links to the personal snippet1762 behaves like a user cannot unsubscribe through footer link1763 does not have a List-Unsubscribe header or a body link1764 behaves like appearance header and footer enabled1765 contains header and footer1766 behaves like appearance header and footer not enabled1767 does not contain header and footer1768 merge request reviews1769 is sent to the given recipient as the author1770 contains the message from the notes of the review1771 contains review author name1772 has the correct subject and body1773 behaves like an answer to an existing thread with reply-by-email enabled1774 has X-GitLab-Project headers1775 has X-GitLab-*-ID header1776 has X-GitLab-*-IID header if model has iid defined1777 has X-GitLab-Project headers1778 has X-GitLab-*-ID header1779 has X-GitLab-*-IID header if model has iid defined1780 has the characteristics of a threaded reply1781 when reply-by-email is enabled with incoming address with %{key}1782 has a Reply-To header1783 when reply-by-email is enabled with incoming address without %{key}1784 has X-GitLab-Project headers1785 has X-GitLab-*-ID header1786 has X-GitLab-*-IID header if model has iid defined1787 has the characteristics of a threaded reply1788 has a Reply-To header1789 behaves like it should show Gmail Actions View Merge request link1790 is expected to have body including "View Merge request"1791 behaves like it should have Gmail Actions links1792 is expected to have body including "ViewAction"1793 behaves like an unsubscribeable thread1794 has a List-Unsubscribe header in the correct format, and a body link1795 behaves like an unsubscribeable thread with incoming address without %{key}1796 has a List-Unsubscribe header in the correct format, and a body link1797 when diff note1798 links to notes and discussions1799 includes only one link to the highlighted_diff_email1800 avoids N+1 cached queries when rendering html1801 avoids N+1 cached queries when rendering text1802 in product marketing1803 does not raise error1804Projects::MergeRequestsController1805 GET commit_change_content1806 renders commit_change_content template1807 GET show1808 with view param1809 saves the preferred diff view in a cookie1810 when merge request is unchecked1811 checks mergeability asynchronously1812 as html1813 sets the endpoint_metadata_url1814 renders merge request page1815 logs the view with Gitlab::Search::RecentMergeRequests1816 when diff files were cleaned1817 renders page when diff size is not persisted and diff_refs does not exist1818 when diff is missing1819 renders merge request page1820 that is invalid1821 renders merge request page1822 when project has moved1823 redirects from an old merge request correctly1824 redirects from an old merge request commits correctly1825 when user is setting notes filters1826 behaves like issuable notes filter1827 sets discussion filter1828 expires notes e-tag cache for issuable if filter changed1829 does not expires notes e-tag cache for issuable if filter did not change1830 does not set notes filter when database is in read-only mode1831 does not set notes filter when persist_filter param is false1832 returns only user comments1833 returns only activity notes1834 when filter is set to "only_comments"1835 does not merge label event notes1836 as json1837 with basic serializer param1838 renders basic MR entity as json1839 with widget serializer param1840 renders widget MR entity as json1841 when no serialiser was passed1842 renders widget MR entity as json1843 that is invalid1844 renders merge request page1845 as diff1846 triggers workhorse to serve the request1847 as patch1848 triggers workhorse to serve the request1849 GET index1850 behaves like issuables list meta-data1851 creates indexed meta-data object for issuable notes and votes count1852 avoids N+1 queries1853 searching1854 works when sorting by created_asc1855 works when sorting by created_at_asc1856 works when sorting by created_date1857 works when sorting by created_desc1858 works when sorting by created_at_desc1859 works when sorting by id_asc1860 works when sorting by id_desc1861 works when sorting by updated_asc1862 works when sorting by updated_at_asc1863 works when sorting by updated_desc1864 works when sorting by updated_at_desc1865 works when sorting by title_asc1866 works when sorting by title_desc1867 works when sorting by closest_future_date1868 works when sorting by closest_future_date_asc1869 works when sorting by due_date1870 works when sorting by due_date_asc1871 works when sorting by due_date_desc1872 works when sorting by relative_position1873 works when sorting by relative_position_asc1874 works when sorting by weight1875 works when sorting by weight_asc1876 works when sorting by weight_desc1877 works when sorting by popularity1878 works when sorting by priority1879 works when sorting by label_priority1880 when given empty collection1881 doesn't execute any queries with false conditions1882 behaves like set sort order from user preference1883 #set_sort_order_from_user_preference1884 when database is in read-only mode1885 does not update user preference1886 when database is not in read-only mode1887 updates user preference1888 when page param1889 redirects to last_page if page number is larger than number of pages1890 redirects to specified page1891 does not redirect to external sites when provided a host field1892 when filtering by opened state1893 with opened merge requests1894 lists those merge requests1895 with reopened merge requests1896 lists those merge requests1897 behaves like issuable list with anonymous search disabled1898 when disable_anonymous_search is enabled1899 shows a flash message1900 when search param is not given1901 does not show a flash message1902 when user is signed-in1903 does not show a flash message1904 when format is not HTML1905 does not show a flash message1906 when disable_anonymous_search is disabled1907 does not show a flash message1908 PUT update1909 changing the assignee1910 limits the attributes exposed on the assignee1911 when user does not have access to update issue1912 responds with 4041913 there is no source project1914 closes MR without errors1915 allows editing of a closed merge request1916 does not allow to update target branch closed merge request1917 behaves like update invalid issuable1918 when updating causes conflicts1919 renders edit when format is html1920 renders json error message when format is json1921 when updating an invalid issuable1922 renders edit when merge request is invalid1923 two merge requests with the same source branch1924 does not allow a closed merge request to be reopened if another one is open1925 POST merge1926 when user cannot access1927 returns 4041928 when the merge request is not mergeable1929 returns :failed1930 when the sha parameter does not match the source SHA1931 returns :sha_mismatch1932 when the sha parameter matches the source SHA1933 returns :success1934 starts the merge immediately with permitted params1935 when squash is passed as 11936 updates the squash attribute on the MR to true1937 when squash is passed as 01938 updates the squash attribute on the MR to false1939 when a squash commit message is passed1940 passes the same message to SquashService1941 when merge when pipeline succeeds option is passed1942 returns :merge_when_pipeline_succeeds1943 sets the MR to merge when the pipeline succeeds1944 when project.only_allow_merge_if_pipeline_succeeds? is true1945 returns :merge_when_pipeline_succeeds1946 and head pipeline is not the current one1947 returns :failed1948 when auto merge has not been enabled yet1949 calls AutoMergeService#execute1950 when auto merge has already been enabled1951 calls AutoMergeService#update1952 only_allow_merge_if_all_discussions_are_resolved? setting1953 when enabled1954 with unresolved discussion1955 returns :failed1956 with all discussions resolved1957 returns :success1958 when disabled1959 with unresolved discussion1960 returns :success1961 with all discussions resolved1962 returns :success1963 DELETE destroy1964 denies access to users unless they're admin or project owner1965 when the user is owner1966 deletes the merge request1967 prevents deletion if destroy_confirm is not set1968 prevents deletion in JSON format if destroy_confirm is not set1969 GET commits1970 renders the commits template to a string1971 GET pipelines1972 with "enabled" builds on a public project1973 for a project owner1974 responds with serialized pipelines1975 for an unassociated user1976 responds with no pipelines1977 with private builds on a public project1978 for a project owner1979 responds with serialized pipelines1980 for an unassociated user1981 responds with no pipelines1982 from a project fork1983 with private builds1984 for the target project member1985 does not respond with serialized pipelines1986 for the source project member1987 responds with serialized pipelines1988 with public builds1989 for the target project member1990 does not respond with serialized pipelines1991 for the source project member1992 responds with serialized pipelines1993 with pagination1994 paginates the result1995 GET context commits1996 returns the commits for context commits1997 GET exposed_artifacts1998 permissions on a public project with private CI/CD1999 while signed out2000 responds with a 4042001 while signed in as an unrelated user2002 responds with a 4042003 when pipeline has jobs with exposed artifacts2004 when fetching exposed artifacts is in progress2005 sends polling interval2006 returns 204 HTTP status2007 when fetching exposed artifacts is completed2008 returns exposed artifacts2009 when pipeline does not have jobs with exposed artifacts2010 returns no content2011 GET coverage_reports2012 permissions on a public project with private CI/CD2013 while signed out2014 responds with a 4042015 while signed in as an unrelated user2016 responds with a 4042017 when pipeline has jobs with coverage reports2018 when processing coverage reports is in progress2019 sends polling interval2020 returns 204 HTTP status2021 when processing coverage reports is completed2022 returns coverage reports2023 when user created corrupted coverage reports2024 does not send polling interval2025 returns 400 HTTP status2026 when pipeline does not have jobs with coverage reports2027 returns no content2028 GET codequality_mr_diff_reports2029 permissions on a public project with private CI/CD2030 while signed out2031 responds with a 4042032 while signed in as an unrelated user2033 responds with a 4042034 when pipeline has jobs with codequality mr diff report2035 when processing codequality mr diff report is in progress2036 sends polling interval2037 returns 204 HTTP status2038 when processing codequality mr diff report is completed2039 returns codequality mr diff report2040 GET terraform_reports2041 permissions on a public project with private CI/CD2042 while signed out2043 responds with a 4042044 while signed in as an unrelated user2045 responds with a 4042046 when pipeline has jobs with terraform reports2047 when processing terraform reports is in progress2048 sends polling interval2049 returns 204 HTTP status2050 when processing terraform reports is completed2051 returns terraform reports2052 when user created corrupted terraform reports2053 does not send polling interval2054 returns 400 HTTP status2055 when pipeline does not have jobs with terraform reports2056 returns error2057 GET test_reports2058 permissions on a public project with private CI/CD2059 while signed out2060 responds with a 4042061 while signed in as an unrelated user2062 responds with a 4042063 when comparison is being processed2064 sends polling interval2065 returns 204 HTTP status2066 when comparison is done2067 does not send polling interval2068 returns 200 HTTP status2069 when user created corrupted test reports2070 does not send polling interval2071 returns 400 HTTP status2072 GET accessibility_reports2073 permissions on a public project with private CI/CD2074 while signed out2075 responds with a 4042076 while signed in as an unrelated user2077 responds with a 4042078 when pipeline has jobs with accessibility reports2079 when processing accessibility reports is in progress2080 sends polling interval2081 returns 204 HTTP status2082 when processing accessibility reports is completed2083 returns accessibility reports2084 when user created corrupted accessibility reports2085 does not send polling interval2086 returns 400 HTTP status2087 GET codequality_reports2088 permissions on a public project with private CI/CD2089 while signed out2090 responds with a 4042091 while signed in as an unrelated user2092 responds with a 4042093 when pipeline has jobs with codequality reports2094 when processing codequality reports is in progress2095 sends polling interval2096 returns 204 HTTP status2097 when processing codequality reports is completed2098 returns codequality reports2099 when pipeline has job without a codequality report2100 returns a 4002101 POST remove_wip2102 removes the wip status2103 renders MergeRequest as JSON2104 POST cancel_auto_merge2105 calls AutoMergeService2106 is expected to respond with numeric status code success2107 renders MergeRequest as JSON2108 POST assign_related_issues2109 shows a flash message on success2110 correctly pluralizes flash message on success2111 calls MergeRequests::AssignIssuesService2112 is skipped when not signed in2113 GET ci_environments_status2114 uses the explicitly linked deployments2115 the environment is from a forked project2116 links to the environment on that project2117 keeps queries in check2118 has no N+1 SQL issues for environments2119 when environment_target is 'merge_commit'2120 returns nothing2121 when is merged2122 returns the environment on the source project2123 when a merge request has multiple environments with deployments2124 exposes multiple environment statuses2125 when route map is not present in the project2126 does not have N+1 Gitaly requests for environments2127 when there is route map present in a project2128 does not have N+1 Gitaly requests for diff files2129 GET pipeline_status.json2130 when head_pipeline exists2131 returns a detailed head_pipeline status in json2132 with project member visibility on a public project2133 returns pipeline data to project members2134 returns blank OK response to non-project-members2135 when head_pipeline does not exist2136 returns blank OK response2137 POST #rebase2138 successfully2139 enqeues a RebaseWorker2140 with NOWAIT lock2141 returns a 4092142 when source branch is protected from force push2143 returns 4042144 with a forked project2145 user cannot push to source branch2146 returns 4042147 user can push to source branch2148 returns 2002149 GET discussions2150 when authenticated2151 returns 2002152 highlight preloading2153 with commit diff notes2154 preloads notes diffs highlights2155 with diff notes2156 preloads notes diffs highlights2157 does not preload highlights when diff note is resolved2159 behaves like discussions provider2160 returns the expected discussions2161 GET edit2162 responds successfully2163 assigns the noteable to make sure autocompletes work2164 POST export_csv2165 redirects to the merge request index2166 enqueues an IssuableExportCsvWorker worker2167API::ComposerPackages2168 GET /api/v4/group/:id/-/packages/composer/packages2169 with valid project2170 with a public group2171 with basic auth2172 project_visibility_level: "PUBLIC", user_role: :developer, member: true, user_token: true, include_package: :include_package2173 behaves like Composer package index2174 behaves like Composer package index with version2175 returns the package index2176 with version 22177 behaves like Composer package index with version2178 returns the package index2179 project_visibility_level: "PUBLIC", user_role: :developer, member: false, user_token: true, include_package: :include_package2180 behaves like Composer package index2181 behaves like Composer package index with version2182 returns the package index2183 with version 22184 behaves like Composer package index with version2185 returns the package index2186 project_visibility_level: "PUBLIC", user_role: :guest, member: true, user_token: true, include_package: :include_package2187 behaves like Composer package index2188 behaves like Composer package index with version2189 returns the package index2190 with version 22191 behaves like Composer package index with version2192 returns the package index2193 project_visibility_level: "PUBLIC", user_role: :guest, member: false, user_token: true, include_package: :include_package2194 behaves like Composer package index2195 behaves like Composer package index with version2196 returns the package index2197 with version 22198 behaves like Composer package index with version2199 returns the package index2200 project_visibility_level: "PUBLIC", user_role: :anonymous, member: false, user_token: true, include_package: :include_package2201 behaves like Composer package index2202 behaves like Composer package index with version2203 returns the package index2204 with version 22205 behaves like Composer package index with version2206 returns the package index2207 project_visibility_level: "PRIVATE", user_role: :developer, member: true, user_token: true, include_package: :include_package2208 behaves like Composer package index2209 behaves like Composer package index with version2210 returns the package index2211 with version 22212 behaves like Composer package index with version2213 returns the package index2214 project_visibility_level: "PRIVATE", user_role: :developer, member: false, user_token: true, include_package: :does_not_include_package2215 behaves like Composer package index2216 behaves like Composer package index with version2217 returns the package index2218 with version 22219 behaves like Composer package index with version2220 returns the package index2221 project_visibility_level: "PRIVATE", user_role: :guest, member: true, user_token: true, include_package: :does_not_include_package2222 behaves like Composer package index2223 behaves like Composer package index with version2224 returns the package index2225 with version 22226 behaves like Composer package index with version2227 returns the package index2228 project_visibility_level: "PRIVATE", user_role: :guest, member: false, user_token: true, include_package: :does_not_include_package2229 behaves like Composer package index2230 behaves like Composer package index with version2231 returns the package index2232 with version 22233 behaves like Composer package index with version2234 returns the package index2235 project_visibility_level: "PRIVATE", user_role: :anonymous, member: false, user_token: true, include_package: :does_not_include_package2236 behaves like Composer package index2237 behaves like Composer package index with version2238 returns the package index2239 with version 22240 behaves like Composer package index with version2241 returns the package index2242 project_visibility_level: "PRIVATE", user_role: :guest, member: false, user_token: false, include_package: :does_not_include_package2243 behaves like Composer package index2244 behaves like Composer package index with version2245 returns the package index2246 with version 22247 behaves like Composer package index with version2248 returns the package index2249 project_visibility_level: "PRIVATE", user_role: :guest, member: true, user_token: false, include_package: :does_not_include_package2250 behaves like Composer package index2251 behaves like Composer package index with version2252 returns the package index2253 with version 22254 behaves like Composer package index with version2255 returns the package index2256 project_visibility_level: "PRIVATE", user_role: :developer, member: false, user_token: false, include_package: :does_not_include_package2257 behaves like Composer package index2258 behaves like Composer package index with version2259 returns the package index2260 with version 22261 behaves like Composer package index with version2262 returns the package index2263 project_visibility_level: "PRIVATE", user_role: :developer, member: true, user_token: false, include_package: :does_not_include_package2264 behaves like Composer package index2265 behaves like Composer package index with version2266 returns the package index2267 with version 22268 behaves like Composer package index with version2269 returns the package index2270 project_visibility_level: "PUBLIC", user_role: :developer, member: true, user_token: false, include_package: :include_package2271 behaves like Composer package index2272 behaves like Composer package index with version2273 returns the package index2274 with version 22275 behaves like Composer package index with version2276 returns the package index2277 project_visibility_level: "PUBLIC", user_role: :guest, member: true, user_token: false, include_package: :include_package2278 behaves like Composer package index2279 behaves like Composer package index with version2280 returns the package index2281 with version 22282 behaves like Composer package index with version2283 returns the package index2284 project_visibility_level: "PUBLIC", user_role: :developer, member: false, user_token: false, include_package: :include_package2285 behaves like Composer package index2286 behaves like Composer package index with version2287 returns the package index2288 with version 22289 behaves like Composer package index with version2290 returns the package index2291 project_visibility_level: "PUBLIC", user_role: :guest, member: false, user_token: false, include_package: :include_package2292 behaves like Composer package index2293 behaves like Composer package index with version2294 returns the package index2295 with version 22296 behaves like Composer package index with version2297 returns the package index2298 with private token header auth2299 project_visibility_level: "PUBLIC", user_role: :developer, member: true, user_token: true, expected_status: :success, include_package: :include_package2300 behaves like Composer package index2301 behaves like Composer package index with version2302 returns the package index2303 with version 22304 behaves like Composer package index with version2305 returns the package index2306 project_visibility_level: "PUBLIC", user_role: :developer, member: false, user_token: true, expected_status: :success, include_package: :include_package2307 behaves like Composer package index2308 behaves like Composer package index with version2309 returns the package index2310 with version 22311 behaves like Composer package index with version2312 returns the package index2313 project_visibility_level: "PUBLIC", user_role: :guest, member: true, user_token: true, expected_status: :success, include_package: :include_package2314 behaves like Composer package index2315 behaves like Composer package index with version2316 returns the package index2317 with version 22318 behaves like Composer package index with version2319 returns the package index2320 project_visibility_level: "PUBLIC", user_role: :guest, member: false, user_token: true, expected_status: :success, include_package: :include_package2321 behaves like Composer package index2322 behaves like Composer package index with version2323 returns the package index2324 with version 22325 behaves like Composer package index with version2326 returns the package index2327 project_visibility_level: "PUBLIC", user_role: :anonymous, member: false, user_token: true, expected_status: :success, include_package: :include_package2328 behaves like Composer package index2329 behaves like Composer package index with version2330 returns the package index2331 with version 22332 behaves like Composer package index with version2333 returns the package index2334 project_visibility_level: "PRIVATE", user_role: :developer, member: true, user_token: true, expected_status: :success, include_package: :include_package2335 behaves like Composer package index2336 behaves like Composer package index with version2337 returns the package index2338 with version 22339 behaves like Composer package index with version2340 returns the package index2341 project_visibility_level: "PRIVATE", user_role: :developer, member: false, user_token: true, expected_status: :success, include_package: :does_not_include_package2342 behaves like Composer package index2343 behaves like Composer package index with version2344 returns the package index2345 with version 22346 behaves like Composer package index with version2347 returns the package index2348 project_visibility_level: "PRIVATE", user_role: :guest, member: true, user_token: true, expected_status: :success, include_package: :does_not_include_package2349 behaves like Composer package index2350 behaves like Composer package index with version2351 returns the package index2352 with version 22353 behaves like Composer package index with version2354 returns the package index2355 project_visibility_level: "PRIVATE", user_role: :guest, member: false, user_token: true, expected_status: :success, include_package: :does_not_include_package2356 behaves like Composer package index2357 behaves like Composer package index with version2358 returns the package index2359 with version 22360 behaves like Composer package index with version2361 returns the package index2362 project_visibility_level: "PRIVATE", user_role: :anonymous, member: false, user_token: true, expected_status: :success, include_package: :does_not_include_package2363 behaves like Composer package index2364 behaves like Composer package index with version2365 returns the package index2366 with version 22367 behaves like Composer package index with version2368 returns the package index2369 project_visibility_level: "PRIVATE", user_role: :guest, member: false, user_token: false, expected_status: :unauthorized, include_package: nil2370 behaves like Composer package index2371 behaves like Composer package index with version2372 returns the package index2373 with version 22374 behaves like Composer package index with version2375 returns the package index2376 project_visibility_level: "PRIVATE", user_role: :guest, member: true, user_token: false, expected_status: :unauthorized, include_package: nil2377 behaves like Composer package index2378 behaves like Composer package index with version2379 returns the package index2380 with version 22381 behaves like Composer package index with version2382 returns the package index2383 project_visibility_level: "PRIVATE", user_role: :developer, member: false, user_token: false, expected_status: :unauthorized, include_package: nil2384 behaves like Composer package index2385 behaves like Composer package index with version2386 returns the package index2387 with version 22388 behaves like Composer package index with version2389 returns the package index2390 project_visibility_level: "PRIVATE", user_role: :developer, member: true, user_token: false, expected_status: :unauthorized, include_package: nil2391 behaves like Composer package index2392 behaves like Composer package index with version2393 returns the package index2394 with version 22395 behaves like Composer package index with version2396 returns the package index2397 project_visibility_level: "PUBLIC", user_role: :developer, member: true, user_token: false, expected_status: :unauthorized, include_package: nil2398 behaves like Composer package index2399 behaves like Composer package index with version2400 returns the package index2401 with version 22402 behaves like Composer package index with version2403 returns the package index2404 project_visibility_level: "PUBLIC", user_role: :guest, member: true, user_token: false, expected_status: :unauthorized, include_package: nil2405 behaves like Composer package index2406 behaves like Composer package index with version2407 returns the package index2408 with version 22409 behaves like Composer package index with version2410 returns the package index2411 project_visibility_level: "PUBLIC", user_role: :developer, member: false, user_token: false, expected_status: :unauthorized, include_package: nil2412 behaves like Composer package index2413 behaves like Composer package index with version2414 returns the package index2415 with version 22416 behaves like Composer package index with version2417 returns the package index2418 project_visibility_level: "PUBLIC", user_role: :guest, member: false, user_token: false, expected_status: :unauthorized, include_package: nil2419 behaves like Composer package index2420 behaves like Composer package index with version2421 returns the package index2422 with version 22423 behaves like Composer package index with version2424 returns the package index2425 with a private group2426 behaves like Composer access with deploy tokens2427 group deploy token2428 behaves like a deploy token for Composer GET requests2429 with deploy token headers2430 valid token2431 behaves like returning response status2432 returns success2433 invalid token2434 behaves like returning response status2435 returns not_found2436 project deploy token2437 behaves like a deploy token for Composer GET requests2438 with deploy token headers2439 valid token2440 behaves like returning response status2441 returns success2442 invalid token2443 behaves like returning response status2444 returns not_found2445 with access to the api2446 project_visibility_level: "PRIVATE", user_role: :developer, member: true, user_token: true, include_package: :include_package2447 behaves like Composer package index2448 behaves like Composer package index with version2449 returns the package index2450 with version 22451 behaves like Composer package index with version2452 returns the package index2453 project_visibility_level: "PRIVATE", user_role: :guest, member: true, user_token: true, include_package: :does_not_include_package2454 behaves like Composer package index2455 behaves like Composer package index with version2456 returns the package index2457 with version 22458 behaves like Composer package index with version2459 returns the package index2460 without access to the api2461 project_visibility_level: "PRIVATE", user_role: :developer, member: true, user_token: false2462 behaves like process Composer api request2463 for user type developer2464 behaves like returning response status2465 returns not_found2466 project_visibility_level: "PRIVATE", user_role: :developer, member: false, user_token: true2467 behaves like process Composer api request2468 for user type developer2469 behaves like returning response status2470 returns not_found2471 project_visibility_level: "PRIVATE", user_role: :developer, member: false, user_token: false2472 behaves like process Composer api request2473 for user type developer2474 behaves like returning response status2475 returns not_found2476 project_visibility_level: "PRIVATE", user_role: :guest, member: true, user_token: false2477 behaves like process Composer api request2478 for user type guest2479 behaves like returning response status2480 returns not_found2481 project_visibility_level: "PRIVATE", user_role: :guest, member: false, user_token: true2482 behaves like process Composer api request2483 for user type guest2484 behaves like returning response status2485 returns not_found2486 project_visibility_level: "PRIVATE", user_role: :guest, member: false, user_token: false2487 behaves like process Composer api request2488 for user type guest2489 behaves like returning response status2490 returns not_found2491 project_visibility_level: "PRIVATE", user_role: :anonymous, member: false, user_token: true2492 behaves like process Composer api request2493 for user type anonymous2494 behaves like returning response status2495 returns not_found2496 behaves like rejects Composer access with unknown group id2497 with an unknown group2498 as anonymous2499 behaves like process Composer api request2500 for user type anonymous2501 behaves like returning response status2502 returns not_found2503 as authenticated user2504 behaves like process Composer api request2505 for user type anonymous2506 behaves like returning response status2507 returns not_found2508 GET /api/v4/group/:id/-/packages/composer/p/:sha.json2509 with valid project2510 project_visibility_level: "PUBLIC", user_role: :developer, member: true, user_token: true, shared_examples_name: "Composer provider index", expected_status: :success2511 behaves like Composer provider index2512 returns the package index2513 project_visibility_level: "PUBLIC", user_role: :developer, member: true, user_token: false, shared_examples_name: "process Composer api request", expected_status: :unauthorized2514 behaves like process Composer api request2515 for user type developer2516 behaves like returning response status2517 returns unauthorized2518 project_visibility_level: "PUBLIC", user_role: :developer, member: false, user_token: true, shared_examples_name: "Composer provider index", expected_status: :success2519 behaves like Composer provider index2520 returns the package index2521 project_visibility_level: "PUBLIC", user_role: :developer, member: false, user_token: false, shared_examples_name: "process Composer api request", expected_status: :unauthorized2522 behaves like process Composer api request2523 for user type developer2524 behaves like returning response status2525 returns unauthorized2526 project_visibility_level: "PUBLIC", user_role: :guest, member: true, user_token: true, shared_examples_name: "Composer provider index", expected_status: :success2527 behaves like Composer provider index2528 returns the package index2529 project_visibility_level: "PUBLIC", user_role: :guest, member: true, user_token: false, shared_examples_name: "process Composer api request", expected_status: :unauthorized2530 behaves like process Composer api request2531 for user type guest2532 behaves like returning response status2533 returns unauthorized2534 project_visibility_level: "PUBLIC", user_role: :guest, member: false, user_token: true, shared_examples_name: "Composer provider index", expected_status: :success2535 behaves like Composer provider index2536 returns the package index2537 project_visibility_level: "PUBLIC", user_role: :guest, member: false, user_token: false, shared_examples_name: "process Composer api request", expected_status: :unauthorized2538 behaves like process Composer api request2539 for user type guest2540 behaves like returning response status2541 returns unauthorized2542 project_visibility_level: "PUBLIC", user_role: :anonymous, member: false, user_token: true, shared_examples_name: "Composer provider index", expected_status: :success2543 behaves like Composer provider index2544 returns the package index2545 project_visibility_level: "PRIVATE", user_role: :developer, member: true, user_token: true, shared_examples_name: "Composer provider index", expected_status: :success2546 behaves like Composer provider index2547 returns the package index2548 project_visibility_level: "PRIVATE", user_role: :developer, member: true, user_token: false, shared_examples_name: "process Composer api request", expected_status: :unauthorized2549 behaves like process Composer api request2550 for user type developer2551 behaves like returning response status2552 returns unauthorized2553 project_visibility_level: "PRIVATE", user_role: :developer, member: false, user_token: true, shared_examples_name: "process Composer api request", expected_status: :not_found2554 behaves like process Composer api request2555 for user type developer2556 behaves like returning response status2557 returns not_found2558 project_visibility_level: "PRIVATE", user_role: :developer, member: false, user_token: false, shared_examples_name: "process Composer api request", expected_status: :unauthorized2559 behaves like process Composer api request2560 for user type developer2561 behaves like returning response status2562 returns unauthorized2563 project_visibility_level: "PRIVATE", user_role: :guest, member: true, user_token: true, shared_examples_name: "Composer empty provider index", expected_status: :success2564 behaves like Composer empty provider index2565 returns the package index2566 project_visibility_level: "PRIVATE", user_role: :guest, member: true, user_token: false, shared_examples_name: "process Composer api request", expected_status: :unauthorized2567 behaves like process Composer api request2568 for user type guest2569 behaves like returning response status2570 returns unauthorized2571 project_visibility_level: "PRIVATE", user_role: :guest, member: false, user_token: true, shared_examples_name: "process Composer api request", expected_status: :not_found2572 behaves like process Composer api request2573 for user type guest2574 behaves like returning response status2575 returns not_found2576 project_visibility_level: "PRIVATE", user_role: :guest, member: false, user_token: false, shared_examples_name: "process Composer api request", expected_status: :unauthorized2577 behaves like process Composer api request2578 for user type guest2579 behaves like returning response status2580 returns unauthorized2581 project_visibility_level: "PRIVATE", user_role: :anonymous, member: false, user_token: true, shared_examples_name: "process Composer api request", expected_status: :not_found2582 behaves like process Composer api request2583 for user type anonymous2584 behaves like returning response status2585 returns not_found2586 behaves like Composer access with deploy tokens2587 group deploy token2588 behaves like a deploy token for Composer GET requests2589 with deploy token headers2590 valid token2591 behaves like returning response status2592 returns success2593 invalid token2594 behaves like returning response status2595 returns not_found2596 project deploy token2597 behaves like a deploy token for Composer GET requests2598 with deploy token headers2599 valid token2600 behaves like returning response status2601 returns success2602 invalid token2603 behaves like returning response status2604 returns not_found2605 behaves like rejects Composer access with unknown group id2606 with an unknown group2607 as anonymous2608 behaves like process Composer api request2609 for user type anonymous2610 behaves like returning response status2611 returns not_found2612 as authenticated user2613 behaves like process Composer api request2614 for user type anonymous2615 behaves like returning response status2616 returns not_found2617 GET /api/v4/group/:id/-/packages/composer/*package_name.json2618 with no packages2619 behaves like returning response status2620 returns not_found2621 with valid project2622 project_visibility_level: "PUBLIC", user_role: :developer, member: true, user_token: true, shared_examples_name: "Composer package api request", expected_status: :success2623 behaves like Composer package api request2624 returns the package index2625 project_visibility_level: "PUBLIC", user_role: :developer, member: true, user_token: false, shared_examples_name: "process Composer api request", expected_status: :unauthorized2626 behaves like process Composer api request2627 for user type developer2628 behaves like returning response status2629 returns unauthorized2630 project_visibility_level: "PUBLIC", user_role: :developer, member: false, user_token: true, shared_examples_name: "Composer package api request", expected_status: :success2631 behaves like Composer package api request2632 returns the package index2633 project_visibility_level: "PUBLIC", user_role: :developer, member: false, user_token: false, shared_examples_name: "process Composer api request", expected_status: :unauthorized2634 behaves like process Composer api request2635 for user type developer2636 behaves like returning response status2637 returns unauthorized2638 project_visibility_level: "PUBLIC", user_role: :guest, member: true, user_token: true, shared_examples_name: "Composer package api request", expected_status: :success2639 behaves like Composer package api request2640 returns the package index2641 project_visibility_level: "PUBLIC", user_role: :guest, member: true, user_token: false, shared_examples_name: "process Composer api request", expected_status: :unauthorized2642 behaves like process Composer api request2643 for user type guest2644 behaves like returning response status2645 returns unauthorized2646 project_visibility_level: "PUBLIC", user_role: :guest, member: false, user_token: true, shared_examples_name: "Composer package api request", expected_status: :success2647 behaves like Composer package api request2648 returns the package index2649 project_visibility_level: "PUBLIC", user_role: :guest, member: false, user_token: false, shared_examples_name: "process Composer api request", expected_status: :unauthorized2650 behaves like process Composer api request2651 for user type guest2652 behaves like returning response status2653 returns unauthorized2654 project_visibility_level: "PUBLIC", user_role: :anonymous, member: false, user_token: true, shared_examples_name: "Composer package api request", expected_status: :success2655 behaves like Composer package api request2656 returns the package index2657 project_visibility_level: "PRIVATE", user_role: :developer, member: true, user_token: true, shared_examples_name: "Composer package api request", expected_status: :success2658 behaves like Composer package api request2659 returns the package index2660 project_visibility_level: "PRIVATE", user_role: :developer, member: true, user_token: false, shared_examples_name: "process Composer api request", expected_status: :unauthorized2661 behaves like process Composer api request2662 for user type developer2663 behaves like returning response status2664 returns unauthorized2665 project_visibility_level: "PRIVATE", user_role: :developer, member: false, user_token: true, shared_examples_name: "process Composer api request", expected_status: :not_found2666 behaves like process Composer api request2667 for user type developer2668 behaves like returning response status2669 returns not_found2670 project_visibility_level: "PRIVATE", user_role: :developer, member: false, user_token: false, shared_examples_name: "process Composer api request", expected_status: :unauthorized2671 behaves like process Composer api request2672 for user type developer2673 behaves like returning response status2674 returns unauthorized2675 project_visibility_level: "PRIVATE", user_role: :guest, member: true, user_token: true, shared_examples_name: "process Composer api request", expected_status: :not_found2676 behaves like process Composer api request2677 for user type guest2678 behaves like returning response status2679 returns not_found2680 project_visibility_level: "PRIVATE", user_role: :guest, member: true, user_token: false, shared_examples_name: "process Composer api request", expected_status: :unauthorized2681 behaves like process Composer api request2682 for user type guest2683 behaves like returning response status2684 returns unauthorized2685 project_visibility_level: "PRIVATE", user_role: :guest, member: false, user_token: true, shared_examples_name: "process Composer api request", expected_status: :not_found2686 behaves like process Composer api request2687 for user type guest2688 behaves like returning response status2689 returns not_found2690 project_visibility_level: "PRIVATE", user_role: :guest, member: false, user_token: false, shared_examples_name: "process Composer api request", expected_status: :unauthorized2691 behaves like process Composer api request2692 for user type guest2693 behaves like returning response status2694 returns unauthorized2695 project_visibility_level: "PRIVATE", user_role: :anonymous, member: false, user_token: true, shared_examples_name: "process Composer api request", expected_status: :not_found2696 behaves like process Composer api request2697 for user type anonymous2698 behaves like returning response status2699 returns not_found2700 without a sha2701 behaves like process Composer api request2702 for user type developer2703 behaves like returning response status2704 returns not_found2705 behaves like Composer access with deploy tokens2706 group deploy token2707 behaves like a deploy token for Composer GET requests2708 with deploy token headers2709 valid token2710 behaves like returning response status2711 returns success2712 invalid token2713 behaves like returning response status2714 returns not_found2715 project deploy token2716 behaves like a deploy token for Composer GET requests2717 with deploy token headers2718 valid token2719 behaves like returning response status2720 returns success2721 invalid token2722 behaves like returning response status2723 returns not_found2724 behaves like rejects Composer access with unknown group id2725 with an unknown group2726 as anonymous2727 behaves like process Composer api request2728 for user type anonymous2729 behaves like returning response status2730 returns not_found2731 as authenticated user2732 behaves like process Composer api request2733 for user type anonymous2734 behaves like returning response status2735 returns not_found2736 GET /api/v4/group/:id/-/packages/composer/p2/*package_name.json2737 with no packages2738 behaves like returning response status2739 returns not_found2740 with valid project2741 project_visibility_level: "PUBLIC", user_role: :developer, member: true, user_token: true, shared_examples_name: "Composer package api request", expected_status: :success2742 behaves like Composer package api request2743 returns the package index2744 project_visibility_level: "PUBLIC", user_role: :developer, member: true, user_token: false, shared_examples_name: "process Composer api request", expected_status: :unauthorized2745 behaves like process Composer api request2746 for user type developer2747 behaves like returning response status2748 returns unauthorized2749 project_visibility_level: "PUBLIC", user_role: :developer, member: false, user_token: true, shared_examples_name: "Composer package api request", expected_status: :success2750 behaves like Composer package api request2751 returns the package index2752 project_visibility_level: "PUBLIC", user_role: :developer, member: false, user_token: false, shared_examples_name: "process Composer api request", expected_status: :unauthorized2753 behaves like process Composer api request2754 for user type developer2755 behaves like returning response status2756 returns unauthorized2757 project_visibility_level: "PUBLIC", user_role: :guest, member: true, user_token: true, shared_examples_name: "Composer package api request", expected_status: :success2758 behaves like Composer package api request2759 returns the package index2760 project_visibility_level: "PUBLIC", user_role: :guest, member: true, user_token: false, shared_examples_name: "process Composer api request", expected_status: :unauthorized2761 behaves like process Composer api request2762 for user type guest2763 behaves like returning response status2764 returns unauthorized2765 project_visibility_level: "PUBLIC", user_role: :guest, member: false, user_token: true, shared_examples_name: "Composer package api request", expected_status: :success2766 behaves like Composer package api request2767 returns the package index2768 project_visibility_level: "PUBLIC", user_role: :guest, member: false, user_token: false, shared_examples_name: "process Composer api request", expected_status: :unauthorized2769 behaves like process Composer api request2770 for user type guest2771 behaves like returning response status2772 returns unauthorized2773 project_visibility_level: "PUBLIC", user_role: :anonymous, member: false, user_token: true, shared_examples_name: "Composer package api request", expected_status: :success2774 behaves like Composer package api request2775 returns the package index2776 project_visibility_level: "PRIVATE", user_role: :developer, member: true, user_token: true, shared_examples_name: "Composer package api request", expected_status: :success2777 behaves like Composer package api request2778 returns the package index2779 project_visibility_level: "PRIVATE", user_role: :developer, member: true, user_token: false, shared_examples_name: "process Composer api request", expected_status: :unauthorized2780 behaves like process Composer api request2781 for user type developer2782 behaves like returning response status2783 returns unauthorized2784 project_visibility_level: "PRIVATE", user_role: :developer, member: false, user_token: true, shared_examples_name: "process Composer api request", expected_status: :not_found2785 behaves like process Composer api request2786 for user type developer2787 behaves like returning response status2788 returns not_found2789 project_visibility_level: "PRIVATE", user_role: :developer, member: false, user_token: false, shared_examples_name: "process Composer api request", expected_status: :unauthorized2790 behaves like process Composer api request2791 for user type developer2792 behaves like returning response status2793 returns unauthorized2794 project_visibility_level: "PRIVATE", user_role: :guest, member: true, user_token: true, shared_examples_name: "process Composer api request", expected_status: :not_found2795 behaves like process Composer api request2796 for user type guest2797 behaves like returning response status2798 returns not_found2799 project_visibility_level: "PRIVATE", user_role: :guest, member: true, user_token: false, shared_examples_name: "process Composer api request", expected_status: :unauthorized2800 behaves like process Composer api request2801 for user type guest2802 behaves like returning response status2803 returns unauthorized2804 project_visibility_level: "PRIVATE", user_role: :guest, member: false, user_token: true, shared_examples_name: "process Composer api request", expected_status: :not_found2805 behaves like process Composer api request2806 for user type guest2807 behaves like returning response status2808 returns not_found2809 project_visibility_level: "PRIVATE", user_role: :guest, member: false, user_token: false, shared_examples_name: "process Composer api request", expected_status: :unauthorized2810 behaves like process Composer api request2811 for user type guest2812 behaves like returning response status2813 returns unauthorized2814 project_visibility_level: "PRIVATE", user_role: :anonymous, member: false, user_token: true, shared_examples_name: "process Composer api request", expected_status: :not_found2815 behaves like process Composer api request2816 for user type anonymous2817 behaves like returning response status2818 returns not_found2819 behaves like Composer access with deploy tokens2820 group deploy token2821 behaves like a deploy token for Composer GET requests2822 with deploy token headers2823 valid token2824 behaves like returning response status2825 returns success2826 invalid token2827 behaves like returning response status2828 returns not_found2829 project deploy token2830 behaves like a deploy token for Composer GET requests2831 with deploy token headers2832 valid token2833 behaves like returning response status2834 returns success2835 invalid token2836 behaves like returning response status2837 returns not_found2838 behaves like rejects Composer access with unknown group id2839 with an unknown group2840 as anonymous2841 behaves like process Composer api request2842 for user type anonymous2843 behaves like returning response status2844 returns not_found2845 as authenticated user2846 behaves like process Composer api request2847 for user type anonymous2848 behaves like returning response status2849 returns not_found2850 POST /api/v4/projects/:id/packages/composer2851 with existing package2852 does not create a new package2853 marked as pending_destruction2854 does create a new package2855 with no tag or branch params2856 behaves like process Composer api request2857 for user type developer2858 behaves like returning response status2859 returns bad_request2860 with a tag2861 with an existing branch2862 behaves like composer package publish2863 with valid project2864 project_visibility_level: "PUBLIC", user_role: :developer, member: true, user_token: true, shared_examples_name: "Composer package creation", expected_status: :created2865 behaves like Composer package creation2866 for user type developer2867 creates package files2868 behaves like a package tracking event2869 creates a gitlab tracking event push_package2870 when package creation fails2871 behaves like not a package tracking event2872 does not create a gitlab tracking event2873 project_visibility_level: "PUBLIC", user_role: :developer, member: true, user_token: false, shared_examples_name: "process Composer api request", expected_status: :unauthorized2874 behaves like process Composer api request2875 for user type developer2876 behaves like returning response status2877 returns unauthorized2878 project_visibility_level: "PUBLIC", user_role: :developer, member: false, user_token: true, shared_examples_name: "process Composer api request", expected_status: :forbidden2879 behaves like process Composer api request2880 for user type developer2881 behaves like returning response status2882 returns forbidden2883 project_visibility_level: "PUBLIC", user_role: :developer, member: false, user_token: false, shared_examples_name: "process Composer api request", expected_status: :unauthorized2884 behaves like process Composer api request2885 for user type developer2886 behaves like returning response status2887 returns unauthorized2888 project_visibility_level: "PUBLIC", user_role: :guest, member: true, user_token: true, shared_examples_name: "process Composer api request", expected_status: :forbidden2889 behaves like process Composer api request2890 for user type guest2891 behaves like returning response status2892 returns forbidden2893 project_visibility_level: "PUBLIC", user_role: :guest, member: true, user_token: false, shared_examples_name: "process Composer api request", expected_status: :unauthorized2894 behaves like process Composer api request2895 for user type guest2896 behaves like returning response status2897 returns unauthorized2898 project_visibility_level: "PUBLIC", user_role: :guest, member: false, user_token: true, shared_examples_name: "process Composer api request", expected_status: :forbidden2899 behaves like process Composer api request2900 for user type guest2901 behaves like returning response status2902 returns forbidden2903 project_visibility_level: "PUBLIC", user_role: :guest, member: false, user_token: false, shared_examples_name: "process Composer api request", expected_status: :unauthorized2904 behaves like process Composer api request2905 for user type guest2906 behaves like returning response status2907 returns unauthorized2908 project_visibility_level: "PUBLIC", user_role: :anonymous, member: false, user_token: true, shared_examples_name: "process Composer api request", expected_status: :unauthorized2909 behaves like process Composer api request2910 for user type anonymous2911 behaves like returning response status2912 returns unauthorized2913 project_visibility_level: "PRIVATE", user_role: :developer, member: true, user_token: true, shared_examples_name: "Composer package creation", expected_status: :created2914 behaves like Composer package creation2915 for user type developer2916 creates package files2917 behaves like a package tracking event2918 creates a gitlab tracking event push_package2919 when package creation fails2920 behaves like not a package tracking event2921 does not create a gitlab tracking event2922 project_visibility_level: "PRIVATE", user_role: :developer, member: true, user_token: false, shared_examples_name: "process Composer api request", expected_status: :unauthorized2923 behaves like process Composer api request2924 for user type developer2925 behaves like returning response status2926 returns unauthorized2927 project_visibility_level: "PRIVATE", user_role: :developer, member: false, user_token: true, shared_examples_name: "process Composer api request", expected_status: :not_found2928 behaves like process Composer api request2929 for user type developer2930 behaves like returning response status2931 returns not_found2932 project_visibility_level: "PRIVATE", user_role: :developer, member: false, user_token: false, shared_examples_name: "process Composer api request", expected_status: :unauthorized2933 behaves like process Composer api request2934 for user type developer2935 behaves like returning response status2936 returns unauthorized2937 project_visibility_level: "PRIVATE", user_role: :guest, member: true, user_token: true, shared_examples_name: "process Composer api request", expected_status: :forbidden2938 behaves like process Composer api request2939 for user type guest2940 behaves like returning response status2941 returns forbidden2942 project_visibility_level: "PRIVATE", user_role: :guest, member: true, user_token: false, shared_examples_name: "process Composer api request", expected_status: :unauthorized2943 behaves like process Composer api request2944 for user type guest2945 behaves like returning response status2946 returns unauthorized2947 project_visibility_level: "PRIVATE", user_role: :guest, member: false, user_token: true, shared_examples_name: "process Composer api request", expected_status: :not_found2948 behaves like process Composer api request2949 for user type guest2950 behaves like returning response status2951 returns not_found2952 project_visibility_level: "PRIVATE", user_role: :guest, member: false, user_token: false, shared_examples_name: "process Composer api request", expected_status: :unauthorized2953 behaves like process Composer api request2954 for user type guest2955 behaves like returning response status2956 returns unauthorized2957 project_visibility_level: "PRIVATE", user_role: :anonymous, member: false, user_token: true, shared_examples_name: "process Composer api request", expected_status: :unauthorized2958 behaves like process Composer api request2959 for user type anonymous2960 behaves like returning response status2961 returns unauthorized2962 behaves like Composer publish with deploy tokens2963 group deploy token2964 behaves like a deploy token for Composer publish requests2965 valid token2966 behaves like returning response status2967 returns success2968 invalid token2969 behaves like returning response status2970 returns unauthorized2971 group deploy token2972 behaves like a deploy token for Composer publish requests2973 valid token2974 behaves like returning response status2975 returns success2976 invalid token2977 behaves like returning response status2978 returns unauthorized2979 behaves like rejects Composer access with unknown project id2980 with an unknown project2981 as anonymous2982 behaves like process Composer api request2983 for user type anonymous2984 behaves like returning response status2985 returns unauthorized2986 as authenticated user2987 behaves like process Composer api request2988 for user type anonymous2989 behaves like returning response status2990 returns not_found2991 with a non existing tag2992 behaves like process Composer api request2993 for user type developer2994 behaves like returning response status2995 returns not_found2996 with a branch2997 with an existing branch2998 behaves like composer package publish2999 with valid project3000 project_visibility_level: "PUBLIC", user_role: :developer, member: true, user_token: true, shared_examples_name: "Composer package creation", expected_status: :created3001 behaves like Composer package creation3002 for user type developer3003 creates package files3004 behaves like a package tracking event3005 creates a gitlab tracking event push_package3006 when package creation fails3007 behaves like not a package tracking event3008 does not create a gitlab tracking event3009 project_visibility_level: "PUBLIC", user_role: :developer, member: true, user_token: false, shared_examples_name: "process Composer api request", expected_status: :unauthorized3010 behaves like process Composer api request3011 for user type developer3012 behaves like returning response status3013 returns unauthorized3014 project_visibility_level: "PUBLIC", user_role: :developer, member: false, user_token: true, shared_examples_name: "process Composer api request", expected_status: :forbidden3015 behaves like process Composer api request3016 for user type developer3017 behaves like returning response status3018 returns forbidden3019 project_visibility_level: "PUBLIC", user_role: :developer, member: false, user_token: false, shared_examples_name: "process Composer api request", expected_status: :unauthorized3020 behaves like process Composer api request3021 for user type developer3022 behaves like returning response status3023 returns unauthorized3024 project_visibility_level: "PUBLIC", user_role: :guest, member: true, user_token: true, shared_examples_name: "process Composer api request", expected_status: :forbidden3025 behaves like process Composer api request3026 for user type guest3027 behaves like returning response status3028 returns forbidden3029 project_visibility_level: "PUBLIC", user_role: :guest, member: true, user_token: false, shared_examples_name: "process Composer api request", expected_status: :unauthorized3030 behaves like process Composer api request3031 for user type guest3032 behaves like returning response status3033 returns unauthorized3034 project_visibility_level: "PUBLIC", user_role: :guest, member: false, user_token: true, shared_examples_name: "process Composer api request", expected_status: :forbidden3035 behaves like process Composer api request3036 for user type guest3037 behaves like returning response status3038 returns forbidden3039 project_visibility_level: "PUBLIC", user_role: :guest, member: false, user_token: false, shared_examples_name: "process Composer api request", expected_status: :unauthorized3040 behaves like process Composer api request3041 for user type guest3042 behaves like returning response status3043 returns unauthorized3044 project_visibility_level: "PUBLIC", user_role: :anonymous, member: false, user_token: true, shared_examples_name: "process Composer api request", expected_status: :unauthorized3045 behaves like process Composer api request3046 for user type anonymous3047 behaves like returning response status3048 returns unauthorized3049 project_visibility_level: "PRIVATE", user_role: :developer, member: true, user_token: true, shared_examples_name: "Composer package creation", expected_status: :created3050 behaves like Composer package creation3051 for user type developer3052 creates package files3053 behaves like a package tracking event3054 creates a gitlab tracking event push_package3055 when package creation fails3056 behaves like not a package tracking event3057 does not create a gitlab tracking event3058 project_visibility_level: "PRIVATE", user_role: :developer, member: true, user_token: false, shared_examples_name: "process Composer api request", expected_status: :unauthorized3059 behaves like process Composer api request3060 for user type developer3061 behaves like returning response status3062 returns unauthorized3063 project_visibility_level: "PRIVATE", user_role: :developer, member: false, user_token: true, shared_examples_name: "process Composer api request", expected_status: :not_found3064 behaves like process Composer api request3065 for user type developer3066 behaves like returning response status3067 returns not_found3068 project_visibility_level: "PRIVATE", user_role: :developer, member: false, user_token: false, shared_examples_name: "process Composer api request", expected_status: :unauthorized3069 behaves like process Composer api request3070 for user type developer3071 behaves like returning response status3072 returns unauthorized3073 project_visibility_level: "PRIVATE", user_role: :guest, member: true, user_token: true, shared_examples_name: "process Composer api request", expected_status: :forbidden3074 behaves like process Composer api request3075 for user type guest3076 behaves like returning response status3077 returns forbidden3078 project_visibility_level: "PRIVATE", user_role: :guest, member: true, user_token: false, shared_examples_name: "process Composer api request", expected_status: :unauthorized3079 behaves like process Composer api request3080 for user type guest3081 behaves like returning response status3082 returns unauthorized3083 project_visibility_level: "PRIVATE", user_role: :guest, member: false, user_token: true, shared_examples_name: "process Composer api request", expected_status: :not_found3084 behaves like process Composer api request3085 for user type guest3086 behaves like returning response status3087 returns not_found3088 project_visibility_level: "PRIVATE", user_role: :guest, member: false, user_token: false, shared_examples_name: "process Composer api request", expected_status: :unauthorized3089 behaves like process Composer api request3090 for user type guest3091 behaves like returning response status3092 returns unauthorized3093 project_visibility_level: "PRIVATE", user_role: :anonymous, member: false, user_token: true, shared_examples_name: "process Composer api request", expected_status: :unauthorized3094 behaves like process Composer api request3095 for user type anonymous3096 behaves like returning response status3097 returns unauthorized3098 behaves like Composer publish with deploy tokens3099 group deploy token3100 behaves like a deploy token for Composer publish requests3101 valid token3102 behaves like returning response status3103 returns success3104 invalid token3105 behaves like returning response status3106 returns unauthorized3107 group deploy token3108 behaves like a deploy token for Composer publish requests3109 valid token3110 behaves like returning response status3111 returns success3112 invalid token3113 behaves like returning response status3114 returns unauthorized3115 behaves like rejects Composer access with unknown project id3116 with an unknown project3117 as anonymous3118 behaves like process Composer api request3119 for user type anonymous3120 behaves like returning response status3121 returns unauthorized3122 as authenticated user3123 behaves like process Composer api request3124 for user type anonymous3125 behaves like returning response status3126 returns not_found3127 with a non existing branch3128 behaves like process Composer api request3129 for user type developer3130 behaves like returning response status3131 returns not_found3132 with invalid composer.json3133 with a missing composer.json file3134 behaves like process Composer api request3135 for user type developer3136 behaves like returning response status3137 returns unprocessable_entity3138 with an empty composer.json file3139 behaves like process Composer api request3140 for user type developer3141 behaves like returning response status3142 returns unprocessable_entity3143 with a malformed composer.json file3144 behaves like process Composer api request3145 for user type developer3146 behaves like returning response status3147 returns unprocessable_entity3148 GET /api/v4/projects/:id/packages/composer/archives/*package_name?sha=:sha3149 with valid project3150 when the sha does not match the package name3151 anonymous3152 behaves like process Composer api request3153 for user type anonymous3154 behaves like returning response status3155 returns unauthorized3156 behaves like process Composer api request3157 for user type developer3158 behaves like returning response status3159 returns not_found3160 when the package name does not match the sha3161 anonymous3162 behaves like process Composer api request3163 for user type anonymous3164 behaves like returning response status3165 returns unauthorized3166 behaves like process Composer api request3167 for user type developer3168 behaves like returning response status3169 returns not_found3170 with a match package name and sha3171 project_visibility_level: "PUBLIC", user_role: :developer, member: true, user_token: true, expected_status: :success3172 behaves like process Composer api request3173 for user type developer3174 behaves like returning response status3175 returns success3176 behaves like a package tracking event3177 creates a gitlab tracking event pull_package3178 project_visibility_level: "PUBLIC", user_role: :developer, member: true, user_token: false, expected_status: :success3179 behaves like process Composer api request3180 for user type developer3181 behaves like returning response status3182 returns success3183 behaves like a package tracking event3184 creates a gitlab tracking event pull_package3185 project_visibility_level: "PUBLIC", user_role: :developer, member: false, user_token: true, expected_status: :success3186 behaves like process Composer api request3187 for user type developer3188 behaves like returning response status3189 returns success3190 behaves like a package tracking event3191 creates a gitlab tracking event pull_package3192 project_visibility_level: "PUBLIC", user_role: :developer, member: false, user_token: false, expected_status: :success3193 behaves like process Composer api request3194 for user type developer3195 behaves like returning response status3196 returns success3197 behaves like a package tracking event3198 creates a gitlab tracking event pull_package3199 project_visibility_level: "PUBLIC", user_role: :guest, member: true, user_token: true, expected_status: :success3200 behaves like process Composer api request3201 for user type guest3202 behaves like returning response status3203 returns success3204 behaves like a package tracking event3205 creates a gitlab tracking event pull_package3206 project_visibility_level: "PUBLIC", user_role: :guest, member: true, user_token: false, expected_status: :success3207 behaves like process Composer api request3208 for user type guest3209 behaves like returning response status3210 returns success3211 behaves like a package tracking event3212 creates a gitlab tracking event pull_package3213 project_visibility_level: "PUBLIC", user_role: :guest, member: false, user_token: true, expected_status: :success3214 behaves like process Composer api request3215 for user type guest3216 behaves like returning response status3217 returns success3218 behaves like a package tracking event3219 creates a gitlab tracking event pull_package3220 project_visibility_level: "PUBLIC", user_role: :guest, member: false, user_token: false, expected_status: :success3221 behaves like process Composer api request3222 for user type guest3223 behaves like returning response status3224 returns success3225 behaves like a package tracking event3226 creates a gitlab tracking event pull_package3227 project_visibility_level: "PUBLIC", user_role: :anonymous, member: false, user_token: true, expected_status: :success3228 behaves like process Composer api request3229 for user type anonymous3230 behaves like returning response status3231 returns success3232 behaves like a package tracking event3233 creates a gitlab tracking event pull_package3234 project_visibility_level: "PRIVATE", user_role: :developer, member: true, user_token: true, expected_status: :success3235 behaves like process Composer api request3236 for user type developer3237 behaves like returning response status3238 returns success3239 behaves like a package tracking event3240 creates a gitlab tracking event pull_package3241 project_visibility_level: "PRIVATE", user_role: :developer, member: true, user_token: false, expected_status: :unauthorized3242 behaves like process Composer api request3243 for user type developer3244 behaves like returning response status3245 returns unauthorized3246 behaves like not a package tracking event3247 does not create a gitlab tracking event3248 project_visibility_level: "PRIVATE", user_role: :developer, member: false, user_token: true, expected_status: :not_found3249 behaves like process Composer api request3250 for user type developer3251 behaves like returning response status3252 returns not_found3253 behaves like not a package tracking event3254 does not create a gitlab tracking event3255 project_visibility_level: "PRIVATE", user_role: :developer, member: false, user_token: false, expected_status: :unauthorized3256 behaves like process Composer api request3257 for user type developer3258 behaves like returning response status3259 returns unauthorized3260 behaves like not a package tracking event3261 does not create a gitlab tracking event3262 project_visibility_level: "PRIVATE", user_role: :guest, member: true, user_token: true, expected_status: :forbidden3263 behaves like process Composer api request3264 for user type guest3265 behaves like returning response status3266 returns forbidden3267 behaves like not a package tracking event3268 does not create a gitlab tracking event3269 project_visibility_level: "PRIVATE", user_role: :guest, member: true, user_token: false, expected_status: :unauthorized3270 behaves like process Composer api request3271 for user type guest3272 behaves like returning response status3273 returns unauthorized3274 behaves like not a package tracking event3275 does not create a gitlab tracking event3276 project_visibility_level: "PRIVATE", user_role: :guest, member: false, user_token: true, expected_status: :not_found3277 behaves like process Composer api request3278 for user type guest3279 behaves like returning response status3280 returns not_found3281 behaves like not a package tracking event3282 does not create a gitlab tracking event3283 project_visibility_level: "PRIVATE", user_role: :guest, member: false, user_token: false, expected_status: :unauthorized3284 behaves like process Composer api request3285 for user type guest3286 behaves like returning response status3287 returns unauthorized3288 behaves like not a package tracking event3289 does not create a gitlab tracking event3290 project_visibility_level: "PRIVATE", user_role: :anonymous, member: false, user_token: true, expected_status: :unauthorized3291 behaves like process Composer api request3292 for user type anonymous3293 behaves like returning response status3294 returns unauthorized3295 behaves like not a package tracking event3296 does not create a gitlab tracking event3297 behaves like Composer publish with deploy tokens3298 group deploy token3299 behaves like a deploy token for Composer publish requests3300 valid token3301 behaves like returning response status3302 returns success3303 invalid token3304 behaves like returning response status3305 returns unauthorized3306 group deploy token3307 behaves like a deploy token for Composer publish requests3308 valid token3309 behaves like returning response status3310 returns success3311 invalid token3312 behaves like returning response status3313 returns unauthorized3314 behaves like rejects Composer access with unknown project id3315 with an unknown project3316 as anonymous3317 behaves like process Composer api request3318 for user type anonymous3319 behaves like returning response status3320 returns unauthorized3321 as authenticated user3322 behaves like process Composer api request3323 for user type anonymous3324 behaves like returning response status3325 returns not_found3326API::Terraform::Modules::V1::Packages3327 GET /api/v4/packages/terraform/modules/v1/:module_namespace/:module_name/:module_system/versions3328 with a conflicting package name3329 returns only one version3330 with valid namespace3331 visibility: :public, user_role: :developer, member: true, token_type: :personal_access_token, valid_token: true, shared_examples_name: "returns terraform module packages", expected_status: :success3332 behaves like returns terraform module packages3333 for user type developer3334 returning a valid response3335 behaves like returning response status3336 returns success3337 visibility: :public, user_role: :guest, member: true, token_type: :personal_access_token, valid_token: true, shared_examples_name: "returns terraform module packages", expected_status: :success3338 behaves like returns terraform module packages3339 for user type guest3340 returning a valid response3341 behaves like returning response status3342 returns success3343 visibility: :public, user_role: :developer, member: true, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3344 behaves like rejects terraform module packages access3345 for user type developer3346 behaves like returning response status3347 returns unauthorized3348 visibility: :public, user_role: :guest, member: true, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3349 behaves like rejects terraform module packages access3350 for user type guest3351 behaves like returning response status3352 returns unauthorized3353 visibility: :public, user_role: :developer, member: false, token_type: :personal_access_token, valid_token: true, shared_examples_name: "returns no terraform module packages", expected_status: :success3354 behaves like returns no terraform module packages3355 for user type developer3356 returns a response with no versions3357 behaves like returning response status3358 returns success3359 visibility: :public, user_role: :guest, member: false, token_type: :personal_access_token, valid_token: true, shared_examples_name: "returns no terraform module packages", expected_status: :success3360 behaves like returns no terraform module packages3361 for user type guest3362 returns a response with no versions3363 behaves like returning response status3364 returns success3365 visibility: :public, user_role: :developer, member: false, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3366 behaves like rejects terraform module packages access3367 for user type developer3368 behaves like returning response status3369 returns unauthorized3370 visibility: :public, user_role: :guest, member: false, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3371 behaves like rejects terraform module packages access3372 for user type guest3373 behaves like returning response status3374 returns unauthorized3375 visibility: :public, user_role: :anonymous, member: false, token_type: :personal_access_token, valid_token: true, shared_examples_name: "returns no terraform module packages", expected_status: :success3376 behaves like returns no terraform module packages3377 for user type anonymous3378 returns a response with no versions3379 behaves like returning response status3380 returns success3381 visibility: :private, user_role: :developer, member: true, token_type: :personal_access_token, valid_token: true, shared_examples_name: "returns terraform module packages", expected_status: :success3382 behaves like returns terraform module packages3383 for user type developer3384 returning a valid response3385 behaves like returning response status3386 returns success3387 visibility: :private, user_role: :guest, member: true, token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden3388 behaves like rejects terraform module packages access3389 for user type guest3390 behaves like returning response status3391 returns forbidden3392 visibility: :private, user_role: :developer, member: true, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3393 behaves like rejects terraform module packages access3394 for user type developer3395 behaves like returning response status3396 returns unauthorized3397 visibility: :private, user_role: :guest, member: true, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3398 behaves like rejects terraform module packages access3399 for user type guest3400 behaves like returning response status3401 returns unauthorized3402 visibility: :private, user_role: :developer, member: false, token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden3403 behaves like rejects terraform module packages access3404 for user type developer3405 behaves like returning response status3406 returns forbidden3407 visibility: :private, user_role: :guest, member: false, token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden3408 behaves like rejects terraform module packages access3409 for user type guest3410 behaves like returning response status3411 returns forbidden3412 visibility: :private, user_role: :developer, member: false, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3413 behaves like rejects terraform module packages access3414 for user type developer3415 behaves like returning response status3416 returns unauthorized3417 visibility: :private, user_role: :guest, member: false, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3418 behaves like rejects terraform module packages access3419 for user type guest3420 behaves like returning response status3421 returns unauthorized3422 visibility: :private, user_role: :anonymous, member: false, token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3423 behaves like rejects terraform module packages access3424 for user type anonymous3425 behaves like returning response status3426 returns unauthorized3427 visibility: :public, user_role: :developer, member: true, token_type: :job_token, valid_token: true, shared_examples_name: "returns terraform module packages", expected_status: :success3428 behaves like returns terraform module packages3429 for user type developer3430 returning a valid response3431 behaves like returning response status3432 returns success3433 visibility: :public, user_role: :guest, member: true, token_type: :job_token, valid_token: true, shared_examples_name: "returns no terraform module packages", expected_status: :success3434 behaves like returns no terraform module packages3435 for user type guest3436 returns a response with no versions3437 behaves like returning response status3438 returns success3439 visibility: :public, user_role: :guest, member: true, token_type: :job_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3440 behaves like rejects terraform module packages access3441 for user type guest3442 behaves like returning response status3443 returns unauthorized3444 visibility: :public, user_role: :developer, member: false, token_type: :job_token, valid_token: true, shared_examples_name: "returns no terraform module packages", expected_status: :success3445 behaves like returns no terraform module packages3446 for user type developer3447 returns a response with no versions3448 behaves like returning response status3449 returns success3450 visibility: :public, user_role: :guest, member: false, token_type: :job_token, valid_token: true, shared_examples_name: "returns no terraform module packages", expected_status: :success3451 behaves like returns no terraform module packages3452 for user type guest3453 returns a response with no versions3454 behaves like returning response status3455 returns success3456 visibility: :public, user_role: :developer, member: false, token_type: :job_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3457 behaves like rejects terraform module packages access3458 for user type developer3459 behaves like returning response status3460 returns unauthorized3461 visibility: :public, user_role: :guest, member: false, token_type: :job_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3462 behaves like rejects terraform module packages access3463 for user type guest3464 behaves like returning response status3465 returns unauthorized3466 visibility: :private, user_role: :developer, member: true, token_type: :job_token, valid_token: true, shared_examples_name: "returns terraform module packages", expected_status: :success3467 behaves like returns terraform module packages3468 for user type developer3469 returning a valid response3470 behaves like returning response status3471 returns success3472 visibility: :private, user_role: :guest, member: true, token_type: :job_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden3473 behaves like rejects terraform module packages access3474 for user type guest3475 behaves like returning response status3476 returns forbidden3477 visibility: :private, user_role: :developer, member: true, token_type: :job_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3478 behaves like rejects terraform module packages access3479 for user type developer3480 behaves like returning response status3481 returns unauthorized3482 visibility: :private, user_role: :guest, member: true, token_type: :job_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3483 behaves like rejects terraform module packages access3484 for user type guest3485 behaves like returning response status3486 returns unauthorized3487 visibility: :private, user_role: :developer, member: false, token_type: :job_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden3488 behaves like rejects terraform module packages access3489 for user type developer3490 behaves like returning response status3491 returns forbidden3492 visibility: :private, user_role: :guest, member: false, token_type: :job_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden3493 behaves like rejects terraform module packages access3494 for user type guest3495 behaves like returning response status3496 returns forbidden3497 visibility: :private, user_role: :developer, member: false, token_type: :job_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3498 behaves like rejects terraform module packages access3499 for user type developer3500 behaves like returning response status3501 returns unauthorized3502 visibility: :private, user_role: :guest, member: false, token_type: :job_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3503 behaves like rejects terraform module packages access3504 for user type guest3505 behaves like returning response status3506 returns unauthorized3507 GET /api/v4/packages/terraform/modules/v1/:module_namespace/:module_name/:module_system/:module_version/download3508 with valid namespace3509 visibility: :public, user_role: :developer, member: true, token_type: :personal_access_token, valid_token: true, shared_examples_name: "grants terraform module download", expected_status: :success3510 behaves like grants terraform module download3511 for user type developer3512 returns a valid response3513 behaves like returning response status3514 returns success3515 visibility: :public, user_role: :guest, member: true, token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :not_found3516 behaves like rejects terraform module packages access3517 for user type guest3518 behaves like returning response status3519 returns not_found3520 visibility: :public, user_role: :developer, member: true, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3521 behaves like rejects terraform module packages access3522 for user type developer3523 behaves like returning response status3524 returns unauthorized3525 visibility: :public, user_role: :guest, member: true, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3526 behaves like rejects terraform module packages access3527 for user type guest3528 behaves like returning response status3529 returns unauthorized3530 visibility: :public, user_role: :developer, member: false, token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :not_found3531 behaves like rejects terraform module packages access3532 for user type developer3533 behaves like returning response status3534 returns not_found3535 visibility: :public, user_role: :guest, member: false, token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :not_found3536 behaves like rejects terraform module packages access3537 for user type guest3538 behaves like returning response status3539 returns not_found3540 visibility: :public, user_role: :developer, member: false, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3541 behaves like rejects terraform module packages access3542 for user type developer3543 behaves like returning response status3544 returns unauthorized3545 visibility: :public, user_role: :guest, member: false, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3546 behaves like rejects terraform module packages access3547 for user type guest3548 behaves like returning response status3549 returns unauthorized3550 visibility: :public, user_role: :anonymous, member: false, token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :not_found3551 behaves like rejects terraform module packages access3552 for user type anonymous3553 behaves like returning response status3554 returns not_found3555 visibility: :private, user_role: :developer, member: true, token_type: :personal_access_token, valid_token: true, shared_examples_name: "grants terraform module download", expected_status: :success3556 behaves like grants terraform module download3557 for user type developer3558 returns a valid response3559 behaves like returning response status3560 returns success3561 visibility: :private, user_role: :guest, member: true, token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden3562 behaves like rejects terraform module packages access3563 for user type guest3564 behaves like returning response status3565 returns forbidden3566 visibility: :private, user_role: :developer, member: true, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3567 behaves like rejects terraform module packages access3568 for user type developer3569 behaves like returning response status3570 returns unauthorized3571 visibility: :private, user_role: :guest, member: true, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3572 behaves like rejects terraform module packages access3573 for user type guest3574 behaves like returning response status3575 returns unauthorized3576 visibility: :private, user_role: :developer, member: false, token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden3577 behaves like rejects terraform module packages access3578 for user type developer3579 behaves like returning response status3580 returns forbidden3581 visibility: :private, user_role: :guest, member: false, token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden3582 behaves like rejects terraform module packages access3583 for user type guest3584 behaves like returning response status3585 returns forbidden3586 visibility: :private, user_role: :developer, member: false, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3587 behaves like rejects terraform module packages access3588 for user type developer3589 behaves like returning response status3590 returns unauthorized3591 visibility: :private, user_role: :guest, member: false, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3592 behaves like rejects terraform module packages access3593 for user type guest3594 behaves like returning response status3595 returns unauthorized3596 visibility: :private, user_role: :anonymous, member: false, token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3597 behaves like rejects terraform module packages access3598 for user type anonymous3599 behaves like returning response status3600 returns unauthorized3601 visibility: :public, user_role: :developer, member: true, token_type: :job_token, valid_token: true, shared_examples_name: "grants terraform module download", expected_status: :success3602 behaves like grants terraform module download3603 for user type developer3604 returns a valid response3605 behaves like returning response status3606 returns success3607 visibility: :public, user_role: :guest, member: true, token_type: :job_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :not_found3608 behaves like rejects terraform module packages access3609 for user type guest3610 behaves like returning response status3611 returns not_found3612 visibility: :public, user_role: :guest, member: true, token_type: :job_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3613 behaves like rejects terraform module packages access3614 for user type guest3615 behaves like returning response status3616 returns unauthorized3617 visibility: :public, user_role: :developer, member: false, token_type: :job_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :not_found3618 behaves like rejects terraform module packages access3619 for user type developer3620 behaves like returning response status3621 returns not_found3622 visibility: :public, user_role: :guest, member: false, token_type: :job_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :not_found3623 behaves like rejects terraform module packages access3624 for user type guest3625 behaves like returning response status3626 returns not_found3627 visibility: :public, user_role: :developer, member: false, token_type: :job_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3628 behaves like rejects terraform module packages access3629 for user type developer3630 behaves like returning response status3631 returns unauthorized3632 visibility: :public, user_role: :guest, member: false, token_type: :job_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3633 behaves like rejects terraform module packages access3634 for user type guest3635 behaves like returning response status3636 returns unauthorized3637 visibility: :private, user_role: :developer, member: true, token_type: :job_token, valid_token: true, shared_examples_name: "grants terraform module download", expected_status: :success3638 behaves like grants terraform module download3639 for user type developer3640 returns a valid response3641 behaves like returning response status3642 returns success3643 visibility: :private, user_role: :guest, member: true, token_type: :job_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden3644 behaves like rejects terraform module packages access3645 for user type guest3646 behaves like returning response status3647 returns forbidden3648 visibility: :private, user_role: :developer, member: true, token_type: :job_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3649 behaves like rejects terraform module packages access3650 for user type developer3651 behaves like returning response status3652 returns unauthorized3653 visibility: :private, user_role: :guest, member: true, token_type: :job_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3654 behaves like rejects terraform module packages access3655 for user type guest3656 behaves like returning response status3657 returns unauthorized3658 visibility: :private, user_role: :developer, member: false, token_type: :job_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden3659 behaves like rejects terraform module packages access3660 for user type developer3661 behaves like returning response status3662 returns forbidden3663 visibility: :private, user_role: :guest, member: false, token_type: :job_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden3664 behaves like rejects terraform module packages access3665 for user type guest3666 behaves like returning response status3667 returns forbidden3668 visibility: :private, user_role: :developer, member: false, token_type: :job_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3669 behaves like rejects terraform module packages access3670 for user type developer3671 behaves like returning response status3672 returns unauthorized3673 visibility: :private, user_role: :guest, member: false, token_type: :job_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3674 behaves like rejects terraform module packages access3675 for user type guest3676 behaves like returning response status3677 returns unauthorized3678 GET /api/v4/packages/terraform/modules/v1/:module_namespace/:module_name/:module_system/:module_version/file3679 with valid namespace3680 visibility: :public, user_role: :developer, member: true, token_type: :personal_access_token, valid_token: true, shared_examples_name: "grants terraform module package file access", expected_status: :success3681 behaves like grants terraform module package file access3682 for user type developer3683 behaves like returning response status3684 returns success3685 behaves like a package tracking event3686 creates a gitlab tracking event pull_package3687 visibility: :public, user_role: :guest, member: true, token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :not_found3688 behaves like rejects terraform module packages access3689 for user type guest3690 behaves like returning response status3691 returns not_found3692 visibility: :public, user_role: :developer, member: true, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3693 behaves like rejects terraform module packages access3694 for user type developer3695 behaves like returning response status3696 returns unauthorized3697 visibility: :public, user_role: :guest, member: true, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3698 behaves like rejects terraform module packages access3699 for user type guest3700 behaves like returning response status3701 returns unauthorized3702 visibility: :public, user_role: :developer, member: false, token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :not_found3703 behaves like rejects terraform module packages access3704 for user type developer3705 behaves like returning response status3706 returns not_found3707 visibility: :public, user_role: :guest, member: false, token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :not_found3708 behaves like rejects terraform module packages access3709 for user type guest3710 behaves like returning response status3711 returns not_found3712 visibility: :public, user_role: :developer, member: false, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3713 behaves like rejects terraform module packages access3714 for user type developer3715 behaves like returning response status3716 returns unauthorized3717 visibility: :public, user_role: :guest, member: false, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3718 behaves like rejects terraform module packages access3719 for user type guest3720 behaves like returning response status3721 returns unauthorized3722 visibility: :public, user_role: :anonymous, member: false, token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :not_found3723 behaves like rejects terraform module packages access3724 for user type anonymous3725 behaves like returning response status3726 returns not_found3727 visibility: :private, user_role: :developer, member: true, token_type: :personal_access_token, valid_token: true, shared_examples_name: "grants terraform module package file access", expected_status: :success3728 behaves like grants terraform module package file access3729 for user type developer3730 behaves like returning response status3731 returns success3732 behaves like a package tracking event3733 creates a gitlab tracking event pull_package3734 visibility: :private, user_role: :guest, member: true, token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden3735 behaves like rejects terraform module packages access3736 for user type guest3737 behaves like returning response status3738 returns forbidden3739 visibility: :private, user_role: :developer, member: true, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3740 behaves like rejects terraform module packages access3741 for user type developer3742 behaves like returning response status3743 returns unauthorized3744 visibility: :private, user_role: :guest, member: true, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3745 behaves like rejects terraform module packages access3746 for user type guest3747 behaves like returning response status3748 returns unauthorized3749 visibility: :private, user_role: :developer, member: false, token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden3750 behaves like rejects terraform module packages access3751 for user type developer3752 behaves like returning response status3753 returns forbidden3754 visibility: :private, user_role: :guest, member: false, token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden3755 behaves like rejects terraform module packages access3756 for user type guest3757 behaves like returning response status3758 returns forbidden3759 visibility: :private, user_role: :developer, member: false, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3760 behaves like rejects terraform module packages access3761 for user type developer3762 behaves like returning response status3763 returns unauthorized3764 visibility: :private, user_role: :guest, member: false, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3765 behaves like rejects terraform module packages access3766 for user type guest3767 behaves like returning response status3768 returns unauthorized3769 visibility: :private, user_role: :anonymous, member: false, token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden3770 behaves like rejects terraform module packages access3771 for user type anonymous3772 behaves like returning response status3773 returns forbidden3774 visibility: :public, user_role: :developer, member: true, token_type: :job_token, valid_token: true, shared_examples_name: "grants terraform module package file access", expected_status: :success3775 behaves like grants terraform module package file access3776 for user type developer3777 behaves like returning response status3778 returns success3779 behaves like a package tracking event3780 creates a gitlab tracking event pull_package3781 visibility: :public, user_role: :guest, member: true, token_type: :job_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :not_found3782 behaves like rejects terraform module packages access3783 for user type guest3784 behaves like returning response status3785 returns not_found3786 visibility: :public, user_role: :guest, member: true, token_type: :job_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3787 behaves like rejects terraform module packages access3788 for user type guest3789 behaves like returning response status3790 returns unauthorized3791 visibility: :public, user_role: :developer, member: false, token_type: :job_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :not_found3792 behaves like rejects terraform module packages access3793 for user type developer3794 behaves like returning response status3795 returns not_found3796 visibility: :public, user_role: :guest, member: false, token_type: :job_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :not_found3797 behaves like rejects terraform module packages access3798 for user type guest3799 behaves like returning response status3800 returns not_found3801 visibility: :public, user_role: :developer, member: false, token_type: :job_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3802 behaves like rejects terraform module packages access3803 for user type developer3804 behaves like returning response status3805 returns unauthorized3806 visibility: :public, user_role: :guest, member: false, token_type: :job_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3807 behaves like rejects terraform module packages access3808 for user type guest3809 behaves like returning response status3810 returns unauthorized3811 visibility: :private, user_role: :developer, member: true, token_type: :job_token, valid_token: true, shared_examples_name: "grants terraform module package file access", expected_status: :success3812 behaves like grants terraform module package file access3813 for user type developer3814 behaves like returning response status3815 returns success3816 behaves like a package tracking event3817 creates a gitlab tracking event pull_package3818 visibility: :private, user_role: :guest, member: true, token_type: :job_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden3819 behaves like rejects terraform module packages access3820 for user type guest3821 behaves like returning response status3822 returns forbidden3823 visibility: :private, user_role: :developer, member: true, token_type: :job_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3824 behaves like rejects terraform module packages access3825 for user type developer3826 behaves like returning response status3827 returns unauthorized3828 visibility: :private, user_role: :guest, member: true, token_type: :job_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3829 behaves like rejects terraform module packages access3830 for user type guest3831 behaves like returning response status3832 returns unauthorized3833 visibility: :private, user_role: :developer, member: false, token_type: :job_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden3834 behaves like rejects terraform module packages access3835 for user type developer3836 behaves like returning response status3837 returns forbidden3838 visibility: :private, user_role: :guest, member: false, token_type: :job_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden3839 behaves like rejects terraform module packages access3840 for user type guest3841 behaves like returning response status3842 returns forbidden3843 visibility: :private, user_role: :developer, member: false, token_type: :job_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3844 behaves like rejects terraform module packages access3845 for user type developer3846 behaves like returning response status3847 returns unauthorized3848 visibility: :private, user_role: :guest, member: false, token_type: :job_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3849 behaves like rejects terraform module packages access3850 for user type guest3851 behaves like returning response status3852 returns unauthorized3853 with package file pending destruction3854 does not return them3855 PUT /api/v4/projects/:project_id/packages/terraform/modules/:module_name/:module_system/:module_version/file/authorize3856 with valid project3857 visibility: :public, user_role: :developer, member: true, token_header: "PRIVATE-TOKEN", token_type: :personal_access_token, valid_token: true, shared_examples_name: "process terraform module workhorse authorization", expected_status: :success3858 behaves like process terraform module workhorse authorization3859 for user type developer3860 has the proper content type3861 behaves like returning response status3862 returns success3863 with a request that bypassed gitlab-workhorse3864 behaves like returning response status3865 returns forbidden3866 visibility: :public, user_role: :guest, member: true, token_header: "PRIVATE-TOKEN", token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden3867 behaves like rejects terraform module packages access3868 for user type guest3869 behaves like returning response status3870 returns forbidden3871 visibility: :public, user_role: :developer, member: true, token_header: "PRIVATE-TOKEN", token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3872 behaves like rejects terraform module packages access3873 for user type developer3874 behaves like returning response status3875 returns unauthorized3876 visibility: :public, user_role: :guest, member: true, token_header: "PRIVATE-TOKEN", token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3877 behaves like rejects terraform module packages access3878 for user type guest3879 behaves like returning response status3880 returns unauthorized3881 visibility: :public, user_role: :developer, member: false, token_header: "PRIVATE-TOKEN", token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden3882 behaves like rejects terraform module packages access3883 for user type developer3884 behaves like returning response status3885 returns forbidden3886 visibility: :public, user_role: :guest, member: false, token_header: "PRIVATE-TOKEN", token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden3887 behaves like rejects terraform module packages access3888 for user type guest3889 behaves like returning response status3890 returns forbidden3891 visibility: :public, user_role: :developer, member: false, token_header: "PRIVATE-TOKEN", token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3892 behaves like rejects terraform module packages access3893 for user type developer3894 behaves like returning response status3895 returns unauthorized3896 visibility: :public, user_role: :guest, member: false, token_header: "PRIVATE-TOKEN", token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3897 behaves like rejects terraform module packages access3898 for user type guest3899 behaves like returning response status3900 returns unauthorized3901 visibility: :public, user_role: :anonymous, member: false, token_header: "PRIVATE-TOKEN", token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3902 behaves like rejects terraform module packages access3903 for user type anonymous3904 behaves like returning response status3905 returns unauthorized3906 visibility: :private, user_role: :developer, member: true, token_header: "PRIVATE-TOKEN", token_type: :personal_access_token, valid_token: true, shared_examples_name: "process terraform module workhorse authorization", expected_status: :success3907 behaves like process terraform module workhorse authorization3908 for user type developer3909 has the proper content type3910 behaves like returning response status3911 returns success3912 with a request that bypassed gitlab-workhorse3913 behaves like returning response status3914 returns forbidden3915 visibility: :private, user_role: :guest, member: true, token_header: "PRIVATE-TOKEN", token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden3916 behaves like rejects terraform module packages access3917 for user type guest3918 behaves like returning response status3919 returns forbidden3920 visibility: :private, user_role: :developer, member: true, token_header: "PRIVATE-TOKEN", token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3921 behaves like rejects terraform module packages access3922 for user type developer3923 behaves like returning response status3924 returns unauthorized3925 visibility: :private, user_role: :guest, member: true, token_header: "PRIVATE-TOKEN", token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3926 behaves like rejects terraform module packages access3927 for user type guest3928 behaves like returning response status3929 returns unauthorized3930 visibility: :private, user_role: :developer, member: false, token_header: "PRIVATE-TOKEN", token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :not_found3931 behaves like rejects terraform module packages access3932 for user type developer3933 behaves like returning response status3934 returns not_found3935 visibility: :private, user_role: :guest, member: false, token_header: "PRIVATE-TOKEN", token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :not_found3936 behaves like rejects terraform module packages access3937 for user type guest3938 behaves like returning response status3939 returns not_found3940 visibility: :private, user_role: :developer, member: false, token_header: "PRIVATE-TOKEN", token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3941 behaves like rejects terraform module packages access3942 for user type developer3943 behaves like returning response status3944 returns unauthorized3945 visibility: :private, user_role: :guest, member: false, token_header: "PRIVATE-TOKEN", token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3946 behaves like rejects terraform module packages access3947 for user type guest3948 behaves like returning response status3949 returns unauthorized3950 visibility: :private, user_role: :anonymous, member: false, token_header: "PRIVATE-TOKEN", token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3951 behaves like rejects terraform module packages access3952 for user type anonymous3953 behaves like returning response status3954 returns unauthorized3955 visibility: :public, user_role: :developer, member: true, token_header: "JOB-TOKEN", token_type: :job_token, valid_token: true, shared_examples_name: "process terraform module workhorse authorization", expected_status: :success3956 behaves like process terraform module workhorse authorization3957 for user type developer3958 has the proper content type3959 behaves like returning response status3960 returns success3961 with a request that bypassed gitlab-workhorse3962 behaves like returning response status3963 returns forbidden3964 visibility: :public, user_role: :guest, member: true, token_header: "JOB-TOKEN", token_type: :job_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden3965 behaves like rejects terraform module packages access3966 for user type guest3967 behaves like returning response status3968 returns forbidden3969 visibility: :public, user_role: :developer, member: true, token_header: "JOB-TOKEN", token_type: :job_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3970 behaves like rejects terraform module packages access3971 for user type developer3972 behaves like returning response status3973 returns unauthorized3974 visibility: :public, user_role: :guest, member: true, token_header: "JOB-TOKEN", token_type: :job_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3975 behaves like rejects terraform module packages access3976 for user type guest3977 behaves like returning response status3978 returns unauthorized3979 visibility: :public, user_role: :developer, member: false, token_header: "JOB-TOKEN", token_type: :job_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden3980 behaves like rejects terraform module packages access3981 for user type developer3982 behaves like returning response status3983 returns forbidden3984 visibility: :public, user_role: :guest, member: false, token_header: "JOB-TOKEN", token_type: :job_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden3985 behaves like rejects terraform module packages access3986 for user type guest3987 behaves like returning response status3988 returns forbidden3989 visibility: :public, user_role: :developer, member: false, token_header: "JOB-TOKEN", token_type: :job_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3990 behaves like rejects terraform module packages access3991 for user type developer3992 behaves like returning response status3993 returns unauthorized3994 visibility: :public, user_role: :guest, member: false, token_header: "JOB-TOKEN", token_type: :job_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3995 behaves like rejects terraform module packages access3996 for user type guest3997 behaves like returning response status3998 returns unauthorized3999 visibility: :private, user_role: :developer, member: true, token_header: "JOB-TOKEN", token_type: :job_token, valid_token: true, shared_examples_name: "process terraform module workhorse authorization", expected_status: :success4000 behaves like process terraform module workhorse authorization4001 for user type developer4002 has the proper content type4003 behaves like returning response status4004 returns success4005 with a request that bypassed gitlab-workhorse4006 behaves like returning response status4007 returns forbidden4008 visibility: :private, user_role: :guest, member: true, token_header: "JOB-TOKEN", token_type: :job_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden4009 behaves like rejects terraform module packages access4010 for user type guest4011 behaves like returning response status4012 returns forbidden4013 visibility: :private, user_role: :developer, member: true, token_header: "JOB-TOKEN", token_type: :job_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized4014 behaves like rejects terraform module packages access4015 for user type developer4016 behaves like returning response status4017 returns unauthorized4018 visibility: :private, user_role: :guest, member: true, token_header: "JOB-TOKEN", token_type: :job_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized4019 behaves like rejects terraform module packages access4020 for user type guest4021 behaves like returning response status4022 returns unauthorized4023 visibility: :private, user_role: :developer, member: false, token_header: "JOB-TOKEN", token_type: :job_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :not_found4024 behaves like rejects terraform module packages access4025 for user type developer4026 behaves like returning response status4027 returns not_found4028 visibility: :private, user_role: :guest, member: false, token_header: "JOB-TOKEN", token_type: :job_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :not_found4029 behaves like rejects terraform module packages access4030 for user type guest4031 behaves like returning response status4032 returns not_found4033 visibility: :private, user_role: :developer, member: false, token_header: "JOB-TOKEN", token_type: :job_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized4034 behaves like rejects terraform module packages access4035 for user type developer4036 behaves like returning response status4037 returns unauthorized4038 visibility: :private, user_role: :guest, member: false, token_header: "JOB-TOKEN", token_type: :job_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized4039 behaves like rejects terraform module packages access4040 for user type guest4041 behaves like returning response status4042 returns unauthorized4043 visibility: :public, user_role: :developer, member: true, token_header: "DEPLOY-TOKEN", token_type: :deploy_token, valid_token: true, shared_examples_name: "process terraform module workhorse authorization", expected_status: :success4044 behaves like process terraform module workhorse authorization4045 for user type developer4046 has the proper content type4047 behaves like returning response status4048 returns success4049 with a request that bypassed gitlab-workhorse4050 behaves like returning response status4051 returns forbidden4052 visibility: :public, user_role: :developer, member: true, token_header: "DEPLOY-TOKEN", token_type: :deploy_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized4053 behaves like rejects terraform module packages access4054 for user type developer4055 behaves like returning response status4056 returns unauthorized4057 visibility: :private, user_role: :developer, member: true, token_header: "DEPLOY-TOKEN", token_type: :deploy_token, valid_token: true, shared_examples_name: "process terraform module workhorse authorization", expected_status: :success4058 behaves like process terraform module workhorse authorization4059 for user type developer4060 has the proper content type4061 behaves like returning response status4062 returns success4063 with a request that bypassed gitlab-workhorse4064 behaves like returning response status4065 returns forbidden4066 visibility: :private, user_role: :developer, member: true, token_header: "DEPLOY-TOKEN", token_type: :deploy_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized4067 behaves like rejects terraform module packages access4068 for user type developer4069 behaves like returning response status4070 returns unauthorized4071 PUT /api/v4/projects/:project_id/packages/terraform/modules/:module_name/:module_system/:module_version/file4072 with valid project4073 visibility: :public, user_role: :developer, member: true, token_header: "PRIVATE-TOKEN", token_type: :personal_access_token, valid_token: true, shared_examples_name: "process terraform module upload", expected_status: :created4074 behaves like process terraform module upload4075 for user type developer4076 with object storage disabled4077 without a file from workhorse4078 behaves like returning response status4079 returns bad_request4080 with correct params4081 behaves like package workhorse uploads4082 without a workhorse header4083 logs an error4084 behaves like returning response status4085 returns forbidden4086 behaves like creates terraform module package files4087 creates package files4088 behaves like a package tracking event4089 creates a gitlab tracking event push_package4090 with object storage enabled4091 and direct upload enabled4092 behaves like creates terraform module package files4093 creates package files4094 with invalid remote_id: 1231234095 behaves like returning response status4096 returns forbidden4097 with invalid remote_id: ../../1231234098 behaves like returning response status4099 returns forbidden4100 and direct upload disabled4101 and background upload disabled4102 behaves like creates terraform module package files4103 creates package files4104 and background upload enabled4105 behaves like creates terraform module package files4106 creates package files4107 visibility: :public, user_role: :guest, member: true, token_header: "PRIVATE-TOKEN", token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden4108 behaves like rejects terraform module packages access4109 for user type guest4110 behaves like returning response status4111 returns forbidden4112 visibility: :public, user_role: :developer, member: true, token_header: "PRIVATE-TOKEN", token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized4113 behaves like rejects terraform module packages access4114 for user type developer4115 behaves like returning response status4116 returns unauthorized4117 visibility: :public, user_role: :guest, member: true, token_header: "PRIVATE-TOKEN", token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized4118 behaves like rejects terraform module packages access4119 for user type guest4120 behaves like returning response status4121 returns unauthorized4122 visibility: :public, user_role: :developer, member: false, token_header: "PRIVATE-TOKEN", token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden4123 behaves like rejects terraform module packages access4124 for user type developer4125 behaves like returning response status4126 returns forbidden4127 visibility: :public, user_role: :guest, member: false, token_header: "PRIVATE-TOKEN", token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden4128 behaves like rejects terraform module packages access4129 for user type guest4130 behaves like returning response status4131 returns forbidden4132 visibility: :public, user_role: :developer, member: false, token_header: "PRIVATE-TOKEN", token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized4133 behaves like rejects terraform module packages access4134 for user type developer4135 behaves like returning response status4136 returns unauthorized4137 visibility: :public, user_role: :guest, member: false, token_header: "PRIVATE-TOKEN", token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized4138 behaves like rejects terraform module packages access4139 for user type guest4140 behaves like returning response status4141 returns unauthorized4142 visibility: :public, user_role: :anonymous, member: false, token_header: "PRIVATE-TOKEN", token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized4143 behaves like rejects terraform module packages access4144 for user type anonymous4145 behaves like returning response status4146 returns unauthorized4147 visibility: :private, user_role: :developer, member: true, token_header: "PRIVATE-TOKEN", token_type: :personal_access_token, valid_token: true, shared_examples_name: "process terraform module upload", expected_status: :created4148 behaves like process terraform module upload4149 for user type developer4150 with object storage disabled4151 without a file from workhorse4152 behaves like returning response status4153 returns bad_request4154 with correct params4155 behaves like package workhorse uploads4156 without a workhorse header4157 logs an error4158 behaves like returning response status4159 returns forbidden4160 behaves like creates terraform module package files4161 creates package files4162 behaves like a package tracking event4163 creates a gitlab tracking event push_package4164 with object storage enabled4165 and direct upload enabled4166 behaves like creates terraform module package files4167 creates package files4168 with invalid remote_id: 1231234169 behaves like returning response status4170 returns forbidden4171 with invalid remote_id: ../../1231234172 behaves like returning response status4173 returns forbidden4174 and direct upload disabled4175 and background upload disabled4176 behaves like creates terraform module package files4177 creates package files4178 and background upload enabled4179 behaves like creates terraform module package files4180 creates package files4181 visibility: :private, user_role: :guest, member: true, token_header: "PRIVATE-TOKEN", token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden4182 behaves like rejects terraform module packages access4183 for user type guest4184 behaves like returning response status4185 returns forbidden4186 visibility: :private, user_role: :developer, member: true, token_header: "PRIVATE-TOKEN", token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized4187 behaves like rejects terraform module packages access4188 for user type developer4189 behaves like returning response status4190 returns unauthorized4191 visibility: :private, user_role: :guest, member: true, token_header: "PRIVATE-TOKEN", token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized4192 behaves like rejects terraform module packages access4193 for user type guest4194 behaves like returning response status4195 returns unauthorized4196 visibility: :private, user_role: :developer, member: false, token_header: "PRIVATE-TOKEN", token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :not_found4197 behaves like rejects terraform module packages access4198 for user type developer4199 behaves like returning response status4200 returns not_found4201 visibility: :private, user_role: :guest, member: false, token_header: "PRIVATE-TOKEN", token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :not_found4202 behaves like rejects terraform module packages access4203 for user type guest4204 behaves like returning response status4205 returns not_found4206 visibility: :private, user_role: :developer, member: false, token_header: "PRIVATE-TOKEN", token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized4207 behaves like rejects terraform module packages access4208 for user type developer4209 behaves like returning response status4210 returns unauthorized4211 visibility: :private, user_role: :guest, member: false, token_header: "PRIVATE-TOKEN", token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized4212 behaves like rejects terraform module packages access4213 for user type guest4214 behaves like returning response status4215 returns unauthorized4216 visibility: :private, user_role: :anonymous, member: false, token_header: "PRIVATE-TOKEN", token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized4217 behaves like rejects terraform module packages access4218 for user type anonymous4219 behaves like returning response status4220 returns unauthorized4221 visibility: :public, user_role: :developer, member: true, token_header: "JOB-TOKEN", token_type: :job_token, valid_token: true, shared_examples_name: "process terraform module upload", expected_status: :created4222 behaves like process terraform module upload4223 for user type developer4224 with object storage disabled4225 without a file from workhorse4226 behaves like returning response status4227 returns bad_request4228 with correct params4229 behaves like package workhorse uploads4230 without a workhorse header4231 logs an error4232 behaves like returning response status4233 returns forbidden4234 behaves like creates terraform module package files4235 creates package files4236 behaves like a package tracking event4237 creates a gitlab tracking event push_package4238 with object storage enabled4239 and direct upload enabled4240 behaves like creates terraform module package files4241 creates package files4242 with invalid remote_id: 1231234243 behaves like returning response status4244 returns forbidden4245 with invalid remote_id: ../../1231234246 behaves like returning response status4247 returns forbidden4248 and direct upload disabled4249 and background upload disabled4250 behaves like creates terraform module package files4251 creates package files4252 and background upload enabled4253 behaves like creates terraform module package files4254 creates package files4255 visibility: :public, user_role: :guest, member: true, token_header: "JOB-TOKEN", token_type: :job_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden4256 behaves like rejects terraform module packages access4257 for user type guest4258 behaves like returning response status4259 returns forbidden4260 visibility: :public, user_role: :developer, member: true, token_header: "JOB-TOKEN", token_type: :job_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized4261 behaves like rejects terraform module packages access4262 for user type developer4263 behaves like returning response status4264 returns unauthorized4265 visibility: :public, user_role: :guest, member: true, token_header: "JOB-TOKEN", token_type: :job_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized4266 behaves like rejects terraform module packages access4267 for user type guest4268 behaves like returning response status4269 returns unauthorized4270 visibility: :public, user_role: :developer, member: false, token_header: "JOB-TOKEN", token_type: :job_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden4271 behaves like rejects terraform module packages access4272 for user type developer4273 behaves like returning response status4274 returns forbidden4275 visibility: :public, user_role: :guest, member: false, token_header: "JOB-TOKEN", token_type: :job_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden4276 behaves like rejects terraform module packages access4277 for user type guest4278 behaves like returning response status4279 returns forbidden4280 visibility: :public, user_role: :developer, member: false, token_header: "JOB-TOKEN", token_type: :job_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized4281 behaves like rejects terraform module packages access4282 for user type developer4283 behaves like returning response status4284 returns unauthorized4285 visibility: :public, user_role: :guest, member: false, token_header: "JOB-TOKEN", token_type: :job_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized4286 behaves like rejects terraform module packages access4287 for user type guest4288 behaves like returning response status4289 returns unauthorized4290 visibility: :private, user_role: :developer, member: true, token_header: "JOB-TOKEN", token_type: :job_token, valid_token: true, shared_examples_name: "process terraform module upload", expected_status: :created4291 behaves like process terraform module upload4292 for user type developer4293 with object storage disabled4294 without a file from workhorse4295 behaves like returning response status4296 returns bad_request4297 with correct params4298 behaves like package workhorse uploads4299 without a workhorse header4300 logs an error4301 behaves like returning response status4302 returns forbidden4303 behaves like creates terraform module package files4304 creates package files4305 behaves like a package tracking event4306 creates a gitlab tracking event push_package4307 with object storage enabled4308 and direct upload enabled4309 behaves like creates terraform module package files4310 creates package files4311 with invalid remote_id: 1231234312 behaves like returning response status4313 returns forbidden4314 with invalid remote_id: ../../1231234315 behaves like returning response status4316 returns forbidden4317 and direct upload disabled4318 and background upload disabled4319 behaves like creates terraform module package files4320 creates package files4321 and background upload enabled4322 behaves like creates terraform module package files4323 creates package files4324 visibility: :private, user_role: :guest, member: true, token_header: "JOB-TOKEN", token_type: :job_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden4325 behaves like rejects terraform module packages access4326 for user type guest4327 behaves like returning response status4328 returns forbidden4329 visibility: :private, user_role: :developer, member: true, token_header: "JOB-TOKEN", token_type: :job_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized4330 behaves like rejects terraform module packages access4331 for user type developer4332 behaves like returning response status4333 returns unauthorized4334 visibility: :private, user_role: :guest, member: true, token_header: "JOB-TOKEN", token_type: :job_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized4335 behaves like rejects terraform module packages access4336 for user type guest4337 behaves like returning response status4338 returns unauthorized4339 visibility: :private, user_role: :developer, member: false, token_header: "JOB-TOKEN", token_type: :job_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :not_found4340 behaves like rejects terraform module packages access4341 for user type developer4342 behaves like returning response status4343 returns not_found4344 visibility: :private, user_role: :guest, member: false, token_header: "JOB-TOKEN", token_type: :job_token, valid_token: true, shared_examples_name: "rejects terraform module packages access", expected_status: :not_found4345 behaves like rejects terraform module packages access4346 for user type guest4347 behaves like returning response status4348 returns not_found4349 visibility: :private, user_role: :developer, member: false, token_header: "JOB-TOKEN", token_type: :job_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized4350 behaves like rejects terraform module packages access4351 for user type developer4352 behaves like returning response status4353 returns unauthorized4354 visibility: :private, user_role: :guest, member: false, token_header: "JOB-TOKEN", token_type: :job_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized4355 behaves like rejects terraform module packages access4356 for user type guest4357 behaves like returning response status4358 returns unauthorized4359 visibility: :public, user_role: :developer, member: true, token_header: "DEPLOY-TOKEN", token_type: :deploy_token, valid_token: true, shared_examples_name: "process terraform module upload", expected_status: :created4360 behaves like process terraform module upload4361 for user type developer4362 with object storage disabled4363 without a file from workhorse4364 behaves like returning response status4365 returns bad_request4366 with correct params4367 behaves like package workhorse uploads4368 without a workhorse header4369 logs an error4370 behaves like returning response status4371 returns forbidden4372 behaves like creates terraform module package files4373 creates package files4374 behaves like a package tracking event4375 creates a gitlab tracking event push_package4376 with object storage enabled4377 and direct upload enabled4378 behaves like creates terraform module package files4379 creates package files4380 with invalid remote_id: 1231234381 behaves like returning response status4382 returns forbidden4383 with invalid remote_id: ../../1231234384 behaves like returning response status4385 returns forbidden4386 and direct upload disabled4387 and background upload disabled4388 behaves like creates terraform module package files4389 creates package files4390 and background upload enabled4391 behaves like creates terraform module package files4392 creates package files4393 visibility: :public, user_role: :developer, member: true, token_header: "DEPLOY-TOKEN", token_type: :deploy_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized4394 behaves like rejects terraform module packages access4395 for user type developer4396 behaves like returning response status4397 returns unauthorized4398 visibility: :private, user_role: :developer, member: true, token_header: "DEPLOY-TOKEN", token_type: :deploy_token, valid_token: true, shared_examples_name: "process terraform module upload", expected_status: :created4399 behaves like process terraform module upload4400 for user type developer4401 with object storage disabled4402 without a file from workhorse4403 behaves like returning response status4404 returns bad_request4405 with correct params4406 behaves like package workhorse uploads4407 without a workhorse header4408 logs an error4409 behaves like returning response status4410 returns forbidden4411 behaves like creates terraform module package files4412 creates package files4413 behaves like a package tracking event4414 creates a gitlab tracking event push_package4415 with object storage enabled4416 and direct upload enabled4417 behaves like creates terraform module package files4418 creates package files4419 with invalid remote_id: 1231234420 behaves like returning response status4421 returns forbidden4422 with invalid remote_id: ../../1231234423 behaves like returning response status4424 returns forbidden4425 and direct upload disabled4426 and background upload disabled4427 behaves like creates terraform module package files4428 creates package files4429 and background upload enabled4430 behaves like creates terraform module package files4431 creates package files4432 visibility: :private, user_role: :developer, member: true, token_header: "DEPLOY-TOKEN", token_type: :deploy_token, valid_token: false, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized4433 behaves like rejects terraform module packages access4434 for user type developer4435 behaves like returning response status4436 returns unauthorized4437 failed package file save4438 does not create package record4439 with an existing package4440 does not create a new package4441 marked as pending_destruction4442 does create a new package4443API::ProjectPackages4444 GET /projects/:id/packages4445 without the need for a license4446 project is public4447 behaves like returns packages4448 for no_type4449 returns success response4450 returns a valid response schema4451 returns two packages4452 with conan package4453 uses the conan recipe as the package name4454 with terraform module package4455 when no package_type filter is set4456 filters out terraform module packages4457 returns packages with the package registry web_path4458 when package_type filter is set to terraform_module4459 returns the terraform module package4460 returns the terraform module package with the infrastructure registry web_path4461 in nested group4462 returns the nested terraform module package with the correct web_path4463 project is private4464 for unauthenticated user4465 behaves like rejects packages access4466 for no_type4467 behaves like returning response status4468 returns not_found4469 for authenticated user4470 behaves like returns packages4471 for maintainer4472 returns success response4473 returns a valid response schema4474 returns two packages4475 behaves like returns packages4476 for developer4477 returns success response4478 returns a valid response schema4479 returns two packages4480 behaves like returns packages4481 for reporter4482 returns success response4483 returns a valid response schema4484 returns two packages4485 behaves like rejects packages access4486 for no_type4487 behaves like returning response status4488 returns not_found4489 behaves like rejects packages access4490 for guest4491 behaves like returning response status4492 returns forbidden4493 user is a maintainer4494 returns the destroy url4495 with pagination params4496 with pagination params4497 behaves like returns paginated packages4498 when viewing the first page4499 returns first 2 packages4500 when viewing the second page4501 returns first 2 packages4502 with sorting4503 behaves like package sorting4504 sorting by name4505 ascending order4506 returns the sorted packages4507 descending order4508 returns the sorted packages4509 behaves like package sorting4510 sorting by created_at4511 ascending order4512 returns the sorted packages4513 descending order4514 returns the sorted packages4515 behaves like package sorting4516 sorting by version4517 ascending order4518 returns the sorted packages4519 descending order4520 returns the sorted packages4521 behaves like package sorting4522 sorting by type4523 ascending order4524 returns the sorted packages4525 descending order4526 returns the sorted packages4527 behaves like filters on each package_type4528 for package type maven4529 returns maven packages4530 for package type npm4531 returns npm packages4532 for package type conan4533 returns conan packages4534 for package type nuget4535 returns nuget packages4536 for package type pypi4537 returns pypi packages4538 for package type composer4539 returns composer packages4540 for package type generic4541 returns generic packages4542 for package type golang4543 returns golang packages4544 for package type debian4545 returns debian packages4546 for package type rubygems4547 returns rubygems packages4548 for package type helm4549 returns helm packages4550 for package type terraform_module4551 returns terraform_module packages4552 filtering on package_name4553 returns the named package4554 behaves like with versionless packages4555 with versionless package4556 behaves like not including the package4557 does not return the package4558 with include_versionless param4559 with true include_versionless param4560 for param true4561 returns the package4562 for param true4563 returns the package4564 for param 14565 returns the package4566 for param 14567 returns the package4568 with falsy include_versionless param4569 for param false4570 behaves like not including the package4571 does not return the package4572 for param4573 behaves like not including the package4574 does not return the package4575 for param4576 behaves like not including the package4577 does not return the package4578 for param false4579 behaves like not including the package4580 does not return the package4581 for param 04582 behaves like not including the package4583 does not return the package4584 for param 04585 behaves like not including the package4586 does not return the package4587 behaves like with status param4588 hidden packages4589 no status param4590 behaves like not including the hidden package4591 does not return the package4592 with hidden status param4593 returns the package4594 bad status param4595 returns the package4596 behaves like does not cause n^2 queries4597 avoids N^2 database queries4598 GET /projects/:id/packages/:package_id4599 without the need for a license4600 with build info4601 does not result in additional queries4602 project is public4603 returns 200 and the package information4604 returns 404 when the package does not exist4605 returns 404 for the package from a different project4606 behaves like no destroy url4607 returns no destroy url4608 project is private4609 returns 404 for non authenticated user4610 returns 404 for a user without access to the project4611 user is a developer4612 returns 200 and the package information4613 behaves like no destroy url4614 returns no destroy url4615 user is a maintainer4616 behaves like destroy url4617 returns destroy url4618 with pipeline4619 returns the pipeline info4620 DELETE /projects/:id/packages/:package_id4621 without the need for a license4622 project is public4623 returns 403 for non authenticated user4624 returns 403 for a user without access to the project4625 project is private4626 returns 404 for non authenticated user4627 returns 404 for a user without access to the project4628 returns 404 when the package does not exist4629 returns 404 for the package from a different project4630 returns 403 for a user without enough permissions4631 returns 2044632 with a maven package4633 enqueues a sync worker job4634API::ProjectSnippets4635 GET /projects/:project_id/snippets/:id/user_agent_detail4636 exposes known attributes4637 respects project scoping4638 returns unauthorized for non-admin users4639 with snippets disabled4640 behaves like 403 response4641 returns 4034642 GET /projects/:project_id/snippets/4643 returns all snippets available to team member4644 hides private snippets from regular user4645 with snippets disabled4646 behaves like 403 response4647 returns 4034648 GET /projects/:project_id/snippets/:id4649 returns snippet json4650 returns 404 for invalid snippet id4651 with snippets disabled4652 behaves like 403 response4653 returns 4034654 behaves like project snippet access levels4655 behaves like unauthenticated project snippet access4656 project_visibility: :public, snippet_visibility: :public, status: :ok4657 behaves like expected response status4658 returns the correct response4659 project_visibility: :public, snippet_visibility: :private, status: :not_found4660 behaves like expected response status4661 returns the correct response4662 project_visibility: :public, snippet_visibility: :internal, status: :not_found4663 behaves like expected response status4664 returns the correct response4665 project_visibility: :internal, snippet_visibility: :public, status: :not_found4666 behaves like expected response status4667 returns the correct response4668 project_visibility: :private, snippet_visibility: :public, status: :not_found4669 behaves like expected response status4670 returns the correct response4671 behaves like non-member project snippet access4672 project_visibility: :public, snippet_visibility: :public, status: :ok4673 behaves like expected response status4674 returns the correct response4675 project_visibility: :public, snippet_visibility: :internal, status: :ok4676 behaves like expected response status4677 returns the correct response4678 project_visibility: :internal, snippet_visibility: :public, status: :ok4679 behaves like expected response status4680 returns the correct response4681 project_visibility: :public, snippet_visibility: :private, status: :not_found4682 behaves like expected response status4683 returns the correct response4684 project_visibility: :private, snippet_visibility: :public, status: :not_found4685 behaves like expected response status4686 returns the correct response4687 behaves like member project snippet access4688 project_visibility: :public, snippet_visibility: :public, status: :ok4689 behaves like expected response status4690 returns the correct response4691 project_visibility: :public, snippet_visibility: :internal, status: :ok4692 behaves like expected response status4693 returns the correct response4694 project_visibility: :internal, snippet_visibility: :public, status: :ok4695 behaves like expected response status4696 returns the correct response4697 project_visibility: :public, snippet_visibility: :private, status: :ok4698 behaves like expected response status4699 returns the correct response4700 project_visibility: :private, snippet_visibility: :public, status: :ok4701 behaves like expected response status4702 returns the correct response4703 POST /projects/:project_id/snippets/4704 with an external user4705 that belongs to the project4706 creates a new snippet4707 that does not belong to the project4708 does not create a new snippet4709 with a regular user4710 creates a new snippet4711 behaves like project snippet repository actions4712 commit the files to the repository4713 with an admin4714 creates a new snippet4715 returns 400 for missing parameters4716 returns 400 if title is blank4717 behaves like project snippet repository actions4718 commit the files to the repository4719 behaves like snippet creation with files parameter4720 returns 400 if both files and content are provided4721 returns 400 when neither files or content are provided4722 path: ".gitattributes", content: "file content", status: :created, error: nil4723 responds correctly4724 path: "valid/path/file.rb", content: "file content", status: :created, error: nil4725 responds correctly4726 path: ".gitattributes", content: nil, status: :bad_request, error: "files[0][content] is empty"4727 responds correctly4728 path: ".gitattributes", content: "", status: :bad_request, error: "files[0][content] is empty"4729 responds correctly4730 path: "", content: "file content", status: :bad_request, error: "files[0][file_path] is empty"4731 responds correctly4732 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"4733 responds correctly4734 path: "../../etc/passwd", content: "file content", status: :bad_request, error: "files[0][file_path] should be a valid file path"4735 responds correctly4736 behaves like snippet creation without files parameter4737 allows file_name and content parameters4738 returns 400 if file_name and content are not both provided4739 returns 400 if content is blank4740 when save fails because the repository could not be created4741 returns 4004742 when the snippet is spam4743 when the snippet is private4744 creates the snippet4745 when the snippet is public4746 rejects the snippet4747 creates a spam log4748 with snippets disabled4749 behaves like 403 response4750 returns 4034751 PUT /projects/:project_id/snippets/:id/4752 behaves like snippet file updates4753 with various snippet file changes4754 is_multi_file: true, file_name: nil, content: nil, files: [{:action=>"create", :file_path=>"foo.txt", :content=>"bar"}], status: :success4755 has the correct response4756 is_multi_file: true, file_name: nil, content: nil, files: [{:action=>"update", :file_path=>"CHANGELOG", :content=>"bar"}], status: :success4757 has the correct response4758 is_multi_file: true, file_name: nil, content: nil, files: [{:action=>"move", :file_path=>".old-gitattributes", :previous_path=>".gitattributes"}], status: :success4759 has the correct response4760 is_multi_file: true, file_name: nil, content: nil, files: [{:action=>"delete", :file_path=>"CONTRIBUTING.md"}], status: :success4761 has the correct response4762 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: :success4763 has the correct response4764 is_multi_file: true, file_name: "foo.txt", content: "bar", files: [{:action=>"create", :file_path=>"foo.txt", :content=>"bar"}], status: :bad_request4765 has the correct response4766 is_multi_file: true, file_name: "foo.txt", content: "bar", files: nil, status: :bad_request4767 has the correct response4768 is_multi_file: true, file_name: nil, content: nil, files: nil, status: :bad_request4769 has the correct response4770 is_multi_file: true, file_name: "foo.txt", content: nil, files: [{:action=>"create", :file_path=>"foo.txt", :content=>"bar"}], status: :bad_request4771 has the correct response4772 is_multi_file: true, file_name: nil, content: "bar", files: [{:action=>"create", :file_path=>"foo.txt", :content=>"bar"}], status: :bad_request4773 has the correct response4774 is_multi_file: true, file_name: "", content: nil, files: [{:action=>"create", :file_path=>"foo.txt", :content=>"bar"}], status: :bad_request4775 has the correct response4776 is_multi_file: true, file_name: nil, content: "", files: [{:action=>"create", :file_path=>"foo.txt", :content=>"bar"}], status: :bad_request4777 has the correct response4778 is_multi_file: true, file_name: nil, content: nil, files: [{:action=>"create", :file_path=>"../../etc/passwd", :content=>"bar"}], status: :bad_request4779 has the correct response4780 is_multi_file: true, file_name: nil, content: nil, files: [{:action=>"create", :previous_path=>"../../etc/passwd", :file_path=>"CHANGELOG", :content=>"bar"}], status: :bad_request4781 has the correct response4782 is_multi_file: true, file_name: nil, content: nil, files: [{:action=>"move", :file_path=>"missing_previous_path.txt"}], status: :unprocessable_entity4783 has the correct response4784 is_multi_file: false, file_name: "foo.txt", content: "bar", files: nil, status: :success4785 has the correct response4786 is_multi_file: false, file_name: "foo.txt", content: nil, files: nil, status: :success4787 has the correct response4788 is_multi_file: false, file_name: nil, content: "bar", files: nil, status: :success4789 has the correct response4790 is_multi_file: false, file_name: "foo.txt", content: "bar", files: [{:action=>"create", :file_path=>"foo.txt", :content=>"bar"}], status: :bad_request4791 has the correct response4792 is_multi_file: false, file_name: nil, content: nil, files: nil, status: :bad_request4793 has the correct response4794 is_multi_file: false, file_name: nil, content: "", files: nil, status: :bad_request4795 has the correct response4796 is_multi_file: false, file_name: nil, content: nil, files: [{:action=>"create", :file_path=>"../../etc/passwd", :content=>"bar"}], status: :bad_request4797 has the correct response4798 is_multi_file: false, file_name: nil, content: nil, files: [{:action=>"create", :previous_path=>"../../etc/passwd", :file_path=>"CHANGELOG", :content=>"bar"}], status: :bad_request4799 has the correct response4800 when save fails due to a repository commit error4801 returns a bad request response4802 behaves like snippet non-file updates4803 updates a snippet non-file attributes4804 behaves like snippet individual non-file updates4805 attribute: :description, updated_value: "new description"4806 updates the attribute4807 attribute: :title, updated_value: "new title"4808 updates the attribute4809 attribute: :visibility, updated_value: "private"4810 updates the attribute4811 behaves like invalid snippet updates4812 returns 404 for invalid snippet id4813 returns 400 for missing parameters4814 returns 400 if content is blank4815 returns 400 if title is blank4816 behaves like update with repository actions4817 when the repository exists4818 commits the changes to the repository4819 when the repository does not exist4820 when update attributes does not include file_name or content4821 does not create the repository4822 when update attributes include file_name or content4823 creates the repository4824 commits the file to the repository4825 when save fails due to a repository creation error4826 returns 4004827 does not save the changes to the snippet object4828 when the snippet is spam4829 when the snippet is private4830 creates the snippet4831 when the snippet is public4832 rejects the snippet4833 creates a spam log4834 when the private snippet is made public4835 rejects the snippet4836 creates a spam log4837 with snippets disabled4838 behaves like 403 response4839 returns 4034840 DELETE /projects/:project_id/snippets/:id/4841 deletes snippet4842 returns 404 for invalid snippet id4843 behaves like 412 response4844 for a modified ressource4845 returns 412 with a JSON error4846 for an unmodified ressource4847 returns 204 with an empty body4848 with snippets disabled4849 behaves like 403 response4850 returns 4034851 GET /projects/:project_id/snippets/:id/raw4852 returns raw text4853 returns 404 for invalid snippet id4854 behaves like project snippet access levels4855 behaves like unauthenticated project snippet access4856 project_visibility: :public, snippet_visibility: :public, status: :ok4857 behaves like expected response status4858 returns the correct response4859 project_visibility: :public, snippet_visibility: :private, status: :not_found4860 behaves like expected response status4861 returns the correct response4862 project_visibility: :public, snippet_visibility: :internal, status: :not_found4863 behaves like expected response status4864 returns the correct response4865 project_visibility: :internal, snippet_visibility: :public, status: :not_found4866 behaves like expected response status4867 returns the correct response4868 project_visibility: :private, snippet_visibility: :public, status: :not_found4869 behaves like expected response status4870 returns the correct response4871 behaves like non-member project snippet access4872 project_visibility: :public, snippet_visibility: :public, status: :ok4873 behaves like expected response status4874 returns the correct response4875 project_visibility: :public, snippet_visibility: :internal, status: :ok4876 behaves like expected response status4877 returns the correct response4878 project_visibility: :internal, snippet_visibility: :public, status: :ok4879 behaves like expected response status4880 returns the correct response4881 project_visibility: :public, snippet_visibility: :private, status: :not_found4882 behaves like expected response status4883 returns the correct response4884 project_visibility: :private, snippet_visibility: :public, status: :not_found4885 behaves like expected response status4886 returns the correct response4887 behaves like member project snippet access4888 project_visibility: :public, snippet_visibility: :public, status: :ok4889 behaves like expected response status4890 returns the correct response4891 project_visibility: :public, snippet_visibility: :internal, status: :ok4892 behaves like expected response status4893 returns the correct response4894 project_visibility: :internal, snippet_visibility: :public, status: :ok4895 behaves like expected response status4896 returns the correct response4897 project_visibility: :public, snippet_visibility: :private, status: :ok4898 behaves like expected response status4899 returns the correct response4900 project_visibility: :private, snippet_visibility: :public, status: :ok4901 behaves like expected response status4902 returns the correct response4903 with snippets disabled4904 behaves like 403 response4905 returns 4034906 behaves like snippet blob content4907 returns content from repository4908 when snippet repository is empty4909 returns content from database4910 GET /projects/:project_id/snippets/:id/files/:ref/:file_path/raw4911 behaves like raw snippet files4912 with an invalid snippet ID4913 returns 4044914 with valid params4915 returns the raw file info4916 with unauthorized user4917 returns 4044918 with invalid params4919 file_path: "%2Egitattributes", ref: "invalid-ref", status: :not_found, key: "message", message: "404 Reference Not Found"4920 returns the proper response code and message4921 file_path: "%2Egitattributes", ref: nil, status: :not_found, key: "error", message: "404 Not Found"4922 returns the proper response code and message4923 file_path: "%2Egitattributes", ref: "", status: :not_found, key: "error", message: "404 Not Found"4924 returns the proper response code and message4925 file_path: "doesnotexist.rb", ref: "master", status: :not_found, key: "message", message: "404 File Not Found"4926 returns the proper response code and message4927 file_path: "/does/not/exist.rb", ref: "master", status: :not_found, key: "error", message: "404 Not Found"4928 returns the proper response code and message4929 file_path: "%2E%2E%2Fetc%2Fpasswd", ref: "master", status: :bad_request, key: "error", message: "file_path should be a valid file path"4930 returns the proper response code and message4931 file_path: "%2Fetc%2Fpasswd", ref: "master", status: :bad_request, key: "error", message: "file_path should be a valid file path"4932 returns the proper response code and message4933 file_path: "../../etc/passwd", ref: "master", status: :not_found, key: "error", message: "404 Not Found"4934 returns the proper response code and message4935 behaves like project snippet access levels4936 behaves like unauthenticated project snippet access4937 project_visibility: :public, snippet_visibility: :public, status: :ok4938 behaves like expected response status4939 returns the correct response4940 project_visibility: :public, snippet_visibility: :private, status: :not_found4941 behaves like expected response status4942 returns the correct response4943 project_visibility: :public, snippet_visibility: :internal, status: :not_found4944 behaves like expected response status4945 returns the correct response4946 project_visibility: :internal, snippet_visibility: :public, status: :not_found4947 behaves like expected response status4948 returns the correct response4949 project_visibility: :private, snippet_visibility: :public, status: :not_found4950 behaves like expected response status4951 returns the correct response4952 behaves like non-member project snippet access4953 project_visibility: :public, snippet_visibility: :public, status: :ok4954 behaves like expected response status4955 returns the correct response4956 project_visibility: :public, snippet_visibility: :internal, status: :ok4957 behaves like expected response status4958 returns the correct response4959 project_visibility: :internal, snippet_visibility: :public, status: :ok4960 behaves like expected response status4961 returns the correct response4962 project_visibility: :public, snippet_visibility: :private, status: :not_found4963 behaves like expected response status4964 returns the correct response4965 project_visibility: :private, snippet_visibility: :public, status: :not_found4966 behaves like expected response status4967 returns the correct response4968 behaves like member project snippet access4969 project_visibility: :public, snippet_visibility: :public, status: :ok4970 behaves like expected response status4971 returns the correct response4972 project_visibility: :public, snippet_visibility: :internal, status: :ok4973 behaves like expected response status4974 returns the correct response4975 project_visibility: :internal, snippet_visibility: :public, status: :ok4976 behaves like expected response status4977 returns the correct response4978 project_visibility: :public, snippet_visibility: :private, status: :ok4979 behaves like expected response status4980 returns the correct response4981 project_visibility: :private, snippet_visibility: :public, status: :ok4982 behaves like expected response status4983 returns the correct response4984API::ProjectExport4985 GET /projects/:project_id/export4986 behaves like when project export is disabled4987 behaves like 404 response4988 returns 4044989 when project export is enabled4990 when user is an admin4991 behaves like get project export status ok4992 is none4993 when project export has started4994 returns status started4995 when project export has finished4996 returns status finished4997 when project export is being regenerated4998 returns status regeneration_in_progress4999 when user is a maintainer5000 behaves like get project export status ok5001 is none5002 when project export has started5003 returns status started5004 when project export has finished5005 returns status finished5006 when project export is being regenerated5007 returns status regeneration_in_progress5008 when user is a developer5009 behaves like get project export status denied5010 behaves like 403 response5011 returns 4035012 when user is a reporter5013 behaves like get project export status denied5014 behaves like 403 response5015 returns 4035016 when user is a guest5017 behaves like get project export status denied5018 behaves like 403 response5019 returns 4035020 when user is not a member5021 behaves like get project export status not found5022 behaves like 404 response5023 returns 4045024 GET /projects/:project_id/export/download5025 behaves like when project export is disabled5026 behaves like 404 response5027 returns 4045028 when project export is enabled5029 when user is an admin5030 behaves like get project download by strategy5031 when upload strategy set5032 behaves like get project export upload after action5033 and is uploading5034 downloads5035 when export object is not present5036 returns 4045037 when upload complete5038/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 nil5039 has removed the export5040 behaves like 404 response5041/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 returns 4045043 when download strategy set5044 behaves like get project export download5045 downloads5046 behaves like 404 response5047 returns 4045048 behaves like 404 response5049 returns 4045050 when rate limit is exceeded5051 prevents requesting project export5052 applies correct scope when throttling5053 throttles downloads within same namespaces5054 allows downloads from different namespaces5055 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 4035195AutocompleteController5196 GET users5197 project members5198 GET #users with project ID5199 returns the project members5200 GET #users with unknown project5201 is expected to respond with numeric status code not_found5202 group members5203 GET #users with group ID5204 returns the group members5205 GET #users with unknown group ID5206 is expected to respond with numeric status code not_found5207 non-member login for public project5208 GET #users with project ID5209 returns the project members and non-members5210 all users5211 is expected to be a kind of Array5212 is expected to eq 35213 user order5214 shows exact matches first5215 limited users per page5216 is expected to be a kind of Array5217 is expected to eq 205218 unauthenticated user5219 GET #users with public project5220 is expected to be a kind of Array5221 is expected to eq 25222 GET #users with project5223 is expected to respond with numeric status code not_found5224 GET #users with unknown project5225 is expected to respond with numeric status code not_found5226 GET #users with inaccessible group5227 is expected to respond with numeric status code not_found5228 GET #users with no project5229 is expected to be a kind of Array5230 is expected to be empty5231 GET #users with todo filter5232 gives an array of users5233 author of issuable included5234 authenticated5235 includes the author5236 rejects non existent user ids5237 without authenticating5238 returns empty result5239 skip_users parameter included5240 skips the user IDs passed5241 merge_request_iid parameter included5242 includes can_merge option to users5243 behaves like rate limited endpoint5244 when rate limiter enabled5245 logs request and declines it when endpoint called more than the threshold5246 when rate limiter is disabled5247 does not log request and does not block the request5248 GET projects5249 authorized projects5250 GET #projects with project ID5251 returns projects5252 authorized projects and search5253 GET #projects with project ID and search5254 returns projects5255 authorized projects apply limit5256 GET #projects with project ID5257 returns projects5258 authorized projects without admin_issue ability5259 GET #projects with project ID5260 returns no projects5261 GET award_emojis5262 unauthorized user5263 returns empty json5264 sign in as user without award emoji5265 returns empty json5266 sign in as user with award emoji5267 returns json sorted by name count5268 GET deploy_keys_with_owners5269 unauthorized user5270 returns a not found response5271 when the user who can read the project is logged in5272 renders the deploy key in a json payload, with its owner5273 and they cannot read the project5274 returns a not found response5275 with an unknown project5276 returns a not found response5277 and the user cannot read the owner of the key5278 returns a payload without owner5279 Get merge_request_target_branches5280 anonymous user5281 returns empty json5282 user without any accessible merge requests5283 returns empty json5284 user with an accessible merge request but no scope5285 params: {}5286 returns an error5287 params: {:group_id=>" "}5288 returns an error5289 params: {:project_id=>" "}5290 returns an error5291 params: {:group_id=>" ", :project_id=>" "}5292 returns an error5293 user with an accessible merge request by project5294 returns json5295 user with an accessible merge request by group5296 returns json5297API::GroupLabels5298 GET :id/labels5299 get current group labels5300 behaves like fetches labels5301 returns correct labels5302 when search param is provided5303 behaves like fetches labels5304 returns correct labels5305 and is subscribed5306 returns true5307 and is unsubscribed5308 returns false5309 when the with_counts parameter is set5310 includes counts in the response5311 when include_descendant_groups param is provided5312 behaves like fetches labels5313 returns correct labels5314 when search param is provided5315 behaves like fetches labels5316 returns correct labels5317 when only_group_labels param is false5318 behaves like fetches labels5319 returns correct labels5320 when search param is provided5321 behaves like fetches labels5322 returns correct labels5323 with subgroup labels5324 when the include_ancestor_groups parameter is not set5325 behaves like fetches labels5326 returns correct labels5327 when search param is provided5328 behaves like fetches labels5329 returns correct labels5330 when the include_ancestor_groups parameter is set to false5331 behaves like fetches labels5332 returns correct labels5333 when search param is provided5334 behaves like fetches labels5335 returns correct labels5336 GET :id/labels/:label_id5337 returns a single label for the group5338 POST /groups/:id/labels5339 returns created label when all params are given5340 returns created label when only required params are given5341 returns a 400 bad request if name not given5342 returns a 400 bad request if color is not given5343 returns 409 if label already exists5344 DELETE /groups/:id/labels (deprecated)5345 returns 204 for existing label5346 returns 404 for non existing label5347 returns 400 for wrong parameters5348 does not delete parent's group labels5349 behaves like 412 response5350 for a modified ressource5351 returns 412 with a JSON error5352 for an unmodified ressource5353 returns 204 with an empty body5354 DELETE /groups/:id/labels/:label_id5355 returns 204 for existing label5356 returns 404 for non existing label5357 does not delete parent's group labels5358 behaves like 412 response5359 for a modified ressource5360 returns 412 with a JSON error5361 for an unmodified ressource5362 returns 204 with an empty body5363 PUT /groups/:id/labels (deprecated)5364 returns 200 if name and colors and description are changed5365 does not update parent's group label5366 returns 404 if label does not exist5367 returns 400 if no label name given5368 returns 400 if no new parameters given5369 PUT /groups/:id/labels/:label_id5370 returns 200 if name and colors and description are changed5371 does not update parent's group label5372 returns 404 if label does not exist5373 returns 400 if no new parameters given5374 POST /groups/:id/labels/:label_id/subscribe5375 when label_id is a label title5376 subscribes to the label5377 when label_id is a label ID5378 subscribes to the label5379 when user is already subscribed to label5380 returns 3045381 when label ID is not found5382 returns 404 error5383 POST /groups/:id/labels/:label_id/unsubscribe5384 when label_id is a label title5385 unsubscribes from the label5386 when label_id is a label ID5387 unsubscribes from the label5388 when user is already unsubscribed from label5389 returns 3045390 when label ID is not found5391 returns 404 error5392ApplicationController5393 #check_password_expiration5394 redirects if the user is over their password expiry5395 does not redirect if the user is under their password expiry5396 does not redirect if the user is over their password expiry but they are an ldap user5397 does not redirect if the user is over their password expiry but password authentication is disabled for the web interface5398 #add_gon_variables5399 with html format5400 behaves like setting gon variables5401 sets gon variables5402 with json format5403 behaves like not setting gon variables5404 does not set gon variables5405 with atom format5406 behaves like not setting gon variables5407 does not set gon variables5408 session expiration5409 authenticated user5410 does not set the expire_after option5411 unauthenticated user5412 sets the expire_after option5413 response format5414 when format is handled5415 returns 200 response5416 when format is not handled5417 returns 404 response5418 #route_not_found5419 renders 404 if authenticated5420 renders 404 if client is a search engine crawler5421 redirects to login page if not authenticated5422 redirects if unauthenticated and request format is unknown5423 #set_page_title_header5424 URI encodes UTF-8 characters in the title5425 two-factor authentication5426 #check_two_factor_requirement5427 does not redirect if user has temporary oauth email5428 does not redirect if 2FA is not required5429 does not redirect if user is not logged in5430 does not redirect if user has 2FA enabled5431 does not redirect if 2FA setup can be skipped5432 redirects to 2FA setup otherwise5433 #two_factor_authentication_required?5434 returns false if no 2FA requirement is present5435 returns true if a 2FA requirement is set in the application settings5436 returns true if a 2FA requirement is set on the user5437 #two_factor_grace_period5438 returns the grace period from the application settings5439 with a 2FA requirement set on the user5440 returns the user grace period if lower than the application grace period5441 returns the application grace period if lower than the user grace period5442 #two_factor_grace_period_expired?5443 returns false if the user has not started their grace period yet5444 with grace period started5445 returns true if the grace period has expired5446 returns false if the grace period is still active5447 #two_factor_skippable5448 returns false if 2FA is not required5449 returns false if the user has already enabled 2FA5450 returns false if the 2FA grace period has expired5451 returns true otherwise5452 #skip_two_factor?5453 returns false if 2FA setup was not skipped5454 with 2FA setup skipped5455 returns false if the grace period has expired5456 returns true if the grace period is still active5457 deactivated user5458 signs out a deactivated user5459 terms5460 does not query more when terms are enforced5461 when terms are enforced5462 redirects if the user did not accept the terms5463 does not redirect when the user accepted terms5464 #append_info_to_payload5465 does not log errors with a 200 response5466 does log correlation id5467 adds context metadata to the payload5468 urgency information5469 adds default urgency information to the payload5470 adds customized urgency information to the payload5471 #access_denied5472 renders a 404 without a message5473 renders a 403 when a message is passed to access denied5474 renders a status passed to access denied5475 when invalid UTF-8 parameters are received5476 html5477 renders 4125478 js5479 renders 4125480 X-GitLab-Custom-Error header5481 given a 422 error page5482 sets a custom header5483 given a 500 error page5484 sets a custom header5485 given a 200 success page5486 does not set a custom header5487 given a json response5488 sets a custom header5489 for html request5490 sets a custom header5491 for 200 response5492 does not set a custom header5493 control headers5494 user not logged in5495 sets the default headers5496 user logged in5497 sets the default headers5498 #stream_csv_headers5499 sets no-cache headers5500 sets stream headers5501 sets the csv specific headers5502 Gitlab::Session5503 is set on web requests5504 with sessionless user5505 is not set5506 #current_user_mode5507 with a regular user5508 admin mode is not set5509 with an admin user5510 admin mode is not set5511 that re-authenticated5512 admin mode is set5513 #required_signup_info5514 user with required role5515 is expected to redirect to "/users/sign_up/welcome"5516 user without a required role5517 is expected not to redirect to "/users/sign_up/welcome"5518 rescue_from Gitlab::Auth::IpBlacklisted5519 returns a 403 and logs the request5520 #set_current_context5521 does not break anything when no group or project method is defined5522 sets the username in the context when signed in5523 sets the group if it was available5524 sets the project if one was available5525 sets the caller_id as controller#action5526 sets the feature_category as defined in the controller5527 assigns the context to a variable for logging5528 assigns the context when the action caused an error5529 .endpoint_id_for_action5530 returns an expected endpoint id5531 #current_user5532 when being impersonated5533 returns a User with impersonator5534 when not being impersonated5535 returns a User5536 locale5537 sets user's locale5538 setting permissions-policy header5539 with FloC enabled5540 does not set the Permissions-Policy header5541 with FloC disabled5542 sets the Permissions-Policy header5543 sets the Permissions-Policy header even when redirected before_action5544GitLab metrics server5545 behaves like spawns a server5546 targeting puma when using Golang server is true5547 behaves like serves metrics endpoint55482022/04/28 09:33:52 Serving /metrics on 127.0.0.1:3807 [ pid: 6164 ]5549 serves /metrics endpoint5550 when using Pathname instance as target directory5551 behaves like serves metrics endpoint55522022/04/28 09:33:53 Serving /metrics on 127.0.0.1:3807 [ pid: 6170 ]5553 serves /metrics endpoint5554 behaves like spawns a server5555 targeting puma when using Golang server is false5556 behaves like serves metrics endpoint5557 serves /metrics endpoint5558 when using Pathname instance as target directory5559 behaves like serves metrics endpoint5560 serves /metrics endpoint5561 behaves like spawns a server5562 targeting sidekiq when using Golang server is true5563 behaves like serves metrics endpoint55642022/04/28 09:34:03 Serving /metrics on 127.0.0.1:3807 [ pid: 6186 ]5565 serves /metrics endpoint5566 when using Pathname instance as target directory5567 behaves like serves metrics endpoint55682022/04/28 09:34:04 Serving /metrics on 127.0.0.1:3807 [ pid: 6191 ]5569 serves /metrics endpoint5570 behaves like spawns a server5571 targeting sidekiq when using Golang server is false5572 behaves like serves metrics endpoint5573 serves /metrics endpoint5574 when using Pathname instance as target directory5575 behaves like serves metrics endpoint5576 serves /metrics endpoint5577SessionsController5578 #new5579 redirects correctly for referer on same host with params5580 when auto sign-in is enabled5581 and no auto_sign_in param is passed5582 redirects to :omniauth_authorize_path5583 and auto_sign_in=false param is passed5584 responds with 2005585 with LDAP enabled5586 ldap_servers available in helper5587 with sign_in disabled5588 no ldap_servers available in helper5589 #create5590 behaves like known sign in5591 when the remote IP and the last sign in IP match5592 does not notify the user5593 sets/updates the encrypted cookie5594 when the remote IP and the last sign in IP do not match5595 notifies the user when the cookie is expired5596 notifies the user when the cookie is for another user5597 does not notify the user when remote IP matches an active session5598 does not notify the user when the cookie is present and not expired5599 when the cookie is not previously set5600 notifies the user5601 sets the encrypted cookie5602 when notify_on_unknown_sign_in global setting is false5603 does not notify the user5604 does not set a cookie5605 when using standard authentications5606 invalid password5607 does not authenticate user5608 a blocked user5609 does not authenticate the user5610 a `blocked pending approval` user5611 does not authenticate the user5612 an internal user5613 does not authenticate the user5614 when using valid password5615 authenticates user correctly5616 creates an audit log record5617 creates an authentication event record5618 allows user authenticating from the same ip5619 blocks user authenticating from two distinct ips5620 updates the user activity5621 a deactivated user5622 is allowed to login5623 activates the user5624 shows reactivation flash message after logging in5625 with password authentication disabled5626 does not sign in the user5627 returns status 4035628 with reCAPTCHA5629 when reCAPTCHA is enabled5630 displays an error when the reCAPTCHA is not solved5631 successfully logs in a user when reCAPTCHA is solved5632 when reCAPTCHA login protection is enabled5633 when user tried to login 5 times5634 displays an error when the reCAPTCHA is not solved5635 successfully logs in a user when reCAPTCHA is solved5636 when there are more than 5 anonymous session with the same IP5637 displays an error when the reCAPTCHA is not solved5638 successfully logs in a user when reCAPTCHA is solved5639 when using two-factor authentication via OTP5640 creates an audit log record5641 creates an authentication event record5642 remember_me field5643 sets a remember_user_token cookie when enabled5644 does nothing when disabled5645 with password authentication disabled5646 allows 2FA stage of non-password login5647 when otp_user_id is stale5648 favors login over otp_user_id when password is present and does not authenticate the user5649 when authenticating with login and OTP of another user5650 when another user has 2FA enabled5651 when OTP is valid for another user5652 does not authenticate5653 when OTP is invalid for another user5654 does not authenticate5655 when authenticating with OTP5656 when OTP is valid5657 authenticates correctly5658 when OTP is invalid5659 does not authenticate5660 warns about invalid OTP code5661 when the user is on their last attempt5662 when OTP is valid5663 authenticates correctly5664 when OTP is invalid5665 does not authenticate5666 warns about invalid login5667 locks the user5668 keeps the user locked on future login attempts5669 when using two-factor authentication via U2F device5670 creates an audit log record5671 creates an authentication event record5672 remember_me field5673 sets a remember_user_token cookie when enabled5674 does nothing when disabled5675 when login fails5676 does increment failed login counts for session5677 #set_current_context5678 when signed in5679 sets the username and caller_id in the context5680 when not signed in5681 sets the caller_id in the context5682 when the user becomes locked5683 sets the caller_id in the context5684 #destroy5685 for a user whose password has expired5686 allows to sign out successfully5687Projects::BlobController5688 GET show5689 with file path5690 valid branch, valid file5691 is expected to respond with 2005692 valid branch, invalid file5693 redirects5694 invalid branch, valid file5695 is expected to respond with 4045696 renamed default branch, valid file5697 is expected to redirect to "/namespace443/project471/-/blob/master/README.md"5698 renamed default branch, invalid file5699 is expected to redirect to "/namespace444/project472/-/blob/master/invalid-path.rb"5700 binary file5701 is expected to respond with 2005702 Markdown file5703 is expected to respond with 2005704 with file path and JSON format5705 valid branch, valid file5706 is expected to have key "raw_path"5707 with viewer=none5708 is expected to have key "raw_path"5709 with tree path5710 redirect to tree5711 redirects5712 GET diff5713 when essential params are missing5714 renders nothing5715 when essential params are present5716 when rendering for commit5717 renders the diff content5718 when rendering for merge request5719 renders diff context lines Gitlab::Diff::Line array5720 handles full being true5721 GET edit5722 anonymous5723 redirects to sign in and returns5724 as guest5725 redirects to blob show5726 as developer5727 redirects to blob show5728 as maintainer5729 redirects to blob show5730 PUT update5731 redirects to blob5732 ?from_merge_request_iid5733 redirects to MR diff5734 when user doesn't have access5735 redirects to blob5736 when user has forked project5737 when editing on the fork5738 redirects to blob5739 when editing on the original repository5740 redirects to forked project new merge request5741 behaves like tracking unique hll events5742 tracks unique event5743 DELETE destroy5744 for a file in a subdirectory5745 redirects to the sub directory5746 when a validation failure occurs5747 redirects to a valid page5748 if deleted file is the last one in a subdirectory5749 redirects to the project root5750 when deleting a file in a branch other than master5751 redirects to the project root of the branch5752 POST preview5753 is successful5754 POST create5755 redirects to blob5756 behaves like tracking unique hll events5757 tracks unique event5758API::ProjectMilestones5759 behaves like group and project milestones5760 GET /projects/:id/milestones5761 returns milestones list5762 returns a 401 error if user not authenticated5763 returns an array of active milestones5764 returns an array of closed milestones5765 returns an array of milestones specified by iids5766 does not return any milestone if none found5767 returns a milestone by iids array5768 returns a milestone by title5769 returns a milestone by searching for title5770 returns a milestones by searching for description5771 GET /projects/:id/milestones/:milestone_id5772 returns a milestone by id5773 returns 401 error if user not authenticated5774 returns a 404 error if milestone id not found5775 POST /projects/:id/milestones5776 creates a new milestone5777 creates a new milestone with description and dates5778 returns a 400 error if title is missing5779 returns a 400 error if params are invalid (duplicate title)5780 creates a new milestone with reserved html characters5781 PUT /projects/:id/milestones/:milestone_id5782 updates a milestone5783 removes a due date if nil is passed5784 returns a 404 error if milestone id not found5785 closes milestone5786 updates milestone with only start date5787 DELETE /projects/:id/milestones/:milestone_id5788 rejects a member with reporter access from deleting a milestone5789 deletes the milestone when the user has developer access to the project5790 GET /projects/:id/milestones/:milestone_id/issues5791 returns issues for a particular milestone5792 returns issues sorted by label priority5793 matches V4 response schema for a list of issues5794 returns a 401 error if user not authenticated5795 confidential issues5796 returns confidential issues to team members5797 does not return confidential issues to team members with guest role5798 does not return confidential issues to regular users5799 returns issues ordered by label priority5800 GET /projects/:id/milestones/:milestone_id/merge_requests5801 returns merge_requests for a particular milestone5802 returns merge_requests sorted by label priority5803 returns a 404 error if milestone id not found5804 returns a 404 if the user has no access to the milestone5805 returns a 401 error if user not authenticated5806 returns merge_requests ordered by position asc5807 GET /projects/:id/milestones5808 when include_parent_milestones is true5809 when project parent is a namespace5810 behaves like listing all milestones5811 returns correct list of milestones5812 when project parent is a group5813 behaves like listing all milestones5814 returns correct list of milestones5815 when iids param is present5816 behaves like listing all milestones5817 returns correct list of milestones5818 when user is not a member of the private project5819 returns a 404 error5820 DELETE /projects/:id/milestones/:milestone_id5821 returns 404 response when the project does not exist5822 returns 404 response when the milestone does not exist5823 returns 404 from guest user deleting a milestone5824 PUT /projects/:id/milestones/:milestone_id to test observer on close5825 creates an activity event when a milestone is closed5826 POST /projects/:id/milestones/:milestone_id/promote5827 when user does not have permission to promote milestone5828 returns 4035829 when user has permission5830 returns 2005831 returns 200 for closed milestone5832 when no such resource5833 returns 404 response when the project does not exist5834 returns 404 response when the milestone does not exist5835 when project does not belong to group5836 returns 4035837Projects::IssuesController5838 GET #discussions5839 pagination5840 returns paginated notes and cursor based on per_page param5841 when paginated_issue_discussions is disabled5842 returns all discussions and ignores per_page param5843 token authentication5844 when public project5845 behaves like authenticates sessionless user for the request spec5846 index atom5847 when the 'private_token' param is populated with the personal access token5848 when valid token5849 when resource is public5850 authenticates user and returns response with ok status5851 when user with expired password5852 does not authenticate user and returns response with ok status5853 when the personal access token has no api scope5854 when resource is public5855 does not authenticate user and returns response with ok status5856 when invalid token5857 when resource is public5858 does not authenticate user and returns response with ok status5859 when the 'PRIVATE-TOKEN' header is populated with the personal access token5860 when valid token5861 when resource is public5862 authenticates user and returns response with ok status5863 when user with expired password5864 does not authenticate user and returns response with ok status5865 when the personal access token has no api scope5866 when resource is public5867 does not authenticate user and returns response with ok status5868 when invalid token5869 when resource is public5870 does not authenticate user and returns response with ok status5871 when the 'feed_token' param is populated with the feed token5872 when valid token5873 when resource is public5874 authenticates user and returns response with ok status5875 when user with expired password5876 does not authenticate user and returns response with ok status5877 when invalid token5878 when resource is public5879 does not authenticate user and returns response with ok status5880 behaves like authenticates sessionless user for the request spec5881 calendar ics5882 when the 'private_token' param is populated with the personal access token5883 when valid token5884 when resource is public5885 authenticates user and returns response with ok status5886 when user with expired password5887 does not authenticate user and returns response with ok status5888 when the personal access token has no api scope5889 when resource is public5890 does not authenticate user and returns response with ok status5891 when invalid token5892 when resource is public5893 does not authenticate user and returns response with ok status5894 when the 'PRIVATE-TOKEN' header is populated with the personal access token5895 when valid token5896 when resource is public5897 authenticates user and returns response with ok status5898 when user with expired password5899 does not authenticate user and returns response with ok status5900 when the personal access token has no api scope5901 when resource is public5902 does not authenticate user and returns response with ok status5903 when invalid token5904 when resource is public5905 does not authenticate user and returns response with ok status5906 when the 'feed_token' param is populated with the feed token5907 when valid token5908 when resource is public5909 authenticates user and returns response with ok status5910 when user with expired password5911 does not authenticate user and returns response with ok status5912 when invalid token5913 when resource is public5914 does not authenticate user and returns response with ok status5915 when private project5916 behaves like authenticates sessionless user for the request spec5917 index atom5918 when the 'private_token' param is populated with the personal access token5919 when valid token5920 when resource is private5921 authenticates user and returns response with ok status5922 when user with expired password5923 does not return response with ok status5924 when password expiration is not applicable5925 when ldap user5926 authenticates user and returns response with ok status5927 when the personal access token has no api scope5928 when resource is private5929 does not return response with ok status5930 when invalid token5931 when resource is private5932 does not return response with ok status5933 when the 'PRIVATE-TOKEN' header is populated with the personal access token5934 when valid token5935 when resource is private5936 authenticates user and returns response with ok status5937 when user with expired password5938 does not return response with ok status5939 when password expiration is not applicable5940 when ldap user5941 authenticates user and returns response with ok status5942 when the personal access token has no api scope5943 when resource is private5944 does not return response with ok status5945 when invalid token5946 when resource is private5947 does not return response with ok status5948 when the 'feed_token' param is populated with the feed token5949 when valid token5950 when resource is private5951 authenticates user and returns response with ok status5952 when user with expired password5953 does not return response with ok status5954 when password expiration is not applicable5955 when ldap user5956 authenticates user and returns response with ok status5957 when invalid token5958 when resource is private5959 does not return response with ok status5960 behaves like authenticates sessionless user for the request spec5961 calendar ics5962 when the 'private_token' param is populated with the personal access token5963 when valid token5964 when resource is private5965 authenticates user and returns response with ok status5966 when user with expired password5967 does not return response with ok status5968 when password expiration is not applicable5969 when ldap user5970 authenticates user and returns response with ok status5971 when the personal access token has no api scope5972 when resource is private5973 does not return response with ok status5974 when invalid token5975 when resource is private5976 does not return response with ok status5977 when the 'PRIVATE-TOKEN' header is populated with the personal access token5978 when valid token5979 when resource is private5980 authenticates user and returns response with ok status5981 when user with expired password5982 does not return response with ok status5983 when password expiration is not applicable5984 when ldap user5985 authenticates user and returns response with ok status5986 when the personal access token has no api scope5987 when resource is private5988 does not return response with ok status5989 when invalid token5990 when resource is private5991 does not return response with ok status5992 when the 'feed_token' param is populated with the feed token5993 when valid token5994 when resource is private5995 authenticates user and returns response with ok status5996 when user with expired password5997 does not return response with ok status5998 when password expiration is not applicable5999 when ldap user6000 authenticates user and returns response with ok status6001 when invalid token6002 when resource is private6003 does not return response with ok status6004Projects::MergeRequests::CreationsController6005 GET new6006 merge request that removes a submodule6007 renders new merge request widget template6008 merge request with some commits6009 shows total commits6010 with artificial limits6011 limits total commits6012 GET diffs6013 when merge request cannot be created6014 does not assign diffs var6015 GET pipelines6016 renders JSON including serialized pipelines6017 GET diff_for_path6018 when both branches are in the same project6019 disables diff notes6020 only renders the diffs for the path given6021 when the source branch is in a different project to the target6022 when the path exists in the diff6023 disables diff notes6024 only renders the diffs for the path given6025 when the path does not exist in the diff6026 returns a 4046027 GET #branch_to6028 fetches the commit if a user has access6029 does not load the commit when the user cannot create_merge_request_in6030 does not load the commit when the user cannot read the project6031 no target_project_id provided6032 selects itself as a target project6033 project is a fork6034 calls to project defaults to selects a correct target project6035 POST create6036 creates merge request6037 when the merge request is not created from the web ide6038 counter is not increased6039 when the merge request is created from the web ide6040 counter is increased6041Projects::Snippets::BlobsController6042 GET #raw6043 with a snippet without a repository6044 behaves like raw snippet without repository6045 when authorized6046 returns a 4226047 when unauthorized6048 behaves like returning response status6049 returns not_found6050 project_visibility_level: :public, snippet_visibility_level: :public, user: :author, status: :ok6051 responds with correct status6052 project_visibility_level: :public, snippet_visibility_level: :public, user: :developer, status: :ok6053 responds with correct status6054 project_visibility_level: :public, snippet_visibility_level: :public, user: :other_user, status: :ok6055 responds with correct status6056 project_visibility_level: :public, snippet_visibility_level: :public, user: nil, status: :ok6057 responds with correct status6058 project_visibility_level: :public, snippet_visibility_level: :private, user: :author, status: :ok6059 responds with correct status6060 project_visibility_level: :public, snippet_visibility_level: :private, user: :developer, status: :ok6061 responds with correct status6062 project_visibility_level: :public, snippet_visibility_level: :private, user: :other_user, status: :not_found6063 responds with correct status6064 project_visibility_level: :public, snippet_visibility_level: :private, user: nil, status: :not_found6065 responds with correct status6066 project_visibility_level: :private, snippet_visibility_level: :public, user: :author, status: :ok6067 responds with correct status6068 project_visibility_level: :private, snippet_visibility_level: :public, user: :developer, status: :ok6069 responds with correct status6070 project_visibility_level: :private, snippet_visibility_level: :public, user: :other_user, status: :not_found6071 responds with correct status6072 project_visibility_level: :private, snippet_visibility_level: :public, user: nil, status: :redirect6073 responds with correct status6074 project_visibility_level: :private, snippet_visibility_level: :private, user: :author, status: :ok6075 responds with correct status6076 project_visibility_level: :private, snippet_visibility_level: :private, user: :developer, status: :ok6077 responds with correct status6078 project_visibility_level: :private, snippet_visibility_level: :private, user: :other_user, status: :not_found6079 responds with correct status6080 project_visibility_level: :private, snippet_visibility_level: :private, user: nil, status: :redirect6081 responds with correct status6082 behaves like raw snippet blob6083 with valid params6084 delivers file with correct Workhorse headers6085 responds with status 2006086 Content Disposition6087 when the disposition is inline6088 returns inline in the content disposition header6089 when the disposition is attachment6090 returns attachment plus the filename in the content disposition header6091 with invalid file path6092 behaves like returning response status6093 returns not_found6094 with invalid ref6095 behaves like returning response status6096 returns not_found6097 behaves like content disposition headers6098 sets content disposition to inline6099 when inline param is false6100 sets content disposition to attachment6101API::UsageDataQueries6102 GET /usage_data/usage_data_queries6103 with authentication6104 returns queries if user is admin6105 returns forbidden if user is not admin6106 without authentication6107 returns unauthorized6108 when feature_flag is disabled6109 returns not_found for admin6110 returns forbidden for non-admin6111HealthController6112 GET /-/health6113 accessed from whitelisted ip6114 behaves like endpoint responding with health data6115 responds with health checks data6116 behaves like endpoint not querying database6117 does not query database6118 accessed from not whitelisted ip6119 behaves like endpoint not querying database6120 does not query database6121 behaves like endpoint not found6122 responds with resource not found6123 GET /-/readiness6124 accessed from whitelisted ip6125 behaves like endpoint not querying database6126 does not query database6127 behaves like endpoint responding with readiness data6128 when requesting instance-checks6129 when Puma runs in Clustered mode6130 responds with readiness checks data6131 responds with readiness checks data when a failure happens6132 when Puma runs in Single mode6133 does not invoke MasterCheck, succeedes6134 when requesting all checks6135 when Puma runs in Clustered mode6136 behaves like endpoint responding with readiness data for all checks6137 responds with readiness checks data6138 responds with readiness checks data when a failure happens6139 when DB is not accessible and connection raises an exception6140 responds with 500 including the exception info6141 when any exception happens during the probing6142 responds with 500 including the exception info6143 when Puma runs in Single mode6144 behaves like endpoint responding with readiness data for all checks6145 responds with readiness checks data6146 responds with readiness checks data when a failure happens6147 when DB is not accessible and connection raises an exception6148 responds with 500 including the exception info6149 when any exception happens during the probing6150 responds with 500 including the exception info6151 when requesting all checks6152 behaves like endpoint querying database6153 does query database6154 accessed from not whitelisted ip6155 behaves like endpoint not querying database6156 does not query database6157 behaves like endpoint not found6158 responds with resource not found6159 accessed with valid token6160 token passed in request header6161 behaves like endpoint responding with readiness data6162 when requesting instance-checks6163 when Puma runs in Clustered mode6164 responds with readiness checks data6165 responds with readiness checks data when a failure happens6166 when Puma runs in Single mode6167 does not invoke MasterCheck, succeedes6168 when requesting all checks6169 when Puma runs in Clustered mode6170 behaves like endpoint responding with readiness data for all checks6171 responds with readiness checks data6172 responds with readiness checks data when a failure happens6173 when DB is not accessible and connection raises an exception6174 responds with 500 including the exception info6175 when any exception happens during the probing6176 responds with 500 including the exception info6177 when Puma runs in Single mode6178 behaves like endpoint responding with readiness data for all checks6179 responds with readiness checks data6180 responds with readiness checks data when a failure happens6181 when DB is not accessible and connection raises an exception6182 responds with 500 including the exception info6183 when any exception happens during the probing6184 responds with 500 including the exception info6185 behaves like endpoint querying database6186 does query database6187 token passed as URL param6188 behaves like endpoint responding with readiness data6189 when requesting instance-checks6190 when Puma runs in Clustered mode6191 responds with readiness checks data6192 responds with readiness checks data when a failure happens6193 when Puma runs in Single mode6194 does not invoke MasterCheck, succeedes6195 when requesting all checks6196 when Puma runs in Clustered mode6197 behaves like endpoint responding with readiness data for all checks6198 responds with readiness checks data6199 responds with readiness checks data when a failure happens6200 when DB is not accessible and connection raises an exception6201 responds with 500 including the exception info6202 when any exception happens during the probing6203 responds with 500 including the exception info6204 when Puma runs in Single mode6205 behaves like endpoint responding with readiness data for all checks6206 responds with readiness checks data6207 responds with readiness checks data when a failure happens6208 when DB is not accessible and connection raises an exception6209 responds with 500 including the exception info6210 when any exception happens during the probing6211 responds with 500 including the exception info6212 behaves like endpoint querying database6213 does query database6214 GET /-/liveness6215 accessed from whitelisted ip6216 behaves like endpoint not querying database6217 does not query database6218 behaves like endpoint responding with liveness data6219 responds with liveness checks data6220 accessed from not whitelisted ip6221 behaves like endpoint not querying database6222 does not query database6223 behaves like endpoint not found6224 responds with resource not found6225 accessed with valid token6226 token passed in request header6227 behaves like endpoint responding with liveness data6228 responds with liveness checks data6229 behaves like endpoint querying database6230 does query database6231 token passed as URL param6232 behaves like endpoint responding with liveness data6233 responds with liveness checks data6234 behaves like endpoint querying database6235 does query database6236API::GroupBoards6237 behaves like group and project boards6238 avoids N+1 queries6239 GET /groups/:id/boards6240 when unauthenticated6241 returns authentication error6242 when authenticated6243 returns the issue boards6244 GET /groups/:id/boards/:board_id6245 get a single board by id6246 PUT /groups/:id/boards/:board_id6247 updates the board name6248 updates the issue board booleans6249 GET /groups/:id/boards/:board_id/lists6250 returns issue board lists6251 returns 404 if board not found6252 GET /groups/:id/boards/:board_id/lists/:list_id6253 returns a list6254 returns 404 if list not found6255 POST /groups/:id/boards/lists6256 creates a new issue board list for labels6257 returns 400 when creating a new list if label_id is invalid6258 returns 403 for members with guest role6259 PUT /groups/:id/boards/:board_id/lists/:list_id to update only position6260 updates a list6261 returns 404 error if list id not found6262 returns 403 for members with guest role6263 DELETE /groups/:id/boards/lists/:list_id6264 rejects a non member from deleting a list6265 rejects a user with guest role from deleting a list6266 returns 404 error if list id not found6267 when the user is parent owner6268 deletes the list if an admin requests it6269 behaves like 412 response6270 for a modified ressource6271 returns 412 with a JSON error6272 for an unmodified ressource6273 returns 204 with an empty body6274 POST /groups/:id/boards/lists6275 does not create lists for child project labels6276API::AccessRequests6277 behaves like GET /:sources/:id/access_requests6278 with :sources == projects6279 behaves like a 404 response when source is private6280 returns 4046281 when authenticated as a non-maintainer/owner6282 as a developer6283 returns 4036284 as a access_requester6285 returns 4036286 as a stranger6287 returns 4036288 when authenticated as a maintainer/owner6289 returns access requesters6290 behaves like GET /:sources/:id/access_requests6291 with :sources == groups6292 behaves like a 404 response when source is private6293 returns 4046294 when authenticated as a non-maintainer/owner6295 as a developer6296 returns 4036297 as a access_requester6298 returns 4036299 as a stranger6300 returns 4036301 when authenticated as a maintainer/owner6302 returns access requesters6303 behaves like POST /:sources/:id/access_requests6304 with :sources == projects6305 behaves like a 404 response when source is private6306 returns 4046307 when authenticated as a member6308 as a developer6309 returns 4036310 as a maintainer6311 returns 4036312 when authenticated as an access requester6313 returns 4006314 when authenticated as a stranger6315 returns 2016316 when access request is disabled for the project6317 returns 4036318 behaves like POST /:sources/:id/access_requests6319 with :sources == groups6320 behaves like a 404 response when source is private6321 returns 4046322 when authenticated as a member6323 as a developer6324 returns 4036325 as a maintainer6326 returns 4036327 when authenticated as an access requester6328 returns 4006329 when authenticated as a stranger6330 returns 2016331 when access request is disabled for the group6332 returns 4036333 behaves like PUT /:sources/:id/access_requests/:user_id/approve6334 with :sources == projects6335 behaves like a 404 response when source is private6336 returns 4046337 when authenticated as a non-maintainer/owner6338 as a developer6339 returns 4036340 as a access_requester6341 returns 4036342 as a stranger6343 returns 4036344 when authenticated as a maintainer/owner6345 returns 2016346 user_id does not match an existing access requester6347 returns 4046348 behaves like PUT /:sources/:id/access_requests/:user_id/approve6349 with :sources == groups6350 behaves like a 404 response when source is private6351 returns 4046352 when authenticated as a non-maintainer/owner6353 as a developer6354 returns 4036355 as a access_requester6356 returns 4036357 as a stranger6358 returns 4036359 when authenticated as a maintainer/owner6360 returns 2016361 user_id does not match an existing access requester6362 returns 4046363 behaves like DELETE /:sources/:id/access_requests/:user_id6364 with :sources == projects6365 behaves like a 404 response when source is private6366 returns 4046367 when authenticated as a non-maintainer/owner6368 as a developer6369 returns 4036370 as a stranger6371 returns 4036372 when authenticated as the access requester6373 deletes the access requester6374 when authenticated as a maintainer/owner6375 deletes the access requester6376 user_id matches a member, not an access requester6377 returns 4046378 user_id does not match an existing access requester6379 returns 4046380 behaves like DELETE /:sources/:id/access_requests/:user_id6381 with :sources == groups6382 behaves like a 404 response when source is private6383 returns 4046384 when authenticated as a non-maintainer/owner6385 as a developer6386 returns 4036387 as a stranger6388 returns 4036389 when authenticated as the access requester6390 deletes the access requester6391 when authenticated as a maintainer/owner6392 deletes the access requester6393 user_id matches a member, not an access requester6394 returns 4046395 user_id does not match an existing access requester6396 returns 4046397API::AlertManagementAlerts6398 PUT /projects/:id/alert_management_alerts/:alert_iid/metric_images/authorize6399 authorizes uploading with workhorse header6400 rejects requests that bypassed gitlab-workhorse6401 when using remote storage6402 when direct upload is enabled6403 responds with status 200, location of file remote store and object details6404 when direct upload is disabled6405 handles as a local file6406 POST /projects/:id/alert_management_alerts/:alert_iid/metric_images6407 user_role: :guest, expected_status: :unauthorized_upload6408 behaves like unauthorized_upload6409 disallows the upload6410 user_role: :reporter, expected_status: :unauthorized_upload6411 behaves like unauthorized_upload6412 disallows the upload6413 user_role: :developer, expected_status: :can_upload_metric_image6414 behaves like can_upload_metric_image6415 creates a new metric image6416 file size too large6417 returns an error6418 error when saving6419 returns an error6420 object storage enabled6421 uploads to remote storage6422 behaves like can_upload_metric_image6423 creates a new metric image6424 GET /projects/:id/alert_management_alerts/:alert_iid/metric_images6425 user_role: :not_member, public_project: false, expected_status: :unauthorized_read6426 behaves like unauthorized_read6427 cannot read the metric images6428 user_role: :not_member, public_project: true, expected_status: :unauthorized_read6429 behaves like unauthorized_read6430 cannot read the metric images6431 user_role: :guest, public_project: false, expected_status: :unauthorized_read6432 behaves like unauthorized_read6433 cannot read the metric images6434 user_role: :reporter, public_project: false, expected_status: :unauthorized_read6435 behaves like unauthorized_read6436 cannot read the metric images6437 user_role: :developer, public_project: false, expected_status: :can_read_metric_image6438 behaves like can_read_metric_image6439 can read the metric images6440 PUT /projects/:id/alert_management_alerts/:alert_iid/metric_images/:metric_image_id6441 user_role: :not_member, public_project: false, expected_status: :unauthorized_update6442 behaves like unauthorized_update6443 cannot update the metric image6444 user_role: :not_member, public_project: true, expected_status: :unauthorized_update6445 behaves like unauthorized_update6446 cannot update the metric image6447 user_role: :guest, public_project: false, expected_status: :unauthorized_update6448 behaves like unauthorized_update6449 cannot update the metric image6450 user_role: :reporter, public_project: false, expected_status: :unauthorized_update6451 behaves like unauthorized_update6452 cannot update the metric image6453 user_role: :developer, public_project: false, expected_status: :can_update_metric_image6454 behaves like can_update_metric_image6455 can update the metric images6456 when user has access6457 and metric image not found6458 returns an error6459 metric image cannot be updated6460 returns an error6461 DELETE /projects/:id/alert_management_alerts/:alert_iid/metric_images/:metric_image_id6462 user_role: :not_member, public_project: false, expected_status: "unauthorized delete"6463 behaves like unauthorized delete6464 cannot delete the metric image6465 user_role: :not_member, public_project: true, expected_status: "unauthorized delete"6466 behaves like unauthorized delete6467 cannot delete the metric image6468 user_role: :guest, public_project: false, expected_status: "unauthorized delete"6469 behaves like unauthorized delete6470 cannot delete the metric image6471 user_role: :reporter, public_project: false, expected_status: "unauthorized delete"6472 behaves like unauthorized delete6473 cannot delete the metric image6474 user_role: :developer, public_project: false, expected_status: "can delete metric image successfully"6475 behaves like can delete metric image successfully6476 can delete the metric images6477 when user has access6478 when metric image not found6479 returns an error6480 when error when deleting6481 returns an error6482Toggling an AwardEmoji6483 when the user has permission6484 when the given awardable is not an Awardable6485 behaves like a mutation that does not create or destroy an AwardEmoji6486 is expected not to change `AwardEmoji.count`6487 behaves like a mutation that returns top-level errors6488 is expected to include /was provided invalid value for awardableId/6489 when the given awardable is an Awardable but still cannot be awarded an emoji6490 behaves like a mutation that does not create or destroy an AwardEmoji6491 is expected not to change `AwardEmoji.count`6492 behaves like a mutation that returns top-level errors6493 is expected to contain exactly "You cannot award emoji to this resource."6494 when the given awardable is an Awardable6495 when no emoji has been awarded by the current_user yet6496 creates an emoji6497 returns the emoji6498 returns toggledOn as true6499 marking Todos as done6500 type: :issue, expectation: true6501 is expected to eq true6502 type: :merge_request, expectation: true6503 is expected to eq true6504 type: :project_snippet, expectation: false6505 is expected to eq false6506 for notes6507 regular Notes6508 marks the Todo as done6509 PersonalSnippet Notes6510 does not mark the Todo as done6511 when there were active record validation errors6512 returns an empty awardEmoji6513 behaves like a mutation that does not create or destroy an AwardEmoji6514 is expected not to change `AwardEmoji.count`6515 behaves like a mutation that returns errors in the response6516 is expected to contain exactly "Error 1" and "Error 2"6517 when an emoji has been awarded by the current_user6518 removes the emoji6519 returns no errors6520 returns an empty awardEmoji6521 returns toggledOn as false6522 when the user does not have permission6523 behaves like a mutation that does not create or destroy an AwardEmoji6524 is expected not to change `AwardEmoji.count`6525 behaves like a mutation that returns a top-level access error6526 is expected to contain exactly "The resource that you are attempting to access does not exist or you don't have permission to perform this action"6527Projects::GoogleCloud::ServiceAccountsController6528 GET index6529 when a public request is made6530 returns not found on GET request6531 returns not found on POST request6532 when unauthorized members make requests6533 returns not found on GET request6534 returns not found on POST request6535 when authorized members make requests6536 redirects on GET request6537 redirects on POST request6538 and user has successfully completed the google oauth2 flow6539 but the user does not have gcp projects6540 renders no_gcp_projects6541 user has three gcp_projects6542 returns success on GET6543 returns success on POST6544 but google returns client error6545 renders gcp_error template on GET6546 renders gcp_error template on POST6547 but gitlab instance is not configured for google oauth26548 returns forbidden6549 but feature flag is disabled6550 returns not found6551Profiles::TwoFactorAuthsController6552 GET show6553 generates otp_secret for user6554 assigns qr_code6555 generates a single otp_secret with multiple page loads6556 generates a new otp_secret once the ttl has expired6557 behaves like user must first verify their primary email address6558 redirects to profile_emails_path6559 displays a notice6560 POST create6561 with valid pin6562 enables 2fa for the user6563 presents plaintext codes for the user to save6564 calls to delete other sessions6565 dismisses the `TWO_FACTOR_AUTH_RECOVERY_SETTINGS_CHECK` callout6566 renders create6567 with invalid pin6568 assigns error6569 assigns qr_code6570 assigns account_string6571 renders show6572 behaves like user must enter a valid current password6573 requires the current password6574 when the user is on the last sign in attempt6575 is expected to be access locked6576 when user authenticates with an external service6577 does not require the current password6578 when password authentication is disabled6579 does not require the current password6580 when the user is an LDAP user6581 does not require the current password6582 behaves like user must first verify their primary email address6583 redirects to profile_emails_path6584 displays a notice6585 POST codes6586 presents plaintext codes for the user to save6587 persists the generated codes6588 dismisses the `TWO_FACTOR_AUTH_RECOVERY_SETTINGS_CHECK` callout6589 behaves like user must enter a valid current password6590 requires the current password6591 when the user is on the last sign in attempt6592 is expected to be access locked6593 when user authenticates with an external service6594 does not require the current password6595 when password authentication is disabled6596 does not require the current password6597 when the user is an LDAP user6598 does not require the current password6599 DELETE destroy6600 for a user that has 2FA enabled6601 disables two factor6602 redirects to profile_account_path6603 displays a notice on success6604 behaves like user must enter a valid current password6605 requires the current password6606 when the user is on the last sign in attempt6607 is expected to be access locked6608 when user authenticates with an external service6609 does not require the current password6610 when password authentication is disabled6611 does not require the current password6612 when the user is an LDAP user6613 does not require the current password6614 for a user that does not have 2FA enabled6615 redirects to profile_account_path6616 displays an alert on failure6617JwtController6618 authenticating against container registry6619 existing service6620 is expected to respond with numeric status code ok6621 returning custom http code6622 is expected to respond with numeric status code http_version_not_supported6623 when using authenticated request6624 using CI token6625 project with enabled CI6626 is expected to have received new(#<Project id:587 namespace552/project586>>, #<User id:1539 @user973>, #<ActionController::Parameters {"service"=>"container_registry"} permitted: true>) 1 time6627 behaves like user logging6628 logs username and ID6629 project with disabled CI6630 is expected to respond with numeric status code unauthorized6631 using deploy tokens6632 authenticates correctly6633 does not log a user6634 using personal access tokens6635 authenticates correctly6636 behaves like rejecting a blocked user6637 with blocked user6638 rejects the request as unauthorized6639 behaves like user logging6640 logs username and ID6641 using User login6642 is expected to have received new(nil, #<User id:1552 @user981>, #<ActionController::Parameters {"service"=>"container_registry"} permitted: true>) 1 time6643 does not cause session based checks to be activated6644 behaves like rejecting a blocked user6645 with blocked user6646 rejects the request as unauthorized6647 when passing a flat array of scopes6648 is expected to have received new(nil, #<User id:1555 @user984>, #<ActionController::Parameters {"service"=>"container_registry", "scopes"=>["scope1", "scope2"]} permitted: true>) 1 time6649 behaves like user logging6650 logs username and ID6651 when user has 2FA enabled6652 without personal token6653 rejects the authorization attempt6654 with personal token6655 accepts the authorization attempt6656 using invalid login6657 when internal auth is enabled6658 rejects the authorization attempt6659 when internal auth is disabled6660 rejects the authorization attempt with personal access token message6661 when using unauthenticated request6662 accepts the authorization attempt6663 allows read access6664 unknown service6665 is expected to respond with numeric status code not_found6666 authenticating against dependency proxy6667 with personal access token6668 behaves like with valid credentials6669 returns token successfully6670 with user credentials token6671 behaves like with valid credentials6672 returns token successfully6673 with group deploy token6674 behaves like with valid credentials6675 returns token successfully6676 with project deploy token6677 behaves like returning response status6678 returns forbidden6679 with revoked group deploy token6680 behaves like returning response status6681 returns unauthorized6682 with group deploy token with insufficient scopes6683 behaves like returning response status6684 returns unauthorized6685 with invalid credentials6686 behaves like returning response status6687 returns unauthorized6688Git LFS File Locking API6689 Create File Lock endpoint6690 when user does not have download permission6691 returns a 404 response6692 when user does not have upload permission6693 returns a 403 response6694 with an existent lock6695 return an error message6696 returns the existen lock6697 without an existent lock6698 creates the lock6699 Listing File Locks endpoint6700 returns the list of locked files6701 when user does not have download permission6702 returns a 404 response6703 when user does not have upload permission6704 returns a 403 response6705 List File Locks for verification endpoint6706 returns the list of locked files grouped by owner6707 when user does not have download permission6708 returns a 404 response6709 when user does not have upload permission6710 returns a 403 response6711 Delete File Lock endpoint6712 when user does not have download permission6713 returns a 404 response6714 when user does not have upload permission6715 returns a 403 response6716 with an existent lock6717 deletes the lock6718 returns the deleted lock6719 when a maintainer uses force6720 deletes the lock6721API::SnippetRepositoryStorageMoves6722 behaves like repository_storage_moves API6723 GET /snippets/:id/repository_storage_moves6724 behaves like get container repository storage move list6725 returns container repository storage moves6726 avoids N+1 queries6727 returns the most recently created first6728 permissions6729 is expected to be allowed for :admin6730 is expected to be denied for :user6731 non-existent container6732 returns not found6733 GET /snippets/:id/repository_storage_moves/:repository_storage_move_id6734 behaves like get single container repository storage move6735 returns a container repository storage move6736 non-existent container repository storage move6737 returns not found6738 permissions6739 is expected to be allowed for :admin6740 is expected to be denied for :user6741 non-existent container6742 returns not found6743 GET /snippet_repository_storage_moves6744 behaves like get container repository storage move list6745 returns container repository storage moves6746 avoids N+1 queries6747 returns the most recently created first6748 permissions6749 is expected to be allowed for :admin6750 is expected to be denied for :user6751 GET /snippet_repository_storage_moves/:repository_storage_move_id6752 behaves like get single container repository storage move6753 returns a container repository storage move6754 non-existent container repository storage move6755 returns not found6756 permissions6757 is expected to be allowed for :admin6758 is expected to be denied for :user6759 POST /snippets/:id/repository_storage_moves6760 schedules a container repository storage move6761 permissions6762 is expected to be allowed for :admin6763 is expected to be denied for :user6764 destination_storage_name is missing6765 schedules a container repository storage move6766 when container does not exist6767 returns not found6768 POST /snippet_repository_storage_moves6769 schedules the worker6770 source_storage_name is invalid6771 gives an error6772 destination_storage_name is missing6773 schedules the worker6774 destination_storage_name is invalid6775 gives an error6776 normal user6777 is expected to be denied for :user6778Merge Requests Diffs6779 GET diffs_batch6780 with caching6781 when the request has not been cached6782 behaves like serializes diffs with expected arguments6783 serializes paginated merge request diff collection6784 when the request has already been cached6785 does not serialize diffs6786 with the different user6787 behaves like serializes diffs with expected arguments6788 serializes paginated merge request diff collection6789 with a new unfoldable diff position6790 behaves like serializes diffs with expected arguments6791 serializes paginated merge request diff collection6792 with disabled display_merge_conflicts_in_diff feature6793 behaves like serializes diffs with expected arguments6794 serializes paginated merge request diff collection6795 with diff_head option6796 behaves like serializes diffs with expected arguments6797 serializes paginated merge request diff collection6798 with the different pagination option6799 behaves like serializes diffs with expected arguments6800 serializes paginated merge request diff collection6801 with the different diff_view6802 behaves like serializes diffs with expected arguments6803 serializes paginated merge request diff collection6804 with the different expanded option6805 behaves like serializes diffs with expected arguments6806 serializes paginated merge request diff collection6807 with the different ignore_whitespace_change option6808 behaves like serializes diffs with expected arguments6809 serializes paginated merge request diff collection6810 when the paths is given6811 does not use cache6812DashboardController6813 token authentication6814 behaves like authenticates sessionless user for the request spec6815 issues atom6816 when the 'private_token' param is populated with the personal access token6817 when valid token6818 when resource is private6819 authenticates user and returns response with ok status6820 when user with expired password6821 does not return response with ok status6822 when password expiration is not applicable6823 when ldap user6824 authenticates user and returns response with ok status6825 when the personal access token has no api scope6826 when resource is private6827 does not return response with ok status6828 when invalid token6829 when resource is private6830 does not return response with ok status6831 when the 'PRIVATE-TOKEN' header is populated with the personal access token6832 when valid token6833 when resource is private6834 authenticates user and returns response with ok status6835 when user with expired password6836 does not return response with ok status6837 when password expiration is not applicable6838 when ldap user6839 authenticates user and returns response with ok status6840 when the personal access token has no api scope6841 when resource is private6842 does not return response with ok status6843 when invalid token6844 when resource is private6845 does not return response with ok status6846 when the 'feed_token' param is populated with the feed token6847 when valid token6848 when resource is private6849 authenticates user and returns response with ok status6850 when user with expired password6851 does not return response with ok status6852 when password expiration is not applicable6853 when ldap user6854 authenticates user and returns response with ok status6855 when invalid token6856 when resource is private6857 does not return response with ok status6858 behaves like authenticates sessionless user for the request spec6859 issues_calendar ics6860 when the 'private_token' param is populated with the personal access token6861 when valid token6862 when resource is private6863 authenticates user and returns response with ok status6864 when user with expired password6865 does not return response with ok status6866 when password expiration is not applicable6867 when ldap user6868 authenticates user and returns response with ok status6869 when the personal access token has no api scope6870 when resource is private6871 does not return response with ok status6872 when invalid token6873 when resource is private6874 does not return response with ok status6875 when the 'PRIVATE-TOKEN' header is populated with the personal access token6876 when valid token6877 when resource is private6878 authenticates user and returns response with ok status6879 when user with expired password6880 does not return response with ok status6881 when password expiration is not applicable6882 when ldap user6883 authenticates user and returns response with ok status6884 when the personal access token has no api scope6885 when resource is private6886 does not return response with ok status6887 when invalid token6888 when resource is private6889 does not return response with ok status6890 when the 'feed_token' param is populated with the feed token6891 when valid token6892 when resource is private6893 authenticates user and returns response with ok status6894 when user with expired password6895 does not return response with ok status6896 when password expiration is not applicable6897 when ldap user6898 authenticates user and returns response with ok status6899 when invalid token6900 when resource is private6901 does not return response with ok status6902Groups::BoardsController6903 GET index6904 creates a new board when group does not have one6905 when format is HTML6906 renders template6907 with unauthorized user6908 returns a not found 404 response6909 when user is signed out6910 renders template6911 when format is JSON6912 return an array with one group board6913 with unauthorized user6914 returns a not found 404 response6915 behaves like disabled when using an external authorization service6916 works when the feature is not enabled6917 renders a 404 with a message when the feature is enabled6918 GET show6919 when format is HTML6920 renders template6921 with unauthorized user6922 returns a not found 404 response6923 when user is signed out6924 does not save visit6925 when format is JSON6926 returns project board6927 with unauthorized user6928 returns a not found 404 response6929 when board does not belong to group6930 returns a not found 404 response6931 behaves like disabled when using an external authorization service6932 works when the feature is not enabled6933 renders a 404 with a message when the feature is enabled6934Explore::SnippetsController6935 GET #index6936 renders6937 renders pagination6938 behaves like snippets views6939 when rendered6940 avoids N+1 database queries6941API::SystemHooks6942 GET /hooks6943 when no user6944 returns authentication error6945 when not an admin6946 returns forbidden error6947 when authenticated as admin6948 returns an array of hooks6949 GET /hooks/:id6950 when no user6951 returns authentication error6952 when not an admin6953 returns forbidden error6954 when authenticated as admin6955 gets a hook6956 returns 404 if the system hook does not exist6957 POST /hooks6958 creates new hook6959 responds with 400 if url not given6960 responds with 400 if url is invalid6961 does not create new hook without url6962 sets default values for events6963 sets explicit values for events6964 POST /hooks/:id6965 returns and trigger hook by id6966 returns 404 on failure6967 DELETE /hooks/:id6968 deletes a hook6969 returns 404 if the system hook does not exist6970 behaves like 412 response6971 for a modified ressource6972 returns 412 with a JSON error6973 for an unmodified ressource6974 returns 204 with an empty body6975Projects::PerformanceMonitoring::DashboardsController6976 POST #create6977 authenticated user6978 project with repository feature6979 with rights to push to the repository6980 valid parameters6981 delegates cloning to ::Metrics::Dashboard::CloneDashboardService6982 request format json6983 returns services response6984 Metrics::Dashboard::CloneDashboardService failure6985 returns json with failure message6986 param commit_message is missing6987 responds with bad request status and error message6988 param file_name is missing6989 responds with bad request status and error message6990 param dashboard is missing6991 responds with bad request status and error message6992 param branch_name is missing6993 responds with bad request status and error message6994 without rights to push to repository6995 responds with :forbidden status code6996 project without repository feature6997 responds with :not_found status code6998 PUT #update6999 authenticated user7000 project with repository feature7001 with rights to push to the repository7002 valid parameters7003 request format json7004 returns path to new file7005 UpdateDashboardService failure7006 returns json with failure message7007 missing branch7008 raises responds with :bad_request status code and error message7009 without rights to push to repository7010 responds with :forbidden status code7011 project without repository feature7012 responds with :not_found status code7013Destroying a package file7014 post graphql mutation7015 with valid id7016 user_role: :maintainer, shared_examples_name: "destroying the package file"7017 behaves like destroying the package file7018 marks the package file as pending destruction7019 behaves like returning response status7020 returns success7021 user_role: :developer, shared_examples_name: "denying the mutation request"7022 behaves like denying the mutation request7023 does not mark the package file as pending destruction7024 behaves like returning response status7025 returns success7026 user_role: :reporter, shared_examples_name: "denying the mutation request"7027 behaves like denying the mutation request7028 does not mark the package file as pending destruction7029 behaves like returning response status7030 returns success7031 user_role: :guest, shared_examples_name: "denying the mutation request"7032 behaves like denying the mutation request7033 does not mark the package file as pending destruction7034 behaves like returning response status7035 returns success7036 user_role: :anonymous, shared_examples_name: "denying the mutation request"7037 behaves like denying the mutation request7038 does not mark the package file as pending destruction7039 behaves like returning response status7040 returns success7041 with invalid id7042 behaves like denying the mutation request7043 does not mark the package file as pending destruction7044 behaves like returning response status7045 returns success7046 when an error occurs7047 returns the errors in the response7048Projects::Tags::ReleasesController7049 GET #edit7050 initializes a new release7051 retrieves an existing release7052 PUT #update7053 updates release note description7054 creates a release if one does not exist7055 sets the release name, sha, and author for a new release7056 does not delete release when description is empty7057 does nothing when description is empty and the tag does not have a release7058Projects::GoogleCloud::DeploymentsController7059 Routes must be restricted behind Google OAuth27060 when a public request is made7061 returns not found on GET request7062 when unauthorized members make requests7063 returns not found on GET request7064 when authorized members make requests7065 redirects on GET request7066 Authorized GET project/-/google_cloud/deployments/cloud_run7067 redirects to google_cloud home on enable service error7068 redirects to gcp_error7069 GCP_PROJECT_IDs are defined7070 redirects to google_cloud home on generate pipeline error7071 redirects to create merge request form7072 Authorized GET project/-/google_cloud/deployments/cloud_storage7073 renders placeholder7074getting a repository in a project7075 returns repository7076 as a non-authorized user7077 returns nil7078 as a non-admin7079 does not return diskPath7080 as an admin7081 returns diskPath7082 when the repository is only accessible to members7083 returns a repository for the owner7084 returns nil for the repository for other users7085 returns nil for the repository for other users7086 when paginated tree requested7087 returns paginated tree7088API::Metrics::Dashboard::Annotations7089 environment7090 behaves like POST /:source_type/:id/metrics_dashboard/annotations7091 with :source_type == environments7092 with correct permissions7093 with valid parameters7094 creates a new annotation7095 with invalid parameters7096 returns error messsage7097 with undeclared params7098 filters out undeclared params7099 with special characers in dashboard_path in request body7100 with escaped characters7101 behaves like special characters unescaped7102 unescapes the dashboard_path7103 with unescaped characers7104 behaves like special characters unescaped7105 unescapes the dashboard_path7106 without correct permissions7107 returns error message7108 group cluster7109 behaves like POST /:source_type/:id/metrics_dashboard/annotations7110 with :source_type == clusters7111 with correct permissions7112 with valid parameters7113 creates a new annotation7114 with invalid parameters7115 returns error messsage7116 with undeclared params7117 filters out undeclared params7118 with special characers in dashboard_path in request body7119 with escaped characters7120 behaves like special characters unescaped7121 unescapes the dashboard_path7122 with unescaped characers7123 behaves like special characters unescaped7124 unescapes the dashboard_path7125 without correct permissions7126 returns error message7127 project cluster7128 behaves like POST /:source_type/:id/metrics_dashboard/annotations7129 with :source_type == clusters7130 with correct permissions7131 with valid parameters7132 creates a new annotation7133 with invalid parameters7134 returns error messsage7135 with undeclared params7136 filters out undeclared params7137 with special characers in dashboard_path in request body7138 with escaped characters7139 behaves like special characters unescaped7140 unescapes the dashboard_path7141 with unescaped characers7142 behaves like special characters unescaped7143 unescapes the dashboard_path7144 without correct permissions7145 returns error message7146API::Version7147 with graphql enabled7148 when unauthenticated7149 returns authentication error7150 when authenticated as user7151 returns the version information7152 when authenticated with token7153 with api scope7154 returns the version information7155 returns "200" response on head requests7156 with read_user scope7157 returns the version information7158 returns "200" response on head requests7159 with neither api nor read_user scope7160 returns authorization error7161 with graphql disabled7162 when unauthenticated7163 returns authentication error7164 when authenticated as user7165 returns the version information7166 when authenticated with token7167 with api scope7168 returns the version information7169 returns "200" response on head requests7170 with read_user scope7171 returns the version information7172 returns "200" response on head requests7173 with neither api nor read_user scope7174 returns authorization error7175Destroying a container repository tags7176 post graphql mutation7177 with valid id7178 user_role: :maintainer, shared_examples_name: "destroying the container repository tags"7179 behaves like destroying the container repository tags7180 destroys the container repository tags7181 behaves like returning response status7182 returns success7183 user_role: :developer, shared_examples_name: "destroying the container repository tags"7184 behaves like destroying the container repository tags7185 destroys the container repository tags7186 behaves like returning response status7187 returns success7188 user_role: :reporter, shared_examples_name: "denying the mutation request"7189 behaves like denying the mutation request7190 does not destroy the container repository tags7191 behaves like returning response status7192 returns success7193 user_role: :guest, shared_examples_name: "denying the mutation request"7194 behaves like denying the mutation request7195 does not destroy the container repository tags7196 behaves like returning response status7197 returns success7198 user_role: :anonymous, shared_examples_name: "denying the mutation request"7199 behaves like denying the mutation request7200 does not destroy the container repository tags7201 behaves like returning response status7202 returns success7203 with invalid id7204 behaves like denying the mutation request7205 does not destroy the container repository tags7206 behaves like returning response status7207 returns success7208 with too many tags7209 returns too many tags error7210 with service error7211 returns an error7212 does not create a package event7213Projects::CycleAnalyticsController7214 includes GracefulTimeoutHandling7215 counting page views for 'show'7216 increases the counter7217 tracking visits to html page7218 behaves like tracking unique visits7219 tracks unique visit if the format is HTML7220 tracks unique visit if DNT is not enabled7221 does not track unique visit if DNT is enabled7222 does not track unique visit if the format is JSON7223RootController7224 GET index7225 when user is not logged in7226 redirects to the sign-in page7227 when a custom home page URL is defined7228 redirects the user to the custom home page URL7229 with a user7230 who has customized their dashboard setting for starred projects7231 redirects to their specified dashboard7232 who has customized their dashboard setting for project activities7233 redirects to the activity list7234 who has customized their dashboard setting for starred project activities7235 redirects to the activity list7236 who has customized their dashboard setting for followed user activities7237 redirects to the activity list7238 who has customized their dashboard setting for groups7239 redirects to their group list7240 who has customized their dashboard setting for todos7241 redirects to their todo list7242 who has customized their dashboard setting for assigned issues7243 redirects to their assigned issues7244 who has customized their dashboard setting for assigned merge requests7245 redirects to their assigned merge requests7246 who uses the default dashboard setting7247 renders the default dashboard7248Recursive webhook detection7249 when the request headers include the recursive webhook detection header7250 executes all webhooks, logs no errors, and the webhook requests contain the same UUID header7251 when one of the webhooks is recursive7252 blocks and logs an error for the recursive webhook, but execute the non-recursive webhook7253 when the count limit has been reached7254 blocks and logs errors for all hooks7255 when the recursive webhook detection header is absent7256 executes all webhooks, logs no errors, and the webhook requests contain different UUID headers7257 uses new UUID values between requests7258Emails::Pipelines7259 #pipeline_success_email7260 behaves like correct pipeline information7261 has a correct information7262 when pipeline on master branch has a merge request7263 has correct information that there is no merge request link7264 when pipeline for merge requests7265 has correct information that there is a merge request link7266 when branch pipeline is set to a merge request as a head pipeline7267 has correct information that there is a merge request link7268 behaves like only accepts a single recipient7269 raises an ArgumentError7270 #pipeline_failed_email7271 behaves like correct pipeline information7272 has a correct information7273 when pipeline on master branch has a merge request7274 has correct information that there is no merge request link7275 when pipeline for merge requests7276 has correct information that there is a merge request link7277 when branch pipeline is set to a merge request as a head pipeline7278 has correct information that there is a merge request link7279 behaves like only accepts a single recipient7280 raises an ArgumentError7281 #pipeline_fixed_email7282 behaves like correct pipeline information7283 has a correct information7284 when pipeline on master branch has a merge request7285 has correct information that there is no merge request link7286 when pipeline for merge requests7287 has correct information that there is a merge request link7288 when branch pipeline is set to a merge request as a head pipeline7289 has correct information that there is a merge request link7290 behaves like only accepts a single recipient7291 raises an ArgumentError7292rendering project pipeline statistics7293 contains two arrays of 8 elements each for the week pipelines7294 contains two arrays of 13 elements each for the year pipelines7295 behaves like a working graphql query7296 returns a successful response7297 behaves like monthly statistics7298 contains two arrays of 32 elements each for the month pipelines7299 behaves like monthly statistics7300 contains two arrays of 31 elements each for the month pipelines7301 behaves like monthly statistics7302 contains two arrays of 32 elements each for the month pipelines7303API::Ci::Runner7304 /api/v4/runners7305 POST /api/v4/runners7306 when no token is provided7307 returns 400 error7308 when invalid token is provided7309 returns 403 error7310 when valid parameters are provided7311 when token_expires_at is nil7312 creates runner7313 when token_expires_at is a valid date7314 creates runner7315 behaves like storing arguments in the application context for the API7316 places the expected params in the application context7317 behaves like not executing any extra queries for the application context7318 does not execute more queries than without adding anything to the application context7319 when deprecated maintainer_note field is provided7320 converts to maintenance_note param7321 when deprecated active parameter is provided7322 uses active value in registration7323 calling actual register service7324 sets the runner's ip_address7325 when info parameter 'name' info is present7326 updates provided Runner's parameter7327 when info parameter 'version' info is present7328 updates provided Runner's parameter7329 when info parameter 'revision' info is present7330 updates provided Runner's parameter7331 when info parameter 'platform' info is present7332 updates provided Runner's parameter7333 when info parameter 'architecture' info is present7334 updates provided Runner's parameter7335 when tags parameter is provided7336 with number of tags above limit7337 uses tag_list value in registration and returns error7338 with number of tags below limit7339 uses tag_list value in registration and successfully creates runner7340GoogleApi::AuthorizationsController7341 GET|POST #callback7342 session key is present7343 session key matches state param7344 sets token and expires_at in session7345 redirects to the URL stored in state param7346 session key does not match state param7347 behaves like access denied7348 returns a 4047349 state param is blank7350 behaves like access denied7351 returns a 4047352 when a Faraday exception occurs7353 sets a flash alert on Faraday::TimeoutError7354 sets a flash alert on Faraday::ConnectionFailed7355 state param is present, but session key is blank7356 behaves like access denied7357 returns a 4047358 user logs in but declines authorizations7359 redirects to error uri7360RendersCommits7361 sets instance variables for counts7362 rendering commits7363 avoids N + 17364 .prepare_commits_for_rendering7365 avoids N+17366Projects::RefsController7367 GET #logs_tree7368 never throws MissingTemplate7369 renders 404 for HTML requests7370 when ref is incorrect7371 returns 404 page7372 when offset has an invalid format7373 renders JSON7374 when json is requested7375 renders JSON7376Reposition and move issue within board lists7377 when the board_id is not a board7378 behaves like returns an error7379 fails with error7380 when the user cannot read the issue board7381 behaves like returns an error7382 fails with error7383 when user has access to resources7384 when repositioning an issue7385 repositions an issue7386 when moving an issue to a different list7387 moves issue to a different list7388 when user has no access to resources7389 the user is not allowed to update the issue7390 behaves like returns an error7391 fails with error7392 when the user can not read board7393 behaves like returns an error7394 fails with error7395Mutations::Boards::Destroy7396 when the user does not have permission7397 does not destroy the board7398 behaves like a mutation that returns a top-level access error7399 is expected to contain exactly "The resource that you are attempting to access does not exist or you don't have permission to perform this action"7400 when the user has permission7401 when given id is not for a board7402 returns an error7403 when everything is ok7404 destroys the board7405 returns an empty board7406 when there is only 1 board for the parent7407 does not destroy the board7408 returns an error and not nil board7409API::Internal::MailRoom7410 POST /internal/mail_room/*mailbox_type7411 handle incoming_email successfully7412 schedules a EmailReceiverWorker job with raw email content7413 handle service_desk_email successfully7414 schedules a ServiceDeskEmailReceiverWorker job with raw email content7415 email content exceeds limit7416 responds with 400 bad request and replies with a failure message7417 not authenticated7418 responds with 401 Unauthorized7419 wrong token authentication7420 responds with 401 Unauthorized7421 wrong mailbox type authentication7422 responds with 401 Unauthorized7423 not supported mailbox type7424 responds with 401 Unauthorized7425 not enabled mailbox type7426 responds with 401 Unauthorized7427Projects::BlameController7428 GET show7429 valid branch, valid file7430 is expected to respond with 2007431 valid branch, invalid file7432 redirects7433 invalid branch, valid file7434 is expected to respond with 4047435API::Pages7436 DELETE /projects/:id/pages7437 when Pages is disabled7438 behaves like 404 response7439 returns 4047440 when Pages is enabled7441 when Pages are deployed7442 returns 2047443 removes the pages7444 when pages are not deployed7445 returns 2047446 when there is no project7447 returns 4047448query Jira service7449 behaves like unauthorized users cannot read services7450 when anonymous user7451 is expected to equal nil7452 when user developer7453 is expected to equal nil7454 when user can access project services7455 returns list of jira integrations7456 behaves like a working graphql query7457 returns a successful response7458Toggling the resolve status of a discussion7459 when the user does not have permission7460 behaves like a mutation that returns a top-level access error7461 is expected to contain exactly "The resource that you are attempting to access does not exist or you don't have permission to perform this action"7462 when user has permission7463 returns the discussion without errors7464 when an error is encountered7465 behaves like a mutation that returns errors in the response7466 is expected to contain exactly "Discussion failed to be resolved"7467Query.project(fullPath).pipelines.job(id)7468 scalar fields7469DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.7470DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.7471DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.7472 retrieves scalar fields7473 when fetching by name7474DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.7475DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.7476DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.7477 retrieves scalar fields7478 .detailedStatus7479 retrieves detailed status7480 .stage7481 returns appropriate data7482getting group recent issue boards7483 behaves like querying a GraphQL type recent boards7484 Get list of recently visited boards7485 when the request is correct7486 returns recent boards for user successfully7487 behaves like a working graphql query7488 returns a successful response7489 when requests has errors7490 when there are no recently visited boards7491 returns empty result7492Project Usage Quotas7493 GET /:namespace/:project/usage_quotas7494 renders usage quotas path7495 renders :not_found for user without permission7496 behaves like response with 404 status7497 renders :not_found7498Projects::Ci::SecureFilesController7499 GET #show7500 with enough privileges7501 is expected to respond with numeric status code ok7502 renders show page7503 without enough privileges7504 responds with 4047505 an unauthenticated user7506 redirects to sign in7507GracefulTimeoutHandling7508 for json request7509 renders graceful error message7510 logs exception7511 for html request7512 has no effect7513getting Alert Management Alert Assignees7514 with self-managed prometheus payload7515 includes the correct metrics dashboard url7516 with gitlab-managed prometheus payload7517 includes the correct metrics dashboard url7518API::ProjectStatistics7519 GET /projects/:id/statistics7520 returns the fetch statistics of the last 30 days7521 excludes the fetch statistics older than 30 days7522 responds with 403 when the user is not a reporter of the repository7523Create an alert issue from an alert7524 when there is no issue associated with the alert7525 creates an alert issue7526 when there is an issue already associated with the alert7527 responds with an error7528BoardsResponses7529 #serialize_as_json7530 serializes properly7531Groups::DependencyProxiesController7532 GET #show7533 with global config enabled7534 with the setting enabled7535 returns 200 and renders the view7536 with the setting disabled7537 behaves like returning response status7538 returns not_found7539 with global config disabled7540 behaves like returning response status7541 returns not_found7542Project noteable notes7543 #index7544 does not set a Gitlab::EtagCaching ETag if there is a note7545 sets a Gitlab::EtagCaching ETag if there is no note7546Update Environment Canary Ingress7547 when kubernetes accepted the patch request7548 updates successfully7549ProductAnalytics::CollectorApp7550 correct event params7551 repond with 2007552 feature disabled7553 behaves like not found7554 repond with 4047555 empty event params7556 behaves like not found7557 repond with 4047558 invalid project id in params7559 behaves like not found7560 repond with 4047561Projects::AlertManagementController7562 GET #index7563 shows the page7564 when user is unauthorized7565 shows 4047566 GET #details7567 shows the page7568 when user is unauthorized7569 shows 4047570 set_alert_id7571 sets alert id from the route7572Updating the dependency proxy image ttl policy7573 post graphql mutation7574 without permission7575 returns no response7576 with permission7577 returns the updated dependency proxy image ttl policy7578Query.project.jobs7579 does not generate N+1 queries7580Updating the dependency proxy group settings7581 post graphql mutation7582 without permission7583 returns no response7584 with permission7585 returns the updated dependency proxy settings7586PagerDuty webhook7587 POST /incidents/pagerduty7588 calls PagerDuty webhook processor with correct parameters7589 responds with 202 Accepted7590Projects::Packages::PackagesController7591 GET #index7592 behaves like returning response status7593 returns ok7594 GET #show7595 behaves like returning response status7596 returns ok7597getting namespace package settings in a namespace7598 behaves like a working graphql query7599 returns a successful response7600 matches the JSON schema7601User sends malformed strings7602 raises a 400 error with a null byte7603 raises a 400 error with an invalid string7604 raises a 400 error with null bytes in the auth headers7605SandboxController7606 GET #mermaid7607 renders page without template7608Knapsack report was generated. Preview:7609{7610 "spec/mailers/notify_spec.rb": 346.69922835800025,7611 "spec/controllers/projects/merge_requests_controller_spec.rb": 149.0573793489998,7612 "spec/requests/api/composer_packages_spec.rb": 102.97219232499992,7613 "spec/requests/api/terraform/modules/v1/packages_spec.rb": 72.00185553599977,7614 "spec/requests/api/project_packages_spec.rb": 82.50521741700004,7615 "spec/requests/api/project_snippets_spec.rb": 56.73530001999961,7616 "spec/requests/api/project_export_spec.rb": 61.12062192400026,7617 "spec/controllers/autocomplete_controller_spec.rb": 52.156280820999655,7618 "spec/requests/api/group_labels_spec.rb": 40.32192860300029,7619 "spec/controllers/application_controller_spec.rb": 34.01333685899999,7620 "spec/commands/metrics_server/metrics_server_spec.rb": 40.8419142089997,7621 "spec/controllers/sessions_controller_spec.rb": 26.273786406,7622 "spec/controllers/projects/blob_controller_spec.rb": 30.390971890999936,7623 "spec/requests/api/project_milestones_spec.rb": 25.169052801999896,7624 "spec/requests/projects/issues_controller_spec.rb": 16.337736635000056,7625 "spec/controllers/projects/merge_requests/creations_controller_spec.rb": 31.91976301500017,7626 "spec/controllers/projects/snippets/blobs_controller_spec.rb": 20.82082353099986,7627 "spec/requests/api/usage_data_queries_spec.rb": 31.426342632000342,7628 "spec/requests/health_controller_spec.rb": 15.71292950599991,7629 "spec/requests/api/group_boards_spec.rb": 15.053990942999917,7630 "spec/requests/api/access_requests_spec.rb": 8.06433858299988,7631 "spec/requests/api/alert_management_alerts_spec.rb": 8.15143051699988,7632 "spec/requests/api/graphql/mutations/award_emojis/toggle_spec.rb": 12.608087128999614,7633 "spec/requests/projects/google_cloud/service_accounts_controller_spec.rb": 17.028424840999833,7634 "spec/controllers/profiles/two_factor_auths_controller_spec.rb": 10.442004973000167,7635 "spec/requests/jwt_controller_spec.rb": 7.41414303900001,7636 "spec/requests/lfs_locks_api_spec.rb": 11.129447484000139,7637 "spec/requests/api/snippet_repository_storage_moves_spec.rb": 6.186308417999953,7638 "spec/requests/projects/merge_requests/diffs_spec.rb": 9.724787564000053,7639 "spec/requests/dashboard_controller_spec.rb": 4.610723221000171,7640 "spec/controllers/groups/boards_controller_spec.rb": 8.435928346999845,7641 "spec/controllers/explore/snippets_controller_spec.rb": 6.751087097999971,7642 "spec/requests/api/system_hooks_spec.rb": 6.258058283000082,7643 "spec/controllers/projects/performance_monitoring/dashboards_controller_spec.rb": 8.090850471000067,7644 "spec/requests/api/graphql/mutations/packages/destroy_file_spec.rb": 5.197138988000006,7645 "spec/controllers/projects/tags/releases_controller_spec.rb": 6.710926539999946,7646 "spec/requests/projects/google_cloud/deployments_controller_spec.rb": 4.727652031999696,7647 "spec/requests/api/graphql/project/repository_spec.rb": 5.933977726000194,7648 "spec/requests/api/metrics/dashboard/annotations_spec.rb": 6.091850773999795,7649 "spec/requests/api/version_spec.rb": 2.9221564509998643,7650 "spec/requests/api/graphql/mutations/container_repository/destroy_tags_spec.rb": 5.154993215999639,7651 "spec/controllers/projects/cycle_analytics_controller_spec.rb": 5.492471466000097,7652 "spec/controllers/root_controller_spec.rb": 2.652381418999994,7653 "spec/requests/recursive_webhook_detection_spec.rb": 6.504371016999812,7654 "spec/mailers/emails/pipelines_spec.rb": 5.352710011999989,7655 "spec/requests/api/graphql/project/project_pipeline_statistics_spec.rb": 2.893083121000018,7656 "spec/requests/api/ci/runner/runners_post_spec.rb": 2.3057815199999823,7657 "spec/controllers/google_api/authorizations_controller_spec.rb": 1.5808593349997864,7658 "spec/controllers/concerns/renders_commits_spec.rb": 5.161221965000095,7659 "spec/controllers/projects/refs_controller_spec.rb": 4.032587167000202,7660 "spec/requests/api/graphql/mutations/boards/issues/issue_move_list_spec.rb": 2.7774500740001713,7661 "spec/requests/api/graphql/mutations/boards/destroy_spec.rb": 2.8122101599997222,7662 "spec/requests/api/internal/mail_room_spec.rb": 0.7409359230000518,7663 "spec/controllers/projects/blame_controller_spec.rb": 3.662616780999997,7664 "spec/requests/api/pages/pages_spec.rb": 1.3995041860002857,7665 "spec/requests/api/graphql/project/jira_service_spec.rb": 1.5358049389997177,7666 "spec/requests/api/graphql/mutations/discussions/toggle_resolve_spec.rb": 2.2959895200001483,7667 "spec/requests/api/graphql/ci/job_spec.rb": 2.856961725000019,7668 "spec/requests/api/graphql/group/recent_issue_boards_query_spec.rb": 1.2862898890002725,7669 "spec/requests/projects/usage_quotas_spec.rb": 1.7581723539997256,7670 "spec/controllers/projects/ci/secure_files_controller_spec.rb": 1.2876672090001193,7671 "spec/controllers/concerns/graceful_timeout_handling_spec.rb": 1.8593483820000074,7672 "spec/requests/api/graphql/project/alert_management/alert/metrics_dashboard_url_spec.rb": 1.6774261829996249,7673 "spec/requests/api/project_statistics_spec.rb": 1.3641454200001135,7674 "spec/requests/api/graphql/mutations/alert_management/alerts/create_alert_issue_spec.rb": 1.5132856929999434,7675 "spec/controllers/concerns/boards_responses_spec.rb": 0.48151867399974435,7676 "spec/controllers/groups/dependency_proxies_controller_spec.rb": 1.029988579000019,7677 "spec/requests/projects/noteable_notes_spec.rb": 1.3904841670000678,7678 "spec/requests/api/graphql/mutations/environments/canary_ingress/update_spec.rb": 1.4355242419997012,7679 "spec/requests/product_analytics/collector_app_spec.rb": 0.8573997989997224,7680 "spec/controllers/projects/alert_management_controller_spec.rb": 1.840778723999847,7681 "spec/requests/api/graphql/mutations/dependency_proxy/image_ttl_group_policy/update_spec.rb": 1.0308315889997175,7682 "spec/requests/api/graphql/project/jobs_spec.rb": 1.0678025050001452,7683 "spec/requests/api/graphql/mutations/dependency_proxy/group_settings/update_spec.rb": 0.9843985049997173,7684 "spec/requests/projects/incident_management/pagerduty_incidents_spec.rb": 0.6237190259998897,7685 "spec/controllers/projects/packages/packages_controller_spec.rb": 0.5932216209998842,7686 "spec/requests/api/graphql/namespace/package_settings_spec.rb": 0.7286559139997735,7687 "spec/requests/user_sends_malformed_strings_spec.rb": 0.22462187400014955,7688 "spec/requests/sandbox_controller_spec.rb": 0.128837584999928377689}7690Knapsack global time execution for tests: 24m 50s7691Finished in 24 minutes 56 seconds (files took 1 minute 28.57 seconds to load)76922912 examples, 0 failures7693RSpec exited with 0.7694No examples to retry, congrats!7696Not uploading cache ruby-gems-bullseye-9-protected due to policy7697Not uploading cache gitaly-ruby-gems-bullseye-9-protected due to policy7699Uploading artifacts...7700coverage/: found 5 matching files and directories 7701crystalball/: found 2 matching files and directories 7702WARNING: deprecations/: no matching files 7703knapsack/: found 3 matching files and directories 7704rspec/: found 8 matching files and directories 7705WARNING: tmp/capybara/: no matching files 7706log/*.log: found 19 matching files and directories 7707WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/2388875876/artifacts?artifact_format=zip&artifact_type=archive&expire_in=31d new-url=https://gitlab.com7708WARNING: Retrying... context=artifacts-uploader error=request redirected7709Uploading artifacts as "archive" to coordinator... 201 Created id=2388875876 responseStatus=201 Created token=h2xJiZ9G7710Uploading artifacts...7711rspec/junit_rspec.xml: found 1 matching files and directories 7712WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/2388875876/artifacts?artifact_format=gzip&artifact_type=junit&expire_in=31d new-url=https://gitlab.com7713WARNING: Retrying... context=artifacts-uploader error=request redirected7714Uploading artifacts as "junit" to coordinator... 201 Created id=2388875876 responseStatus=201 Created token=h2xJiZ9G7716Job succeeded