rspec integration pg12 3/12
Passed Started
by
@mrincon

Miguel Rincon
1Running with gitlab-runner 15.6.0~beta.186.ga889181a (a889181a)2 on green-2.shared-gitlab-org.runners-manager.gitlab.com/default 8zCxmpPt3 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.18-node-16.14-postgresql-12:rubygems-3.2-git-2.36-lfs-2.9-chrome-103-yarn-1.22-graphicsmagick-1.3.36 ...7Starting service postgres:12 ...8Pulling docker image postgres:12 ...9Using docker image sha256:c5abf812eff57d99cd4ae9b4d688261207b59905c5d0ca50c5e57f75669dbf10 for postgres:12 with digest postgres@sha256:0619094e4045d67b34b9b4de10d4c433d03cd032c95145d259a97b3081562936 ...10Starting service redis:6.0-alpine ...11Pulling docker image redis:6.0-alpine ...12Using docker image sha256:b5a61c880115e6a29b90b90aef1973eb232e48d3547092deb27f519e1ae98f11 for redis:6.0-alpine with digest redis@sha256:10c7dc799ef793b4c76fb5ef074fd1186121151b90a799b01393e137220bb61e ...13Waiting for services to be up and running (timeout 30 seconds)...14Authenticating with credentials from job payload (GitLab Registry)15Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-2.7.patched-golang-1.18-node-16.14-postgresql-12:rubygems-3.2-git-2.36-lfs-2.9-chrome-103-yarn-1.22-graphicsmagick-1.3.36 ...16Using docker image sha256:5c5404ecc69273636c3ef49645be715ef30ea99e51ad146a2efbeac2a1875f9c for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-2.7.patched-golang-1.18-node-16.14-postgresql-12:rubygems-3.2-git-2.36-lfs-2.9-chrome-103-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-2.7.patched-golang-1.18-node-16.14-postgresql-12@sha256:b032fe79dc0bf3ebfaeb610c82eacc500fbd0ec6e01889444011cf5a72b4135d ...18Running on runner-8zcxmppt-project-278964-concurrent-0 via runner-8zcxmppt-shared-gitlab-org-1668428762-cafc4c3f...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: 134386, done. 25remote: Counting objects: 100% (134386/134386), done. 26remote: Compressing objects: 100% (87585/87585), done.27remote: Total 134386 (delta 60655), reused 92571 (delta 41765), pack-reused 0 28Receiving objects: 100% (134386/134386), 116.33 MiB | 26.71 MiB/s, done.29Resolving deltas: 100% (60655/60655), done.31 * [new ref] refs/pipelines/693894100 -> refs/pipelines/69389410032Checking out 5648e5c9 as refs/merge-requests/102535/merge...33Skipping Git submodules setup34$ git remote set-url origin "${CI_REPOSITORY_URL}"36Checking cache for ruby-gems-debian-bullseye-ruby-2.7-16...37cache.zip is up to date 38Successfully extracted cache39Checking cache for gitaly-ruby-gems-debian-bullseye-ruby-2.7-16...40Downloading cache.zip from https://storage.googleapis.com/gitlab-com-runners-cache/project/278964/gitaly-ruby-gems-debian-bullseye-ruby-2.7-16 41Successfully extracted cache43Downloading artifacts for compile-test-assets (3318206277)...44Downloading artifacts from coordinator... ok id=3318206277 responseStatus=200 OK token=qTdz9bAX45Downloading artifacts for detect-tests (3318206299)...46Downloading artifacts from coordinator... ok id=3318206299 responseStatus=200 OK token=qTdz9bAX47Downloading artifacts for retrieve-tests-metadata (3318206306)...48Downloading artifacts from coordinator... ok id=3318206306 responseStatus=200 OK token=qTdz9bAX49Downloading artifacts for setup-test-env (3318206286)...50Downloading artifacts from coordinator... ok id=3318206286 responseStatus=200 OK token=qTdz9bAX52Using docker image sha256:5c5404ecc69273636c3ef49645be715ef30ea99e51ad146a2efbeac2a1875f9c for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-2.7.patched-golang-1.18-node-16.14-postgresql-12:rubygems-3.2-git-2.36-lfs-2.9-chrome-103-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-2.7.patched-golang-1.18-node-16.14-postgresql-12@sha256:b032fe79dc0bf3ebfaeb610c82eacc500fbd0ec6e01889444011cf5a72b4135d ...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.sh690Using decomposed database config (config/database.yml.decomposed-postgresql)691$ setup_db_user_only692CREATE ROLE693GRANT694==> 'setup_db_user_only' succeeded in 0 seconds.695$ bundle exec rake db:drop db:create db:schema:load db:migrate696Dropped database 'gitlabhq_test'697Dropped database 'gitlabhq_test_ci'698Dropped database 'gitlabhq_geo_test'699Created database 'gitlabhq_test'700Created database 'gitlabhq_test_ci'701Created database 'gitlabhq_geo_test'702==> 'bundle exec rake db:drop db:create db:schema:load db:migrate' succeeded in 45 seconds.703$ setup_db_praefect704SELECT pg_catalog.set_config('search_path', '', false);705CREATE DATABASE praefect_test ENCODING 'UTF8';706==> 'setup_db_praefect' succeeded in 0 seconds.707$ source ./scripts/rspec_helpers.sh708$ run_timed_command "gem install knapsack --no-document"709$ gem install knapsack --no-document710Successfully installed knapsack-4.0.07111 gem installed712==> 'gem install knapsack --no-document' succeeded in 1 seconds.713$ echo -e "\e[0Ksection_start:`date +%s`:gitaly-test-spawn[collapsed=true]\r\e[0KStarting Gitaly"827$ rspec_paralellized_job "--tag ~quarantine --tag ~level:migration"828SKIP_FLAKY_TESTS_AUTOMATICALLY: true829RETRY_FAILED_TESTS_IN_NEW_PROCESS: true830KNAPSACK_GENERATE_REPORT: true831FLAKY_RSPEC_GENERATE_REPORT: true832KNAPSACK_TEST_FILE_PATTERN: spec/{commands,controllers,mailers,requests}{,/**/}*_spec.rb833KNAPSACK_LOG_LEVEL: debug834KNAPSACK_REPORT_PATH: knapsack/rspec_integration_pg12_3_12_report.json835FLAKY_RSPEC_SUITE_REPORT_PATH: rspec/flaky/report-suite.json836FLAKY_RSPEC_REPORT_PATH: rspec/flaky/all_rspec_integration_pg12_3_12_report.json837NEW_FLAKY_RSPEC_REPORT_PATH: rspec/flaky/new_rspec_integration_pg12_3_12_report.json838SKIPPED_FLAKY_TESTS_REPORT_PATH: rspec/flaky/skipped_flaky_tests_rspec_integration_pg12_3_12_report.txt839RETRIED_TESTS_REPORT_PATH: rspec/flaky/retried_tests_rspec_integration_pg12_3_12_report.txt840CRYSTALBALL: 841Knapsack node specs:842spec/requests/api/merge_requests_spec.rb843spec/requests/api/pypi_packages_spec.rb844spec/requests/api/search_spec.rb845spec/controllers/projects/merge_requests/diffs_controller_spec.rb846spec/requests/api/group_clusters_spec.rb847spec/requests/api/snippets_spec.rb848spec/requests/api/graphql/project/issues_spec.rb849spec/controllers/projects/milestones_controller_spec.rb850spec/controllers/sent_notifications_controller_spec.rb851spec/requests/api/issues/put_projects_issues_spec.rb852spec/requests/api/rpm_project_packages_spec.rb853spec/requests/api/terraform/state_version_spec.rb854spec/controllers/import/gitea_controller_spec.rb855spec/requests/api/go_proxy_spec.rb856spec/controllers/projects/repositories_controller_spec.rb857spec/requests/api/resource_access_tokens_spec.rb858spec/controllers/projects/labels_controller_spec.rb859spec/requests/api/commit_statuses_spec.rb860spec/controllers/snippets/notes_controller_spec.rb861spec/requests/api/suggestions_spec.rb862spec/requests/api/graphql/container_repository/container_repository_details_spec.rb863spec/requests/self_monitoring_project_spec.rb864spec/requests/api/protected_branches_spec.rb865spec/controllers/projects/settings/operations_controller_spec.rb866spec/requests/api/topics_spec.rb867spec/requests/api/graphql/group/dependency_proxy_manifests_spec.rb868spec/requests/groups/milestones_controller_spec.rb869spec/controllers/projects/autocomplete_sources_controller_spec.rb870spec/requests/projects/environments_controller_spec.rb871spec/controllers/admin/projects_controller_spec.rb872spec/requests/api/graphql/mutations/timelogs/create_spec.rb873spec/requests/api/graphql/project_query_spec.rb874spec/controllers/projects/todos_controller_spec.rb875spec/requests/api/graphql/group/group_members_spec.rb876spec/requests/api/graphql/project/milestones_spec.rb877spec/requests/api/graphql/mutations/merge_requests/set_locked_spec.rb878spec/controllers/concerns/send_file_upload_spec.rb879spec/requests/projects/google_cloud/gcp_regions_controller_spec.rb880spec/controllers/concerns/controller_with_cross_project_access_check_spec.rb881spec/requests/projects/harbor/artifacts_controller_spec.rb882spec/requests/api/graphql/mutations/todos/mark_all_done_spec.rb883spec/requests/api/graphql/group/timelogs_spec.rb884spec/requests/api/graphql/project/environments_spec.rb885spec/requests/api/graphql/custom_emoji_query_spec.rb886spec/requests/api/graphql/project/grafana_integration_spec.rb887spec/requests/api/graphql/mutations/ci/job_retry_spec.rb888spec/requests/api/graphql/mutations/packages/cleanup/policy/update_spec.rb889spec/requests/api/graphql/mutations/discussions/toggle_resolve_spec.rb890spec/controllers/import/manifest_controller_spec.rb891spec/controllers/projects/security/configuration_controller_spec.rb892spec/requests/api/sidekiq_metrics_spec.rb893spec/requests/api/graphql/project/merge_request/pipelines_spec.rb894spec/requests/projects/noteable_notes_spec.rb895spec/requests/api/graphql/mutations/design_management/move_spec.rb896spec/requests/api/graphql/project/jira_projects_spec.rb897spec/requests/api/graphql/usage_trends_measurements_spec.rb898spec/controllers/projects/issue_links_controller_spec.rb899spec/controllers/dashboard/labels_controller_spec.rb900spec/controllers/google_api/authorizations_controller_spec.rb901spec/requests/concerns/planning_hierarchy_spec.rb902spec/requests/api/graphql/mutations/incident_management/timeline_event/update_spec.rb903spec/requests/api/graphql/mutations/ci/job_unschedule_spec.rb904spec/controllers/groups/settings/repository_controller_spec.rb905spec/requests/projects/incident_management/pagerduty_incidents_spec.rb906spec/controllers/projects/web_ide_schemas_controller_spec.rb907spec/requests/api/graphql/mutations/admin/sidekiq_queues/delete_jobs_spec.rb908spec/controllers/projects/terraform_controller_spec.rb909spec/requests/user_avatar_spec.rb910spec/controllers/concerns/spammable_actions/captcha_check/json_format_actions_support_spec.rb911spec/controllers/concerns/redirects_for_missing_path_on_tree_spec.rb912spec/requests/api/geo_spec.rb913spec/requests/terraform/services_controller_spec.rb914Filter specs:915Running specs:916Running all node tests without filter917spec/requests/api/merge_requests_spec.rb918spec/requests/api/pypi_packages_spec.rb919spec/requests/api/search_spec.rb920spec/controllers/projects/merge_requests/diffs_controller_spec.rb921spec/requests/api/group_clusters_spec.rb922spec/requests/api/snippets_spec.rb923spec/requests/api/graphql/project/issues_spec.rb924spec/controllers/projects/milestones_controller_spec.rb925spec/controllers/sent_notifications_controller_spec.rb926spec/requests/api/issues/put_projects_issues_spec.rb927spec/requests/api/rpm_project_packages_spec.rb928spec/requests/api/terraform/state_version_spec.rb929spec/controllers/import/gitea_controller_spec.rb930spec/requests/api/go_proxy_spec.rb931spec/controllers/projects/repositories_controller_spec.rb932spec/requests/api/resource_access_tokens_spec.rb933spec/controllers/projects/labels_controller_spec.rb934spec/requests/api/commit_statuses_spec.rb935spec/controllers/snippets/notes_controller_spec.rb936spec/requests/api/suggestions_spec.rb937spec/requests/api/graphql/container_repository/container_repository_details_spec.rb938spec/requests/self_monitoring_project_spec.rb939spec/requests/api/protected_branches_spec.rb940spec/controllers/projects/settings/operations_controller_spec.rb941spec/requests/api/topics_spec.rb942spec/requests/api/graphql/group/dependency_proxy_manifests_spec.rb943spec/requests/groups/milestones_controller_spec.rb944spec/controllers/projects/autocomplete_sources_controller_spec.rb945spec/requests/projects/environments_controller_spec.rb946spec/controllers/admin/projects_controller_spec.rb947spec/requests/api/graphql/mutations/timelogs/create_spec.rb948spec/requests/api/graphql/project_query_spec.rb949spec/controllers/projects/todos_controller_spec.rb950spec/requests/api/graphql/group/group_members_spec.rb951spec/requests/api/graphql/project/milestones_spec.rb952spec/requests/api/graphql/mutations/merge_requests/set_locked_spec.rb953spec/controllers/concerns/send_file_upload_spec.rb954spec/requests/projects/google_cloud/gcp_regions_controller_spec.rb955spec/controllers/concerns/controller_with_cross_project_access_check_spec.rb956spec/requests/projects/harbor/artifacts_controller_spec.rb957spec/requests/api/graphql/mutations/todos/mark_all_done_spec.rb958spec/requests/api/graphql/group/timelogs_spec.rb959spec/requests/api/graphql/project/environments_spec.rb960spec/requests/api/graphql/custom_emoji_query_spec.rb961spec/requests/api/graphql/project/grafana_integration_spec.rb962spec/requests/api/graphql/mutations/ci/job_retry_spec.rb963spec/requests/api/graphql/mutations/packages/cleanup/policy/update_spec.rb964spec/requests/api/graphql/mutations/discussions/toggle_resolve_spec.rb965spec/controllers/import/manifest_controller_spec.rb966spec/controllers/projects/security/configuration_controller_spec.rb967spec/requests/api/sidekiq_metrics_spec.rb968spec/requests/api/graphql/project/merge_request/pipelines_spec.rb969spec/requests/projects/noteable_notes_spec.rb970spec/requests/api/graphql/mutations/design_management/move_spec.rb971spec/requests/api/graphql/project/jira_projects_spec.rb972spec/requests/api/graphql/usage_trends_measurements_spec.rb973spec/controllers/projects/issue_links_controller_spec.rb974spec/controllers/dashboard/labels_controller_spec.rb975spec/controllers/google_api/authorizations_controller_spec.rb976spec/requests/concerns/planning_hierarchy_spec.rb977spec/requests/api/graphql/mutations/incident_management/timeline_event/update_spec.rb978spec/requests/api/graphql/mutations/ci/job_unschedule_spec.rb979spec/controllers/groups/settings/repository_controller_spec.rb980spec/requests/projects/incident_management/pagerduty_incidents_spec.rb981spec/controllers/projects/web_ide_schemas_controller_spec.rb982spec/requests/api/graphql/mutations/admin/sidekiq_queues/delete_jobs_spec.rb983spec/controllers/projects/terraform_controller_spec.rb984spec/requests/user_avatar_spec.rb985spec/controllers/concerns/spammable_actions/captcha_check/json_format_actions_support_spec.rb986spec/controllers/concerns/redirects_for_missing_path_on_tree_spec.rb987spec/requests/api/geo_spec.rb988spec/requests/terraform/services_controller_spec.rb989Running all node tests without filter990Running all node tests without filter991Knapsack report generator started!992WARNING: Shared example group 'creating pypi package files' has been previously defined at:993 /builds/gitlab-org/gitlab/spec/support/shared_examples/requests/api/pypi_packages_shared_examples.rb:4994...and you are now defining it at:995 /builds/gitlab-org/gitlab/spec/support/shared_examples/requests/api/pypi_packages_shared_examples.rb:4996The new definition will overwrite the original one.997WARNING: Shared example group 'creating pypi package files' has been previously defined at:998 /builds/gitlab-org/gitlab/spec/support/shared_examples/requests/api/pypi_packages_shared_examples.rb:4999...and you are now defining it at:1000 /builds/gitlab-org/gitlab/spec/support/shared_examples/requests/api/pypi_packages_shared_examples.rb:41001The new definition will overwrite the original one.1002Run options: exclude {:quarantine=>true, :level=>"migration"}1003Test environment set up in 0.617075636 seconds1004API::MergeRequests1005 route shadowing1006 does not occur1007 GET /merge_requests1008 when unauthenticated1009 returns an array of all merge requests1010 returns authentication error without any scope1011 returns authentication error when scope is assigned-to-me1012 returns authentication error when scope is assigned_to_me1013 returns authentication error when scope is created-by-me1014 behaves like issuable anonymous search1015 with anonymous user1016 with disable_anonymous_search disabled1017 returns issuables matching given search string for title1018 returns issuables matching given search string for description1019 with disable_anonymous_search enabled1020 returns 422 error1021 when authenticated1022 returns an array of all merge requests except unauthorized ones1023 returns an array of no merge_requests when wip=yes1024 returns an array of no merge_requests when wip=no1025 does not return unauthorized merge requests1026 returns an array of merge requests created by current user if no scope is given1027 returns an array of merge requests assigned to the given user1028 returns an array of merge requests with no assignee1029 returns an array of merge requests with any assignee1030 returns an array of merge requests assigned to me1031 returns an array of merge requests assigned to me (kebab-case)1032 returns an array of merge requests created by me1033 returns an array of merge requests created by me (kebab-case)1034 returns merge requests reacted by the authenticated user by the given emoji1035 returns merge requests created before a specific date1036 returns merge requests created after a specific date1037 returns merge requests updated before a specific date1038 returns merge requests updated after a specific date1039 filter by author1040 when only `author_id` is passed1041 returns an array of merge requests authored by the given user1042 when only `author_username` is passed1043 returns an array of merge requests authored by the given user(by `author_username`)1044 when both `author_id` and `author_username` are passed1045 returns a 4001046 filter by reviewer1047 with reviewer_id1048 with an id1049 returns review requested merge requests for the given user1050 with Any1051 returns review requested merge requests for any user1052 with None1053 returns merge requests that has no assigned reviewers1054 with reviewer_username1055 returns review requested merge requests for the given user1056 with both reviewer_id and reviewer_username1057 returns a 4001058 source_branch param1059 returns merge requests with the given source branch1060 target_branch param1061 returns merge requests with the given target branch1062 search params1063 returns merge requests matching given search string for title1064 returns merge requests matching given search string for title and scoped in title1065 returns an empty array if no merge request matches given search string for description and scoped in title1066 returns merge requests for project matching given search string for description1067 state param1068 returns merge requests with the given state1069 GET /projects/:id/merge_requests1070 returns 404 for non public projects1071 returns an array of no merge_requests when wip=yes1072 returns merge_request by "iids" array1073 behaves like merge requests list1074 when unauthenticated1075 returns merge requests for public projects1076 behaves like issuable anonymous search1077 with anonymous user1078 with disable_anonymous_search disabled1079 returns issuables matching given search string for title1080 returns issuables matching given search string for description1081 with disable_anonymous_search enabled1082 returns 422 error1083 when authenticated1084 returns an array of all merge_requests using simple mode1085 returns an array of all merge_requests1086 returns an array of open merge_requests1087 returns an array of closed merge_requests1088 returns an array of merged merge_requests1089 matches V4 response schema1090 returns an empty array if no issue matches milestone1091 returns an empty array if milestone does not exist1092 returns an array of merge requests in given milestone1093 returns an array of merge requests matching state in milestone1094 returns an array of labeled merge requests that are merged for a milestone1095 when merge request is unchecked1096 with merge status recheck projection1097 checks mergeability asynchronously1098 without merge status recheck projection1099 does not enqueue a merge status recheck1100 with labels1101 returns an array of all merge_requests1102 with labels_details1103 returns labels with details1104 with labels1105 returns an array of labeled merge requests1106 returns an array of labeled merge requests where all labels match1107 returns an empty array if no merge request matches labels1108 returns an array of labeled merge requests where all labels match1109 returns an array of merge requests with any label when filtering by any label1110 returns an array of merge requests with any label when filtering by any label1111 returns an array of merge requests with any label when filtering by any label1112 returns an array of merge requests without a label when filtering by no label1113 with ordering1114 returns an array of merge_requests in ascending order1115 returns an array of merge_requests in descending order1116 returns an array of merge_requests ordered by updated_at1117 returns an array of merge_requests ordered by created_at1118 2 merge requests with equal created_at1119 page breaks first page correctly1120 page breaks second page correctly1121 returns an array of merge_requests ordered by title1122 asc when requested1123 desc when requested1124 NOT params1125 returns merge requests without any of the labels given1126 returns merge requests without any of the milestones given1127 returns merge requests without the author given1128 returns merge requests without the assignee given1129 filter by reviewer1130 with reviewer_id1131 with an id1132 returns merge requests that do not have the given reviewer1133 with Any1134 returns a 4001135 with None1136 returns a 4001137 with reviewer_username1138 returns merge requests that do not have the given reviewer1139 when both reviewer_id and reviewer_username1140 returns a 4001141 source_branch param1142 returns merge requests with the given source branch1143 target_branch param1144 returns merge requests with the given target branch1145 caching1146 when it is cached1147 behaves like a cached MergeRequest api request1148 serializes merge request1149 when it is not cached1150 when the status changes1151 behaves like a non-cached MergeRequest api request1152 serializes merge request1153 when the label changes1154 behaves like a non-cached MergeRequest api request1155 serializes merge request1156 when the assignees change1157 behaves like a non-cached MergeRequest api request1158 serializes merge request1159 when the reviewers change1160 behaves like a non-cached MergeRequest api request1161 serializes merge request1162 when another user requests1163 behaves like a non-cached MergeRequest api request1164 serializes merge request1165 when filtering by deployments1166 supports getting merge requests deployed to an environment1167 does not return merge requests for an environment without deployments1168 supports getting merge requests deployed after a date1169 does not return merge requests not deployed after a given date1170 supports getting merge requests deployed before a date1171 does not return merge requests not deployed before a given date1172 when user is an inherited member from the group1173 and user is a guest1174 when project is public with private merge requests1175 behaves like user cannot view merge requests1176 returns 403 forbidden1177 when project is private1178 behaves like user cannot view merge requests1179 returns 403 forbidden1180 GET /groups/:id/merge_requests1181 behaves like merge requests list1182 when unauthenticated1183 returns merge requests for public projects1184 behaves like issuable anonymous search1185 with anonymous user1186 with disable_anonymous_search disabled1187 returns issuables matching given search string for title1188 returns issuables matching given search string for description1189 with disable_anonymous_search enabled1190 returns 422 error1191 when authenticated1192 returns an array of all merge_requests using simple mode1193 returns an array of all merge_requests1194 returns an array of open merge_requests1195 returns an array of closed merge_requests1196 returns an array of merged merge_requests1197 matches V4 response schema1198 returns an empty array if no issue matches milestone1199 returns an empty array if milestone does not exist1200 returns an array of merge requests in given milestone1201 returns an array of merge requests matching state in milestone1202 returns an array of labeled merge requests that are merged for a milestone1203 when merge request is unchecked1204 with merge status recheck projection1205 checks mergeability asynchronously1206 without merge status recheck projection1207 does not enqueue a merge status recheck1208 with labels1209 returns an array of all merge_requests1210 with labels_details1211 returns labels with details1212 with labels1213 returns an array of labeled merge requests1214 returns an array of labeled merge requests where all labels match1215 returns an empty array if no merge request matches labels1216 returns an array of labeled merge requests where all labels match1217 returns an array of merge requests with any label when filtering by any label1218 returns an array of merge requests with any label when filtering by any label1219 returns an array of merge requests with any label when filtering by any label1220 returns an array of merge requests without a label when filtering by no label1221 with ordering1222 returns an array of merge_requests in ascending order1223 returns an array of merge_requests in descending order1224 returns an array of merge_requests ordered by updated_at1225 returns an array of merge_requests ordered by created_at1226 2 merge requests with equal created_at1227 page breaks first page correctly1228 page breaks second page correctly1229 returns an array of merge_requests ordered by title1230 asc when requested1231 desc when requested1232 NOT params1233 returns merge requests without any of the labels given1234 returns merge requests without any of the milestones given1235 returns merge requests without the author given1236 returns merge requests without the assignee given1237 filter by reviewer1238 with reviewer_id1239 with an id1240 returns merge requests that do not have the given reviewer1241 with Any1242 returns a 4001243 with None1244 returns a 4001245 with reviewer_username1246 returns merge requests that do not have the given reviewer1247 when both reviewer_id and reviewer_username1248 returns a 4001249 source_branch param1250 returns merge requests with the given source branch1251 target_branch param1252 returns merge requests with the given target branch1253 when have subgroups1254 behaves like merge requests list1255 when unauthenticated1256 returns merge requests for public projects1257 behaves like issuable anonymous search1258 with anonymous user1259 with disable_anonymous_search disabled1260 returns issuables matching given search string for title1261 returns issuables matching given search string for description1262 with disable_anonymous_search enabled1263 returns 422 error1264 when authenticated1265 returns an array of all merge_requests using simple mode1266 returns an array of all merge_requests1267 returns an array of open merge_requests1268 returns an array of closed merge_requests1269 returns an array of merged merge_requests1270 matches V4 response schema1271 returns an empty array if no issue matches milestone1272 returns an empty array if milestone does not exist1273 returns an array of merge requests in given milestone1274 returns an array of merge requests matching state in milestone1275 returns an array of labeled merge requests that are merged for a milestone1276 when merge request is unchecked1277 with merge status recheck projection1278 checks mergeability asynchronously1279 without merge status recheck projection1280 does not enqueue a merge status recheck1281 with labels1282 returns an array of all merge_requests1283 with labels_details1284 returns labels with details1285 with labels1286 returns an array of labeled merge requests1287 returns an array of labeled merge requests where all labels match1288 returns an empty array if no merge request matches labels1289 returns an array of labeled merge requests where all labels match1290 returns an array of merge requests with any label when filtering by any label1291 returns an array of merge requests with any label when filtering by any label1292 returns an array of merge requests with any label when filtering by any label1293 returns an array of merge requests without a label when filtering by no label1294 with ordering1295 returns an array of merge_requests in ascending order1296 returns an array of merge_requests in descending order1297 returns an array of merge_requests ordered by updated_at1298 returns an array of merge_requests ordered by created_at1299 2 merge requests with equal created_at1300 page breaks first page correctly1301 page breaks second page correctly1302 returns an array of merge_requests ordered by title1303 asc when requested1304 desc when requested1305 NOT params1306 returns merge requests without any of the labels given1307 returns merge requests without any of the milestones given1308 returns merge requests without the author given1309 returns merge requests without the assignee given1310 filter by reviewer1311 with reviewer_id1312 with an id1313 returns merge requests that do not have the given reviewer1314 with Any1315 returns a 4001316 with None1317 returns a 4001318 with reviewer_username1319 returns merge requests that do not have the given reviewer1320 when both reviewer_id and reviewer_username1321 returns a 4001322 source_branch param1323 returns merge requests with the given source branch1324 target_branch param1325 returns merge requests with the given target branch1326 #to_reference1327 exposes reference path in context of group1328 referencing from parent group1329 exposes reference path in context of parent group1330 with archived projects1331 returns an array excluding merge_requests from archived projects1332 with non_archived param set as false1333 returns an array including merge_requests from archived projects1334 GET /projects/:id/merge_requests/:merge_request_iid1335 matches json schema1336 exposes known attributes1337 exposes description and title html when render_html is true1338 exposes rebase_in_progress when include_rebase_in_progress is true1339 returns the commits behind the target branch when include_diverged_commits_count is present1340 returns a 404 error if merge_request_iid not found1341 returns a 404 error if merge_request `id` is used instead of iid1342 indicates if a user cannot merge the MR1343 returns `checking` as its merge_status instead of `cannot_be_merged_rechecking`1344 when author is not a member without any merged merge requests1345 exposes first_contribution as true1346 when merge request author has only guest access1347 behaves like rejects user from accessing merge request info1348 returns a 403 error1349 merge_request_metrics1350 has fields from merge request metrics1351 returns correct values1352 merge_user1353 when MR is set to MWPS1354 returns user who set MWPS1355 when MR is already merged1356 returns user who actually merged1357 head_pipeline1358 when user can read the pipeline1359 exposes pipeline information1360 when user can not read the pipeline1361 does not expose pipeline information1362 Draft1363 returns merge request1364 when a merge request has more than the changes limit1365 returns a string indicating that more changes were made1366 for forked projects1367 includes the `allow_collaboration` field1368 when merge request is unchecked1369 checks mergeability asynchronously1370 GET /projects/:id/merge_requests/:merge_request_iid/participants1371 behaves like issuable participants endpoint1372 returns participants1373 returns a 404 when iid does not exist1374 returns a 404 when id is used instead of iid1375 when merge request author has only guest access1376 behaves like rejects user from accessing merge request info1377 returns a 403 error1378 GET /projects/:id/merge_requests/:merge_request_iid/reviewers1379 returns reviewers1380 returns a 404 when iid does not exist1381 returns a 404 when id is used instead of iid1382 when merge request author has only guest access1383 behaves like rejects user from accessing merge request info1384 returns a 403 error1385 GET /projects/:id/merge_requests/:merge_request_iid/commits1386 returns a 200 when merge request is valid1387 returns a 404 when merge_request_iid not found1388 returns a 404 when merge_request id is used instead of iid1389 when merge request author has only guest access1390 behaves like rejects user from accessing merge request info1391 returns a 403 error1392 GET /projects/:id/merge_requests/:merge_request_iid/:context_commits1393 returns a 200 when merge request is valid1394 returns a 404 when merge_request_iid not found1395 GET /projects/:id/merge_requests/:merge_request_iid/changes1396 returns a 404 when merge_request_iid not found1397 returns a 404 when merge_request id is used instead of iid1398 returns the overflow status as false1399 when merge request author has only guest access1400 behaves like rejects user from accessing merge request info1401 returns a 403 error1402 behaves like find an existing merge request1403 returns the change information of the merge_request1404 behaves like accesses diffs via raw_diffs1405 as expected1406 when using DB-backed diffs1407 accesses diffs via DB-backed diffs.diffs1408 behaves like find an existing merge request1409 returns the change information of the merge_request1410 when the diff_collection has overflowed its size limits1411 returns the overflow status as true1412 when access_raw_diffs is true1413 behaves like accesses diffs via raw_diffs1414 as expected1415 GET /projects/:id/merge_requests/:merge_request_iid/pipelines1416 when authorized1417 returns a paginated array of corresponding pipelines1418 exposes basic attributes1419 returns 404 if MR does not exist1420 when unauthorized1421 returns 4031422 when merge request author has only guest access1423 behaves like rejects user from accessing merge request info1424 returns a 403 error1425 POST /projects/:id/merge_requests/:merge_request_iid/pipelines1426 when authorized1427 creates and returns the new Pipeline1428 when unauthorized1429 responds with a blank 4041430 when the merge request does not exist1431 responds with a blank 4041432 when the .gitlab-ci.yml file is invalid1433 creates a failed pipeline1434 POST /projects/:id/merge_requests1435 support for deprecated assignee_id1436 creates a new merge request1437 creates a new merge request when assignee_id is empty1438 filters assignee_id of unauthorized user1439 single assignee restrictions1440 creates a new project merge request with no more than one assignee1441 accepts reviewer_ids1442 creates a new merge request with a reviewer1443 creates a new merge request with no reviewer1444 between branches projects1445 returns 422 when source_branch equals target_branch1446 returns 400 when source_branch is missing1447 returns 400 when target_branch is missing1448 returns 400 when title is missing1449 different labels1450 creates merge request with special label names1451 creates merge request with special label names as array1452 empty label param does not add any labels1453 empty label param as array does not add any labels, but only explicitly as json1454 empty label param as array, does not add any labels1455 array with one empty string element does not add labels1456 array with multiple empty string elements, does not add labels1457 behaves like creates merge request with labels1458 returns merge_request1459 behaves like creates merge request with labels1460 returns merge_request1461 behaves like creates merge request with labels1462 returns merge_request1463 with existing MR1464 returns 409 when MR already exists for source/target1465 accepts remove_source_branch parameter1466 sets force_remove_source_branch to false1467 sets force_remove_source_branch to true1468 forked projects1469 returns merge_request1470 does not return 422 when source_branch equals target_branch1471 returns 403 when target project has disabled merge requests1472 returns 400 when source_branch is missing1473 returns 400 when target_branch is missing1474 returns 400 when title is missing1475 allows setting `allow_collaboration`1476 returns 201 when target_branch is specified and for the same project1477 when target_branch and target_project_id is specified1478 returns 422 if targeting a different fork1479 returns 403 if targeting a different fork which user can not access1480 when user is an inherited member from the group1481 and user is a guest1482 when project is public with private merge requests1483 behaves like user cannot create merge requests1484 returns 403 forbidden1485 when project is private1486 behaves like user cannot create merge requests1487 returns 403 forbidden1488 PUT /projects/:id/merge_requests/:merge_request_iid1489 behaves like issuable update endpoint1490 PUT /projects/:id/issues/:issue_iid1491 clears labels when labels param is nil1492 updates the issuable with labels param as array1493 when only assignee_ids are provided1494 sets the assignees1495 creates appropriate system notes1496 triggers webhooks1497 when assignee_id=user2.id1498 sets the assignees1499 when assignee_id=01500 clears the assignees1501 creates appropriate system notes1502 when only assignee_ids are provided, and the list is empty1503 clears the assignees1504 when only assignee_ids are provided, and the list contains the sentinel value1505 clears the assignees1506 when only assignee_id=01507 clears the assignees1508 accepts reviewer_ids1509 adds a reviewer to the existing merge request1510 removes a reviewer from the existing merge request1511 POST /projects/:id/merge_requests/:merge_request_iid/context_commits1512 when authenticated1513 creates and returns the new context commit1514 returns 400 when one or more shas are invalid1515 returns 400 when the commits are empty1516 returns 400 when params is empty1517 returns 403 when creating new context commit for guest role1518 returns 403 when creating new context commit for reporter role1519 doesnt create when its already created1520 returns 400 when the context commit is already created1521 when unauthenticated1522 returns 401 if user tries to create context commits1523 DELETE /projects/:id/merge_requests/:merge_request_iid1524 when the user is developer1525 denies the deletion of the merge request1526 when the user is project owner1527 destroys the merge request owners can destroy1528 returns 404 for an invalid merge request IID1529 returns 404 if the merge request id is used instead of iid1530 behaves like 412 response1531 for a modified ressource1532 returns 412 with a JSON error1533 for an unmodified ressource1534 returns 204 with an empty body1535 DELETE /projects/:id/merge_requests/:merge_request_iid/context_commits1536 when authenticated1537 deletes context commit1538 returns 400 when invalid commit sha is passed1539 returns 400 when commits is empty1540 returns 400 when no params is passed1541 returns 403 when deleting existing context commit for guest role1542 returns 403 when deleting existing context commit for reporter role1543 when unauthenticated1544 returns 401, unauthorised error1545 PUT /projects/:id/merge_requests/:merge_request_iid/merge1546 returns merge_request in case of success1547 returns 422 if branch can't be merged1548 returns 405 if merge_request is not open1549 returns 405 if merge_request is a draft1550 returns 405 if the build failed for a merge request that requires success1551 returns 401 if user has no permissions to merge1552 returns 409 if the SHA parameter doesn't match1553 succeeds if the SHA parameter matches1554 updates the MR's squash attribute1555 does not merge if merge_when_pipeline_succeeds is passed and the pipeline has failed1556 merges if the head pipeline already succeeded and `merge_when_pipeline_succeeds` is passed1557 enables merge when pipeline succeeds if the pipeline is active1558 enables merge when pipeline succeeds if the pipeline is active and only_allow_merge_if_pipeline_succeeds is true1559 returns 404 for an invalid merge request IID1560 returns 404 if the merge request id is used instead of iid1561 when the merge request fails to merge1562 returns 4221563 the squash_commit_message param1564 results in a specific squash commit message when set1565 results in a default squash commit message when not set1566 the should_remove_source_branch param1567 removes the source branch when set1568 with a merge request that has force_remove_source_branch enabled1569 removes the source branch1570 does not remove the source branch1571 performing a ff-merge with squash1572 records the squash commit SHA and returns it in the response1573 GET /projects/:id/merge_requests/:merge_request_iid/merge_ref1574 returns the generated ID from the merge service in case of success1575 when merge-ref is not synced with merge status1576 returns 200 if MR can be merged1577 returns 400 if MR cannot be merged1578 when user has no access to the MR1579 returns 4041580 when invalid merge request IID1581 returns 4041582 when merge request ID is used instead IID1583 returns 4041584 PUT /projects/:id/merge_requests/:merge_request_iid1585 updates title and returns merge_request1586 updates description and returns merge_request1587 updates milestone_id and returns merge_request1588 updates squash and returns merge_request1589 updates target_branch and returns merge_request1590 returns merge_request that removes the source branch1591 filters assignee_id of unauthorized user1592 does not update state when title is empty1593 does not update state when target_branch is empty1594 returns 404 for an invalid merge request IID1595 returns 404 if the merge request id is used instead of iid1596 updates force_remove_source_branch properly1597 sets to false1598 sets to true1599 with a merge request across forks1600 is true for an authorized user1601 is false for an unauthorized user1602 to close a MR1603 returns merge_request1604 forked projects1605 when source project is public (i.e. MergeRequest#collaborative_push_possible? == true)1606 behaves like update of allow_collaboration and allow_maintainer_to_push1607 attempts to update allow_collaboration to true and returns true for `allow_collaboration`1608 attempts to update allow_maintainer_to_push to true and returns true for `allow_collaboration`1609 when source project is private (i.e. MergeRequest#collaborative_push_possible? == false)1610 behaves like update of allow_collaboration and allow_maintainer_to_push1611 attempts to update allow_collaboration to true and returns false for `allow_collaboration`1612 attempts to update allow_maintainer_to_push to true and returns false for `allow_collaboration`1613 when updating labels1614 allows special label names1615 also accepts labels as an array1616 empty label param removes labels1617 label param as empty array, but only explicitly as json, removes labels1618 empty label as array, removes labels1619 array with one empty string element removes labels1620 array with multiple empty string elements, removes labels1621 with labels1622 when adding labels, keeps existing labels and adds new1623 when removing labels, only removes those specified1624 when removing all labels, keeps no labels1625 GET :id/merge_requests/:merge_request_iid/closes_issues1626 returns the issue that will be closed on merge1627 returns an empty array when there are no issues to be closed1628 handles external issues1629 returns 403 if the user has no access to the merge request1630 returns 404 for an invalid merge request IID1631 returns 404 if the merge request id is used instead of iid1632 POST :id/merge_requests/:merge_request_iid/subscribe1633 subscribes to a merge request1634 returns 304 if already subscribed1635 returns 404 if the merge request is not found1636 returns 404 if the merge request id is used instead of iid1637 returns 403 if user has no access to read code1638 POST :id/merge_requests/:merge_request_iid/unsubscribe1639 unsubscribes from a merge request1640 returns 304 if not subscribed1641 returns 404 if the merge request is not found1642 returns 404 if the merge request id is used instead of iid1643 returns 403 if user has no access to read code1644 POST :id/merge_requests/:merge_request_iid/cancel_merge_when_pipeline_succeeds1645 removes the merge_when_pipeline_succeeds status1646 returns 404 if the merge request is not found1647 returns 404 if the merge request id is used instead of iid1648 PUT :id/merge_requests/:merge_request_iid/rebase1649 returns 403 if the user cannot push to the branch1650 returns 409 if a rebase is already in progress1651 returns 409 if rebase can't lock the row1652 when rebase can be performed1653 enqueues a rebase of the merge request against the target branch1654 when skip_ci parameter is set1655 enqueues a rebase of the merge request with skip_ci flag set1656 when merge request branch does not allow force push1657 returns 4031658 PUT :id/merge_requests/:merge_request_iid/reset_approvals1659 when reset_approvals can be performed1660 clears approvals of the merge_request1661 for users with bot role1662 for users with non-bot roles1663 returns 4011664 returns 4011665 returns 4011666 returns 4011667 for bot-users from external namespaces1668 external group bot-user1669 returns 4011670 external project bot-user1671 returns 4011672 Time tracking1673 POST /projects/:id/merge_requests/:merge_request_id/time_estimate1674 sets the time estimate for merge_request1675 with an unauthorized user1676 behaves like an unauthorized API user1677 is expected to eq 4031678 behaves like API user with insufficient permissions1679 with non member that is the author1680 behaves like an unauthorized API user1681 is expected to eq 4031682 updating the current estimate1683 when duration has a bad format1684 does not modify the original estimate1685 with a valid duration1686 updates the estimate1687 POST /projects/:id/merge_requests/:merge_request_id/reset_time_estimate1688 resets the time estimate for merge_request1689 with an unauthorized user1690 behaves like an unauthorized API user1691 is expected to eq 4031692 behaves like API user with insufficient permissions1693 with non member that is the author1694 behaves like an unauthorized API user1695 is expected to eq 4031696 POST /projects/:id/merge_requests/:merge_request_id/add_spent_time1697 add spent time for merge_request1698 calls update service with :use_specialized_service param1699 with an unauthorized user1700 behaves like an unauthorized API user1701 is expected to eq 4031702 behaves like API user with insufficient permissions1703 with non member that is the author1704 behaves like an unauthorized API user1705 is expected to eq 4031706 when subtracting time1707 subtracts time of the total spent time1708 when time to subtract is greater than the total spent time1709 does not modify the total time spent1710 POST /projects/:id/merge_requests/:merge_request_id/reset_spent_time1711 resets spent time for merge_request1712 with an unauthorized user1713 behaves like an unauthorized API user1714 is expected to eq 4031715 behaves like API user with insufficient permissions1716 with non member that is the author1717 behaves like an unauthorized API user1718 is expected to eq 4031719 GET /projects/:id/merge_requests/:merge_request_id/time_stats1720 returns the time stats for merge_request1721API::PypiPackages1722 simple index API endpoint1723 GET /api/v4/groups/:id/-/packages/pypi/simple1724 behaves like pypi simple index API endpoint1725 with valid project1726 visibility_level: :public, user_role: :developer, member: true, user_token: true, shared_examples_name: "PyPI package index", expected_status: :success1727 behaves like PyPI package index1728 for user type developer1729 returns the package index1730 behaves like returning response status1731 returns success1732 visibility_level: :public, user_role: :guest, member: true, user_token: true, shared_examples_name: "PyPI package index", expected_status: :success1733 behaves like PyPI package index1734 for user type guest1735 returns the package index1736 behaves like returning response status1737 returns success1738 visibility_level: :public, user_role: :developer, member: true, user_token: false, shared_examples_name: "PyPI package index", expected_status: :success1739 behaves like PyPI package index1740 for user type developer1741 returns the package index1742 behaves like returning response status1743 returns success1744 visibility_level: :public, user_role: :guest, member: true, user_token: false, shared_examples_name: "PyPI package index", expected_status: :success1745 behaves like PyPI package index1746 for user type guest1747 returns the package index1748 behaves like returning response status1749 returns success1750 visibility_level: :public, user_role: :developer, member: false, user_token: true, shared_examples_name: "PyPI package index", expected_status: :success1751 behaves like PyPI package index1752 for user type developer1753 returns the package index1754 behaves like returning response status1755 returns success1756 visibility_level: :public, user_role: :guest, member: false, user_token: true, shared_examples_name: "PyPI package index", expected_status: :success1757 behaves like PyPI package index1758 for user type guest1759 returns the package index1760 behaves like returning response status1761 returns success1762 visibility_level: :public, user_role: :developer, member: false, user_token: false, shared_examples_name: "PyPI package index", expected_status: :success1763 behaves like PyPI package index1764 for user type developer1765 returns the package index1766 behaves like returning response status1767 returns success1768 visibility_level: :public, user_role: :guest, member: false, user_token: false, shared_examples_name: "PyPI package index", expected_status: :success1769 behaves like PyPI package index1770 for user type guest1771 returns the package index1772 behaves like returning response status1773 returns success1774 visibility_level: :public, user_role: :anonymous, member: false, user_token: true, shared_examples_name: "PyPI package index", expected_status: :success1775 behaves like PyPI package index1776 for user type anonymous1777 returns the package index1778 behaves like returning response status1779 returns success1780 visibility_level: :private, user_role: :developer, member: true, user_token: true, shared_examples_name: "PyPI package index", expected_status: :success1781 behaves like PyPI package index1782 for user type developer1783 returns the package index1784 behaves like returning response status1785 returns success1786 visibility_level: :private, user_role: :guest, member: true, user_token: true, shared_examples_name: "process PyPI api request", expected_status: :forbidden1787 behaves like process PyPI api request1788 for user type guest1789 behaves like returning response status1790 returns forbidden1791 visibility_level: :private, user_role: :developer, member: true, user_token: false, shared_examples_name: "process PyPI api request", expected_status: :unauthorized1792 behaves like process PyPI api request1793 for user type developer1794 behaves like returning response status1795 returns unauthorized1796 visibility_level: :private, user_role: :guest, member: true, user_token: false, shared_examples_name: "process PyPI api request", expected_status: :unauthorized1797 behaves like process PyPI api request1798 for user type guest1799 behaves like returning response status1800 returns unauthorized1801 visibility_level: :private, user_role: :developer, member: false, user_token: true, shared_examples_name: "process PyPI api request", expected_status: :not_found1802 behaves like process PyPI api request1803 for user type developer1804 behaves like returning response status1805 returns not_found1806 visibility_level: :private, user_role: :guest, member: false, user_token: true, shared_examples_name: "process PyPI api request", expected_status: :not_found1807 behaves like process PyPI api request1808 for user type guest1809 behaves like returning response status1810 returns not_found1811 visibility_level: :private, user_role: :developer, member: false, user_token: false, shared_examples_name: "process PyPI api request", expected_status: :unauthorized1812 behaves like process PyPI api request1813 for user type developer1814 behaves like returning response status1815 returns unauthorized1816 visibility_level: :private, user_role: :guest, member: false, user_token: false, shared_examples_name: "process PyPI api request", expected_status: :unauthorized1817 behaves like process PyPI api request1818 for user type guest1819 behaves like returning response status1820 returns unauthorized1821 visibility_level: :private, user_role: :anonymous, member: false, user_token: true, shared_examples_name: "process PyPI api request", expected_status: :unauthorized1822 behaves like process PyPI api request1823 for user type anonymous1824 behaves like returning response status1825 returns unauthorized1826 behaves like rejects PyPI access with unknown group id1827 with an unknown project1828 behaves like unknown PyPI scope id1829 as anonymous1830 behaves like process PyPI api request1831 for user type anonymous1832 behaves like returning response status1833 returns not_found1834 as authenticated user1835 behaves like process PyPI api request1836 for user type anonymous1837 behaves like returning response status1838 returns not_found1839 deploy tokens1840 behaves like deploy token for package GET requests1841 with deploy token headers1842 valid token1843 behaves like returning response status1844 returns success1845 invalid token1846 behaves like returning response status1847 returns unauthorized1848 with group path as id1849 behaves like deploy token for package GET requests1850 with deploy token headers1851 valid token1852 behaves like returning response status1853 returns success1854 invalid token1855 behaves like returning response status1856 returns unauthorized1857 job token1858 behaves like job token for package GET requests1859 with job token headers1860 valid token1861 behaves like returning response status1862 returns success1863 invalid token1864 behaves like returning response status1865 returns unauthorized1866 invalid user1867 behaves like returning response status1868 returns unauthorized1869 behaves like a pypi user namespace endpoint1870 visibility_level: :public, user_role: :owner, expected_status: :not_found1871 behaves like returning response status1872 returns not_found1873 visibility_level: :private, user_role: :owner, expected_status: :not_found1874 behaves like returning response status1875 returns not_found1876 visibility_level: :public, user_role: :external, expected_status: :not_found1877 behaves like returning response status1878 returns not_found1879 visibility_level: :private, user_role: :external, expected_status: :not_found1880 behaves like returning response status1881 returns not_found1882 visibility_level: :public, user_role: :anonymous, expected_status: :not_found1883 behaves like returning response status1884 returns not_found1885 visibility_level: :private, user_role: :anonymous, expected_status: :not_found1886 behaves like returning response status1887 returns not_found1888 GET /api/v4/projects/:id/packages/pypi/simple1889 behaves like pypi simple index API endpoint1890 with valid project1891 visibility_level: :public, user_role: :developer, member: true, user_token: true, shared_examples_name: "PyPI package index", expected_status: :success1892 behaves like PyPI package index1893 for user type developer1894 returns the package index1895 behaves like returning response status1896 returns success1897 visibility_level: :public, user_role: :guest, member: true, user_token: true, shared_examples_name: "PyPI package index", expected_status: :success1898 behaves like PyPI package index1899 for user type guest1900 returns the package index1901 behaves like returning response status1902 returns success1903 visibility_level: :public, user_role: :developer, member: true, user_token: false, shared_examples_name: "PyPI package index", expected_status: :success1904 behaves like PyPI package index1905 for user type developer1906 returns the package index1907 behaves like returning response status1908 returns success1909 visibility_level: :public, user_role: :guest, member: true, user_token: false, shared_examples_name: "PyPI package index", expected_status: :success1910 behaves like PyPI package index1911 for user type guest1912 returns the package index1913 behaves like returning response status1914 returns success1915 visibility_level: :public, user_role: :developer, member: false, user_token: true, shared_examples_name: "PyPI package index", expected_status: :success1916 behaves like PyPI package index1917 for user type developer1918 returns the package index1919 behaves like returning response status1920 returns success1921 visibility_level: :public, user_role: :guest, member: false, user_token: true, shared_examples_name: "PyPI package index", expected_status: :success1922 behaves like PyPI package index1923 for user type guest1924 returns the package index1925 behaves like returning response status1926 returns success1927 visibility_level: :public, user_role: :developer, member: false, user_token: false, shared_examples_name: "PyPI package index", expected_status: :success1928 behaves like PyPI package index1929 for user type developer1930 returns the package index1931 behaves like returning response status1932 returns success1933 visibility_level: :public, user_role: :guest, member: false, user_token: false, shared_examples_name: "PyPI package index", expected_status: :success1934 behaves like PyPI package index1935 for user type guest1936 returns the package index1937 behaves like returning response status1938 returns success1939 visibility_level: :public, user_role: :anonymous, member: false, user_token: true, shared_examples_name: "PyPI package index", expected_status: :success1940 behaves like PyPI package index1941 for user type anonymous1942 returns the package index1943 behaves like returning response status1944 returns success1945 visibility_level: :private, user_role: :developer, member: true, user_token: true, shared_examples_name: "PyPI package index", expected_status: :success1946 behaves like PyPI package index1947 for user type developer1948 returns the package index1949 behaves like returning response status1950 returns success1951 visibility_level: :private, user_role: :guest, member: true, user_token: true, shared_examples_name: "process PyPI api request", expected_status: :forbidden1952 behaves like process PyPI api request1953 for user type guest1954 behaves like returning response status1955 returns forbidden1956 visibility_level: :private, user_role: :developer, member: true, user_token: false, shared_examples_name: "process PyPI api request", expected_status: :unauthorized1957 behaves like process PyPI api request1958 for user type developer1959 behaves like returning response status1960 returns unauthorized1961 visibility_level: :private, user_role: :guest, member: true, user_token: false, shared_examples_name: "process PyPI api request", expected_status: :unauthorized1962 behaves like process PyPI api request1963 for user type guest1964 behaves like returning response status1965 returns unauthorized1966 visibility_level: :private, user_role: :developer, member: false, user_token: true, shared_examples_name: "process PyPI api request", expected_status: :not_found1967 behaves like process PyPI api request1968 for user type developer1969 behaves like returning response status1970 returns not_found1971 visibility_level: :private, user_role: :guest, member: false, user_token: true, shared_examples_name: "process PyPI api request", expected_status: :not_found1972 behaves like process PyPI api request1973 for user type guest1974 behaves like returning response status1975 returns not_found1976 visibility_level: :private, user_role: :developer, member: false, user_token: false, shared_examples_name: "process PyPI api request", expected_status: :unauthorized1977 behaves like process PyPI api request1978 for user type developer1979 behaves like returning response status1980 returns unauthorized1981 visibility_level: :private, user_role: :guest, member: false, user_token: false, shared_examples_name: "process PyPI api request", expected_status: :unauthorized1982 behaves like process PyPI api request1983 for user type guest1984 behaves like returning response status1985 returns unauthorized1986 visibility_level: :private, user_role: :anonymous, member: false, user_token: true, shared_examples_name: "process PyPI api request", expected_status: :unauthorized1987 behaves like process PyPI api request1988 for user type anonymous1989 behaves like returning response status1990 returns unauthorized1991 behaves like rejects PyPI access with unknown project id1992 with an unknown project1993 behaves like unknown PyPI scope id1994 as anonymous1995 behaves like process PyPI api request1996 for user type anonymous1997 behaves like returning response status1998 returns not_found1999 as authenticated user2000 behaves like process PyPI api request2001 for user type anonymous2002 behaves like returning response status2003 returns not_found2004 behaves like deploy token for package GET requests2005 with deploy token headers2006 valid token2007 behaves like returning response status2008 returns success2009 invalid token2010 behaves like returning response status2011 returns unauthorized2012 behaves like job token for package GET requests2013 with job token headers2014 valid token2015 behaves like returning response status2016 returns success2017 invalid token2018 behaves like returning response status2019 returns unauthorized2020 invalid user2021 behaves like returning response status2022 returns unauthorized2023 behaves like allow access for everyone with public package_registry_access_level2024 with private project but public access to package registry2025 as non-member user2026 behaves like returning response status2027 returns success2028 as anonymous2029 behaves like returning response status2030 returns success2031 with project path as id2032 behaves like deploy token for package GET requests2033 with deploy token headers2034 valid token2035 behaves like returning response status2036 returns success2037 invalid token2038 behaves like returning response status2039 returns unauthorized2040 simple package API endpoint2041 GET /api/v4/groups/:id/-/packages/pypi/simple/:package_name2042 behaves like pypi simple API endpoint2043 with valid project2044 visibility_level: :public, user_role: :developer, member: true, user_token: true, shared_examples_name: "PyPI package versions", expected_status: :success2045 behaves like PyPI package versions2046 for user type developer2047 returns the package listing2048 behaves like returning response status2049 returns success2050 behaves like a package tracking event2051 creates a gitlab tracking event list_package2052 visibility_level: :public, user_role: :guest, member: true, user_token: true, shared_examples_name: "PyPI package versions", expected_status: :success2053 behaves like PyPI package versions2054 for user type guest2055 returns the package listing2056 behaves like returning response status2057 returns success2058 behaves like a package tracking event2059 creates a gitlab tracking event list_package2060 visibility_level: :public, user_role: :developer, member: true, user_token: false, shared_examples_name: "PyPI package versions", expected_status: :success2061 behaves like PyPI package versions2062 for user type developer2063 returns the package listing2064 behaves like returning response status2065 returns success2066 behaves like a package tracking event2067 creates a gitlab tracking event list_package2068 visibility_level: :public, user_role: :guest, member: true, user_token: false, shared_examples_name: "PyPI package versions", expected_status: :success2069 behaves like PyPI package versions2070 for user type guest2071 returns the package listing2072 behaves like returning response status2073 returns success2074 behaves like a package tracking event2075 creates a gitlab tracking event list_package2076 visibility_level: :public, user_role: :developer, member: false, user_token: true, shared_examples_name: "PyPI package versions", expected_status: :success2077 behaves like PyPI package versions2078 for user type developer2079 returns the package listing2080 behaves like returning response status2081 returns success2082 behaves like a package tracking event2083 creates a gitlab tracking event list_package2084 visibility_level: :public, user_role: :guest, member: false, user_token: true, shared_examples_name: "PyPI package versions", expected_status: :success2085 behaves like PyPI package versions2086 for user type guest2087 returns the package listing2088 behaves like returning response status2089 returns success2090 behaves like a package tracking event2091 creates a gitlab tracking event list_package2092 visibility_level: :public, user_role: :developer, member: false, user_token: false, shared_examples_name: "PyPI package versions", expected_status: :success2093 behaves like PyPI package versions2094 for user type developer2095 returns the package listing2096 behaves like returning response status2097 returns success2098 behaves like a package tracking event2099 creates a gitlab tracking event list_package2100 visibility_level: :public, user_role: :guest, member: false, user_token: false, shared_examples_name: "PyPI package versions", expected_status: :success2101 behaves like PyPI package versions2102 for user type guest2103 returns the package listing2104 behaves like returning response status2105 returns success2106 behaves like a package tracking event2107 creates a gitlab tracking event list_package2108 visibility_level: :public, user_role: :anonymous, member: false, user_token: true, shared_examples_name: "PyPI package versions", expected_status: :success2109 behaves like PyPI package versions2110 for user type anonymous2111 returns the package listing2112 behaves like returning response status2113 returns success2114 behaves like a package tracking event2115 creates a gitlab tracking event list_package2116 visibility_level: :private, user_role: :developer, member: true, user_token: true, shared_examples_name: "PyPI package versions", expected_status: :success2117 behaves like PyPI package versions2118 for user type developer2119 returns the package listing2120 behaves like returning response status2121 returns success2122 behaves like a package tracking event2123 creates a gitlab tracking event list_package2124 visibility_level: :private, user_role: :guest, member: true, user_token: true, shared_examples_name: "process PyPI api request", expected_status: :forbidden2125 behaves like process PyPI api request2126 for user type guest2127 behaves like returning response status2128 returns forbidden2129 visibility_level: :private, user_role: :developer, member: true, user_token: false, shared_examples_name: "process PyPI api request", expected_status: :unauthorized2130 behaves like process PyPI api request2131 for user type developer2132 behaves like returning response status2133 returns unauthorized2134 visibility_level: :private, user_role: :guest, member: true, user_token: false, shared_examples_name: "process PyPI api request", expected_status: :unauthorized2135 behaves like process PyPI api request2136 for user type guest2137 behaves like returning response status2138 returns unauthorized2139 visibility_level: :private, user_role: :developer, member: false, user_token: true, shared_examples_name: "process PyPI api request", expected_status: :not_found2140 behaves like process PyPI api request2141 for user type developer2142 behaves like returning response status2143 returns not_found2144 visibility_level: :private, user_role: :guest, member: false, user_token: true, shared_examples_name: "process PyPI api request", expected_status: :not_found2145 behaves like process PyPI api request2146 for user type guest2147 behaves like returning response status2148 returns not_found2149 visibility_level: :private, user_role: :developer, member: false, user_token: false, shared_examples_name: "process PyPI api request", expected_status: :unauthorized2150 behaves like process PyPI api request2151 for user type developer2152 behaves like returning response status2153 returns unauthorized2154 visibility_level: :private, user_role: :guest, member: false, user_token: false, shared_examples_name: "process PyPI api request", expected_status: :unauthorized2155 behaves like process PyPI api request2156 for user type guest2157 behaves like returning response status2158 returns unauthorized2159 visibility_level: :private, user_role: :anonymous, member: false, user_token: true, shared_examples_name: "process PyPI api request", expected_status: :unauthorized2160 behaves like process PyPI api request2161 for user type anonymous2162 behaves like returning response status2163 returns unauthorized2164 with a normalized package name2165 behaves like PyPI package versions2166 for user type developer2167 returns the package listing2168 behaves like returning response status2169 returns success2170 behaves like a package tracking event2171 creates a gitlab tracking event list_package2172 package request forward2173 forward: true, package_in_project: true, shared_examples_name: "PyPI package versions", expected_status: :success2174 behaves like PyPI package versions2175 for user type reporter2176 returns the package listing2177 behaves like returning response status2178 returns success2179 behaves like a package tracking event2180 creates a gitlab tracking event list_package2181 forward: true, package_in_project: false, shared_examples_name: "process PyPI api request", expected_status: :redirect2182 behaves like process PyPI api request2183 for user type reporter2184 behaves like returning response status2185 returns redirect2186 forward: false, package_in_project: true, shared_examples_name: "PyPI package versions", expected_status: :success2187 behaves like PyPI package versions2188 for user type reporter2189 returns the package listing2190 behaves like returning response status2191 returns success2192 behaves like a package tracking event2193 creates a gitlab tracking event list_package2194 forward: false, package_in_project: false, shared_examples_name: "process PyPI api request", expected_status: :not_found2195 behaves like process PyPI api request2196 for user type reporter2197 behaves like returning response status2198 returns not_found2199 behaves like rejects PyPI access with unknown group id2200 with an unknown project2201 behaves like unknown PyPI scope id2202 as anonymous2203 behaves like process PyPI api request2204 for user type anonymous2205 behaves like returning response status2206 returns not_found2207 as authenticated user2208 behaves like process PyPI api request2209 for user type anonymous2210 behaves like returning response status2211 returns not_found2212 deploy tokens2213 behaves like deploy token for package GET requests2214 with deploy token headers2215 valid token2216 behaves like returning response status2217 returns success2218 invalid token2219 behaves like returning response status2220 returns unauthorized2221 with group path as id2222 behaves like deploy token for package GET requests2223 with deploy token headers2224 valid token2225 behaves like returning response status2226 returns success2227 invalid token2228 behaves like returning response status2229 returns unauthorized2230 job token2231 behaves like job token for package GET requests2232 with job token headers2233 valid token2234 behaves like returning response status2235 returns success2236 invalid token2237 behaves like returning response status2238 returns unauthorized2239 invalid user2240 behaves like returning response status2241 returns unauthorized2242 behaves like a pypi user namespace endpoint2243 visibility_level: :public, user_role: :owner, expected_status: :not_found2244 behaves like returning response status2245 returns not_found2246 visibility_level: :private, user_role: :owner, expected_status: :not_found2247 behaves like returning response status2248 returns not_found2249 visibility_level: :public, user_role: :external, expected_status: :not_found2250 behaves like returning response status2251 returns not_found2252 visibility_level: :private, user_role: :external, expected_status: :not_found2253 behaves like returning response status2254 returns not_found2255 visibility_level: :public, user_role: :anonymous, expected_status: :not_found2256 behaves like returning response status2257 returns not_found2258 visibility_level: :private, user_role: :anonymous, expected_status: :not_found2259 behaves like returning response status2260 returns not_found2261 GET /api/v4/projects/:id/packages/pypi/simple/:package_name2262 behaves like pypi simple API endpoint2263 with valid project2264 visibility_level: :public, user_role: :developer, member: true, user_token: true, shared_examples_name: "PyPI package versions", expected_status: :success2265 behaves like PyPI package versions2266 for user type developer2267 returns the package listing2268 behaves like returning response status2269 returns success2270 behaves like a package tracking event2271 creates a gitlab tracking event list_package2272 visibility_level: :public, user_role: :guest, member: true, user_token: true, shared_examples_name: "PyPI package versions", expected_status: :success2273 behaves like PyPI package versions2274 for user type guest2275 returns the package listing2276 behaves like returning response status2277 returns success2278 behaves like a package tracking event2279 creates a gitlab tracking event list_package2280 visibility_level: :public, user_role: :developer, member: true, user_token: false, shared_examples_name: "PyPI package versions", expected_status: :success2281 behaves like PyPI package versions2282 for user type developer2283 returns the package listing2284 behaves like returning response status2285 returns success2286 behaves like a package tracking event2287 creates a gitlab tracking event list_package2288 visibility_level: :public, user_role: :guest, member: true, user_token: false, shared_examples_name: "PyPI package versions", expected_status: :success2289 behaves like PyPI package versions2290 for user type guest2291 returns the package listing2292 behaves like returning response status2293 returns success2294 behaves like a package tracking event2295 creates a gitlab tracking event list_package2296 visibility_level: :public, user_role: :developer, member: false, user_token: true, shared_examples_name: "PyPI package versions", expected_status: :success2297 behaves like PyPI package versions2298 for user type developer2299 returns the package listing2300 behaves like returning response status2301 returns success2302 behaves like a package tracking event2303 creates a gitlab tracking event list_package2304 visibility_level: :public, user_role: :guest, member: false, user_token: true, shared_examples_name: "PyPI package versions", expected_status: :success2305 behaves like PyPI package versions2306 for user type guest2307 returns the package listing2308 behaves like returning response status2309 returns success2310 behaves like a package tracking event2311 creates a gitlab tracking event list_package2312 visibility_level: :public, user_role: :developer, member: false, user_token: false, shared_examples_name: "PyPI package versions", expected_status: :success2313 behaves like PyPI package versions2314 for user type developer2315 returns the package listing2316 behaves like returning response status2317 returns success2318 behaves like a package tracking event2319 creates a gitlab tracking event list_package2320 visibility_level: :public, user_role: :guest, member: false, user_token: false, shared_examples_name: "PyPI package versions", expected_status: :success2321 behaves like PyPI package versions2322 for user type guest2323 returns the package listing2324 behaves like returning response status2325 returns success2326 behaves like a package tracking event2327 creates a gitlab tracking event list_package2328 visibility_level: :public, user_role: :anonymous, member: false, user_token: true, shared_examples_name: "PyPI package versions", expected_status: :success2329 behaves like PyPI package versions2330 for user type anonymous2331 returns the package listing2332 behaves like returning response status2333 returns success2334 behaves like a package tracking event2335 creates a gitlab tracking event list_package2336 visibility_level: :private, user_role: :developer, member: true, user_token: true, shared_examples_name: "PyPI package versions", expected_status: :success2337 behaves like PyPI package versions2338 for user type developer2339 returns the package listing2340 behaves like returning response status2341 returns success2342 behaves like a package tracking event2343 creates a gitlab tracking event list_package2344 visibility_level: :private, user_role: :guest, member: true, user_token: true, shared_examples_name: "process PyPI api request", expected_status: :forbidden2345 behaves like process PyPI api request2346 for user type guest2347 behaves like returning response status2348 returns forbidden2349 visibility_level: :private, user_role: :developer, member: true, user_token: false, shared_examples_name: "process PyPI api request", expected_status: :unauthorized2350 behaves like process PyPI api request2351 for user type developer2352 behaves like returning response status2353 returns unauthorized2354 visibility_level: :private, user_role: :guest, member: true, user_token: false, shared_examples_name: "process PyPI api request", expected_status: :unauthorized2355 behaves like process PyPI api request2356 for user type guest2357 behaves like returning response status2358 returns unauthorized2359 visibility_level: :private, user_role: :developer, member: false, user_token: true, shared_examples_name: "process PyPI api request", expected_status: :not_found2360 behaves like process PyPI api request2361 for user type developer2362 behaves like returning response status2363 returns not_found2364 visibility_level: :private, user_role: :guest, member: false, user_token: true, shared_examples_name: "process PyPI api request", expected_status: :not_found2365 behaves like process PyPI api request2366 for user type guest2367 behaves like returning response status2368 returns not_found2369 visibility_level: :private, user_role: :developer, member: false, user_token: false, shared_examples_name: "process PyPI api request", expected_status: :unauthorized2370 behaves like process PyPI api request2371 for user type developer2372 behaves like returning response status2373 returns unauthorized2374 visibility_level: :private, user_role: :guest, member: false, user_token: false, shared_examples_name: "process PyPI api request", expected_status: :unauthorized2375 behaves like process PyPI api request2376 for user type guest2377 behaves like returning response status2378 returns unauthorized2379 visibility_level: :private, user_role: :anonymous, member: false, user_token: true, shared_examples_name: "process PyPI api request", expected_status: :unauthorized2380 behaves like process PyPI api request2381 for user type anonymous2382 behaves like returning response status2383 returns unauthorized2384 with a normalized package name2385 behaves like PyPI package versions2386 for user type developer2387 returns the package listing2388 behaves like returning response status2389 returns success2390 behaves like a package tracking event2391 creates a gitlab tracking event list_package2392 package request forward2393 forward: true, package_in_project: true, shared_examples_name: "PyPI package versions", expected_status: :success2394 behaves like PyPI package versions2395 for user type reporter2396 returns the package listing2397 behaves like returning response status2398 returns success2399 behaves like a package tracking event2400 creates a gitlab tracking event list_package2401 forward: true, package_in_project: false, shared_examples_name: "process PyPI api request", expected_status: :redirect2402 behaves like process PyPI api request2403 for user type reporter2404 behaves like returning response status2405 returns redirect2406 forward: false, package_in_project: true, shared_examples_name: "PyPI package versions", expected_status: :success2407 behaves like PyPI package versions2408 for user type reporter2409 returns the package listing2410 behaves like returning response status2411 returns success2412 behaves like a package tracking event2413 creates a gitlab tracking event list_package2414 forward: false, package_in_project: false, shared_examples_name: "process PyPI api request", expected_status: :not_found2415 behaves like process PyPI api request2416 for user type reporter2417 behaves like returning response status2418 returns not_found2419 behaves like rejects PyPI access with unknown project id2420 with an unknown project2421 behaves like unknown PyPI scope id2422 as anonymous2423 behaves like process PyPI api request2424 for user type anonymous2425 behaves like returning response status2426 returns not_found2427 as authenticated user2428 behaves like process PyPI api request2429 for user type anonymous2430 behaves like returning response status2431 returns not_found2432 behaves like deploy token for package GET requests2433 with deploy token headers2434 valid token2435 behaves like returning response status2436 returns success2437 invalid token2438 behaves like returning response status2439 returns unauthorized2440 behaves like job token for package GET requests2441 with job token headers2442 valid token2443 behaves like returning response status2444 returns success2445 invalid token2446 behaves like returning response status2447 returns unauthorized2448 invalid user2449 behaves like returning response status2450 returns unauthorized2451 behaves like allow access for everyone with public package_registry_access_level2452 with private project but public access to package registry2453 as non-member user2454 behaves like returning response status2455 returns success2456 as anonymous2457 behaves like returning response status2458 returns success2459 with project path as id2460 behaves like deploy token for package GET requests2461 with deploy token headers2462 valid token2463 behaves like returning response status2464 returns success2465 invalid token2466 behaves like returning response status2467 returns unauthorized2468 POST /api/v4/projects/:id/packages/pypi/authorize2469 with valid project2470 visibility_level: :public, user_role: :developer, member: true, user_token: true, shared_examples_name: "process PyPI api request", expected_status: :success2471 behaves like process PyPI api request2472 for user type developer2473 behaves like returning response status2474 returns success2475 visibility_level: :public, user_role: :guest, member: true, user_token: true, shared_examples_name: "process PyPI api request", expected_status: :forbidden2476 behaves like process PyPI api request2477 for user type guest2478 behaves like returning response status2479 returns forbidden2480 visibility_level: :public, user_role: :developer, member: true, user_token: false, shared_examples_name: "process PyPI api request", expected_status: :unauthorized2481 behaves like process PyPI api request2482 for user type developer2483 behaves like returning response status2484 returns unauthorized2485 visibility_level: :public, user_role: :guest, member: true, user_token: false, shared_examples_name: "process PyPI api request", expected_status: :unauthorized2486 behaves like process PyPI api request2487 for user type guest2488 behaves like returning response status2489 returns unauthorized2490 visibility_level: :public, user_role: :developer, member: false, user_token: true, shared_examples_name: "process PyPI api request", expected_status: :forbidden2491 behaves like process PyPI api request2492 for user type developer2493 behaves like returning response status2494 returns forbidden2495 visibility_level: :public, user_role: :guest, member: false, user_token: true, shared_examples_name: "process PyPI api request", expected_status: :forbidden2496 behaves like process PyPI api request2497 for user type guest2498 behaves like returning response status2499 returns forbidden2500 visibility_level: :public, user_role: :developer, member: false, user_token: false, shared_examples_name: "process PyPI api request", expected_status: :unauthorized2501 behaves like process PyPI api request2502 for user type developer2503 behaves like returning response status2504 returns unauthorized2505 visibility_level: :public, user_role: :guest, member: false, user_token: false, shared_examples_name: "process PyPI api request", expected_status: :unauthorized2506 behaves like process PyPI api request2507 for user type guest2508 behaves like returning response status2509 returns unauthorized2510 visibility_level: :public, user_role: :anonymous, member: false, user_token: true, shared_examples_name: "process PyPI api request", expected_status: :unauthorized2511 behaves like process PyPI api request2512 for user type anonymous2513 behaves like returning response status2514 returns unauthorized2515 visibility_level: :private, user_role: :developer, member: true, user_token: true, shared_examples_name: "process PyPI api request", expected_status: :success2516 behaves like process PyPI api request2517 for user type developer2518 behaves like returning response status2519 returns success2520 visibility_level: :private, user_role: :guest, member: true, user_token: true, shared_examples_name: "process PyPI api request", expected_status: :forbidden2521 behaves like process PyPI api request2522 for user type guest2523 behaves like returning response status2524 returns forbidden2525 visibility_level: :private, user_role: :developer, member: true, user_token: false, shared_examples_name: "process PyPI api request", expected_status: :unauthorized2526 behaves like process PyPI api request2527 for user type developer2528 behaves like returning response status2529 returns unauthorized2530 visibility_level: :private, user_role: :guest, member: true, user_token: false, shared_examples_name: "process PyPI api request", expected_status: :unauthorized2531 behaves like process PyPI api request2532 for user type guest2533 behaves like returning response status2534 returns unauthorized2535 visibility_level: :private, user_role: :developer, member: false, user_token: true, shared_examples_name: "process PyPI api request", expected_status: :not_found2536 behaves like process PyPI api request2537 for user type developer2538 behaves like returning response status2539 returns not_found2540 visibility_level: :private, user_role: :guest, member: false, user_token: true, shared_examples_name: "process PyPI api request", expected_status: :not_found2541 behaves like process PyPI api request2542 for user type guest2543 behaves like returning response status2544 returns not_found2545 visibility_level: :private, user_role: :developer, member: false, user_token: false, shared_examples_name: "process PyPI api request", expected_status: :unauthorized2546 behaves like process PyPI api request2547 for user type developer2548 behaves like returning response status2549 returns unauthorized2550 visibility_level: :private, user_role: :guest, member: false, user_token: false, shared_examples_name: "process PyPI api request", expected_status: :unauthorized2551 behaves like process PyPI api request2552 for user type guest2553 behaves like returning response status2554 returns unauthorized2555 visibility_level: :private, user_role: :anonymous, member: false, user_token: true, shared_examples_name: "process PyPI api request", expected_status: :unauthorized2556 behaves like process PyPI api request2557 for user type anonymous2558 behaves like returning response status2559 returns unauthorized2560 behaves like deploy token for package uploads2561 with deploy token headers2562 valid token2563 behaves like returning response status2564 returns success2565 invalid token2566 behaves like returning response status2567 returns unauthorized2568 behaves like job token for package uploads2569 with job token headers2570 valid token2571 behaves like returning response status2572 returns success2573 invalid token2574 behaves like returning response status2575 returns unauthorized2576 invalid user2577 behaves like returning response status2578 returns unauthorized2579 behaves like rejects PyPI access with unknown project id2580 with an unknown project2581 behaves like unknown PyPI scope id2582 as anonymous2583 behaves like process PyPI api request2584 for user type anonymous2585 behaves like returning response status2586 returns not_found2587 as authenticated user2588 behaves like process PyPI api request2589 for user type anonymous2590 behaves like returning response status2591 returns not_found2592 POST /api/v4/projects/:id/packages/pypi2593 with valid project2594 visibility_level: :public, user_role: :developer, member: true, user_token: true, shared_examples_name: "PyPI package creation", expected_status: :created2595 behaves like PyPI package creation2596 for user type developer2597 behaves like creating pypi package files2598 creates package files2599 with FIPS mode2600 behaves like returning response status2601 returns unprocessable_entity2602 with a pre-existing file2603 rejects the duplicated file2604 with object storage disabled2605 without a file from workhorse2606 behaves like returning response status2607 returns bad_request2608 with correct params2609 behaves like package workhorse uploads2610 without a workhorse header2611 logs an error2612 behaves like returning response status2613 returns forbidden2614 behaves like creating pypi package files2615 creates package files2616 with FIPS mode2617 behaves like returning response status2618 returns unprocessable_entity2619 behaves like a package tracking event2620 creates a gitlab tracking event push_package2621 with object storage enabled2622 and direct upload enabled2623 behaves like creating pypi package files2624 creates package files2625 with FIPS mode2626 behaves like returning response status2627 returns unprocessable_entity2628 with invalid remote_id: 1231232629 behaves like returning response status2630 returns forbidden2631 with invalid remote_id: ../../1231232632 behaves like returning response status2633 returns forbidden2634 and direct upload disabled2635 and background upload disabled2636 behaves like creating pypi package files2637 creates package files2638 with FIPS mode2639 behaves like returning response status2640 returns unprocessable_entity2641 and background upload enabled2642 behaves like creating pypi package files2643 creates package files2644 with FIPS mode2645 behaves like returning response status2646 returns unprocessable_entity2647 behaves like background upload schedules a file migration2648 background upload enabled2649 schedules migration of file to object storage2650 visibility_level: :public, user_role: :guest, member: true, user_token: true, shared_examples_name: "process PyPI api request", expected_status: :forbidden2651 behaves like process PyPI api request2652 for user type guest2653 behaves like returning response status2654 returns forbidden2655 visibility_level: :public, user_role: :developer, member: true, user_token: false, shared_examples_name: "process PyPI api request", expected_status: :unauthorized2656 behaves like process PyPI api request2657 for user type developer2658 behaves like returning response status2659 returns unauthorized2660 visibility_level: :public, user_role: :guest, member: true, user_token: false, shared_examples_name: "process PyPI api request", expected_status: :unauthorized2661 behaves like process PyPI api request2662 for user type guest2663 behaves like returning response status2664 returns unauthorized2665 visibility_level: :public, user_role: :developer, member: false, user_token: true, shared_examples_name: "process PyPI api request", expected_status: :forbidden2666 behaves like process PyPI api request2667 for user type developer2668 behaves like returning response status2669 returns forbidden2670 visibility_level: :public, user_role: :guest, member: false, user_token: true, shared_examples_name: "process PyPI api request", expected_status: :forbidden2671 behaves like process PyPI api request2672 for user type guest2673 behaves like returning response status2674 returns forbidden2675 visibility_level: :public, user_role: :developer, member: false, user_token: false, shared_examples_name: "process PyPI api request", expected_status: :unauthorized2676 behaves like process PyPI api request2677 for user type developer2678 behaves like returning response status2679 returns unauthorized2680 visibility_level: :public, user_role: :guest, member: false, user_token: false, shared_examples_name: "process PyPI api request", expected_status: :unauthorized2681 behaves like process PyPI api request2682 for user type guest2683 behaves like returning response status2684 returns unauthorized2685 visibility_level: :public, user_role: :anonymous, member: false, user_token: true, shared_examples_name: "process PyPI api request", expected_status: :unauthorized2686 behaves like process PyPI api request2687 for user type anonymous2688 behaves like returning response status2689 returns unauthorized2690 visibility_level: :private, user_role: :developer, member: true, user_token: true, shared_examples_name: "process PyPI api request", expected_status: :created2691 behaves like process PyPI api request2692 for user type developer2693 behaves like returning response status2694 returns created2695 visibility_level: :private, user_role: :guest, member: true, user_token: true, shared_examples_name: "process PyPI api request", expected_status: :forbidden2696 behaves like process PyPI api request2697 for user type guest2698 behaves like returning response status2699 returns forbidden2700 visibility_level: :private, user_role: :developer, member: true, user_token: false, shared_examples_name: "process PyPI api request", expected_status: :unauthorized2701 behaves like process PyPI api request2702 for user type developer2703 behaves like returning response status2704 returns unauthorized2705 visibility_level: :private, user_role: :guest, member: true, user_token: false, shared_examples_name: "process PyPI api request", expected_status: :unauthorized2706 behaves like process PyPI api request2707 for user type guest2708 behaves like returning response status2709 returns unauthorized2710 visibility_level: :private, user_role: :developer, member: false, user_token: true, shared_examples_name: "process PyPI api request", expected_status: :not_found2711 behaves like process PyPI api request2712 for user type developer2713 behaves like returning response status2714 returns not_found2715 visibility_level: :private, user_role: :guest, member: false, user_token: true, shared_examples_name: "process PyPI api request", expected_status: :not_found2716 behaves like process PyPI api request2717 for user type guest2718 behaves like returning response status2719 returns not_found2720 visibility_level: :private, user_role: :developer, member: false, user_token: false, shared_examples_name: "process PyPI api request", expected_status: :unauthorized2721 behaves like process PyPI api request2722 for user type developer2723 behaves like returning response status2724 returns unauthorized2725 visibility_level: :private, user_role: :guest, member: false, user_token: false, shared_examples_name: "process PyPI api request", expected_status: :unauthorized2726 behaves like process PyPI api request2727 for user type guest2728 behaves like returning response status2729 returns unauthorized2730 visibility_level: :private, user_role: :anonymous, member: false, user_token: true, shared_examples_name: "process PyPI api request", expected_status: :unauthorized2731 behaves like process PyPI api request2732 for user type anonymous2733 behaves like returning response status2734 returns unauthorized2735 without requires_python2736 behaves like PyPI package creation2737 for user type developer2738 behaves like creating pypi package files2739 creates package files2740 with FIPS mode2741 behaves like returning response status2742 returns unprocessable_entity2743 with a pre-existing file2744 rejects the duplicated file2745 with object storage disabled2746 without a file from workhorse2747 behaves like returning response status2748 returns bad_request2749 with correct params2750 behaves like package workhorse uploads2751 without a workhorse header2752 logs an error2753 behaves like returning response status2754 returns forbidden2755 behaves like creating pypi package files2756 creates package files2757 with FIPS mode2758 behaves like returning response status2759 returns unprocessable_entity2760 behaves like a package tracking event2761 creates a gitlab tracking event push_package2762 with object storage enabled2763 and direct upload enabled2764 behaves like creating pypi package files2765 creates package files2766 with FIPS mode2767 behaves like returning response status2768 returns unprocessable_entity2769 with invalid remote_id: 1231232770 behaves like returning response status2771 returns forbidden2772 with invalid remote_id: ../../1231232773 behaves like returning response status2774 returns forbidden2775 and direct upload disabled2776 and background upload disabled2777 behaves like creating pypi package files2778 creates package files2779 with FIPS mode2780 behaves like returning response status2781 returns unprocessable_entity2782 and background upload enabled2783 behaves like creating pypi package files2784 creates package files2785 with FIPS mode2786 behaves like returning response status2787 returns unprocessable_entity2788 behaves like background upload schedules a file migration2789 background upload enabled2790 schedules migration of file to object storage2791 without md5_digest2792 behaves like PyPI package creation2793 for user type developer2794 behaves like creating pypi package files2795 creates package files2796 with FIPS mode2797 behaves like returning response status2798 returns created2799 with a pre-existing file2800 rejects the duplicated file2801 with object storage disabled2802 without a file from workhorse2803 behaves like returning response status2804 returns bad_request2805 with correct params2806 behaves like package workhorse uploads2807 without a workhorse header2808 logs an error2809 behaves like returning response status2810 returns forbidden2811 behaves like creating pypi package files2812 creates package files2813 with FIPS mode2814 behaves like returning response status2815 returns created2816 behaves like a package tracking event2817 creates a gitlab tracking event push_package2818 with object storage enabled2819 and direct upload enabled2820 behaves like creating pypi package files2821 creates package files2822 with FIPS mode2823 behaves like returning response status2824 returns created2825 with invalid remote_id: 1231232826 behaves like returning response status2827 returns forbidden2828 with invalid remote_id: ../../1231232829 behaves like returning response status2830 returns forbidden2831 and direct upload disabled2832 and background upload disabled2833 behaves like creating pypi package files2834 creates package files2835 with FIPS mode2836 behaves like returning response status2837 returns created2838 and background upload enabled2839 behaves like creating pypi package files2840 creates package files2841 with FIPS mode2842 behaves like returning response status2843 returns created2844 behaves like background upload schedules a file migration2845 background upload enabled2846 schedules migration of file to object storage2847 with required_python too big2848 behaves like process PyPI api request2849 for user type developer2850 behaves like returning response status2851 returns bad_request2852 with an invalid package2853 behaves like returning response status2854 returns bad_request2855 with an invalid sha2562856 behaves like returning response status2857 returns bad_request2858 behaves like deploy token for package uploads2859 with deploy token headers2860 valid token2861 behaves like returning response status2862 returns success2863 invalid token2864 behaves like returning response status2865 returns unauthorized2866 behaves like job token for package uploads2867 with job token headers2868 valid token2869 creates a package with build info2870 behaves like returning response status2871 returns success2872 invalid token2873 behaves like returning response status2874 returns unauthorized2875 invalid user2876 behaves like returning response status2877 returns unauthorized2878 behaves like rejects PyPI access with unknown project id2879 with an unknown project2880 behaves like unknown PyPI scope id2881 as anonymous2882 behaves like process PyPI api request2883 for user type anonymous2884 behaves like returning response status2885 returns not_found2886 as authenticated user2887 behaves like process PyPI api request2888 for user type anonymous2889 behaves like returning response status2890 returns not_found2891 file size above maximum limit2892 behaves like returning response status2893 returns bad_request2894 with existing package2895 does not create a new package2896 marked as pending_destruction2897 does create a new package2898 file download endpoint2899 GET /api/v4/groups/:id/-/packages/pypi/files/:sha256/*file_identifier2900 behaves like pypi file download endpoint2901 with valid project2902 visibility_level: :public, user_role: :developer, member: true, user_token: true, shared_examples_name: "PyPI package download", expected_status: :success2903 behaves like PyPI package download2904 for user type developer2905 returns the package listing2906 behaves like returning response status2907 returns success2908 behaves like a package tracking event2909 creates a gitlab tracking event pull_package2910 behaves like bumping the package last downloaded at field2911 bumps last_downloaded_at2912 visibility_level: :public, user_role: :guest, member: true, user_token: true, shared_examples_name: "PyPI package download", expected_status: :success2913 behaves like PyPI package download2914 for user type guest2915 returns the package listing2916 behaves like returning response status2917 returns success2918 behaves like a package tracking event2919 creates a gitlab tracking event pull_package2920 behaves like bumping the package last downloaded at field2921 bumps last_downloaded_at2922 visibility_level: :public, user_role: :developer, member: true, user_token: false, shared_examples_name: "PyPI package download", expected_status: :success2923 behaves like PyPI package download2924 for user type developer2925 returns the package listing2926 behaves like returning response status2927 returns success2928 behaves like a package tracking event2929 creates a gitlab tracking event pull_package2930 behaves like bumping the package last downloaded at field2931 bumps last_downloaded_at2932 visibility_level: :public, user_role: :guest, member: true, user_token: false, shared_examples_name: "PyPI package download", expected_status: :success2933 behaves like PyPI package download2934 for user type guest2935 returns the package listing2936 behaves like returning response status2937 returns success2938 behaves like a package tracking event2939 creates a gitlab tracking event pull_package2940 behaves like bumping the package last downloaded at field2941 bumps last_downloaded_at2942 visibility_level: :public, user_role: :developer, member: false, user_token: true, shared_examples_name: "PyPI package download", expected_status: :success2943 behaves like PyPI package download2944 for user type developer2945 returns the package listing2946 behaves like returning response status2947 returns success2948 behaves like a package tracking event2949 creates a gitlab tracking event pull_package2950 behaves like bumping the package last downloaded at field2951 bumps last_downloaded_at2952 visibility_level: :public, user_role: :guest, member: false, user_token: true, shared_examples_name: "PyPI package download", expected_status: :success2953 behaves like PyPI package download2954 for user type guest2955 returns the package listing2956 behaves like returning response status2957 returns success2958 behaves like a package tracking event2959 creates a gitlab tracking event pull_package2960 behaves like bumping the package last downloaded at field2961 bumps last_downloaded_at2962 visibility_level: :public, user_role: :developer, member: false, user_token: false, shared_examples_name: "PyPI package download", expected_status: :success2963 behaves like PyPI package download2964 for user type developer2965 returns the package listing2966 behaves like returning response status2967 returns success2968 behaves like a package tracking event2969 creates a gitlab tracking event pull_package2970 behaves like bumping the package last downloaded at field2971 bumps last_downloaded_at2972 visibility_level: :public, user_role: :guest, member: false, user_token: false, shared_examples_name: "PyPI package download", expected_status: :success2973 behaves like PyPI package download2974 for user type guest2975 returns the package listing2976 behaves like returning response status2977 returns success2978 behaves like a package tracking event2979 creates a gitlab tracking event pull_package2980 behaves like bumping the package last downloaded at field2981 bumps last_downloaded_at2982 visibility_level: :public, user_role: :anonymous, member: false, user_token: true, shared_examples_name: "PyPI package download", expected_status: :success2983 behaves like PyPI package download2984 for user type anonymous2985 returns the package listing2986 behaves like returning response status2987 returns success2988 behaves like a package tracking event2989 creates a gitlab tracking event pull_package2990 behaves like bumping the package last downloaded at field2991 bumps last_downloaded_at2992 visibility_level: :private, user_role: :developer, member: true, user_token: true, shared_examples_name: "PyPI package download", expected_status: :success2993 behaves like PyPI package download2994 for user type developer2995 returns the package listing2996 behaves like returning response status2997 returns success2998 behaves like a package tracking event2999 creates a gitlab tracking event pull_package3000 behaves like bumping the package last downloaded at field3001 bumps last_downloaded_at3002 visibility_level: :private, user_role: :guest, member: true, user_token: true, shared_examples_name: "rejected package download", expected_status: :forbidden3003 behaves like rejected package download3004 for user type guest3005 behaves like returning response status3006 returns forbidden3007 visibility_level: :private, user_role: :developer, member: true, user_token: false, shared_examples_name: "rejected package download", expected_status: :unauthorized3008 behaves like rejected package download3009 for user type developer3010 behaves like returning response status3011 returns unauthorized3012 visibility_level: :private, user_role: :guest, member: true, user_token: false, shared_examples_name: "rejected package download", expected_status: :unauthorized3013 behaves like rejected package download3014 for user type guest3015 behaves like returning response status3016 returns unauthorized3017 visibility_level: :private, user_role: :developer, member: false, user_token: true, shared_examples_name: "rejected package download", expected_status: :not_found3018 behaves like rejected package download3019 for user type developer3020 behaves like returning response status3021 returns not_found3022 visibility_level: :private, user_role: :guest, member: false, user_token: true, shared_examples_name: "rejected package download", expected_status: :not_found3023 behaves like rejected package download3024 for user type guest3025 behaves like returning response status3026 returns not_found3027 visibility_level: :private, user_role: :developer, member: false, user_token: false, shared_examples_name: "rejected package download", expected_status: :unauthorized3028 behaves like rejected package download3029 for user type developer3030 behaves like returning response status3031 returns unauthorized3032 visibility_level: :private, user_role: :guest, member: false, user_token: false, shared_examples_name: "rejected package download", expected_status: :unauthorized3033 behaves like rejected package download3034 for user type guest3035 behaves like returning response status3036 returns unauthorized3037 visibility_level: :private, user_role: :anonymous, member: false, user_token: true, shared_examples_name: "rejected package download", expected_status: :unauthorized3038 behaves like rejected package download3039 for user type anonymous3040 behaves like returning response status3041 returns unauthorized3042 with deploy token headers3043 valid token3044 behaves like returning response status3045 returns success3046 invalid token3047 behaves like returning response status3048 returns success3049 with job token headers3050 valid token3051 behaves like returning response status3052 returns success3053 invalid token3054 behaves like returning response status3055 returns unauthorized3056 invalid user3057 behaves like returning response status3058 returns success3059 behaves like rejects PyPI access with unknown group id3060 with an unknown project3061 behaves like unknown PyPI scope id3062 as anonymous3063 behaves like process PyPI api request3064 for user type anonymous3065 behaves like returning response status3066 returns not_found3067 as authenticated user3068 behaves like process PyPI api request3069 for user type anonymous3070 behaves like returning response status3071 returns not_found3072 behaves like a pypi user namespace endpoint3073 visibility_level: :public, user_role: :owner, expected_status: :not_found3074 behaves like returning response status3075 returns not_found3076 visibility_level: :private, user_role: :owner, expected_status: :not_found3077 behaves like returning response status3078 returns not_found3079 visibility_level: :public, user_role: :external, expected_status: :not_found3080 behaves like returning response status3081 returns not_found3082 visibility_level: :private, user_role: :external, expected_status: :not_found3083 behaves like returning response status3084 returns not_found3085 visibility_level: :public, user_role: :anonymous, expected_status: :not_found3086 behaves like returning response status3087 returns not_found3088 visibility_level: :private, user_role: :anonymous, expected_status: :not_found3089 behaves like returning response status3090 returns not_found3091 GET /api/v4/projects/:id/packages/pypi/files/:sha256/*file_identifier3092 behaves like pypi file download endpoint3093 with valid project3094 visibility_level: :public, user_role: :developer, member: true, user_token: true, shared_examples_name: "PyPI package download", expected_status: :success3095 behaves like PyPI package download3096 for user type developer3097 returns the package listing3098 behaves like returning response status3099 returns success3100 behaves like a package tracking event3101 creates a gitlab tracking event pull_package3102 behaves like bumping the package last downloaded at field3103 bumps last_downloaded_at3104 visibility_level: :public, user_role: :guest, member: true, user_token: true, shared_examples_name: "PyPI package download", expected_status: :success3105 behaves like PyPI package download3106 for user type guest3107 returns the package listing3108 behaves like returning response status3109 returns success3110 behaves like a package tracking event3111 creates a gitlab tracking event pull_package3112 behaves like bumping the package last downloaded at field3113 bumps last_downloaded_at3114 visibility_level: :public, user_role: :developer, member: true, user_token: false, shared_examples_name: "PyPI package download", expected_status: :success3115 behaves like PyPI package download3116 for user type developer3117 returns the package listing3118 behaves like returning response status3119 returns success3120 behaves like a package tracking event3121 creates a gitlab tracking event pull_package3122 behaves like bumping the package last downloaded at field3123 bumps last_downloaded_at3124 visibility_level: :public, user_role: :guest, member: true, user_token: false, shared_examples_name: "PyPI package download", expected_status: :success3125 behaves like PyPI package download3126 for user type guest3127 returns the package listing3128 behaves like returning response status3129 returns success3130 behaves like a package tracking event3131 creates a gitlab tracking event pull_package3132 behaves like bumping the package last downloaded at field3133 bumps last_downloaded_at3134 visibility_level: :public, user_role: :developer, member: false, user_token: true, shared_examples_name: "PyPI package download", expected_status: :success3135 behaves like PyPI package download3136 for user type developer3137 returns the package listing3138 behaves like returning response status3139 returns success3140 behaves like a package tracking event3141 creates a gitlab tracking event pull_package3142 behaves like bumping the package last downloaded at field3143 bumps last_downloaded_at3144 visibility_level: :public, user_role: :guest, member: false, user_token: true, shared_examples_name: "PyPI package download", expected_status: :success3145 behaves like PyPI package download3146 for user type guest3147 returns the package listing3148 behaves like returning response status3149 returns success3150 behaves like a package tracking event3151 creates a gitlab tracking event pull_package3152 behaves like bumping the package last downloaded at field3153 bumps last_downloaded_at3154 visibility_level: :public, user_role: :developer, member: false, user_token: false, shared_examples_name: "PyPI package download", expected_status: :success3155 behaves like PyPI package download3156 for user type developer3157 returns the package listing3158 behaves like returning response status3159 returns success3160 behaves like a package tracking event3161 creates a gitlab tracking event pull_package3162 behaves like bumping the package last downloaded at field3163 bumps last_downloaded_at3164 visibility_level: :public, user_role: :guest, member: false, user_token: false, shared_examples_name: "PyPI package download", expected_status: :success3165 behaves like PyPI package download3166 for user type guest3167 returns the package listing3168 behaves like returning response status3169 returns success3170 behaves like a package tracking event3171 creates a gitlab tracking event pull_package3172 behaves like bumping the package last downloaded at field3173 bumps last_downloaded_at3174 visibility_level: :public, user_role: :anonymous, member: false, user_token: true, shared_examples_name: "PyPI package download", expected_status: :success3175 behaves like PyPI package download3176 for user type anonymous3177 returns the package listing3178 behaves like returning response status3179 returns success3180 behaves like a package tracking event3181 creates a gitlab tracking event pull_package3182 behaves like bumping the package last downloaded at field3183 bumps last_downloaded_at3184 visibility_level: :private, user_role: :developer, member: true, user_token: true, shared_examples_name: "PyPI package download", expected_status: :success3185 behaves like PyPI package download3186 for user type developer3187 returns the package listing3188 behaves like returning response status3189 returns success3190 behaves like a package tracking event3191 creates a gitlab tracking event pull_package3192 behaves like bumping the package last downloaded at field3193 bumps last_downloaded_at3194 visibility_level: :private, user_role: :guest, member: true, user_token: true, shared_examples_name: "rejected package download", expected_status: :forbidden3195 behaves like rejected package download3196 for user type guest3197 behaves like returning response status3198 returns forbidden3199 visibility_level: :private, user_role: :developer, member: true, user_token: false, shared_examples_name: "rejected package download", expected_status: :unauthorized3200 behaves like rejected package download3201 for user type developer3202 behaves like returning response status3203 returns unauthorized3204 visibility_level: :private, user_role: :guest, member: true, user_token: false, shared_examples_name: "rejected package download", expected_status: :unauthorized3205 behaves like rejected package download3206 for user type guest3207 behaves like returning response status3208 returns unauthorized3209 visibility_level: :private, user_role: :developer, member: false, user_token: true, shared_examples_name: "rejected package download", expected_status: :not_found3210 behaves like rejected package download3211 for user type developer3212 behaves like returning response status3213 returns not_found3214 visibility_level: :private, user_role: :guest, member: false, user_token: true, shared_examples_name: "rejected package download", expected_status: :not_found3215 behaves like rejected package download3216 for user type guest3217 behaves like returning response status3218 returns not_found3219 visibility_level: :private, user_role: :developer, member: false, user_token: false, shared_examples_name: "rejected package download", expected_status: :unauthorized3220 behaves like rejected package download3221 for user type developer3222 behaves like returning response status3223 returns unauthorized3224 visibility_level: :private, user_role: :guest, member: false, user_token: false, shared_examples_name: "rejected package download", expected_status: :unauthorized3225 behaves like rejected package download3226 for user type guest3227 behaves like returning response status3228 returns unauthorized3229 visibility_level: :private, user_role: :anonymous, member: false, user_token: true, shared_examples_name: "rejected package download", expected_status: :unauthorized3230 behaves like rejected package download3231 for user type anonymous3232 behaves like returning response status3233 returns unauthorized3234 with deploy token headers3235 valid token3236 behaves like returning response status3237 returns success3238 invalid token3239 behaves like returning response status3240 returns success3241 with job token headers3242 valid token3243 behaves like returning response status3244 returns success3245 invalid token3246 behaves like returning response status3247 returns unauthorized3248 invalid user3249 behaves like returning response status3250 returns success3251 behaves like rejects PyPI access with unknown project id3252 with an unknown project3253 behaves like unknown PyPI scope id3254 as anonymous3255 behaves like process PyPI api request3256 for user type anonymous3257 behaves like returning response status3258 returns not_found3259 as authenticated user3260 behaves like process PyPI api request3261 for user type anonymous3262 behaves like returning response status3263 returns not_found3264 behaves like allow access for everyone with public package_registry_access_level3265 with private project but public access to package registry3266 as non-member user3267 behaves like returning response status3268 returns success3269 as anonymous3270 behaves like returning response status3271 returns success3272API::Search3273 GET /search3274 when user is not authenticated3275 returns 401 error3276 when DB timeouts occur from global searches3277 returns a 408 error if search with scope: issues times out3278 returns a 408 error if search with scope: merge_requests times out3279 returns a 408 error if search with scope: milestones times out3280 returns a 408 error if search with scope: projects times out3281 returns a 408 error if search with scope: snippet_titles times out3282 returns a 408 error if search with scope: users times out3283 when scope is not supported3284 returns 400 error3285 when scope is missing3286 returns 400 error3287 with correct params3288 increments the custom search sli error rate with error false if no error occurred3289 increments the custom search sli error rate with error true if an error occurred3290 sets global search information for logging3291 for projects scope3292 behaves like response is correct3293 is expected to respond with numeric status code ok3294 is expected to match response schema "public_api/v4/projects"3295 is expected to include limited pagination headers3296 is expected to eq 13297 behaves like pagination3298 returns a different result for each page3299 returns 1 result when per_page is 13300 returns 2 results when per_page is 23301 behaves like ping counters3302 increases usage ping searches counter3303 behaves like apdex recorded3304 increments the custom search sli apdex3305 for issues scope3306 without filtering by state3307 behaves like response is correct3308 is expected to respond with numeric status code ok3309 is expected to match response schema "public_api/v4/issues"3310 is expected to include limited pagination headers3311 is expected to eq 13312 behaves like ping counters3313 increases usage ping searches counter3314 behaves like apdex recorded3315 increments the custom search sli apdex3316 behaves like issues orderable by created_at3317 behaves like orderable by created_at3318 allows ordering results by created_at asc3319 allows ordering results by created_at desc3320 pagination3321 returns a different result for each page3322 returns 1 result when per_page is 13323 returns 2 results when per_page is 23324 filter by state3325 state: opened3326 respects scope filtering3327 state: closed3328 respects scope filtering3329 filter by confidentiality3330 confidential: true3331 respects confidentiality filtering3332 confidential: false3333 respects confidentiality filtering3334 for merge_requests scope3335 without filtering by state3336 behaves like response is correct3337 is expected to respond with numeric status code ok3338 is expected to match response schema "public_api/v4/merge_requests"3339 is expected to include limited pagination headers3340 is expected to eq 13341 behaves like ping counters3342 increases usage ping searches counter3343 behaves like apdex recorded3344 increments the custom search sli apdex3345 behaves like merge_requests orderable by created_at3346 behaves like orderable by created_at3347 allows ordering results by created_at asc3348 allows ordering results by created_at desc3349 pagination3350 returns a different result for each page3351 returns 1 result when per_page is 13352 returns 2 results when per_page is 23353 filter by state3354 state: opened3355 respects scope filtering3356 state: closed3357 respects scope filtering3358 for milestones scope3359 when user can read project milestones3360 behaves like response is correct3361 is expected to respond with numeric status code ok3362 is expected to match response schema "public_api/v4/milestones"3363 is expected to include limited pagination headers3364 is expected to eq 13365 behaves like ping counters3366 increases usage ping searches counter3367 behaves like apdex recorded3368 increments the custom search sli apdex3369 pagination3370 returns a different result for each page3371 returns 1 result when per_page is 13372 returns 2 results when per_page is 23373 when user cannot read project milestones3374 returns empty array3375 for users scope3376 behaves like response is correct3377 is expected to respond with numeric status code ok3378 is expected to match response schema "public_api/v4/user/basics"3379 is expected to include limited pagination headers3380 is expected to eq 13381 behaves like pagination3382 returns a different result for each page3383 returns 1 result when per_page is 13384 returns 2 results when per_page is 23385 behaves like ping counters3386 increases usage ping searches counter3387 behaves like apdex recorded3388 increments the custom search sli apdex3389 for snippet_titles scope3390 behaves like response is correct3391 is expected to respond with numeric status code ok3392 is expected to match response schema "public_api/v4/snippets"3393 is expected to include limited pagination headers3394 is expected to eq 13395 behaves like ping counters3396 increases usage ping searches counter3397 behaves like apdex recorded3398 increments the custom search sli apdex3399 pagination3400 returns a different result for each page3401 returns 1 result when per_page is 13402 returns 2 results when per_page is 23403 behaves like rate limited endpoint3404 when rate limiter enabled3405 logs request and declines it when endpoint called more than the threshold3406 when rate limiter is disabled3407 does not log request and does not block the request3408 GET /groups/:id/search3409 when user is not authenticated3410 returns 401 error3411 when scope is not supported3412 returns 400 error3413 when scope is missing3414 returns 400 error3415 when group does not exist3416 returns 404 error3417 when user does can not see the group3418 returns 404 error3419 with correct params3420 for projects scope3421 behaves like response is correct3422 is expected to respond with numeric status code ok3423 is expected to match response schema "public_api/v4/projects"3424 is expected to include limited pagination headers3425 is expected to eq 13426 behaves like pagination3427 returns a different result for each page3428 returns 1 result when per_page is 13429 returns 2 results when per_page is 23430 behaves like ping counters3431 increases usage ping searches counter3432 behaves like apdex recorded3433 increments the custom search sli apdex3434 for issues scope3435 behaves like response is correct3436 is expected to respond with numeric status code ok3437 is expected to match response schema "public_api/v4/issues"3438 is expected to include limited pagination headers3439 is expected to eq 13440 behaves like ping counters3441 increases usage ping searches counter3442 behaves like apdex recorded3443 increments the custom search sli apdex3444 behaves like issues orderable by created_at3445 behaves like orderable by created_at3446 allows ordering results by created_at asc3447 allows ordering results by created_at desc3448 pagination3449 returns a different result for each page3450 returns 1 result when per_page is 13451 returns 2 results when per_page is 23452 for merge_requests scope3453 behaves like response is correct3454 is expected to respond with numeric status code ok3455 is expected to match response schema "public_api/v4/merge_requests"3456 is expected to include limited pagination headers3457 is expected to eq 13458 behaves like ping counters3459 increases usage ping searches counter3460 behaves like apdex recorded3461 increments the custom search sli apdex3462 behaves like merge_requests orderable by created_at3463 behaves like orderable by created_at3464 allows ordering results by created_at asc3465 allows ordering results by created_at desc3466 pagination3467 returns a different result for each page3468 returns 1 result when per_page is 13469 returns 2 results when per_page is 23470 for milestones scope3471 behaves like response is correct3472 is expected to respond with numeric status code ok3473 is expected to match response schema "public_api/v4/milestones"3474 is expected to include limited pagination headers3475 is expected to eq 13476 behaves like ping counters3477 increases usage ping searches counter3478 behaves like apdex recorded3479 increments the custom search sli apdex3480 pagination3481 returns a different result for each page3482 returns 1 result when per_page is 13483 returns 2 results when per_page is 23484 for milestones scope with group path as id3485 behaves like response is correct3486 is expected to respond with numeric status code ok3487 is expected to match response schema "public_api/v4/milestones"3488 is expected to include limited pagination headers3489 is expected to eq 13490 for users scope3491 behaves like response is correct3492 is expected to respond with numeric status code ok3493 is expected to match response schema "public_api/v4/user/basics"3494 is expected to include limited pagination headers3495 is expected to eq 13496 behaves like ping counters3497 increases usage ping searches counter3498 behaves like apdex recorded3499 increments the custom search sli apdex3500 pagination3501 returns a different result for each page3502 returns 1 result when per_page is 13503 returns 2 results when per_page is 23504 for users scope with group path as id3505 behaves like response is correct3506 is expected to respond with numeric status code ok3507 is expected to match response schema "public_api/v4/user/basics"3508 is expected to include limited pagination headers3509 is expected to eq 13510 behaves like rate limited endpoint3511 when rate limiter enabled3512 logs request and declines it when endpoint called more than the threshold3513 when rate limiter is disabled3514 does not log request and does not block the request3515 GET /projects/:id/search3516 when user is not authenticated3517 returns 401 error3518 when scope is not supported3519 returns 400 error3520 when scope is missing3521 returns 400 error3522 when project does not exist3523 returns 404 error3524 when user can not see the project3525 returns 404 error3526 with correct params3527 for issues scope3528 behaves like response is correct3529 is expected to respond with numeric status code ok3530 is expected to match response schema "public_api/v4/issues"3531 is expected to include limited pagination headers3532 is expected to eq 13533 behaves like ping counters3534 increases usage ping searches counter3535 behaves like issues orderable by created_at3536 behaves like orderable by created_at3537 allows ordering results by created_at asc3538 allows ordering results by created_at desc3539 behaves like apdex recorded3540 increments the custom search sli apdex3541 pagination3542 returns a different result for each page3543 returns 1 result when per_page is 13544 returns 2 results when per_page is 23545 when requesting basic search3546 passes the parameter to search service3547 for merge_requests scope3548 behaves like response is correct3549 is expected to respond with numeric status code ok3550 is expected to match response schema "public_api/v4/merge_requests"3551 is expected to include limited pagination headers3552 is expected to eq 13553 behaves like ping counters3554 increases usage ping searches counter3555 behaves like merge_requests orderable by created_at3556 behaves like orderable by created_at3557 allows ordering results by created_at asc3558 allows ordering results by created_at desc3559 behaves like apdex recorded3560 increments the custom search sli apdex3561 pagination3562 returns a different result for each page3563 returns 1 result when per_page is 13564 returns 2 results when per_page is 23565 for milestones scope3566 when user can read milestones3567 behaves like response is correct3568 is expected to respond with numeric status code ok3569 is expected to match response schema "public_api/v4/milestones"3570 is expected to include limited pagination headers3571 is expected to eq 13572 behaves like ping counters3573 increases usage ping searches counter3574 behaves like apdex recorded3575 increments the custom search sli apdex3576 pagination3577 returns a different result for each page3578 returns 1 result when per_page is 13579 returns 2 results when per_page is 23580 when user cannot read project milestones3581 returns empty array3582 for users scope3583 behaves like response is correct3584 is expected to respond with numeric status code ok3585 is expected to match response schema "public_api/v4/user/basics"3586 is expected to include limited pagination headers3587 is expected to eq 13588 behaves like ping counters3589 increases usage ping searches counter3590 behaves like apdex recorded3591 increments the custom search sli apdex3592 pagination3593 returns a different result for each page3594 returns 1 result when per_page is 13595 returns 2 results when per_page is 23596 for notes scope3597 behaves like response is correct3598 is expected to respond with numeric status code ok3599 is expected to match response schema "public_api/v4/notes"3600 is expected to include limited pagination headers3601 is expected to eq 13602 behaves like ping counters3603 increases usage ping searches counter3604 behaves like apdex recorded3605 increments the custom search sli apdex3606 pagination3607 returns a different result for each page3608 returns 1 result when per_page is 13609 returns 2 results when per_page is 23610 for wiki_blobs scope3611 behaves like response is correct3612 is expected to respond with numeric status code ok3613 is expected to match response schema "public_api/v4/blobs"3614 is expected to include limited pagination headers3615 is expected to eq 13616 behaves like ping counters3617 increases usage ping searches counter3618 behaves like apdex recorded3619 increments the custom search sli apdex3620 pagination3621 returns a different result for each page3622 returns 1 result when per_page is 13623 returns 2 results when per_page is 23624 for commits scope3625 behaves like response is correct3626 is expected to respond with numeric status code ok3627 is expected to match response schema "public_api/v4/commits_details"3628 is expected to include limited pagination headers3629 is expected to eq 13630 behaves like pagination3631 returns a different result for each page3632 returns 1 result when per_page is 13633 returns 2 results when per_page is 23634 behaves like ping counters3635 increases usage ping searches counter3636 behaves like apdex recorded3637 increments the custom search sli apdex3638 pipeline visibility3639 with non public pipeline3640 user is project member with reporter role or above3641 behaves like pipeline information visible3642 contains status and last_pipeline3643 user is project member with guest role3644 behaves like pipeline information not visible3645 does not contain status and last_pipeline3646 user is not project member3647 behaves like pipeline information not visible3648 does not contain status and last_pipeline3649 with public pipeline3650 user is project member with reporter role or above3651 behaves like pipeline information visible3652 contains status and last_pipeline3653 user is project member with guest role3654 behaves like pipeline information visible3655 contains status and last_pipeline3656 user is not project member3657 behaves like pipeline information visible3658 contains status and last_pipeline3659 when CI/CD is set to only project members3660 behaves like pipeline information not visible3661 does not contain status and last_pipeline3662 for commits scope with project path as id3663 behaves like response is correct3664 is expected to respond with numeric status code ok3665 is expected to match response schema "public_api/v4/commits_details"3666 is expected to include limited pagination headers3667 is expected to eq 13668 behaves like apdex recorded3669 increments the custom search sli apdex3670 for blobs scope3671 behaves like response is correct3672 is expected to respond with numeric status code ok3673 is expected to match response schema "public_api/v4/blobs"3674 is expected to include limited pagination headers3675 is expected to eq 23676 behaves like pagination3677 returns a different result for each page3678 returns 1 result when per_page is 13679 returns 2 results when per_page is 23680 behaves like ping counters3681 increases usage ping searches counter3682 behaves like apdex recorded3683 increments the custom search sli apdex3684 filters3685 by filename3686 by path3687 by extension3688 by ref3689 behaves like rate limited endpoint3690 when rate limiter enabled3691 logs request and declines it when endpoint called more than the threshold3692 when rate limiter is disabled3693 does not log request and does not block the request3694Projects::MergeRequests::DiffsController3695 GET show3696 with default params3697 for the same project3698 serializes merge request diff collection3699 when note is a legacy diff note3700 serializes merge request diff collection3701 behaves like forked project with submodules3702 renders3703 behaves like cached diff collection3704 ensures diff highlighting cache writing3705 behaves like diff note on-demand position creation3706 updates diff discussion positions3707 GET diffs_metadata3708 behaves like 404 for unexistent diffable3709 when diffable does not exists3710 returns 4043711 when the merge_request_diff.id is blank3712 returns 4043713 behaves like show the right diff files with previous diff_id3714 with previous diff_id3715 shows the right diff files3716 when not authorized3717 returns 404 when not a member3718 returns 404 when visibility level is not enough3719 with valid diff_id3720 behaves like serializes diffs metadata with expected arguments3721 returns success3722 serializes paginated merge request diff collection3723 with diff_head param passed3724 the merge request can be compared with head3725 compares diffs with the head3726 when diff_id and start_sha are set3727 correctly generates the right diff between versions3728 the merge request cannot be compared with head3729 compares diffs with the base3730 with MR regular diff params3731 behaves like serializes diffs metadata with expected arguments3732 returns success3733 serializes paginated merge request diff collection3734 with commit param3735 behaves like serializes diffs metadata with expected arguments3736 returns success3737 serializes paginated merge request diff collection3738 when display_merge_conflicts_in_diff is disabled3739 behaves like serializes diffs metadata with expected arguments3740 returns success3741 serializes paginated merge request diff collection3742 GET diff_for_path3743 when the merge request exists3744 when the user can view the merge request3745 when the path exists in the diff3746 enables diff notes3747 only renders the diffs for the path given3748 when the user cannot view the merge request3749 returns a 4043750 when the merge request does not exist3751 returns a 4043752 when the merge request belongs to a different project3753 returns a 4043754 GET diffs_batch3755 behaves like 404 for unexistent diffable3756 when diffable does not exists3757 returns 4043758 when the merge_request_diff.id is blank3759 returns 4043760 behaves like show the right diff files with previous diff_id3761 with previous diff_id3762 shows the right diff files3763 when not authorized3764 returns 4043765 with valid diff_id3766 behaves like serializes diffs with expected arguments3767 serializes paginated merge request diff collection3768 behaves like successful request3769 returns success3770 tracks mr_diffs event3771 when DNT is enabled3772 does not track any mr_diffs event3773 when user has view_diffs_file_by_file set to false3774 does not track single_file_diffs events3775 when user has view_diffs_file_by_file set to true3776 tracks single_file_diffs events3777 with commit_id param3778 behaves like serializes diffs with expected arguments3779 serializes paginated merge request diff collection3780 with diff_id and start_sha params3781 behaves like serializes diffs with expected arguments3782 serializes paginated merge request diff collection3783 behaves like successful request3784 returns success3785 tracks mr_diffs event3786 when DNT is enabled3787 does not track any mr_diffs event3788 when user has view_diffs_file_by_file set to false3789 does not track single_file_diffs events3790 when user has view_diffs_file_by_file set to true3791 tracks single_file_diffs events3792 with paths param3793 filters down the response to the expected file path3794 behaves like serializes diffs with expected arguments3795 serializes paginated merge request diff collection3796 behaves like successful request3797 returns success3798 tracks mr_diffs event3799 when DNT is enabled3800 does not track any mr_diffs event3801 when user has view_diffs_file_by_file set to false3802 does not track single_file_diffs events3803 when user has view_diffs_file_by_file set to true3804 tracks single_file_diffs events3805 with default params3806 behaves like serializes diffs with expected arguments3807 serializes paginated merge request diff collection3808 behaves like successful request3809 returns success3810 tracks mr_diffs event3811 when DNT is enabled3812 does not track any mr_diffs event3813 when user has view_diffs_file_by_file set to false3814 does not track single_file_diffs events3815 when user has view_diffs_file_by_file set to true3816 tracks single_file_diffs events3817 with smaller diff batch params3818 behaves like serializes diffs with expected arguments3819 serializes paginated merge request diff collection3820 behaves like successful request3821 returns success3822 tracks mr_diffs event3823 when DNT is enabled3824 does not track any mr_diffs event3825 when user has view_diffs_file_by_file set to false3826 does not track single_file_diffs events3827 when user has view_diffs_file_by_file set to true3828 tracks single_file_diffs events3829 when display_merge_conflicts_in_diff is disabled3830 behaves like serializes diffs with expected arguments3831 serializes paginated merge request diff collection3832 behaves like successful request3833 returns success3834 tracks mr_diffs event3835 when DNT is enabled3836 does not track any mr_diffs event3837 when user has view_diffs_file_by_file set to false3838 does not track single_file_diffs events3839 when user has view_diffs_file_by_file set to true3840 tracks single_file_diffs events3841 behaves like forked project with submodules3842 renders3843 behaves like cached diff collection3844 ensures diff highlighting cache writing3845 diff unfolding3846 unfolds correct diff file positions3847API::GroupClusters3848 GET /groups/:id/clusters3849 feature flag is disabled3850 responds with :not_found3851 non-authorized user3852 responds with 4033853 authorized user3854 responds with 2003855 includes pagination headers3856 only include authorized clusters3857 GET /groups/:id/clusters/:cluster_id3858 feature flag is disabled3859 responds with :not_found3860 non-authorized user3861 responds with 4033862 authorized user3863 returns specific cluster3864 returns cluster information3865 returns group information3866 returns kubernetes platform information3867 returns user information3868 returns GCP provider information3869 when cluster has no provider3870 does not include GCP provider info3871 with non-existing cluster3872 returns 4043873 POST /groups/:id/clusters/user3874 feature flag is disabled3875 responds with :not_found3876 non-authorized user3877 responds with 4033878 authorized user3879 with valid params3880 responds with 2013881 creates a new Cluster::Cluster3882 when user does not indicate authorization type3883 defaults to RBAC3884 when user sets authorization type as ABAC3885 creates an ABAC cluster3886 when namespace_per_environment is not set3887 defaults to true3888 current user does not have access to management_project_id3889 responds with 4003890 returns validation errors3891 with invalid params3892 responds with 4003893 does not create a new Clusters::Cluster3894 returns validation errors3895 non-authorized user3896 responds with 4033897 PUT /groups/:id/clusters/:cluster_id3898 when another cluster exists3899 responds with 2013900 allows multiple clusters to be associated to group3901 PUT /groups/:id/clusters/:cluster_id3902 feature flag is disabled3903 responds with :not_found3904 non-authorized user3905 responds with 4033906 authorized user3907 with valid params3908 responds with 2003909 updates cluster attributes3910 with invalid params3911 responds with 4003912 does not update cluster attributes3913 returns validation errors3914 current user does not have access to management_project_id3915 responds with 4003916 returns validation errors3917 with a GCP cluster3918 when user tries to change GCP specific fields3919 responds with 4003920 returns validation error3921 when user tries to change domain3922 responds with 2003923 with an user cluster3924 responds with 2003925 updates platform kubernetes attributes3926 with a cluster that does not belong to user3927 responds with 4043928 DELETE /groups/:id/clusters/:cluster_id3929 feature flag is disabled3930 responds with :not_found3931 non-authorized user3932 responds with 4033933 authorized user3934 responds with 2043935 deletes the cluster3936 with a cluster that does not belong to user3937 responds with 4043938API::Snippets3939 GET /snippets/3940 returns snippets available for user3941 hides private snippets from regular user3942 returns 401 for non-authenticated3943 does not return snippets related to a project with disable feature visibility3944 filtering snippets by created_after/created_before3945 returns snippets available for user in given time range3946 GET /snippets/public3947 returns only public snippets from all users when authenticated3948 requires authentication3949 filtering public snippets by created_after/created_before3950 returns public snippets available to user in given time range3951 GET /snippets/:id/raw3952 returns raw text3953 returns 404 for invalid snippet id3954 behaves like snippet access with different users3955 requester: :admin, visibility: :public, status: :ok3956 returns the correct response3957 requester: :admin, visibility: :private, status: :ok3958 returns the correct response3959 requester: :admin, visibility: :internal, status: :ok3960 returns the correct response3961 requester: :author, visibility: :public, status: :ok3962 returns the correct response3963 requester: :author, visibility: :private, status: :ok3964 returns the correct response3965 requester: :author, visibility: :internal, status: :ok3966 returns the correct response3967 requester: :other, visibility: :public, status: :ok3968 returns the correct response3969 requester: :other, visibility: :private, status: :not_found3970 returns the correct response3971 requester: :other, visibility: :internal, status: :ok3972 returns the correct response3973 requester: nil, visibility: :public, status: :ok3974 returns the correct response3975 requester: nil, visibility: :private, status: :not_found3976 returns the correct response3977 requester: nil, visibility: :internal, status: :not_found3978 returns the correct response3979 behaves like snippet blob content3980 returns content from repository3981 when snippet repository is empty3982 returns content from database3983 GET /snippets/:id/files/:ref/:file_path/raw3984 behaves like raw snippet files3985 with an invalid snippet ID3986 returns 4043987 with valid params3988 returns the raw file info3989 with unauthorized user3990 returns 4043991 with invalid params3992 file_path: "%2Egitattributes", ref: "invalid-ref", status: :not_found, key: "message", message: "404 Reference Not Found"3993 returns the proper response code and message3994 file_path: "%2Egitattributes", ref: nil, status: :not_found, key: "error", message: "404 Not Found"3995 returns the proper response code and message3996 file_path: "%2Egitattributes", ref: "", status: :not_found, key: "error", message: "404 Not Found"3997 returns the proper response code and message3998 file_path: "doesnotexist.rb", ref: "master", status: :not_found, key: "message", message: "404 File Not Found"3999 returns the proper response code and message4000 file_path: "/does/not/exist.rb", ref: "master", status: :not_found, key: "error", message: "404 Not Found"4001 returns the proper response code and message4002 file_path: "%2E%2E%2Fetc%2Fpasswd", ref: "master", status: :bad_request, key: "error", message: "file_path should be a valid file path"4003 returns the proper response code and message4004 file_path: "%2Fetc%2Fpasswd", ref: "master", status: :bad_request, key: "error", message: "file_path should be a valid file path"4005 returns the proper response code and message4006 file_path: "../../etc/passwd", ref: "master", status: :not_found, key: "error", message: "404 Not Found"4007 returns the proper response code and message4008 behaves like snippet access with different users4009 requester: :admin, visibility: :public, status: :ok4010 returns the correct response4011 requester: :admin, visibility: :private, status: :ok4012 returns the correct response4013 requester: :admin, visibility: :internal, status: :ok4014 returns the correct response4015 requester: :author, visibility: :public, status: :ok4016 returns the correct response4017 requester: :author, visibility: :private, status: :ok4018 returns the correct response4019 requester: :author, visibility: :internal, status: :ok4020 returns the correct response4021 requester: :other, visibility: :public, status: :ok4022 returns the correct response4023 requester: :other, visibility: :private, status: :not_found4024 returns the correct response4025 requester: :other, visibility: :internal, status: :ok4026 returns the correct response4027 requester: nil, visibility: :public, status: :ok4028 returns the correct response4029 requester: nil, visibility: :private, status: :not_found4030 returns the correct response4031 requester: nil, visibility: :internal, status: :not_found4032 returns the correct response4033 GET /snippets/:id4034 with the author4035 returns snippet json4036 with a non-existent snippet ID4037 returns 4044038 behaves like snippet access with different users4039 requester: :admin, visibility: :public, status: :ok4040 returns the correct response4041 requester: :admin, visibility: :private, status: :ok4042 returns the correct response4043 requester: :admin, visibility: :internal, status: :ok4044 returns the correct response4045 requester: :author, visibility: :public, status: :ok4046 returns the correct response4047 requester: :author, visibility: :private, status: :ok4048 returns the correct response4049 requester: :author, visibility: :internal, status: :ok4050 returns the correct response4051 requester: :other, visibility: :public, status: :ok4052 returns the correct response4053 requester: :other, visibility: :private, status: :not_found4054 returns the correct response4055 requester: :other, visibility: :internal, status: :ok4056 returns the correct response4057 requester: nil, visibility: :public, status: :ok4058 returns the correct response4059 requester: nil, visibility: :private, status: :not_found4060 returns the correct response4061 requester: nil, visibility: :internal, status: :not_found4062 returns the correct response4063 POST /snippets/4064 returns 400 for missing parameters4065 returns 400 if title is blank4066 with files parameter4067 behaves like snippet creation with files parameter4068 returns 400 if both files and content are provided4069 returns 400 when neither files or content are provided4070 path: ".gitattributes", content: "file content", status: :created, error: nil4071 responds correctly4072 path: "valid/path/file.rb", content: "file content", status: :created, error: nil4073 responds correctly4074 path: ".gitattributes", content: nil, status: :bad_request, error: "files[0][content] is empty"4075 responds correctly4076 path: ".gitattributes", content: "", status: :bad_request, error: "files[0][content] is empty"4077 responds correctly4078 path: "", content: "file content", status: :bad_request, error: "files[0][file_path] is empty"4079 responds correctly4080 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"4081 responds correctly4082 path: "../../etc/passwd", content: "file content", status: :bad_request, error: "files[0][file_path] should be a valid file path"4083 responds correctly4084 with multiple files4085 behaves like snippet creation4086 creates a new snippet4087 creates repository4088 commit the files to the repository4089 behaves like snippet creation without files parameter4090 allows file_name and content parameters4091 returns 400 if file_name and content are not both provided4092 returns 400 if content is blank4093 with restricted visibility settings4094 behaves like snippet creation4095 creates a new snippet4096 creates repository4097 commit the files to the repository4098 behaves like snippet creation4099 creates a new snippet4100 creates repository4101 commit the files to the repository4102 with an external user4103 does not create a new snippet4104 when save fails because the repository could not be created4105 returns 4004106 when the snippet is spam4107 when the snippet is private4108 creates the snippet4109 when the snippet is public4110 rejects the snippet4111 creates a spam log4112 PUT /snippets/:id4113 returns 404 for another user's snippet4114 behaves like snippet file updates4115 with various snippet file changes4116 is_multi_file: true, file_name: nil, content: nil, files: [{:action=>"create", :file_path=>"foo.txt", :content=>"bar"}], status: :success4117 has the correct response4118 is_multi_file: true, file_name: nil, content: nil, files: [{:action=>"update", :file_path=>"CHANGELOG", :content=>"bar"}], status: :success4119 has the correct response4120 is_multi_file: true, file_name: nil, content: nil, files: [{:action=>"move", :file_path=>".old-gitattributes", :previous_path=>".gitattributes"}], status: :success4121 has the correct response4122 is_multi_file: true, file_name: nil, content: nil, files: [{:action=>"delete", :file_path=>"CONTRIBUTING.md"}], status: :success4123 has the correct response4124 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: :success4125 has the correct response4126 is_multi_file: true, file_name: "foo.txt", content: "bar", files: [{:action=>"create", :file_path=>"foo.txt", :content=>"bar"}], status: :bad_request4127 has the correct response4128 is_multi_file: true, file_name: "foo.txt", content: "bar", files: nil, status: :bad_request4129 has the correct response4130 is_multi_file: true, file_name: nil, content: nil, files: nil, status: :bad_request4131 has the correct response4132 is_multi_file: true, file_name: "foo.txt", content: nil, files: [{:action=>"create", :file_path=>"foo.txt", :content=>"bar"}], status: :bad_request4133 has the correct response4134 is_multi_file: true, file_name: nil, content: "bar", files: [{:action=>"create", :file_path=>"foo.txt", :content=>"bar"}], status: :bad_request4135 has the correct response4136 is_multi_file: true, file_name: "", content: nil, files: [{:action=>"create", :file_path=>"foo.txt", :content=>"bar"}], status: :bad_request4137 has the correct response4138 is_multi_file: true, file_name: nil, content: "", files: [{:action=>"create", :file_path=>"foo.txt", :content=>"bar"}], status: :bad_request4139 has the correct response4140 is_multi_file: true, file_name: nil, content: nil, files: [{:action=>"create", :file_path=>"../../etc/passwd", :content=>"bar"}], status: :bad_request4141 has the correct response4142 is_multi_file: true, file_name: nil, content: nil, files: [{:action=>"create", :previous_path=>"../../etc/passwd", :file_path=>"CHANGELOG", :content=>"bar"}], status: :bad_request4143 has the correct response4144 is_multi_file: true, file_name: nil, content: nil, files: [{:action=>"move", :file_path=>"missing_previous_path.txt"}], status: :unprocessable_entity4145 has the correct response4146 is_multi_file: false, file_name: "foo.txt", content: "bar", files: nil, status: :success4147 has the correct response4148 is_multi_file: false, file_name: "foo.txt", content: nil, files: nil, status: :success4149 has the correct response4150 is_multi_file: false, file_name: nil, content: "bar", files: nil, status: :success4151 has the correct response4152 is_multi_file: false, file_name: "foo.txt", content: "bar", files: [{:action=>"create", :file_path=>"foo.txt", :content=>"bar"}], status: :bad_request4153 has the correct response4154 is_multi_file: false, file_name: nil, content: nil, files: nil, status: :bad_request4155 has the correct response4156 is_multi_file: false, file_name: nil, content: "", files: nil, status: :bad_request4157 has the correct response4158 is_multi_file: false, file_name: nil, content: nil, files: [{:action=>"create", :file_path=>"../../etc/passwd", :content=>"bar"}], status: :bad_request4159 has the correct response4160 is_multi_file: false, file_name: nil, content: nil, files: [{:action=>"create", :previous_path=>"../../etc/passwd", :file_path=>"CHANGELOG", :content=>"bar"}], status: :bad_request4161 has the correct response4162 when save fails due to a repository commit error4163 returns a bad request response4164 behaves like snippet non-file updates4165 updates a snippet non-file attributes4166 behaves like snippet individual non-file updates4167 attribute: :description, updated_value: "new description"4168 updates the attribute4169 attribute: :title, updated_value: "new title"4170 updates the attribute4171 attribute: :visibility, updated_value: "private"4172 updates the attribute4173 behaves like invalid snippet updates4174 returns 404 for invalid snippet id4175 returns 400 for missing parameters4176 returns 400 if content is blank4177 returns 400 if title is blank4178 with restricted visibility settings4179 behaves like snippet non-file updates4180 updates a snippet non-file attributes4181 behaves like update with repository actions4182 when the repository exists4183 commits the changes to the repository4184 when the repository does not exist4185 when update attributes does not include file_name or content4186 does not create the repository4187 when update attributes include file_name or content4188 creates the repository4189 commits the file to the repository4190 when save fails due to a repository creation error4191 returns 4004192 does not save the changes to the snippet object4193 when the snippet is spam4194 when the snippet is private4195 updates the snippet4196 when the snippet is public4197 rejects the snippet4198 creates a spam log4199 when a private snippet is made public4200 rejects the snippet4201 creates a spam log4202 when admin4203 when sudo is defined4204 returns 200 and updates snippet visibility4205 does not commit data4206 DELETE /snippets/:id4207 deletes snippet4208 returns 404 for invalid snippet id4209 behaves like 412 response4210 for a modified ressource4211 returns 412 with a JSON error4212 for an unmodified ressource4213 returns 204 with an empty body4214 GET /snippets/:id/user_agent_detail4215 exposes known attributes4216 returns unauthorized for non-admin users4217getting an issue list for a project4218 includes a web_url4219 includes discussion locked4220 behaves like a working graphql query4221 returns a successful response4222 when both assignee_username filters are provided4223 returns a mutually exclusive param error4224 when filtering by a negated argument4225 returns correctly filtered issues4226 when argument is blank4227 does not raise an error4228 when filtering by a unioned argument4229 returns correctly filtered issues4230 when argument is blank4231 does not raise an error4232 when feature flag is disabled4233 returns an error4234 filtering by my_reaction_emoji4235 value: "thumbsup", gids: lazy { [issue_a_gid] }4236 returns correctly filtered issues4237 value: "ANY", gids: lazy { [issue_a_gid] }4238 returns correctly filtered issues4239 value: "any", gids: lazy { [issue_a_gid] }4240 returns correctly filtered issues4241 value: "AnY", gids: lazy { [issue_a_gid] }4242 returns correctly filtered issues4243 value: "NONE", gids: lazy { [issue_b_gid] }4244 returns correctly filtered issues4245 value: "thumbsdown", gids: lazy { [] }4246 returns correctly filtered issues4247 when filtering by search4248 behaves like query with a search term4249 returns only matching issuables4250 when limiting the number of results4251 is expected to check permissions on the first issue only4252 behaves like a working graphql query4253 returns a successful response4254 only returns N issues4255 when no limit is provided4256 returns all issues4257 when the user does not have access to the issue4258 returns nil4259 when there is a confidential issue4260 when the user cannot see confidential issues4261 returns issues without confidential issues4262 filtering for confidential issues4263 returns no issues4264 filtering for non-confidential issues4265 returns correctly filtered issues4266 when the user can see confidential issues4267 returns issues with confidential issues4268 filtering for confidential issues4269 returns correctly filtered issues4270 filtering for non-confidential issues4271 returns correctly filtered issues4272 sorting and pagination4273 when sorting by severity4274 when ascending4275 behaves like sorted paginated query4276 behaves like requires variables4277 shared example requires variables to be set4279 when sorting4280 sorts correctly4281 when paginating4282 paginates correctly4283 when descending4284 behaves like sorted paginated query4285 behaves like requires variables4286 shared example requires variables to be set4288 when sorting4289 sorts correctly4290 when paginating4291 paginates correctly4292 when sorting by due date4293 when ascending4294 behaves like sorted paginated query4295 behaves like requires variables4296 shared example requires variables to be set4298 when sorting4299 sorts correctly4300 when paginating4301 paginates correctly4302 when descending4303 behaves like sorted paginated query4304 behaves like requires variables4305 shared example requires variables to be set4307 when sorting4308 sorts correctly4309 when paginating4310 paginates correctly4311 when sorting by relative position4312 when ascending4313 behaves like sorted paginated query4314 behaves like requires variables4315 shared example requires variables to be set4317 when sorting4318 sorts correctly4319 when paginating4320 paginates correctly4321 when last and sort params are present4322 fetches last elements without error4323 when sorting by priority4324 when ascending4325 behaves like sorted paginated query4326 behaves like requires variables4327 shared example requires variables to be set4329 when sorting4330 sorts correctly4331 when paginating4332 paginates correctly4333 when descending4334 behaves like sorted paginated query4335 behaves like requires variables4336 shared example requires variables to be set4338 when sorting4339 sorts correctly4340 when paginating4341 paginates correctly4342 when sorting by label priority4343 when ascending4344 behaves like sorted paginated query4345 behaves like requires variables4346 shared example requires variables to be set4348 when sorting4349 sorts correctly4350 when paginating4351 paginates correctly4352 when descending4353 behaves like sorted paginated query4354 behaves like requires variables4355 shared example requires variables to be set4357 when sorting4358 sorts correctly4359 when paginating4360 paginates correctly4361 when sorting by milestone due date4362 when ascending4363 behaves like sorted paginated query4364 behaves like requires variables4365 shared example requires variables to be set4367 when sorting4368 sorts correctly4369 when paginating4370 paginates correctly4371 when descending4372 behaves like sorted paginated query4373 behaves like requires variables4374 shared example requires variables to be set4376 when sorting4377 sorts correctly4378 when paginating4379 paginates correctly4380 when fetching alert management alert4381 avoids N+1 queries4382 returns the alert data4383 returns the alerts data4384 when fetching customer_relations_contacts4385 avoids N+1 queries4386 when fetching labels4387 avoids N+1 queries4388 when fetching assignees4389 avoids N+1 queries4390 when fetching escalation status4391 returns the escalation status values4392 avoids N+1 queries4393 N+1 query checks4394 when requesting `user_notes_count`4395Skipping ./spec/requests/api/graphql/project/issues_spec.rb[1:18:1:1] 'getting an issue list for a project N+1 query checks when requesting `user_notes_count` prevents N+1 queries' because it's flaky.4396 prevents N+1 queries (PENDING: around hook at ./spec/support/flaky_tests.rb:21 did not execute the example)4397 when requesting `user_discussions_count`4398 prevents N+1 queries4399 when requesting `merge_requests_count`4400 prevents N+1 queries4401 when requesting `timelogs`4402 prevents N+1 queries4403 when requesting `closed_as_duplicate_of`4404 prevents N+1 queries4405 when award emoji votes4406 prevents N+1 queries4407 when requesting participants4408Skipping ./spec/requests/api/graphql/project/issues_spec.rb[1:18:7:1] 'getting an issue list for a project N+1 query checks when requesting participants prevents N+1 queries' because it's flaky.4409 prevents N+1 queries (PENDING: around hook at ./spec/support/flaky_tests.rb:21 did not execute the example)4410 when requesting labels4411 prevents N+1 queries4412Projects::MilestonesController4413 behaves like milestone tabs4414 #issues4415 as html4416 redirects to milestone#show4417 as json4418 renders the issues tab template to a string4419 #merge_requests4420 as html4421 redirects to milestone#show4422 as json4423 renders the merge requests tab template to a string4424 #participants4425 as html4426 redirects to milestone#show4427 as json4428 renders the participants tab template to a string4429 #labels4430 as html4431 redirects to milestone#show4432 as json4433 renders the labels tab template to a string4434 #show4435 shows milestone page4436 returns milestone json4437 #create4438 does not redirect without redirect_path4439 redirects when given a redirect_path4440 will not redirect when given a redirect_path with an error4441 #index4442 as html4443 queries only projects milestones4444 searches milestones by title when search_title is given4445 renders paginated milestones without missing or duplicates4446 as json4447 with a single group ancestor4448 queries projects milestones and groups milestones4449 with nested groups4450 queries projects milestones and all ancestors milestones4451 #destroy4452 removes milestone4453 #promote4454 when user does not have permission to promote milestone4455 renders 4044456 #labels4457 as json4458 does not render labels of private issues if user has no access4459 does render labels of private issues if user has access4460 promotion succeeds4461 shows group milestone4462 renders milestone name without parsing it as HTML4463 when user cannot admin group milestones4464 renders 4044465 #participants4466 when guest user4467 when issue is not confidential4468 shows milestone participants4469 when issue is confidential4470 shows no milestone participants4471SentNotificationsController4472 GET unsubscribe4473 when the user is not logged in4474 when the force param is passed4475 unsubscribes the user4476 sets the flash message4477 redirects to the login page4478 when the force param is not passed4479 when project is public4480 when unsubscribing from issue4481 shows issue title4482 behaves like unsubscribing as anonymous4483 does not unsubscribe the user4484 does not set the flash message4485 renders unsubscribe page4486 shows project name or path4487 when unsubscribing from confidential issue4488 does not show issue title4489 behaves like unsubscribing as anonymous4490 does not unsubscribe the user4491 does not set the flash message4492 renders unsubscribe page4493 shows project name or path4494 when unsubscribing from merge request4495 shows merge request title4496 shows project name or path4497 behaves like unsubscribing as anonymous4498 does not unsubscribe the user4499 does not set the flash message4500 renders unsubscribe page4501 shows project name or path4502 when project is not public4503 when unsubscribing from issue4504 does not show issue title4505 behaves like unsubscribing as anonymous4506 does not unsubscribe the user4507 does not set the flash message4508 renders unsubscribe page4509 does not show project name or path4510 when unsubscribing from confidential issue4511 does not show issue title4512 behaves like unsubscribing as anonymous4513 does not unsubscribe the user4514 does not set the flash message4515 renders unsubscribe page4516 does not show project name or path4517 when unsubscribing from merge request4518 dos not show merge request title4519 behaves like unsubscribing as anonymous4520 does not unsubscribe the user4521 does not set the flash message4522 renders unsubscribe page4523 does not show project name or path4524 when the noteable associated to the notification has been deleted4525 behaves like returns 4044526 does not set the flash message4527 returns a 4044528 when the user is logged in4529 when the ID passed does not exist4530 behaves like returns 4044531 does not set the flash message4532 returns a 4044533 when the force param is passed4534 unsubscribes the user4535 sets the flash message4536 redirects to the issue page4537 when the force param is not passed4538 unsubscribes the user4539 sets the flash message4540 redirects to the merge request page4541 when project is private4542 and user does not have access4543 unsubscribes user and redirects to root path4544 and user has access4545 unsubscribes user and redirects to issue path4546 when the noteable associated to the notification has been deleted4547 behaves like returns 4044548 does not set the flash message4549 returns a 4044550API::Issues4551 PUT /projects/:id/issues/:issue_iid to update only title4552 updates a project issue4553 returns 404 error if issue iid not found4554 returns 404 error if issue id is used instead of the iid4555 allows special label names4556 allows special label names with labels param as array4557 confidential issues4558 returns 403 for non project members4559 returns 403 for project members with guest role4560 updates a confidential issue for project members4561 updates a confidential issue for author4562 updates a confidential issue for admin4563 sets an issue to confidential4564 makes a confidential issue public4565 does not update a confidential issue with wrong confidential flag4566 PUT /projects/:id/issues/:issue_iid with spam filtering4567 when allow_possible_spam feature flag is false4568 does not update a project issue4569 returns correct status and message4570 creates a new spam log entry4571 when allow_possible_spam feature flag is true4572 updates a project issue4573 returns correct status and message4574 creates a new spam log entry4575 PUT /projects/:id/issues/:issue_iid to update assignee4576 removes assignee4577 updates an issue with new assignee4578 support for deprecated assignee_id4579 removes assignee4580 updates an issue with new assignee4581 single assignee restrictions4582 updates an issue with several assignees but only one has been applied4583 PUT /projects/:id/issues/:issue_iid to update labels4584 adds relevant labels4585 does not update labels if not present4586 removes all labels and touches the record4587 removes all labels and touches the record with labels param as array4588 updates labels and touches the record4589 updates labels and touches the record with labels param as array4590 allows special label names4591 allows special label names with labels param as array4592 returns 400 if title is too long4593 removes4594 removes relevant labels4595 removes all labels4596 PUT /projects/:id/issues/:issue_iid to update state and label4597 updates a project issue4598 reopens a project isssue4599 PUT /projects/:id/issues/:issue_iid to update updated_at param4600 when reporter makes request4601 accepts the update date to be set4602 when admin or owner makes the request4603 not allow to set null for updated_at4604 not allow to set blank for updated_at4605 not allow to set invalid format for updated_at4606 accepts the update date to be set4607 PUT /projects/:id/issues/:issue_iid to update due date4608 creates a new project issue4609API::RpmProjectPackages4610 # order random4611 POST /api/v4/projects/:project_id/packages/rpm/authorize4612 behaves like returning response status4613 returns not_found4614 when feature flag is disabled4615 behaves like returning response status4616 returns not_found4617 when package feature is disabled4618 behaves like returning response status4619 returns not_found4620 GET /api/v4/projects/:id/packages/rpm/:package_file_id/:filename4621 behaves like a package tracking event4622 creates a gitlab tracking event pull_package4623 behaves like a job token for RPM requests4624 with job token headers4625 with valid token4626 behaves like returning response status4627 returns not_found4628 with invalid token4629 behaves like returning response status4630 returns unauthorized4631 with invalid user4632 behaves like returning response status4633 returns unauthorized4634 behaves like a deploy token for RPM requests4635 with deploy token headers4636 when token is valid4637 behaves like returning response status4638 returns not_found4639 when token is invalid4640 behaves like returning response status4641 returns unauthorized4642 behaves like a user token for RPM requests4643 with valid project4644 visibility_level: "PUBLIC", user_role: :developer, member: true, user_token: true, shared_examples_name: "process rpm packages upload/download", expected_status: :not_found4645 behaves like process rpm packages upload/download4646 behaves like returning response status4647 returns not_found4648 visibility_level: "PUBLIC", user_role: :guest, member: true, user_token: true, shared_examples_name: "process rpm packages upload/download", expected_status: :forbidden4649 behaves like process rpm packages upload/download4650 behaves like returning response status4651 returns forbidden4652 visibility_level: "PUBLIC", user_role: :developer, member: true, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized4653 behaves like rejects rpm packages access4654 has the correct response header4655 behaves like returning response status4656 returns unauthorized4657 visibility_level: "PUBLIC", user_role: :guest, member: true, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized4658 behaves like rejects rpm packages access4659 has the correct response header4660 behaves like returning response status4661 returns unauthorized4662 visibility_level: "PUBLIC", user_role: :developer, member: false, user_token: true, shared_examples_name: "process rpm packages upload/download", expected_status: :not_found4663 behaves like process rpm packages upload/download4664 behaves like returning response status4665 returns not_found4666 visibility_level: "PUBLIC", user_role: :guest, member: false, user_token: true, shared_examples_name: "process rpm packages upload/download", expected_status: :not_found4667 behaves like process rpm packages upload/download4668 behaves like returning response status4669 returns not_found4670 visibility_level: "PUBLIC", user_role: :developer, member: false, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized4671 behaves like rejects rpm packages access4672 has the correct response header4673 behaves like returning response status4674 returns unauthorized4675 visibility_level: "PUBLIC", user_role: :guest, member: false, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized4676 behaves like rejects rpm packages access4677 has the correct response header4678 behaves like returning response status4679 returns unauthorized4680 visibility_level: "PUBLIC", user_role: :anonymous, member: false, user_token: true, shared_examples_name: "process rpm packages upload/download", expected_status: :unauthorized4681 behaves like process rpm packages upload/download4682 behaves like returning response status4683 returns unauthorized4684 visibility_level: "PRIVATE", user_role: :developer, member: true, user_token: true, shared_examples_name: "process rpm packages upload/download", expected_status: :not_found4685 behaves like process rpm packages upload/download4686 behaves like returning response status4687 returns not_found4688 visibility_level: "PRIVATE", user_role: :guest, member: true, user_token: true, shared_examples_name: "rejects rpm packages access", expected_status: :forbidden4689 behaves like rejects rpm packages access4690 behaves like returning response status4691 returns forbidden4692 visibility_level: "PRIVATE", user_role: :developer, member: true, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized4693 behaves like rejects rpm packages access4694 has the correct response header4695 behaves like returning response status4696 returns unauthorized4697 visibility_level: "PRIVATE", user_role: :guest, member: true, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized4698 behaves like rejects rpm packages access4699 has the correct response header4700 behaves like returning response status4701 returns unauthorized4702 visibility_level: "PRIVATE", user_role: :developer, member: false, user_token: true, shared_examples_name: "rejects rpm packages access", expected_status: :not_found4703 behaves like rejects rpm packages access4704 behaves like returning response status4705 returns not_found4706 visibility_level: "PRIVATE", user_role: :guest, member: false, user_token: true, shared_examples_name: "rejects rpm packages access", expected_status: :not_found4707 behaves like rejects rpm packages access4708 behaves like returning response status4709 returns not_found4710 visibility_level: "PRIVATE", user_role: :developer, member: false, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized4711 behaves like rejects rpm packages access4712 has the correct response header4713 behaves like returning response status4714 returns unauthorized4715 visibility_level: "PRIVATE", user_role: :guest, member: false, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized4716 behaves like rejects rpm packages access4717 has the correct response header4718 behaves like returning response status4719 returns unauthorized4720 visibility_level: "PRIVATE", user_role: :anonymous, member: false, user_token: true, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized4721 behaves like rejects rpm packages access4722 has the correct response header4723 behaves like returning response status4724 returns unauthorized4725 POST /api/v4/projects/:project_id/packages/rpm4726 with user token4727 with valid project4728 visibility_level: "PUBLIC", user_role: :developer, member: true, user_token: true, shared_examples_name: "process rpm packages upload/download", expected_status: :not_found, tracked: true4729 behaves like a package tracking event4730 creates a gitlab tracking event push_package4731 behaves like process rpm packages upload/download4732 behaves like returning response status4733 returns not_found4734 visibility_level: "PUBLIC", user_role: :guest, member: true, user_token: true, shared_examples_name: "rejects rpm packages access", expected_status: :forbidden, tracked: false4735 behaves like not a package tracking event4736 does not create a gitlab tracking event4737 behaves like rejects rpm packages access4738 behaves like returning response status4739 returns forbidden4740 visibility_level: "PUBLIC", user_role: :developer, member: true, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized, tracked: false4741 behaves like not a package tracking event4742 does not create a gitlab tracking event4743 behaves like rejects rpm packages access4744 has the correct response header4745 behaves like returning response status4746 returns unauthorized4747 visibility_level: "PUBLIC", user_role: :guest, member: true, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized, tracked: false4748 behaves like not a package tracking event4749 does not create a gitlab tracking event4750 behaves like rejects rpm packages access4751 has the correct response header4752 behaves like returning response status4753 returns unauthorized4754 visibility_level: "PUBLIC", user_role: :developer, member: false, user_token: true, shared_examples_name: "rejects rpm packages access", expected_status: :not_found, tracked: false4755 behaves like not a package tracking event4756 does not create a gitlab tracking event4757 behaves like rejects rpm packages access4758 behaves like returning response status4759 returns not_found4760 visibility_level: "PUBLIC", user_role: :guest, member: false, user_token: true, shared_examples_name: "rejects rpm packages access", expected_status: :not_found, tracked: false4761 behaves like not a package tracking event4762 does not create a gitlab tracking event4763 behaves like rejects rpm packages access4764 behaves like returning response status4765 returns not_found4766 visibility_level: "PUBLIC", user_role: :developer, member: false, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized, tracked: false4767 behaves like not a package tracking event4768 does not create a gitlab tracking event4769 behaves like rejects rpm packages access4770 has the correct response header4771 behaves like returning response status4772 returns unauthorized4773 visibility_level: "PUBLIC", user_role: :guest, member: false, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized, tracked: false4774 behaves like not a package tracking event4775 does not create a gitlab tracking event4776 behaves like rejects rpm packages access4777 has the correct response header4778 behaves like returning response status4779 returns unauthorized4780 visibility_level: "PUBLIC", user_role: :anonymous, member: false, user_token: true, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized, tracked: false4781 behaves like not a package tracking event4782 does not create a gitlab tracking event4783 behaves like rejects rpm packages access4784 has the correct response header4785 behaves like returning response status4786 returns unauthorized4787 visibility_level: "PRIVATE", user_role: :developer, member: true, user_token: true, shared_examples_name: "process rpm packages upload/download", expected_status: :not_found, tracked: true4788 behaves like a package tracking event4789 creates a gitlab tracking event push_package4790 behaves like process rpm packages upload/download4791 behaves like returning response status4792 returns not_found4793 visibility_level: "PRIVATE", user_role: :guest, member: true, user_token: true, shared_examples_name: "rejects rpm packages access", expected_status: :forbidden, tracked: false4794 behaves like not a package tracking event4795 does not create a gitlab tracking event4796 behaves like rejects rpm packages access4797 behaves like returning response status4798 returns forbidden4799 visibility_level: "PRIVATE", user_role: :developer, member: true, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized, tracked: false4800 behaves like not a package tracking event4801 does not create a gitlab tracking event4802 behaves like rejects rpm packages access4803 has the correct response header4804 behaves like returning response status4805 returns unauthorized4806 visibility_level: "PRIVATE", user_role: :guest, member: true, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized, tracked: false4807 behaves like not a package tracking event4808 does not create a gitlab tracking event4809 behaves like rejects rpm packages access4810 has the correct response header4811 behaves like returning response status4812 returns unauthorized4813 visibility_level: "PRIVATE", user_role: :developer, member: false, user_token: true, shared_examples_name: "rejects rpm packages access", expected_status: :not_found, tracked: false4814 behaves like not a package tracking event4815 does not create a gitlab tracking event4816 behaves like rejects rpm packages access4817 behaves like returning response status4818 returns not_found4819 visibility_level: "PRIVATE", user_role: :guest, member: false, user_token: true, shared_examples_name: "rejects rpm packages access", expected_status: :not_found, tracked: false4820 behaves like not a package tracking event4821 does not create a gitlab tracking event4822 behaves like rejects rpm packages access4823 behaves like returning response status4824 returns not_found4825 visibility_level: "PRIVATE", user_role: :developer, member: false, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized, tracked: false4826 behaves like not a package tracking event4827 does not create a gitlab tracking event4828 behaves like rejects rpm packages access4829 has the correct response header4830 behaves like returning response status4831 returns unauthorized4832 visibility_level: "PRIVATE", user_role: :guest, member: false, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized, tracked: false4833 behaves like not a package tracking event4834 does not create a gitlab tracking event4835 behaves like rejects rpm packages access4836 has the correct response header4837 behaves like returning response status4838 returns unauthorized4839 visibility_level: "PRIVATE", user_role: :anonymous, member: false, user_token: true, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized, tracked: false4840 behaves like not a package tracking event4841 does not create a gitlab tracking event4842 behaves like rejects rpm packages access4843 has the correct response header4844 behaves like returning response status4845 returns unauthorized4846 when user can upload file4847 when file size too large4848 returns an error4849 behaves like a deploy token for RPM requests4850 with deploy token headers4851 when token is valid4852 behaves like returning response status4853 returns not_found4854 when token is invalid4855 behaves like returning response status4856 returns unauthorized4857 behaves like a job token for RPM requests4858 with job token headers4859 with valid token4860 behaves like returning response status4861 returns not_found4862 with invalid token4863 behaves like returning response status4864 returns unauthorized4865 with invalid user4866 behaves like returning response status4867 returns unauthorized4868 GET /api/v4/projects/:project_id/packages/rpm/repodata/:filename4869 behaves like a job token for RPM requests4870 with job token headers4871 with valid token4872 behaves like returning response status4873 returns success4874 with invalid token4875 behaves like returning response status4876 returns unauthorized4877 with invalid user4878 behaves like returning response status4879 returns unauthorized4880 behaves like a deploy token for RPM requests4881 with deploy token headers4882 when token is valid4883 behaves like returning response status4884 returns success4885 when token is invalid4886 behaves like returning response status4887 returns unauthorized4888 behaves like a user token for RPM requests4889 with valid project4890 visibility_level: "PUBLIC", user_role: :developer, member: true, user_token: true, shared_examples_name: "process rpm packages upload/download", expected_status: :success4891 behaves like process rpm packages upload/download4892 behaves like returning response status4893 returns success4894 visibility_level: "PUBLIC", user_role: :guest, member: true, user_token: true, shared_examples_name: "process rpm packages upload/download", expected_status: :forbidden4895 behaves like process rpm packages upload/download4896 behaves like returning response status4897 returns forbidden4898 visibility_level: "PUBLIC", user_role: :developer, member: true, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized4899 behaves like rejects rpm packages access4900 has the correct response header4901 behaves like returning response status4902 returns unauthorized4903 visibility_level: "PUBLIC", user_role: :guest, member: true, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized4904 behaves like rejects rpm packages access4905 has the correct response header4906 behaves like returning response status4907 returns unauthorized4908 visibility_level: "PUBLIC", user_role: :developer, member: false, user_token: true, shared_examples_name: "process rpm packages upload/download", expected_status: :not_found4909 behaves like process rpm packages upload/download4910 behaves like returning response status4911 returns not_found4912 visibility_level: "PUBLIC", user_role: :guest, member: false, user_token: true, shared_examples_name: "process rpm packages upload/download", expected_status: :not_found4913 behaves like process rpm packages upload/download4914 behaves like returning response status4915 returns not_found4916 visibility_level: "PUBLIC", user_role: :developer, member: false, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized4917 behaves like rejects rpm packages access4918 has the correct response header4919 behaves like returning response status4920 returns unauthorized4921 visibility_level: "PUBLIC", user_role: :guest, member: false, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized4922 behaves like rejects rpm packages access4923 has the correct response header4924 behaves like returning response status4925 returns unauthorized4926 visibility_level: "PUBLIC", user_role: :anonymous, member: false, user_token: true, shared_examples_name: "process rpm packages upload/download", expected_status: :unauthorized4927 behaves like process rpm packages upload/download4928 behaves like returning response status4929 returns unauthorized4930 visibility_level: "PRIVATE", user_role: :developer, member: true, user_token: true, shared_examples_name: "process rpm packages upload/download", expected_status: :success4931 behaves like process rpm packages upload/download4932 behaves like returning response status4933 returns success4934 visibility_level: "PRIVATE", user_role: :guest, member: true, user_token: true, shared_examples_name: "rejects rpm packages access", expected_status: :forbidden4935 behaves like rejects rpm packages access4936 behaves like returning response status4937 returns forbidden4938 visibility_level: "PRIVATE", user_role: :developer, member: true, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized4939 behaves like rejects rpm packages access4940 has the correct response header4941 behaves like returning response status4942 returns unauthorized4943 visibility_level: "PRIVATE", user_role: :guest, member: true, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized4944 behaves like rejects rpm packages access4945 has the correct response header4946 behaves like returning response status4947 returns unauthorized4948 visibility_level: "PRIVATE", user_role: :developer, member: false, user_token: true, shared_examples_name: "rejects rpm packages access", expected_status: :not_found4949 behaves like rejects rpm packages access4950 behaves like returning response status4951 returns not_found4952 visibility_level: "PRIVATE", user_role: :guest, member: false, user_token: true, shared_examples_name: "rejects rpm packages access", expected_status: :not_found4953 behaves like rejects rpm packages access4954 behaves like returning response status4955 returns not_found4956 visibility_level: "PRIVATE", user_role: :developer, member: false, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized4957 behaves like rejects rpm packages access4958 has the correct response header4959 behaves like returning response status4960 returns unauthorized4961 visibility_level: "PRIVATE", user_role: :guest, member: false, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized4962 behaves like rejects rpm packages access4963 has the correct response header4964 behaves like returning response status4965 returns unauthorized4966 visibility_level: "PRIVATE", user_role: :anonymous, member: false, user_token: true, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized4967 behaves like rejects rpm packages access4968 has the correct response header4969 behaves like returning response status4970 returns unauthorized4971API::Terraform::StateVersion4972 GET /projects/:id/terraform/state/:name/versions/:serial4973 with invalid authentication4974 returns unauthorized status4975 with no authentication4976 returns unauthorized status4977 personal acceess token authentication4978 with maintainer permissions4979 returns the state contents at the given version4980 for a project that does not exist4981 returns not found status4982 with developer permissions4983 returns the state contents at the given version4984 with no permissions4985 returns not found status4986 job token authentication4987 with maintainer permissions4988 returns the state contents at the given version4989 returns unauthorized status if the the job is not running4990 for a project that does not exist4991 returns not found status4992 with developer permissions4993 returns the state contents at the given version4994 with no permissions4995 returns not found status4996 DELETE /projects/:id/terraform/state/:name/versions/:serial4997 with invalid authentication4998 returns unauthorized status4999 with no authentication5000 returns unauthorized status5001 with maintainer permissions5002 deletes the version5003 version does not exist5004 does not delete a version5005 with developer permissions5006 returns forbidden status5007 with no permissions5008 returns not found status5009Import::GiteaController5010 GET new5011 behaves like a GitHub-ish import controller: GET new5012 redirects to status if we already have a token5013 renders the :new page if no token is present in session5014 POST personal_access_token5015 behaves like a GitHub-ish import controller: POST personal_access_token5016 updates access token5017 strips access token with spaces5018 passes namespace_id param as query param if it was present5019 GET status5020 behaves like a GitHub-ish import controller: GET status5021 returns variables for json request5022 touches the etag cache store5023 handles an invalid access token5024 does not produce N+1 database queries5025 requests provider repos list5026 when filtering5027 filters list of repositories by name5028 filters the list, ignoring the case of the name5029 when user input contains html5030 sanitizes user input5031 when the client returns a non-string name5032 does not raise an error5033 when namespace_id query param is provided5034 when user is allowed to create projects in this namespace5035 provides namespace to the template5036 when user is not allowed to create projects in this namespace5037 renders 4045038 when host url is local or not http5039 denies network request5040 denies network request5041 denies network request5042 when DNS Rebinding protection is enabled5043 when provided host url is using https5044 uses unchanged host url to send request to Gitea5045 when provided host url is using http5046 uses changed host url to send request to Gitea5047 POST create5048 behaves like a GitHub-ish import controller: POST create5049 returns 200 response when the project is imported successfully5050 returns 422 response with the base error when the project could not be imported5051 touches the etag cache store5052 when the repository owner is the provider user5053 when the provider user and GitLab user's usernames match5054 takes the current user's namespace5055 when the provider user and GitLab user's usernames don't match5056 takes the current user's namespace5057 when the repository owner is not the provider user5058 when a namespace with the provider user's username already exists5059 when the namespace is owned by the GitLab user5060 takes the existing namespace5061 when the namespace is not owned by the GitLab user5062 creates a project using user's namespace5063 when a namespace with the provider user's username doesn't exist5064 when current user can create namespaces5065 creates the namespace5066 takes the new namespace5067 when current user can't create namespaces5068 doesn't create the namespace5069 takes the current user's namespace5070 user has chosen a namespace and name for the project5071 takes the selected namespace and name5072 takes the selected name and default namespace5073 user has chosen an existing nested namespace and name for the project5074 takes the selected namespace and name5075 user has chosen a non-existent nested namespaces and name for the project5076 takes the selected namespace and name5077 creates the namespaces5078 new namespace has the right parent5079 user has chosen existent and non-existent nested namespaces and name for the project5080 takes the selected namespace and name5081 creates the namespaces5082 does not create a new namespace under the user namespace5083 user cannot create a subgroup inside a group is not a member of5084 does not take the selected namespace and name5085 does not create the namespaces5086 user can use a group without having permissions to create a group5087 takes the selected namespace and name5088 when user can not create projects in the chosen namespace5089 returns 422 response5090 behaves like project import rate limiter5091 when limit exceeds5092 notifies and redirects user5093 GET realtime_changes5094 behaves like a GitHub-ish import controller: GET realtime_changes5095 sets a Poll-Interval header5096API::GoProxy5097 GET /projects/:id/packages/go/*module_name/@v/list5098 for the root module5099 behaves like a module version list resource5100 returns v1.0.1, v1.0.2, v1.0.35101 for the package5102 behaves like a module version list resource5103 returns nothing5104 for the submodule5105 behaves like a module version list resource5106 returns v1.0.35107 for the root module v25108 behaves like a module version list resource5109 returns v2.0.05110 with a URL encoded relative path component5111 behaves like a missing module version list resource5112 behaves like an unavailable resource5113 returns not found5114 with the feature disabled5115 behaves like a missing module version list resource5116 behaves like an unavailable resource5117 returns not found5118 GET /projects/:id/packages/go/*module_name/@v/:module_version.info5119 with the root module v1.0.15120 behaves like a module version information resource5121 returns information for v1.0.15122 with the submodule v1.0.35123 behaves like a module version information resource5124 returns information for v1.0.35125 with the root module v2.0.05126 behaves like a module version information resource5127 returns information for v2.0.05128 with an invalid path5129 behaves like a missing module version information resource5130 behaves like an unavailable resource5131 returns not found5132 with an invalid version5133 behaves like a missing module version information resource5134 behaves like an unavailable resource5135 returns not found5136 with a pseudo-version for v15137 behaves like a module pseudo-version information resource5138 returns information for v1.0.4-0.yyyymmddhhmmss-abcdefabcdef5139 with a pseudo-version for v25140 behaves like a module pseudo-version information resource5141 returns information for v2.0.0-yyyymmddhhmmss-abcdefabcdef5142 with a pseudo-version with an invalid timestamp5143 behaves like a missing module pseudo-version information resource5144 behaves like an unavailable resource5145 returns not found5146 with a pseudo-version with an invalid commit sha5147 behaves like a missing module pseudo-version information resource5148 behaves like an unavailable resource5149 returns not found5150 with a pseudo-version with a short commit sha5151 behaves like a missing module pseudo-version information resource5152 behaves like an unavailable resource5153 returns not found5154 GET /projects/:id/packages/go/*module_name/@v/:module_version.mod5155 with the root module v1.0.15156 behaves like a module file resource5157 returns /go.mod from the repo5158 with the submodule v1.0.35159 behaves like a module file resource5160 returns /mod/go.mod from the repo5161 with the root module v2.0.05162 behaves like a module file resource5163 returns /v2/go.mod from the repo5164 with an invalid path5165 behaves like a missing module file resource5166 behaves like an unavailable resource5167 returns not found5168 with an invalid version5169 behaves like a missing module file resource5170 behaves like an unavailable resource5171 returns not found5172 GET /projects/:id/packages/go/*module_name/@v/:module_version.zip5173 with the root module v1.0.15174 behaves like a module archive resource5175 returns an archive of / @ v1.0.1 from the repo5176 with the root module v1.0.25177 behaves like a module archive resource5178 returns an archive of / @ v1.0.2 from the repo5179 with the root module v1.0.35180 behaves like a module archive resource5181 returns an archive of / @ v1.0.3 from the repo5182 with the submodule v1.0.35183 behaves like a module archive resource5184 returns an archive of /mod @ v1.0.3 from the repo5185 with the root module v2.0.05186 behaves like a module archive resource5187 returns an archive of /v2 @ v2.0.0 from the repo5188 with an invalid module directive5189 GET /projects/:id/packages/go/*module_name/@v/list5190 with a completely wrong directive for v15191 behaves like a module version list resource5192 returns nothing5193 with a directive omitting the suffix for v25194 behaves like a module version list resource5195 returns nothing5196 GET /projects/:id/packages/go/*module_name/@v/:module_version.info5197 with a completely wrong directive for v15198 behaves like a missing module version information resource5199 behaves like an unavailable resource5200 returns not found5201 with a directive omitting the suffix for v25202 behaves like a missing module version information resource5203 behaves like an unavailable resource5204 returns not found5205 with a case sensitive project and versions5206 GET /projects/:id/packages/go/*module_name/@v/list5207 with a case encoded path5208 behaves like a module version list resource5209 returns v1.0.1-prerelease, v1.0.1-Prerelease5210 without a case encoded path5211 behaves like a missing module version list resource5212 behaves like an unavailable resource5213 returns not found5214 GET /projects/:id/packages/go/*module_name/@v/:module_version.info5215 with a case encoded path5216 behaves like a module version information resource5217 returns information for v1.0.1-Prerelease5218 without a case encoded path5219 behaves like a module version information resource5220 returns information for v1.0.1-prerelease5221 with a private project5222 GET /projects/:id/packages/go/*module_name/@v/list5223 returns ok with an oauth token5224 returns ok with a job token5225 returns ok with a personal access token5226 returns ok with a personal access token and basic authentication5227 returns unauthorized with a failed job token5228 returns unauthorized with no authentication5229 with access to package registry for everyone5230 behaves like a module version list resource5231 returns v1.0.1, v1.0.2, v1.0.35232 behaves like a module version information resource5233 returns information for v1.0.15234 behaves like a module file resource5235 returns /go.mod from the repo5236 behaves like a module archive resource5237 returns an archive of / @ v1.0.1 from the repo5238 with a public project5239 GET /projects/:id/packages/go/*module_name/@v/list5240 returns ok with no authentication5241 with a non-existent project5242 GET /projects/:id/packages/go/*module_name/@v/list5243 returns not found with a user5244 returns not found with an oauth token5245 returns not found with a job token5246 returns not found with a personal access token5247 returns unauthorized with no authentication5248Projects::RepositoriesController5249 POST create5250 when repository does not exist5251 creates the repository5252 when repository already exists5253 does not raise an exception5254 GET archive5255 as a guest5256 responds with redirect in correct format5257 as a user5258 uses Gitlab::Workhorse5259 responds with redirect to the short name archive if fully qualified5260 responds with redirect for a path with multiple slashes5261 prioritizes the id param over the ref param when both are specified5262 behaves like hotlink interceptor5263 DDOS prevention5264 hotlinked as media5265 response_status: :ok, accept_header: "*/*"5266 renders the response5267 response_status: :ok, accept_header: "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"5268 renders the response5269 response_status: :ok, accept_header: "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"5270 renders the response5271 response_status: :ok, accept_header: "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"5272 renders the response5273 response_status: :ok, accept_header: "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8"5274 renders the response5275 response_status: :ok, accept_header: "image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/x-shockwave-flash, application/msword, */*"5276 renders the response5277 response_status: :ok, accept_header: "text/html, application/xhtml+xml, image/jxr, */*"5278 renders the response5279 response_status: :ok, accept_header: "text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1"5280 renders the response5281 response_status: :not_acceptable, accept_header: "image/webp,*/*"5282 renders the response5283 response_status: :not_acceptable, accept_header: "image/png,image/*;q=0.8,*/*;q=0.5"5284 renders the response5285 response_status: :not_acceptable, accept_header: "image/webp,image/apng,image/*,*/*;q=0.8"5286 renders the response5287 response_status: :not_acceptable, accept_header: "image/png,image/svg+xml,image/*;q=0.8, */*;q=0.5"5288 renders the response5289 response_status: :not_acceptable, accept_header: "video/webm,video/ogg,video/*;q=0.9,application/ogg;q=0.7,audio/*;q=0.6,*/*;q=0.5"5290 renders the response5291 response_status: :not_acceptable, accept_header: "audio/webm,audio/ogg,audio/wav,audio/*;q=0.9,application/ogg;q=0.7,video/*;q=0.6,*/*;q=0.5"5292 renders the response5293 response_status: :not_acceptable, accept_header: "text/css,*/*;q=0.1"5294 renders the response5295 response_status: :not_acceptable, accept_header: "text/css"5296 renders the response5297 response_status: :not_acceptable, accept_header: "text/css,*/*;q=0.1"5298 renders the response5299 hotlinked as a script5300 response_status: :ok, fetch_mode: "navigate"5301 renders the response5302 response_status: :ok, fetch_mode: "nested-navigate"5303 renders the response5304 response_status: :ok, fetch_mode: "same-origin"5305 renders the response5306 response_status: :not_acceptable, fetch_mode: "cors"5307 renders the response5308 response_status: :not_acceptable, fetch_mode: "no-cors"5309 renders the response5310 response_status: :not_acceptable, fetch_mode: "websocket"5311 renders the response5312 when the service raises an error5313 renders Not Found5314 when the request format is HTML5315 renders 4045316 rate limiting5317 rate limits user when thresholds hit5318 caching5319 sets appropriate caching headers5320 when project is public5321 sets appropriate caching headers5322 and repo is private5323 sets appropriate caching headers5324 when ref is a commit SHA5325 max-age is set to 3600 in Cache-Control header5326 when If-None-Modified header is set5327 returns a 304 status5328 as a sessionless user5329 when no token is provided5330 redirects to sign in page5331 when a token param is present5332 when token is correct5333 calls the action normally5334 when user with expired password5335 redirects to sign in page5336 when password expiration is not applicable5337 when ldap user5338 calls the action normally5339 when token is incorrect5340 redirects to sign in page5341 when token is migrated5342 calls the action normally5343 when a token header is present5344 when token is correct5345 calls the action normally5346 when user with expired password5347 redirects to sign in page5348 when password expiration is not applicable5349 when ldap user5350 calls the action normally5351 when token is incorrect5352 redirects to sign in page5353API::ResourceAccessTokens5354 when the resource is a project5355 behaves like resource access token API5356 GET projects/:id/access_tokens5357 when the user has valid permissions5358 gets a list of access tokens for the specified project5359 exposes the correct token information5360 when using a project access token to GET other project access tokens5361 gets a list of access tokens for the specified project5362 when tokens belong to a different project5363 does not return tokens from a different project5364 when the project has no access tokens5365 returns an empty array5366 when trying to get the tokens of a different project5367 returns 4045368 when the project does not exist5369 returns 4045370 when the user does not have valid permissions5371 returns 4015372 GET projects/:id/access_tokens/:token_id5373 when the user has valid permissions5374 gets the project access token from the project5375 when using project access token to GET other project access token5376 gets the project access token from the project5377 when attempting to get a non-existent project access token5378 does not get the token, and returns 4045379 when attempting to get a token that does not belong to the specified project5380 does not get the token, and returns 4045381 when the user does not have valid permissions5382 returns 4015383 DELETE projects/:id/access_tokens/:token_id5384 when the user has valid permissions5385 deletes the project access token from the project5386 when using project access token to DELETE other project access token5387 deletes the project access token from the project5388 when attempting to delete a non-existent project access token5389 does not delete the token, and returns 4045390 when attempting to delete a token that does not belong to the specified project5391 does not delete the token, and returns 4045392 when the user does not have valid permissions5393 does not delete the token, and returns 4005394 POST projects/:id/access_tokens5395 when the user has valid permissions5396 with valid params5397 with full params5398 creates a project access token with the params5399 when 'expires_at' is not set5400 creates a project access token with the params5401 when 'access_level' is not set5402 creates a project access token with the default access level5403 with invalid params5404 when missing the 'name' param5405 does not create a project access token without 'name'5406 when missing the 'scopes' param5407 does not create a project access token without 'scopes'5408 when using invalid 'scopes'5409 does not create a project access token with invalid 'scopes'5410 when using invalid 'access_level'5411 does not create a project access token with invalid 'access_level'5412 when trying to create a token in a different project5413 does not create the token, and returns the project not found error5414 when the user does not have valid permissions5415 when the user role is too low5416 does not create the token, and returns the permission error5417 when a project access token tries to create another project access token5418 does not allow a project access token to create another project access token5419 when the resource is a group5420 behaves like resource access token API5421 GET groups/:id/access_tokens5422 when the user has valid permissions5423 gets a list of access tokens for the specified group5424 exposes the correct token information5425 when using a group access token to GET other group access tokens5426 gets a list of access tokens for the specified group5427 when tokens belong to a different group5428 does not return tokens from a different group5429 when the group has no access tokens5430 returns an empty array5431 when trying to get the tokens of a different group5432 returns 4045433 when the group does not exist5434 returns 4045435 when the user does not have valid permissions5436 returns 4015437 GET groups/:id/access_tokens/:token_id5438 when the user has valid permissions5439 gets the group access token from the group5440 when using group access token to GET other group access token5441 gets the group access token from the group5442 when attempting to get a non-existent group access token5443 does not get the token, and returns 4045444 when attempting to get a token that does not belong to the specified group5445 does not get the token, and returns 4045446 when the user does not have valid permissions5447 returns 4015448 DELETE groups/:id/access_tokens/:token_id5449 when the user has valid permissions5450 deletes the group access token from the group5451 when using group access token to DELETE other group access token5452 deletes the group access token from the group5453 when attempting to delete a non-existent group access token5454 does not delete the token, and returns 4045455 when attempting to delete a token that does not belong to the specified group5456 does not delete the token, and returns 4045457 when the user does not have valid permissions5458 does not delete the token, and returns 4005459 POST groups/:id/access_tokens5460 when the user has valid permissions5461 with valid params5462 with full params5463 creates a group access token with the params5464 when 'expires_at' is not set5465 creates a group access token with the params5466 when 'access_level' is not set5467 creates a group access token with the default access level5468 with invalid params5469 when missing the 'name' param5470 does not create a group access token without 'name'5471 when missing the 'scopes' param5472 does not create a group access token without 'scopes'5473 when using invalid 'scopes'5474 does not create a group access token with invalid 'scopes'5475 when using invalid 'access_level'5476 does not create a group access token with invalid 'access_level'5477 when trying to create a token in a different group5478 does not create the token, and returns the group not found error5479 when the user does not have valid permissions5480 when the user role is too low5481 does not create the token, and returns the permission error5482 when a group access token tries to create another group access token5483 does not allow a group access token to create another group access token5484Projects::LabelsController5485 GET #index5486 @prioritized_labels5487 does not include labels without priority5488 is sorted by priority, then label title5489 @labels5490 is sorted by label title5491 does not include labels with priority5492 does not include group labels when project does not belong to a group5493 with subgroups5494 returns ancestor group labels5495 with views rendered5496 avoids N+1 queries5497 POST #generate5498 personal project5499 creates labels5500 project belonging to a group5501 creates labels5502 POST #toggle_subscription5503 allows user to toggle subscription on project labels5504 allows user to toggle subscription on group labels5505 POST #promote5506 not group reporters5507 denies access5508 group reporter5509 gives access5510 promotes the label5511 renders label name without parsing it as HTML5512 service raising InvalidRecord5513 returns to label list5514 #ensure_canonical_path5515 for a GET request5516 when requesting the canonical path5517 non-show path5518 with exactly matching casing5519 does not redirect5520 with different casing5521 redirects to the correct casing5522 when requesting a redirected path5523 redirects to the canonical path5524 with an AJAX request5525 redirects to the canonical path but does not set flash message5526 with JSON format5527 redirects to the canonical path but does not set flash message5528 for a non-GET request5529 when requesting the canonical path with different casing5530 does not 4045531 does not redirect to the correct casing5532 when requesting a redirected path5533 returns not found5534API::CommitStatuses5535 GET /projects/:id/repository/commits/:sha/statuses5536 ci commit exists5537 reporter user5538 latest commit statuses5539 returns latest commit statuses5540 all commit statuses5541 returns all commit statuses5542 latest commit statuses for specific ref5543 returns latest commit statuses for specific ref5544 latest commit statues for specific name5545 return latest commit statuses for specific name5546 ci commit does not exist5547 returns empty array5548 guest user5549 does not return project commits5550 unauthorized user5551 does not return project commits5552 POST /projects/:id/statuses/:sha5553 developer user5554 uses only required parameters5555 for pending5556 when pipeline for sha does not exists5557 creates commit status and sets pipeline iid5558 for running5559 when pipeline for sha does not exists5560 creates commit status and sets pipeline iid5561 for success5562 when pipeline for sha does not exists5563 creates commit status and sets pipeline iid5564 for failed5565 when pipeline for sha does not exists5566 creates commit status and sets pipeline iid5567 for canceled5568 when pipeline for sha does not exists5569 creates commit status and sets pipeline iid5570 when pipeline already exists for the specified sha5571 behaves like creates a commit status for the existing pipeline5572 is expected to eq 10000005573 with pipeline for merge request5574 behaves like creates a commit status for the existing pipeline5575 is expected to eq 10000005576 transitions status from pending5577 to running5578 to success5579 to failed5580 to canceled5581 with all optional parameters5582 when creating a commit status5583 creates commit status5584 when merge request exists for given branch5585 sets head pipeline5586 when updating a commit status5587 updates a commit status5588 does not create a new commit status5589 when the `state` parameter is sent the same5590 does not update the commit status5591 when a pipeline id is specified5592 update the correct pipeline5593 when retrying a commit status5594 correctly posts a new commit status5595 retries the commit status5596 when status is invalid5597 does not create commit status5598 when request without a state made5599 does not create commit status5600 when updating a protected ref5601 with user as developer5602 does not create commit status5603 with user as maintainer5604 creates commit status5605 when commit SHA is invalid5606 returns not found error5607 when target URL is an invalid address5608 responds with bad request status and validation errors5609 when target URL is an unsupported scheme5610 responds with bad request status and validation errors5611 when trying to update a status of a different type5612 responds with bad request status and validation errors5613 with partitions5614 creates records in the current partition5615 reporter user5616 does not create commit status5617 guest user5618 does not create commit status5619 unauthorized user5620 does not create commit status5621Snippets::NotesController5622 GET index5623 when a snippet is public5624 returns status 2005625 returns not empty array of notes5626 when a snippet is internal5627 when user not logged in5628 returns status 4045629 when user logged in5630 returns status 2005631 when a snippet is private5632 when user not logged in5633 returns status 4045634 when user other than author logged in5635 returns status 4045636 when author logged in5637 returns status 2005638 returns 1 note5639 dont show non visible notes5640 does not return any note5641 POST create5642 when a snippet is public5643 returns status 3025644 creates the note5645 behaves like create notes request exceeding rate limit5646 allows user in allow-list to create notes, even if the case is different5647 when rate limiter enabled5648 logs request and declines it when endpoint called more than the threshold5649 when rate limiter is disabled5650 does not log request and does not block the request5651 when a snippet is internal5652 returns status 3025653 creates the note5654 behaves like create notes request exceeding rate limit5655 allows user in allow-list to create notes, even if the case is different5656 when rate limiter enabled5657 logs request and declines it when endpoint called more than the threshold5658 when rate limiter is disabled5659 does not log request and does not block the request5660 when a snippet is private5661 when user is not the author5662 returns status 4045663 does not create the note5664 when user sends a snippet_id for a public snippet5665 returns status 3025666 creates the note on the public snippet5667 when user is the author5668 returns status 3025669 creates the note5670 behaves like create notes request exceeding rate limit5671 allows user in allow-list to create notes, even if the case is different5672 when rate limiter enabled5673 logs request and declines it when endpoint called more than the threshold5674 when rate limiter is disabled5675 does not log request and does not block the request5676 DELETE destroy5677 when user is the author of a note5678 returns status 2005679 deletes the note5680 system note5681 does not delete the note5682 when user is not the author of a note5683 returns status 4045684 does not update the note5685 POST toggle_award_emoji5686 toggles the award emoji5687 removes the already awarded emoji when it exists5688API::Suggestions5689 PUT /suggestions/:id/apply5690 when successfully applies patch5691 renders an ok response and returns json content5692 when a custom commit message is included5693 renders an ok response and returns json content5694 when not able to apply patch5695 renders a bad request error and returns json content5696 when suggestion is not found5697 renders a not found error and returns json content5698 when suggestion ID is not valid5699 renders a not found error and returns json content5700 when unauthorized5701 renders a forbidden error and returns json content5702 PUT /suggestions/batch_apply5703 when successfully applies multiple patches as a batch5704 renders an ok response and returns json content5705 provides a custom commit message5706 when not able to apply one or more of the patches5707 renders a bad request error and returns json content5708 with missing suggestions5709 renders a not found error and returns json content if any suggestion is not found5710 renders a bad request error and returns json content when no suggestions are provided5711 when unauthorized5712 renders a forbidden error and returns json content5713container repository details5714 behaves like a working graphql query5715DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5716DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5717 returns a successful response5718DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5719DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5720 matches the JSON schema5721 with different permissions5722 project_visibility: :private, role: :maintainer, access_granted: true, can_delete: true5723DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5724DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5725 return the proper response5726 project_visibility: :private, role: :developer, access_granted: true, can_delete: true5727DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5728DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5729 return the proper response5730 project_visibility: :private, role: :reporter, access_granted: true, can_delete: false5731DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5732DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5733 return the proper response5734 project_visibility: :private, role: :guest, access_granted: false, can_delete: false5735 return the proper response5736 project_visibility: :private, role: :anonymous, access_granted: false, can_delete: false5737 return the proper response5738 project_visibility: :public, role: :maintainer, access_granted: true, can_delete: true5739DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5740DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5741 return the proper response5742 project_visibility: :public, role: :developer, access_granted: true, can_delete: true5743DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5744DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5745 return the proper response5746 project_visibility: :public, role: :reporter, access_granted: true, can_delete: false5747DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5748DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5749 return the proper response5750 project_visibility: :public, role: :guest, access_granted: true, can_delete: false5751DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5752DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5753 return the proper response5754 project_visibility: :public, role: :anonymous, access_granted: true, can_delete: false5755DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5756DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5757 return the proper response5758 with a giant size tag5759 returns the expected value as a string5760 limiting the number of tags5761 only returns n tags5762 sorting the tags5763 sorts the tags5764 invalid sort5765 behaves like returning an invalid value error5766 returns an error5767 filtering by name5768 sorts the tags5769 invalid filter5770 behaves like returning an invalid value error5771 returns an error5772 size field5773 returns the size5774 with a network error5775 returns an error5776 with not supporting the gitlab api5777 returns nil5778 not on .com5779 returns nil5780 with an older container repository5781 returns nil5782 with tags with a manifest containing nil fields5783DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5784DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5785 returns a list of tags with a nil digest5786DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5787DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5788 returns a list of tags with a nil revision5789DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5790DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5791 returns a list of tags with a nil short_revision5792DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5793DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5794 returns a list of tags with a nil total_size5795DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5796DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5797 returns a list of tags with a nil created_at5798 behaves like handling graphql network errors with the container registry5799 returns a connection error5800Self-Monitoring project requests5801 POST #create_self_monitoring_project5802 behaves like not accessible to non-admin users5803 with unauthenticated user5804 redirects to signin page5805 with authenticated non-admin user5806 returns status not_found5807 with authenticated admin user without admin mode5808 redirects to enable admin mode5809 with admin user5810 when the self-monitoring project is created5811 behaves like triggers async worker, returns sidekiq job_id with response accepted5812 returns sidekiq job_id of expected length5813 triggers async worker5814 returns accepted response5815 returns job_id5816 GET #status_create_self_monitoring_project5817 behaves like not accessible to non-admin users5818 with unauthenticated user5819 redirects to signin page5820 with authenticated non-admin user5821 returns status not_found5822 with authenticated admin user without admin mode5823 redirects to enable admin mode5824 with admin user5825 when the self-monitoring project is being created5826 behaves like handles invalid job_id5827 with invalid job_id5828 returns bad_request if job_id too long5829 when job is in progress5830 behaves like sets polling header and returns accepted5831 sets polling header5832 returns accepted5833 when self-monitoring project and job do not exist5834 returns bad_request5835 when self-monitoring project exists5836 does not need job_id5837 returns success with job_id5838 DELETE #delete_self_monitoring_project5839 behaves like not accessible to non-admin users5840 with unauthenticated user5841 redirects to signin page5842 with authenticated non-admin user5843 returns status not_found5844 with authenticated admin user without admin mode5845 redirects to enable admin mode5846 with admin user5847 when the self-monitoring project is deleted5848 behaves like triggers async worker, returns sidekiq job_id with response accepted5849 returns sidekiq job_id of expected length5850 triggers async worker5851 returns accepted response5852 returns job_id5853 GET #status_delete_self_monitoring_project5854 behaves like not accessible to non-admin users5855 with unauthenticated user5856 redirects to signin page5857 with authenticated non-admin user5858 returns status not_found5859 with authenticated admin user without admin mode5860 redirects to enable admin mode5861 with admin user5862 when the self-monitoring project is being deleted5863 behaves like handles invalid job_id5864 with invalid job_id5865 returns bad_request if job_id too long5866 when job is in progress5867 behaves like sets polling header and returns accepted5868 sets polling header5869 returns accepted5870 when self-monitoring project exists and job does not exist5871 returns bad_request5872 when self-monitoring project does not exist5873 does not need job_id5874 returns success with job_id5875API::ProtectedBranches5876 GET /projects/:id/protected_branches5877 when authenticated as a maintainer5878 when search param is not present5879 behaves like protected branches5880 returns the protected branches5881 when search param is present5882 behaves like protected branches5883 returns the protected branches5884 when authenticated as a guest5885 behaves like 403 response5886 returns 4035887 GET /projects/:id/protected_branches/:branch5888 when authenticated as a maintainer5889 behaves like protected branch5890 returns the protected branch5891 when protected branch does not exist5892 behaves like 404 response5893 returns 4045894 when protected branch contains a wildcard5895 behaves like protected branch5896 returns the protected branch5897 when protected branch does not exist5898 behaves like 404 response5899 returns 4045900 when protected branch contains a period5901 behaves like protected branch5902 returns the protected branch5903 when protected branch does not exist5904 behaves like 404 response5905 returns 4045906 when authenticated as a guest5907 behaves like 403 response5908 returns 4035909 POST /projects/:id/protected_branches5910 when authenticated as a maintainer5911 protects a single branch5912 protects a single branch and developers can push5913 protects a single branch and developers can merge5914 protects a single branch and developers can push and merge5915 protects a single branch and no one can push5916 protects a single branch and no one can merge5917 protects a single branch and no one can push or merge5918 protects a single branch and allows force pushes5919 returns a 409 error if the same branch is protected twice5920 when branch has a wildcard in its name5921 protects multiple branches with a wildcard in the name5922 when a policy restricts rule creation5923 prevents creations of the protected branch rule5924 when authenticated as a guest5925 returns a 403 error if guest5926 PATCH /projects/:id/protected_branches/:name5927 when authenticated as a maintainer5928 updates a single branch5929 when returned protected branch is invalid5930 returns a 4225931 when authenticated as a guest5932 returns a 403 error5933 DELETE /projects/:id/protected_branches/unprotect/:branch5934 unprotects a single branch5935 returns 404 if branch does not exist5936 behaves like 412 response5937 for a modified ressource5938 returns 412 with a JSON error5939 for an unmodified ressource5940 returns 204 with an empty body5941 when a policy restricts rule deletion5942 prevents deletion of the protected branch rule5943 when branch has a wildcard in its name5944 unprotects a wildcard branch5945Projects::Settings::OperationsController5946 GET #show5947 renders show template5948 with insufficient permissions5949 renders 4045950 as an anonymous user5951 redirects to signup page5952 PATCH #update5953 with insufficient permissions5954 renders 4045955 as an anonymous user5956 redirects to signup page5957 incident management5958 GET #show5959 with existing setting5960 loads existing setting5961 without an existing setting5962 builds a new setting5963 PATCH #update5964 behaves like PATCHable5965 format json5966 when update succeeds5967 returns success status5968 when update fails5969 returns error5970 updating each incident management setting5971 behaves like a gitlab tracking event5972 creates a gitlab tracking event enabled_issue_auto_creation_on_alerts5973 behaves like a gitlab tracking event5974 creates a gitlab tracking event disabled_issue_auto_creation_on_alerts5975 behaves like a gitlab tracking event5976 creates a gitlab tracking event enabled_issue_template_on_alerts5977 behaves like a gitlab tracking event5978 creates a gitlab tracking event disabled_issue_template_on_alerts5979 behaves like a gitlab tracking event5980 creates a gitlab tracking event enabled_sending_emails5981 behaves like a gitlab tracking event5982 creates a gitlab tracking event disabled_sending_emails5983 behaves like a gitlab tracking event5984 creates a gitlab tracking event enabled_pagerduty_webhook5985 behaves like a gitlab tracking event5986 creates a gitlab tracking event disabled_pagerduty_webhook5987 behaves like a gitlab tracking event5988 creates a gitlab tracking event enabled_auto_close_incident5989 behaves like a gitlab tracking event5990 creates a gitlab tracking event disabled_auto_close_incident5991 POST #reset_pagerduty_token5992 with existing incident management setting has active PagerDuty webhook5993 returns newly reset token5994 without existing incident management setting5995 does not reset a token5996 when update fails5997 returns unprocessable_entity5998 with insufficient permissions5999 returns 4046000 as an anonymous user6001 returns a redirect6002 error tracking6003 GET #show6004 with existing setting6005 loads existing setting6006 without an existing setting6007 builds a new setting6008 PATCH #update6009 behaves like PATCHable6010 format json6011 when update succeeds6012 returns success status6013 when update fails6014 returns error6015 metrics dashboard setting6016 PATCH #update6017 behaves like PATCHable6018 format json6019 when update succeeds6020 returns success status6021 when update fails6022 returns error6023 grafana integration6024 PATCH #update6025 behaves like PATCHable6026 format json6027 when update succeeds6028 returns success status6029 when update fails6030 returns error6031 prometheus integration6032 POST #reset_alerting_token6033 with existing alerting setting6034 returns newly reset token6035 without existing alerting setting6036 creates a token6037 when update fails6038 returns unprocessable_entity6039 with insufficient permissions6040 returns 4046041 as an anonymous user6042 returns a redirect6043API::Topics6044 GET /topics6045 returns topics ordered by total_projects_count6046 with without_projects6047 returns topics without assigned projects6048 returns topics without assigned projects6049 with search6050 search: "", result: ["other-topic", "GitLab", "Git"]6051 returns filtered topics6052 search: "g", result: []6053 returns filtered topics6054 search: "gi", result: []6055 returns filtered topics6056 search: "git", result: ["Git", "GitLab"]6057 returns filtered topics6058 search: "x", result: []6059 returns filtered topics6060 search: 0, result: []6061 returns filtered topics6062 with pagination6063 params: {:page=>0}, result: ["other-topic", "GitLab", "Git"]6064 returns paginated topics6065 params: {:page=>1}, result: ["other-topic", "GitLab", "Git"]6066 returns paginated topics6067 params: {:page=>2}, result: []6068 returns paginated topics6069 params: {:per_page=>1}, result: ["other-topic"]6070 returns paginated topics6071 params: {:per_page=>2}, result: ["other-topic", "GitLab"]6072 returns paginated topics6073 params: {:per_page=>3}, result: ["other-topic", "GitLab", "Git"]6074 returns paginated topics6075 params: {:page=>0, :per_page=>1}, result: ["other-topic"]6076 returns paginated topics6077 params: {:page=>0, :per_page=>2}, result: ["other-topic", "GitLab"]6078 returns paginated topics6079 params: {:page=>1, :per_page=>1}, result: ["other-topic"]6080 returns paginated topics6081 params: {:page=>1, :per_page=>2}, result: ["other-topic", "GitLab"]6082 returns paginated topics6083 params: {:page=>2, :per_page=>1}, result: ["GitLab"]6084 returns paginated topics6085 params: {:page=>2, :per_page=>2}, result: ["Git"]6086 returns paginated topics6087 params: {:page=>3, :per_page=>1}, result: ["Git"]6088 returns paginated topics6089 params: {:page=>3, :per_page=>2}, result: []6090 returns paginated topics6091 params: {:page=>4, :per_page=>1}, result: []6092 returns paginated topics6093 params: {:page=>4, :per_page=>2}, result: []6094 returns paginated topics6095 GET /topic/:id6096 returns topic6097 returns 404 for non existing id6098 returns 400 for invalid `id` parameter6099 POST /topics6100 as administrator6101 creates a topic6102 creates a topic with avatar and description6103 returns 400 if name is missing6104 returns 400 if name is not unique (case insensitive)6105 returns 400 if title is missing6106 as normal user6107 returns 403 Forbidden6108 as anonymous6109 returns 401 Unauthorized6110 PUT /topics6111 as administrator6112 updates a topic6113 updates a topic with avatar and description6114 keeps avatar when updating other fields6115 returns 404 for non existing id6116 returns 400 for invalid `id` parameter6117 with blank avatar6118/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 nil6119 removes avatar6120/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 nil6121 removes avatar besides other changes6122/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 nil6123 does not remove avatar in case of other errors6124 as normal user6125 returns 403 Forbidden6126 as anonymous6127 returns 401 Unauthorized6128 DELETE /topics6129 as administrator6130 deletes a topic6131 returns 404 for non existing id6132 returns 400 for invalid `id` parameter6133 as normal user6134 returns 403 Forbidden6135 as anonymous6136 returns 401 Unauthorized6137 POST /topics/merge6138 as administrator6139 merge topics6140 returns 404 for non existing source topic id6141 returns 404 for non existing target topic id6142 returns 400 for identical topic ids6143 returns 400 if merge failed6144 as normal user6145 returns 403 Forbidden6146 as anonymous6147 returns 401 Unauthorized6148getting dependency proxy manifests in a group6149 returns the total count of manifests6150 behaves like a working graphql query6151 returns a successful response6152 with different permissions6153 group_visibility: :private, role: :maintainer, access_granted: true6154 return the proper response6155 group_visibility: :private, role: :developer, access_granted: true6156 return the proper response6157 group_visibility: :private, role: :reporter, access_granted: true6158 return the proper response6159 group_visibility: :private, role: :guest, access_granted: true6160 return the proper response6161 group_visibility: :private, role: :anonymous, access_granted: false6162 return the proper response6163 group_visibility: :public, role: :maintainer, access_granted: true6164 return the proper response6165 group_visibility: :public, role: :developer, access_granted: true6166 return the proper response6167 group_visibility: :public, role: :reporter, access_granted: true6168 return the proper response6169 group_visibility: :public, role: :guest, access_granted: true6170 return the proper response6171 group_visibility: :public, role: :anonymous, access_granted: false6172 return the proper response6173 limiting the number of manifests6174 only returns N manifests6175 sorting and pagination6176 with default sorting6177 behaves like sorted paginated query6178 behaves like requires variables6179 shared example requires variables to be set6181 when sorting6182 sorts correctly6183 when paginating6184 paginates correctly6185Groups::MilestonesController6186 N+1 DB queries6187 GET #index6188 avoids N+1 database queries6189 GET #show6190 avoids N+1 database queries6191 GET #merge_requests6192 avoids N+1 database queries6193Projects::AutocompleteSourcesController6194 GET commands6195 with a public project6196 with an issue6197 behaves like issuable commands6198 returns empty array when no user logged in6199 raises an error when no target type specified6200 returns an array of commands6201 with merge request6202 behaves like issuable commands6203 returns empty array when no user logged in6204 raises an error when no target type specified6205 returns an array of commands6206 GET labels6207 raises an error when no target type specified6208 returns an array of labels6209 GET members6210 when logged in6211 returns 400 when no target type specified6212 returns an array of member object6213 when anonymous6214 redirects to login page6215 with public project6216 returns no members6217 GET milestones6218 lists milestones6219 when user cannot read project issues and merge requests6220 renders 4046221 GET contacts6222 when feature flag is enabled6223 when a group has contact relations enabled6224 when a user can read contacts6225 lists contacts6226 when a user can not read contacts6227 renders 4046228 when a group has contact relations disabled6229 renders 4046230Projects::EnvironmentsController6231 GET #show6232 avoids N+1 queries6233Admin::ProjectsController6234 GET /projects6235 retrieves the project for the given visibility level6236 does not retrieve the project6237 retrieves archived and non archived corrupted projects when last_repository_check_failed is true6238 does not respond with projects pending deletion6239 does not have N+1 queries6240 GET /projects.json6241 is expected to respond with 2006242 GET /projects/:id6243 renders show page6244 PUT /projects/transfer/:id6245 updates namespace6246 when project transfer fails6247 flashes error6248Create a timelog6249 when issuable is an Issue6250 behaves like issuable supports timelog creation mutation6251 when the user is anonymous6252 behaves like a mutation that returns a top-level access error6253 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"6254 when the user is a guest member of the namespace6255 behaves like a mutation that returns a top-level access error6256 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"6257 when user has permissions to create a timelog6258 with valid data6259 creates the timelog6260 with invalid time_spent6261 returns an error6262 when issuable is a MergeRequest6263 behaves like issuable supports timelog creation mutation6264 when the user is anonymous6265 behaves like a mutation that returns a top-level access error6266 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"6267 when the user is a guest member of the namespace6268 behaves like a mutation that returns a top-level access error6269 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"6270 when user has permissions to create a timelog6271 with valid data6272 creates the timelog6273 with invalid time_spent6274 returns an error6275 when issuable is a WorkItem6276 behaves like issuable supports timelog creation mutation6277 when the user is anonymous6278 behaves like a mutation that returns a top-level access error6279 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"6280 when the user is a guest member of the namespace6281 behaves like a mutation that returns a top-level access error6282 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"6283 when user has permissions to create a timelog6284 with valid data6285 creates the timelog6286 with invalid time_spent6287 returns an error6288 when issuable is an Incident6289 behaves like issuable supports timelog creation mutation6290 when the user is anonymous6291 behaves like a mutation that returns a top-level access error6292 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"6293 when the user is a guest member of the namespace6294 behaves like a mutation that returns a top-level access error6295 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"6296 when user has permissions to create a timelog6297 with valid data6298 creates the timelog6299 with invalid time_spent6300 returns an error6301getting project information6302 when the user has full access to the project6303DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.6304DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.6305 includes the project6306 when the user has access to the project6307DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.6308DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.6309 includes the project6310 includes inherited members in project_members6311 behaves like a working graphql query6312DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.6313DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.6314 returns a successful response6315 when there are pipelines present6316 is included in the pipelines connection6317 topics6318DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.6319DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.6320 includes empty topics array if no topics set6321DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.6322DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.6323 includes topics array6324 when the user has reporter access to the project6325 allows fetching project statistics6326 when the user has guest access6327 when the project has public pipelines6328 shows all jobs6329 when the user does not have access to the project6330 returns an empty field6331 behaves like a working graphql query6332 returns a successful response6333 with timelog categories6334 when user is guest and the project is public6335 includes empty timelog categories array6336 when user has reporter role6337 returns the timelog category with all its fields6338 when timelog_categories flag is disabled6339 returns no timelog categories6340 for N+1 queries6341 avoids N+1 database queries (PENDING: See: https://gitlab.com/gitlab-org/gitlab/-/issues/369396)6342Projects::TodosController6343 Issues6344 POST create6345 behaves like issuable todo actions6346 behaves like todos actions6347 when authorized6348 creates todo6349 returns todo path and pending count6350 when not authorized for project/group6351 does not create todo for resource that user has no access to6352 does not create todo when user is not logged in6353 when not authorized for resource6354 doesn't create todo6355 Merge Requests6356 POST create6357 behaves like issuable todo actions6358 behaves like todos actions6359 when authorized6360 creates todo6361 returns todo path and pending count6362 when not authorized for project/group6363 does not create todo for resource that user has no access to6364 does not create todo when user is not logged in6365 when not authorized for resource6366 doesn't create todo6367 Designs6368 POST create6369 behaves like todos actions6370 when authorized6371 creates todo6372 returns todo path and pending count6373 when not authorized for project/group6374 does not create todo for resource that user has no access to6375 does not create todo when user is not logged in6376getting group members information6377 when a member is invited only via email6378 returns null in the user field6379 when the request is correct6380 returns group members successfully6381 behaves like a working graphql query6382 returns a successful response6383 search argument6384 returns members that match the search query6385 when paginating6386 returns correct results6387 when requesting member's notification email6388 when current_user is admin6389 returns notification email6390 when current_user is not admin6391 returns an error6392 by access levels6393 by owner6394 returns owner6395 by maintainer6396 returns maintainer6397 by owner and maintainer6398 returns owner and maintainer6399 member relations6400 returns direct members6401 returns invited members and inherited members of a shared group6402 returns invited members and inherited members of an ancestor of a shared group6403 returns direct and inherited members6404 returns direct, inherited, and descendant members6405 returns an error for an invalid member relation6406 when unauthenticated6407 returns visible members6408getting milestone listings nested in a project6409 behaves like a working graphql query6410 returns a successful response6411 the user does not have access6412 is nil6413 the user has access6414 behaves like searching with parameters6415 finds the right milestones6416 there are no search params6417 behaves like searching with parameters6418 finds the right milestones6419 the search params do not match anything6420 behaves like searching with parameters6421 finds the right milestones6422 searching by state:closed6423 behaves like searching with parameters6424 finds the right milestones6425 searching by state:active6426 behaves like searching with parameters6427 finds the right milestones6428 searching by title6429 behaves like searching with parameters6430 finds the right milestones6431 searching by search_title6432 behaves like searching with parameters6433 finds the right milestones6434 searching by containing_date6435 behaves like searching with parameters6436 finds the right milestones6437 searching by containing_date = today6438 behaves like searching with parameters6439 finds the right milestones6440 searching by custom range6441 behaves like searching with parameters6442 finds the right milestones6443 using timeframe argument6444 behaves like searching with parameters6445 finds the right milestones6446 timeframe validations6447 is invalid to provide timeframe and start_date/end_date6448 is invalid to invert the timeframe arguments6449 behaves like a working graphql query6450 returns a successful response6451Setting locked status of a merge request6452 returns an error if the user is not allowed to update the merge request6453 marks the merge request as WIP6454 does not do anything if the merge request was already locked6455 when passing locked false as input6456 does not do anything if the merge request was not marked locked6457 unmarks the merge request as locked6458SendFileUpload6459 #send_upload6460 when local file is used6461 sends a file6462 behaves like handles image resize requests6463 behaves like handles image resize requests allowed by FF6464 with valid width parameter6465 renders OK with workhorse command header6466 with missing width parameter6467 does not write workhorse command header6468 with invalid width parameter6469 does not write workhorse command header6470 with width that is not allowed6471 does not write workhorse command header6472 when image file is not an avatar6473 does not write workhorse command header6474 when image file type is not considered safe for scaling6475 does not write workhorse command header6476 when FF is disabled6477 behaves like bypasses image resize requests not allowed by FF6478 does not write workhorse command header6479 with inline image6480 sends a file with inline disposition6481 with attachment6482 sends a file with content-type of text/plain6483 with a proxied file in object storage6484 sends a file with a custom type6485 when remote file is used6486 and proxying is enabled6487 behaves like proxied file6488 sends a file6489 and proxying is disabled6490 sends a file6491 with proxy requested6492 behaves like proxied file6493 sends a file6494 behaves like handles image resize requests6495 behaves like handles image resize requests allowed by FF6496 with valid width parameter6497 renders OK with workhorse command header6498 with missing width parameter6499 does not write workhorse command header6500 with invalid width parameter6501 does not write workhorse command header6502 with width that is not allowed6503 does not write workhorse command header6504 when image file is not an avatar6505 does not write workhorse command header6506 when image file type is not considered safe for scaling6507 does not write workhorse command header6508 when FF is disabled6509 behaves like bypasses image resize requests not allowed by FF6510 does not write workhorse command header6511 when CDN-enabled remote file is used6512 when use_cdn_with_job_artifacts_ui_downloads feature is enabled6513 sends a file when CDN URL6514 when use_cdn_with_job_artifacts_ui_downloads is disabled6515 sends a file6516Projects::GoogleCloud::GcpRegionsController6517 GET #index6518 behaves like public request should 4046519 behaves like should be not found6520 returns not found6521 behaves like should track not_found event6522 tracks event6523 behaves like unauthorized access should 4046524 behaves like should be not found6525 returns not found6526 behaves like should track access_denied event6527 tracks event6528 when authorized members make requests6529 renders gcp_regions6530 but gitlab instance is not configured for google oauth26531 behaves like should be forbidden6532 returns forbidden6533 behaves like should track gcp_error event6534 tracks event6535 but feature flag is disabled6536 behaves like should be not found6537 returns not found6538 behaves like should track feature_flag_disabled event6539 tracks event6540 POST #index6541 behaves like public request should 4046542 behaves like should be not found6543 returns not found6544 behaves like should track not_found event6545 tracks event6546 behaves like unauthorized access should 4046547 behaves like should be not found6548 returns not found6549 behaves like should track access_denied event6550 tracks event6551 when authorized members make requests6552 redirects to google cloud configurations6553ControllerWithCrossProjectAccessCheck6554 When reading cross project is not allowed6555 #requires_cross_project_access6556 renders a 403 with trying to access a cross project page6557 is skipped when the `if` condition returns false6558 is skipped when the `unless` condition returns true6559 correctly renders an action that does not require cross project access6560 #skip_cross_project_access_check6561 renders a success when the check is skipped6562 is executed when the `if` condition returns false6563 is executed when the `unless` condition returns true6564 does not skip the check on an action that is not skipped6565 does not skip the check on an action that was not defined to skip6566Projects::Harbor::ArtifactsController6567 behaves like a harbor artifacts controller6568 GET #index.json6569 with harbor registry feature flag enabled6570 behaves like responds with 200 status with json6571 renders the index template6572 with harbor registry feature flag disabled6573 behaves like responds with 404 status6574 returns 4046575 with anonymous user6576 behaves like responds with 302 status6577 returns 3026578 with unauthorized user6579 behaves like responds with 404 status6580 returns 4046581 with valid params6582 with valid repository6583 behaves like responds with 200 status with json6584 renders the index template6585 with valid page6586 behaves like responds with 200 status with json6587 renders the index template6588 with valid limit6589 behaves like responds with 200 status with json6590 renders the index template6591 with invalid params6592 with invalid page6593 behaves like responds with 422 status with json6594 returns 4226595 with invalid limit6596 behaves like responds with 422 status with json6597 returns 4226598Marking all todos done6599 marks all pending todos as done6600 behaves as expected if there are no todos for the requesting user6601 when target_id is given6602 marks all pending todos for the target as done6603 when target does not exist6604 returns an error6605 when user is not logged in6606 behaves like a mutation that returns a top-level access error6607 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"6608Timelogs through GroupQuery6609 Get list of timelogs from a group issues6610 when the project is private6611 when the user is not a member of the project6612 returns no timelogs6613 when the user is a member of the project6614 returns timelogs6615 when the request is correct6616 returns timelogs successfully6617 contains correct data6618 behaves like a working graphql query6619 returns a successful response6620 when arguments with no time are present6621 sets times as start of day and end of day6622 when requests has errors6623 when there are no timelogs present6624 returns empty result6625Project Environments query6626 # order random6627 returns the specified fields of the environment6628 last deployments of environments6629 returns all last deployments of the environment6630 executes the same number of queries in single environment and multiple environments6631getting custom emoji within namespace6632 Query CustomEmoji on Group6633 returns emojis when authorised6634 returns nil custom emoji when the custom_emoji feature flag is disabled6635 returns nil group when unauthorised6636Getting Grafana Integration6637 with grafana integration data6638 without project admin permissions6639 is expected to equal nil6640 behaves like a working graphql query6641 returns a successful response6642 with project admin permissions6643 is expected to eql "https://grafana.example.com"6644 is expected to eql "2022-11-14T13:06:00Z"6645 is expected to eql "2022-11-14T13:06:00Z"6646 behaves like a working graphql query6647 returns a successful response6648JobRetry6649 returns an error if the user is not allowed to retry the job6650 retries a job6651 when given CI variables6652 applies them to a retried manual job6653 when the job is not retryable6654 returns an error6655Updating the packages cleanup policy6656 post graphql mutation6657 with existing packages cleanup policy6658 user_role: :maintainer, shared_examples_name: "accepting the mutation request and updates the existing policy"6659 behaves like accepting the mutation request and updates the existing policy6660 returns the updated packages cleanup policy6661 user_role: :developer, shared_examples_name: "denying the mutation request"6662 behaves like denying the mutation request6663 returns an error6664 user_role: :reporter, shared_examples_name: "denying the mutation request"6665 behaves like denying the mutation request6666 returns an error6667 user_role: :guest, shared_examples_name: "denying the mutation request"6668 behaves like denying the mutation request6669 returns an error6670 user_role: :anonymous, shared_examples_name: "denying the mutation request"6671 behaves like denying the mutation request6672 returns an error6673 without existing packages cleanup policy6674 user_role: :maintainer, shared_examples_name: "accepting the mutation request and creates a policy"6675 behaves like accepting the mutation request and creates a policy6676 returns the created packages cleanup policy6677 user_role: :developer, shared_examples_name: "denying the mutation request"6678 behaves like denying the mutation request6679 returns an error6680 user_role: :reporter, shared_examples_name: "denying the mutation request"6681 behaves like denying the mutation request6682 returns an error6683 user_role: :guest, shared_examples_name: "denying the mutation request"6684 behaves like denying the mutation request6685 returns an error6686 user_role: :anonymous, shared_examples_name: "denying the mutation request"6687 behaves like denying the mutation request6688 returns an error6689Toggling the resolve status of a discussion6690 when the user does not have permission6691 behaves like a mutation that returns a top-level access error6692 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"6693 when user has permission6694 returns the discussion without errors6695 when an error is encountered6696 behaves like a mutation that returns errors in the response6697 is expected to contain exactly "Discussion failed to be resolved"6698Import::ManifestController6699 POST upload6700 with a valid manifest6701 saves the manifest and redirects to the status page6702 with an invalid manifest6703 displays an error6704 when the user cannot create projects in the group6705 displays an error6706 GET status6707 when the data is stored via Gitlab::ManifestImport::Metadata6708 returns variables for json request6709 when the data is stored in the user session6710 returns variables for json request6711Projects::Security::ConfigurationController6712 GET show6713 when user has guest access6714 denies access6715 when user has developer access6716 grants access6717 responds with configuration data json6718 with feature flag unify_security_configuration turned off6719 responds with empty configuration data json6720API::SidekiqMetrics6721 GET sidekiq/*6722 defines the `queue_metrics` endpoint6723 defines the `process_metrics` endpoint6724 defines the `job_stats` endpoint6725 defines the `compound_metrics` endpoint6726Query.project.mergeRequests.pipelines6727 .count6728 produces correct results6729 is scalable6730 .nodes6731 produces correct results6732 is scalable6733 requests merge_request_diffs at most once6734Project noteable notes6735 #index6736 does not set a Gitlab::EtagCaching ETag if there is a note6737 sets a Gitlab::EtagCaching ETag if there is no note6738moving designs6739 the user is not allowed to move designs6740 returns an error6741 the neighbors do not have positions6742 maintains the correct order in the presence of other unpositioned designs6743 behaves like a successful move6744 does not error, and reports the current order6745 moving a design between two others6746 behaves like a successful move6747 does not error, and reports the current order6748 moving a design to the start6749 behaves like a successful move6750 does not error, and reports the current order6751 moving a design to the end6752 behaves like a successful move6753 does not error, and reports the current order6754query Jira projects6755 when user does not have access6756 behaves like unauthorized users cannot read services6757 when anonymous user6758 is expected to equal nil6759 when user developer6760 is expected to equal nil6761 when user can access project services6762 retuns list of jira projects6763 behaves like a working graphql query6764 returns a successful response6765 with pagination6766 when fetching limited number of projects6767 without cursor6768 behaves like fetches first project6769 retuns first project from list of fetched projects6770UsageTrendsMeasurements6771 returns measurement objects6772 with recorded_at filters6773 returns filtered measurement objects6774Projects::IssueLinksController6775 GET #index6776 returns success response6777 POST #create6778 returns success response6779Dashboard::LabelsController6780 #index6781 returns labels with unique titles for projects the user has a relationship with6782 behaves like disabled when using an external authorization service6783 works when the feature is not enabled6784 renders a 404 with a message when the feature is enabled6785GoogleApi::AuthorizationsController6786 GET|POST #callback6787 session key is present6788 session key matches state param6789 sets token and expires_at in session6790 redirects to the URL stored in state param6791 session key does not match state param6792 behaves like access denied6793 returns a 4046794 state param is blank6795 behaves like access denied6796 returns a 4046797 when a Faraday exception occurs6798 sets a flash alert on Faraday::TimeoutError6799 sets a flash alert on Faraday::ConnectionFailed6800 state param is present, but session key is blank6801 behaves like access denied6802 returns a 4046803 user logs in but declines authorizations6804 redirects to error uri6805PlanningHierarchy6806 GET #planning_hierarchy6807 renders planning hierarchy6808Updating an incident timeline event6809 updates the timeline event6810 when note is more than 280 characters long6811 behaves like timeline event mutation responds with validation error6812 responds with a validation error6813JobUnschedule6814 returns an error if the user is not allowed to unschedule the job6815 unschedules a job6816Groups::Settings::RepositoryController6817 POST create_deploy_token6818 a good request6819 creates the deploy token6820 a bad request6821 does not create the deploy token6822 an invalid request6823 raises a validation error6824PagerDuty webhook6825 POST /incidents/pagerduty6826 calls PagerDuty webhook processor with correct parameters6827 responds with 202 Accepted6828Projects::WebIdeSchemasController6829 GET show6830 when branch is invalid6831 returns 4226832 when a valid schema exists6833 returns the schema6834 when an error occurs parsing the schema6835 returns 422 with the error6836Deleting Sidekiq jobs6837 when the user is not an admin6838 behaves like a mutation that returns top-level errors6839 is expected to contain exactly "You must be an admin to use this mutation"6840 when the user is an admin6841 valid request6842 returns info about the deleted jobs6843 when no required params are provided6844 behaves like a mutation that returns errors in the response6845 is expected to contain exactly "No metadata provided"6846 when the queue does not exist6847 behaves like a mutation that returns top-level errors6848 is expected to contain exactly "Queue authorized_projects_2 not found"6849Projects::TerraformController6850 GET index6851 when user is authorized6852 renders content6853 when user is unauthorized6854 shows 4046855 when no user is present6856 shows 4046857Loading a user avatar6858 when logged in6859 only performs three SQL queries6860 when logged out6861 only performs two SQL queries6862SpammableActions::CaptchaCheck::JsonFormatActionsSupport6863 #with_captcha_check_json_format6864 when spammable.render_recaptcha? is true6865 renders json containing spam_action_response_fields6866 when spammable.render_recaptcha? is false6867 yields to block6868RedirectsForMissingPathOnTree6869 #redirect_to_root_path6870 redirects to the tree path with a notice6871API::Geo6872 GET /geo/proxy6873 rejects requests that bypassed gitlab-workhorse6874 with valid auth6875 returns empty data6876Terraform::ServicesController6877 GET /.well-known/terraform.json6878 responds with terraform service discovery6879Knapsack report was generated. Preview:6880{6881 "spec/requests/api/merge_requests_spec.rb": 457.36631543300007,6882 "spec/requests/api/pypi_packages_spec.rb": 132.25277670600008,6883 "spec/requests/api/search_spec.rb": 122.14411992100008,6884 "spec/controllers/projects/merge_requests/diffs_controller_spec.rb": 133.4362683889999,6885 "spec/requests/api/group_clusters_spec.rb": 97.74347696199993,6886 "spec/requests/api/snippets_spec.rb": 55.83549300599998,6887 "spec/requests/api/graphql/project/issues_spec.rb": 55.24363104500003,6888 "spec/controllers/projects/milestones_controller_spec.rb": 51.41772815000013,6889 "spec/controllers/sent_notifications_controller_spec.rb": 43.51288032000002,6890 "spec/requests/api/issues/put_projects_issues_spec.rb": 36.318510550000155,6891 "spec/requests/api/rpm_project_packages_spec.rb": 27.84565861100009,6892 "spec/requests/api/terraform/state_version_spec.rb": 37.206992485,6893 "spec/controllers/import/gitea_controller_spec.rb": 34.51760179000007,6894 "spec/requests/api/go_proxy_spec.rb": 20.330829562999952,6895 "spec/controllers/projects/repositories_controller_spec.rb": 25.9736091689997,6896 "spec/requests/api/resource_access_tokens_spec.rb": 22.064334266999595,6897 "spec/controllers/projects/labels_controller_spec.rb": 19.694691206000243,6898 "spec/requests/api/commit_statuses_spec.rb": 19.4936756029997,6899 "spec/controllers/snippets/notes_controller_spec.rb": 18.623552465999637,6900 "spec/requests/api/suggestions_spec.rb": 20.211273824999807,6901 "spec/requests/api/graphql/container_repository/container_repository_details_spec.rb": 16.60908379700004,6902 "spec/requests/self_monitoring_project_spec.rb": 10.89211955699966,6903 "spec/requests/api/protected_branches_spec.rb": 7.908576714999981,6904 "spec/controllers/projects/settings/operations_controller_spec.rb": 8.14333135700008,6905 "spec/requests/api/topics_spec.rb": 5.075042593000035,6906 "spec/requests/api/graphql/group/dependency_proxy_manifests_spec.rb": 7.837187901000107,6907 "spec/requests/groups/milestones_controller_spec.rb": 9.601878980000038,6908 "spec/controllers/projects/autocomplete_sources_controller_spec.rb": 8.297738654000113,6909 "spec/requests/projects/environments_controller_spec.rb": 8.918989834000058,6910 "spec/controllers/admin/projects_controller_spec.rb": 10.34052624099968,6911 "spec/requests/api/graphql/mutations/timelogs/create_spec.rb": 8.357639048999772,6912 "spec/requests/api/graphql/project_query_spec.rb": 9.099383508999836,6913 "spec/controllers/projects/todos_controller_spec.rb": 5.907430415999897,6914 "spec/requests/api/graphql/group/group_members_spec.rb": 6.282353445999888,6915 "spec/requests/api/graphql/project/milestones_spec.rb": 4.971915041000102,6916 "spec/requests/api/graphql/mutations/merge_requests/set_locked_spec.rb": 9.546988091999992,6917 "spec/controllers/concerns/send_file_upload_spec.rb": 2.0647986140002104,6918 "spec/requests/projects/google_cloud/gcp_regions_controller_spec.rb": 4.946951073000037,6919 "spec/controllers/concerns/controller_with_cross_project_access_check_spec.rb": 3.705676332999701,6920 "spec/requests/projects/harbor/artifacts_controller_spec.rb": 3.4230951660001665,6921 "spec/requests/api/graphql/mutations/todos/mark_all_done_spec.rb": 4.161564645999988,6922 "spec/requests/api/graphql/group/timelogs_spec.rb": 3.3056861139998546,6923 "spec/requests/api/graphql/project/environments_spec.rb": 3.607765980000295,6924 "spec/requests/api/graphql/custom_emoji_query_spec.rb": 3.800302856000144,6925 "spec/requests/api/graphql/project/grafana_integration_spec.rb": 3.0300246560000232,6926 "spec/requests/api/graphql/mutations/ci/job_retry_spec.rb": 3.263862648000213,6927 "spec/requests/api/graphql/mutations/packages/cleanup/policy/update_spec.rb": 3.7077835029999733,6928 "spec/requests/api/graphql/mutations/discussions/toggle_resolve_spec.rb": 2.832758732000002,6929 "spec/controllers/import/manifest_controller_spec.rb": 2.299941504999879,6930 "spec/controllers/projects/security/configuration_controller_spec.rb": 3.3170512040001086,6931 "spec/requests/api/sidekiq_metrics_spec.rb": 2.4767985319999752,6932 "spec/requests/api/graphql/project/merge_request/pipelines_spec.rb": 2.965008750999914,6933 "spec/requests/projects/noteable_notes_spec.rb": 1.864150100000188,6934 "spec/requests/api/graphql/mutations/design_management/move_spec.rb": 3.3870194579999406,6935 "spec/requests/api/graphql/project/jira_projects_spec.rb": 2.88790735900011,6936 "spec/requests/api/graphql/usage_trends_measurements_spec.rb": 0.889801067999997,6937 "spec/controllers/projects/issue_links_controller_spec.rb": 1.9175035260000186,6938 "spec/controllers/dashboard/labels_controller_spec.rb": 1.7479822699997385,6939 "spec/controllers/google_api/authorizations_controller_spec.rb": 1.632648089000213,6940 "spec/requests/concerns/planning_hierarchy_spec.rb": 1.7677316980002615,6941 "spec/requests/api/graphql/mutations/incident_management/timeline_event/update_spec.rb": 2.045116066000446,6942 "spec/requests/api/graphql/mutations/ci/job_unschedule_spec.rb": 1.571762913999919,6943 "spec/controllers/groups/settings/repository_controller_spec.rb": 1.9864707510000699,6944 "spec/requests/projects/incident_management/pagerduty_incidents_spec.rb": 0.6768098059997101,6945 "spec/controllers/projects/web_ide_schemas_controller_spec.rb": 1.708394582999972,6946 "spec/requests/api/graphql/mutations/admin/sidekiq_queues/delete_jobs_spec.rb": 1.4859254010002587,6947 "spec/controllers/projects/terraform_controller_spec.rb": 1.1626252959999874,6948 "spec/requests/user_avatar_spec.rb": 0.9059666220000508,6949 "spec/controllers/concerns/spammable_actions/captcha_check/json_format_actions_support_spec.rb": 0.8801253850001558,6950 "spec/controllers/concerns/redirects_for_missing_path_on_tree_spec.rb": 0.9333297779999157,6951 "spec/requests/api/geo_spec.rb": 0.29627276100018207,6952 "spec/requests/terraform/services_controller_spec.rb": 0.313408979000087136953}6954Knapsack global time execution for tests: 27m 31s6955Pending: (Failures listed here are expected and do not affect your suite's status)6956 1) getting an issue list for a project N+1 query checks when requesting `user_notes_count` prevents N+1 queries6957 # around hook at ./spec/support/flaky_tests.rb:21 did not execute the example6958 # ./spec/support/shared_examples/graphql/n_plus_one_query_examples.rb:46959 2) getting an issue list for a project N+1 query checks when requesting participants prevents N+1 queries6960 # around hook at ./spec/support/flaky_tests.rb:21 did not execute the example6961 # ./spec/support/shared_examples/graphql/n_plus_one_query_examples.rb:46962 3) getting project information with timelog categories for N+1 queries avoids N+1 database queries6964 Failure/Error: expect { run_with_clean_state(query, context: ctx) }.not_to exceed_query_limit(control)6965 Expected a maximum of 7 queries, got 11:6966 Query Diff:6967 -----------6968 SELECT "namespaces"."id", "namespaces"."name", "namespaces"."path", "namespaces"."owner_id", "namespaces"."created_at", "namespaces"."updated_at", "namespaces"."type", "namespaces"."description", "namespaces"."avatar", "namespaces"."membership_lock", "namespaces"."share_with_group_lock", "namespaces"."visibility_level", "namespaces"."request_access_enabled", "namespaces"."ldap_sync_status", "namespaces"."ldap_sync_error", "namespaces"."ldap_sync_last_update_at", "namespaces"."ldap_sync_last_successful_update_at", "namespaces"."ldap_sync_last_sync_at", "namespaces"."description_html", "namespaces"."lfs_enabled", "namespaces"."parent_id", "namespaces"."shared_runners_minutes_limit", "namespaces"."repository_size_limit", "namespaces"."require_two_factor_authentication", "namespaces"."two_factor_grace_period", "namespaces"."cached_markdown_version", "namespaces"."project_creation_level", "namespaces"."runners_token", "namespaces"."file_template_project_id", "namespaces"."saml_discovery_token", "namespaces"."runners_token_encrypted", "namespaces"."custom_project_templates_group_id", "namespaces"."auto_devops_enabled", "namespaces"."extra_shared_runners_minutes_limit", "namespaces"."last_ci_minutes_notification_at", "namespaces"."last_ci_minutes_usage_notification_level", "namespaces"."subgroup_creation_level", "namespaces"."emails_disabled", "namespaces"."max_pages_size", "namespaces"."max_artifacts_size", "namespaces"."mentions_disabled", "namespaces"."default_branch_protection", "namespaces"."unlock_membership_to_ldap", "namespaces"."max_personal_access_token_lifetime", "namespaces"."push_rule_id", "namespaces"."shared_runners_enabled", "namespaces"."allow_descendants_override_disabled_shared_runners", "namespaces"."traversal_ids" FROM "namespaces"...6969 -- (expected: 0, got: 1)6970 WHERE "namespaces"."type" = 'Group' AND "namespaces"."id" = 2056 LIMIT 16971 -- (expected: 0, got: 1)6972 WHERE "namespaces"."id" = 2056 LIMIT 16973 -- (expected: 0, got: 1)6974 WHERE "namespaces"."type" = 'Project' AND "namespaces"."id" = 2057 LIMIT 16975 SELECT "namespace_bans".* FROM "namespace_bans"...6976 -- (expected: 1, got: 0)6977 WHERE "namespace_bans"."user_id" = 14236978 SELECT MAX("project_authorizations"."access_level") AS maximum_access_level, "project_authorizations"."user_id" AS project_authorizations_user_id FROM "project_authorizations"...6979 -- (expected: 0, got: 1)6980 WHERE "project_authorizations"."project_id" = 473 AND "project_authorizations"."user_id" = 1423 GROUP BY "project_authorizations"."user_id"6981 SELECT "timelog_categories".* FROM "timelog_categories"...6982 -- (expected: 0, got: 1)6983 WHERE "timelog_categories"."namespace_id" = 2057 ORDER BY "timelog_categories"."id" DESC LIMIT 1016984 # ./spec/requests/api/graphql/project_query_spec.rb:285:in `block (4 levels) in <top (required)>'6985 # ./spec/spec_helper.rb:412:in `block (3 levels) in <top (required)>'6986 # ./spec/support/sidekiq_middleware.rb:18:in `with_sidekiq_server_middleware'6987 # ./spec/spec_helper.rb:404:in `block (2 levels) in <top (required)>'6988 # ./spec/spec_helper.rb:400:in `block (3 levels) in <top (required)>'6989 # ./lib/gitlab/application_context.rb:59:in `with_raw_context'6990 # ./spec/spec_helper.rb:400:in `block (2 levels) in <top (required)>'6991 # ./spec/spec_helper.rb:240:in `block (2 levels) in <top (required)>'6992 # ./spec/support/system_exit_detected.rb:7:in `block (2 levels) in <top (required)>'6993 # ./spec/support/flaky_tests.rb:27:in `block (2 levels) in <top (required)>'6994 # ./spec/support/database/prevent_cross_joins.rb:106:in `block (3 levels) in <top (required)>'6995 # ./spec/support/database/prevent_cross_joins.rb:60:in `with_cross_joins_prevented'6996 # ./spec/support/database/prevent_cross_joins.rb:106:in `block (2 levels) in <top (required)>'6997Finished in 27 minutes 35 seconds (files took 50.86 seconds to load)69982500 examples, 0 failures, 3 pending6999Randomized with seed 480587000[TEST PROF INFO] Time spent in factories: 11:44.561 (42.44% of total time)7001RSpec exited with 0.7002No examples to retry, congrats!7004Not uploading cache ruby-gems-debian-bullseye-ruby-2.7-16 due to policy7005Not uploading cache gitaly-ruby-gems-debian-bullseye-ruby-2.7-16 due to policy7007Uploading artifacts...7008coverage/: found 5 matching files and directories 7009crystalball/: found 2 matching files and directories 7010WARNING: deprecations/: no matching files. Ensure that the artifact path is relative to the working directory 7011knapsack/: found 3 matching files and directories 7012rspec/: found 13 matching files and directories 7013WARNING: tmp/capybara/: no matching files. Ensure that the artifact path is relative to the working directory 7014log/*.log: found 16 matching files and directories 7015WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/3318206507/artifacts?artifact_format=zip&artifact_type=archive&expire_in=31d new-url=https://gitlab.com7016WARNING: Retrying... context=artifacts-uploader error=request redirected7017Uploading artifacts as "archive" to coordinator... 201 Created id=3318206507 responseStatus=201 Created token=qTdz9bAX7018Uploading artifacts...7019rspec/junit_rspec.xml: found 1 matching files and directories 7020WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/3318206507/artifacts?artifact_format=gzip&artifact_type=junit&expire_in=31d new-url=https://gitlab.com7021WARNING: Retrying... context=artifacts-uploader error=request redirected7022Uploading artifacts as "junit" to coordinator... 201 Created id=3318206507 responseStatus=201 Created token=qTdz9bAX7024Job succeeded