rspec integration pg12 3/12
Passed Started
by
@DylanGriffith

Dylan Griffith
1Running with gitlab-runner 15.6.0~beta.186.ga889181a (a889181a)2 on blue-4.private.runners-manager.gitlab.com/gitlab.com/gitlab-org tDjA3Sp33 feature flags: FF_USE_FASTZIP:true, FF_USE_IMPROVED_URL_MASKING: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:56e1d6dc77b242b5f4f91e7319f0740f7ab8bdf41023fd5d703f412ac87976f5 for postgres:12 with digest postgres@sha256:93fd73e2322241eec204dac54b316bf429670ff6e5292e16f9e2fd3a3374a713 ...10Starting service redis:6.0-alpine ...11Pulling docker image redis:6.0-alpine ...12Using docker image sha256:83c577984741ab5b2e78640e0524852998d539ea3961e6d56680f336371f5c83 for redis:6.0-alpine with digest redis@sha256:459e91c5fe54134da1601ef85a4d9bc40c953862737fdfbe8f3c2b2a3eb6b20b ...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-tdja3sp3-project-278964-concurrent-0 via runner-tdja3sp3-private-1667779802-4715096e...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: 119894, done. 25remote: Counting objects: 100% (119894/119894), done. 26remote: Compressing objects: 100% (78952/78952), done. 27remote: Total 119894 (delta 50153), reused 83076 (delta 36611), pack-reused 0 28Receiving objects: 100% (119894/119894), 110.17 MiB | 35.63 MiB/s, done.29Resolving deltas: 100% (50153/50153), done.31 * [new ref] refs/pipelines/687019226 -> refs/pipelines/68701922632 * [new branch] master -> origin/master33Checking out a134b2ce as master...34Skipping Git submodules setup35$ git remote set-url origin "${CI_REPOSITORY_URL}"37Checking cache for ruby-gems-debian-bullseye-ruby-2.7-16...38cache.zip is up to date 39Successfully extracted cache40Checking cache for gitaly-ruby-gems-debian-bullseye-ruby-2.7-16...41cache.zip is up to date 42Successfully extracted cache44Downloading artifacts for compile-test-assets (3281613120)...45Downloading artifacts from coordinator... ok id=3281613120 responseStatus=200 OK token=CNfVhq1V46Downloading artifacts for detect-tests (3281613150)...47Downloading artifacts from coordinator... ok id=3281613150 responseStatus=200 OK token=CNfVhq1V48Downloading artifacts for retrieve-tests-metadata (3281613152)...49Downloading artifacts from coordinator... ok id=3281613152 responseStatus=200 OK token=CNfVhq1V50Downloading artifacts for setup-test-env (3281613137)...51Downloading artifacts from coordinator... ok id=3281613137 responseStatus=200 OK token=CNfVhq1V53Using 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 ...54$ echo $FOSS_ONLY55$ [ "$FOSS_ONLY" = "1" ] && rm -rf ee/ qa/spec/ee/ qa/qa/specs/features/ee/ qa/qa/ee/ qa/qa/ee.rb56$ export GOPATH=$CI_PROJECT_DIR/.go57$ mkdir -p $GOPATH58$ source scripts/utils.sh59$ source scripts/prepare_build.sh676Using decomposed database config (config/database.yml.decomposed-postgresql)677$ setup_db_user_only678CREATE ROLE679GRANT680==> 'setup_db_user_only' succeeded in 0 seconds.681$ bundle exec rake db:drop db:create db:schema:load db:migrate682Dropped database 'gitlabhq_test'683Dropped database 'gitlabhq_test_ci'684Dropped database 'gitlabhq_geo_test'685Created database 'gitlabhq_test'686Created database 'gitlabhq_test_ci'687Created database 'gitlabhq_geo_test'688==> 'bundle exec rake db:drop db:create db:schema:load db:migrate' succeeded in 29 seconds.689$ setup_db_praefect690SELECT pg_catalog.set_config('search_path', '', false);691CREATE DATABASE praefect_test ENCODING 'UTF8';692==> 'setup_db_praefect' succeeded in 1 seconds.693$ source ./scripts/rspec_helpers.sh694$ run_timed_command "gem install knapsack --no-document"695$ gem install knapsack --no-document696Successfully installed knapsack-4.0.06971 gem installed698==> 'gem install knapsack --no-document' succeeded in 0 seconds.699$ echo -e "\e[0Ksection_start:`date +%s`:gitaly-test-spawn[collapsed=true]\r\e[0KStarting Gitaly"813$ rspec_paralellized_job "--tag ~quarantine --tag ~level:migration"814SKIP_FLAKY_TESTS_AUTOMATICALLY: true815RETRY_FAILED_TESTS_IN_NEW_PROCESS: true816KNAPSACK_GENERATE_REPORT: true817FLAKY_RSPEC_GENERATE_REPORT: true818KNAPSACK_TEST_FILE_PATTERN: spec/{commands,controllers,mailers,requests}{,/**/}*_spec.rb819KNAPSACK_LOG_LEVEL: debug820KNAPSACK_REPORT_PATH: knapsack/rspec_integration_pg12_3_12_report.json821FLAKY_RSPEC_SUITE_REPORT_PATH: rspec/flaky/report-suite.json822FLAKY_RSPEC_REPORT_PATH: rspec/flaky/all_rspec_integration_pg12_3_12_report.json823NEW_FLAKY_RSPEC_REPORT_PATH: rspec/flaky/new_rspec_integration_pg12_3_12_report.json824SKIPPED_FLAKY_TESTS_REPORT_PATH: rspec/flaky/skipped_flaky_tests_rspec_integration_pg12_3_12_report.txt825RETRIED_TESTS_REPORT_PATH: rspec/flaky/retried_tests_rspec_integration_pg12_3_12_report.txt826CRYSTALBALL: 827Knapsack report generator started!828WARNING: Shared example group 'creates terraform module package files' has been previously defined at:829 /builds/gitlab-org/gitlab/spec/support/shared_examples/requests/api/terraform/modules/v1/packages_shared_examples.rb:199830...and you are now defining it at:831 /builds/gitlab-org/gitlab/spec/support/shared_examples/requests/api/terraform/modules/v1/packages_shared_examples.rb:199832The new definition will overwrite the original one.833WARNING: Shared example group 'creates terraform module package files' has been previously defined at:834 /builds/gitlab-org/gitlab/spec/support/shared_examples/requests/api/terraform/modules/v1/packages_shared_examples.rb:199835...and you are now defining it at:836 /builds/gitlab-org/gitlab/spec/support/shared_examples/requests/api/terraform/modules/v1/packages_shared_examples.rb:199837The new definition will overwrite the original one.838WARNING: Shared example group 'creates terraform module package files' has been previously defined at:839 /builds/gitlab-org/gitlab/spec/support/shared_examples/requests/api/terraform/modules/v1/packages_shared_examples.rb:199840...and you are now defining it at:841 /builds/gitlab-org/gitlab/spec/support/shared_examples/requests/api/terraform/modules/v1/packages_shared_examples.rb:199842The new definition will overwrite the original one.843WARNING: Shared example group 'creates terraform module package files' has been previously defined at:844 /builds/gitlab-org/gitlab/spec/support/shared_examples/requests/api/terraform/modules/v1/packages_shared_examples.rb:199845...and you are now defining it at:846 /builds/gitlab-org/gitlab/spec/support/shared_examples/requests/api/terraform/modules/v1/packages_shared_examples.rb:199847The new definition will overwrite the original one.848WARNING: Shared example group 'creates terraform module package files' has been previously defined at:849 /builds/gitlab-org/gitlab/spec/support/shared_examples/requests/api/terraform/modules/v1/packages_shared_examples.rb:199850...and you are now defining it at:851 /builds/gitlab-org/gitlab/spec/support/shared_examples/requests/api/terraform/modules/v1/packages_shared_examples.rb:199852The new definition will overwrite the original one.853Run options: exclude {:quarantine=>true, :level=>"migration"}854Test environment set up in 1.607724885 seconds855API::MergeRequests856 route shadowing857 does not occur858 GET /merge_requests859 when unauthenticated860 returns an array of all merge requests861 returns authentication error without any scope862 returns authentication error when scope is assigned-to-me863 returns authentication error when scope is assigned_to_me864 returns authentication error when scope is created-by-me865 behaves like issuable anonymous search866 with anonymous user867 with disable_anonymous_search disabled868 returns issuables matching given search string for title869 returns issuables matching given search string for description870 with disable_anonymous_search enabled871 returns 422 error872 when authenticated873 returns an array of all merge requests except unauthorized ones874 returns an array of no merge_requests when wip=yes875 returns an array of no merge_requests when wip=no876 does not return unauthorized merge requests877 returns an array of merge requests created by current user if no scope is given878 returns an array of merge requests assigned to the given user879 returns an array of merge requests with no assignee880 returns an array of merge requests with any assignee881 returns an array of merge requests assigned to me882 returns an array of merge requests assigned to me (kebab-case)883 returns an array of merge requests created by me884 returns an array of merge requests created by me (kebab-case)885 returns merge requests reacted by the authenticated user by the given emoji886 returns merge requests created before a specific date887 returns merge requests created after a specific date888 returns merge requests updated before a specific date889 returns merge requests updated after a specific date890 filter by author891 when only `author_id` is passed892 returns an array of merge requests authored by the given user893 when only `author_username` is passed894 returns an array of merge requests authored by the given user(by `author_username`)895 when both `author_id` and `author_username` are passed896 returns a 400897 filter by reviewer898 with reviewer_id899 with an id900 returns review requested merge requests for the given user901 with Any902 returns review requested merge requests for any user903 with None904 returns merge requests that has no assigned reviewers905 with reviewer_username906 returns review requested merge requests for the given user907 with both reviewer_id and reviewer_username908 returns a 400909 source_branch param910 returns merge requests with the given source branch911 target_branch param912 returns merge requests with the given target branch913 search params914 returns merge requests matching given search string for title915 returns merge requests matching given search string for title and scoped in title916 returns an empty array if no merge request matches given search string for description and scoped in title917 returns merge requests for project matching given search string for description918 state param919 returns merge requests with the given state920 GET /projects/:id/merge_requests921 returns 404 for non public projects922 returns an array of no merge_requests when wip=yes923 returns merge_request by "iids" array924 behaves like merge requests list925 when unauthenticated926 returns merge requests for public projects927 behaves like issuable anonymous search928 with anonymous user929 with disable_anonymous_search disabled930 returns issuables matching given search string for title931 returns issuables matching given search string for description932 with disable_anonymous_search enabled933 returns 422 error934 when authenticated935 returns an array of all merge_requests using simple mode936 returns an array of all merge_requests937 returns an array of open merge_requests938 returns an array of closed merge_requests939 returns an array of merged merge_requests940 matches V4 response schema941 returns an empty array if no issue matches milestone942 returns an empty array if milestone does not exist943 returns an array of merge requests in given milestone944 returns an array of merge requests matching state in milestone945 returns an array of labeled merge requests that are merged for a milestone946 when merge request is unchecked947 with merge status recheck projection948 checks mergeability asynchronously949 without merge status recheck projection950 does not enqueue a merge status recheck951 with labels952 returns an array of all merge_requests953 with labels_details954 returns labels with details955 with labels956 returns an array of labeled merge requests957 returns an array of labeled merge requests where all labels match958 returns an empty array if no merge request matches labels959 returns an array of labeled merge requests where all labels match960 returns an array of merge requests with any label when filtering by any label961 returns an array of merge requests with any label when filtering by any label962 returns an array of merge requests with any label when filtering by any label963 returns an array of merge requests without a label when filtering by no label964 with ordering965 returns an array of merge_requests in ascending order966 returns an array of merge_requests in descending order967 returns an array of merge_requests ordered by updated_at968 returns an array of merge_requests ordered by created_at969 2 merge requests with equal created_at970 page breaks first page correctly971 page breaks second page correctly972 returns an array of merge_requests ordered by title973 asc when requested974 desc when requested975 NOT params976 returns merge requests without any of the labels given977 returns merge requests without any of the milestones given978 returns merge requests without the author given979 returns merge requests without the assignee given980 filter by reviewer981 with reviewer_id982 with an id983 returns merge requests that do not have the given reviewer984 with Any985 returns a 400986 with None987 returns a 400988 with reviewer_username989 returns merge requests that do not have the given reviewer990 when both reviewer_id and reviewer_username991 returns a 400992 source_branch param993 returns merge requests with the given source branch994 target_branch param995 returns merge requests with the given target branch996 caching997 when it is cached998 behaves like a cached MergeRequest api request999 serializes merge request1000 when it is not cached1001 when the status changes1002 behaves like a non-cached MergeRequest api request1003 serializes merge request1004 when the label changes1005 behaves like a non-cached MergeRequest api request1006 serializes merge request1007 when the assignees change1008 behaves like a non-cached MergeRequest api request1009 serializes merge request1010 when the reviewers change1011 behaves like a non-cached MergeRequest api request1012 serializes merge request1013 when another user requests1014 behaves like a non-cached MergeRequest api request1015 serializes merge request1016 when filtering by deployments1017 supports getting merge requests deployed to an environment1018 does not return merge requests for an environment without deployments1019 supports getting merge requests deployed after a date1020 does not return merge requests not deployed after a given date1021 supports getting merge requests deployed before a date1022 does not return merge requests not deployed before a given date1023 when user is an inherited member from the group1024 and user is a guest1025 when project is public with private merge requests1026 behaves like user cannot view merge requests1027 returns 403 forbidden1028 when project is private1029 behaves like user cannot view merge requests1030 returns 403 forbidden1031 GET /groups/:id/merge_requests1032 behaves like merge requests list1033 when unauthenticated1034 returns merge requests for public projects1035 behaves like issuable anonymous search1036 with anonymous user1037 with disable_anonymous_search disabled1038 returns issuables matching given search string for title1039 returns issuables matching given search string for description1040 with disable_anonymous_search enabled1041 returns 422 error1042 when authenticated1043 returns an array of all merge_requests using simple mode1044 returns an array of all merge_requests1045 returns an array of open merge_requests1046 returns an array of closed merge_requests1047 returns an array of merged merge_requests1048 matches V4 response schema1049 returns an empty array if no issue matches milestone1050 returns an empty array if milestone does not exist1051 returns an array of merge requests in given milestone1052 returns an array of merge requests matching state in milestone1053 returns an array of labeled merge requests that are merged for a milestone1054 when merge request is unchecked1055 with merge status recheck projection1056 checks mergeability asynchronously1057 without merge status recheck projection1058 does not enqueue a merge status recheck1059 with labels1060 returns an array of all merge_requests1061 with labels_details1062 returns labels with details1063 with labels1064 returns an array of labeled merge requests1065 returns an array of labeled merge requests where all labels match1066 returns an empty array if no merge request matches labels1067 returns an array of labeled merge requests where all labels match1068 returns an array of merge requests with any label when filtering by any label1069 returns an array of merge requests with any label when filtering by any label1070 returns an array of merge requests with any label when filtering by any label1071 returns an array of merge requests without a label when filtering by no label1072 with ordering1073 returns an array of merge_requests in ascending order1074 returns an array of merge_requests in descending order1075 returns an array of merge_requests ordered by updated_at1076 returns an array of merge_requests ordered by created_at1077 2 merge requests with equal created_at1078 page breaks first page correctly1079 page breaks second page correctly1080 returns an array of merge_requests ordered by title1081 asc when requested1082 desc when requested1083 NOT params1084 returns merge requests without any of the labels given1085 returns merge requests without any of the milestones given1086 returns merge requests without the author given1087 returns merge requests without the assignee given1088 filter by reviewer1089 with reviewer_id1090 with an id1091 returns merge requests that do not have the given reviewer1092 with Any1093 returns a 4001094 with None1095 returns a 4001096 with reviewer_username1097 returns merge requests that do not have the given reviewer1098 when both reviewer_id and reviewer_username1099 returns a 4001100 source_branch param1101 returns merge requests with the given source branch1102 target_branch param1103 returns merge requests with the given target branch1104 when have subgroups1105 behaves like merge requests list1106 when unauthenticated1107 returns merge requests for public projects1108 behaves like issuable anonymous search1109 with anonymous user1110 with disable_anonymous_search disabled1111 returns issuables matching given search string for title1112 returns issuables matching given search string for description1113 with disable_anonymous_search enabled1114 returns 422 error1115 when authenticated1116 returns an array of all merge_requests using simple mode1117 returns an array of all merge_requests1118 returns an array of open merge_requests1119 returns an array of closed merge_requests1120 returns an array of merged merge_requests1121 matches V4 response schema1122 returns an empty array if no issue matches milestone1123 returns an empty array if milestone does not exist1124 returns an array of merge requests in given milestone1125 returns an array of merge requests matching state in milestone1126 returns an array of labeled merge requests that are merged for a milestone1127 when merge request is unchecked1128 with merge status recheck projection1129 checks mergeability asynchronously1130 without merge status recheck projection1131 does not enqueue a merge status recheck1132 with labels1133 returns an array of all merge_requests1134 with labels_details1135 returns labels with details1136 with labels1137 returns an array of labeled merge requests1138 returns an array of labeled merge requests where all labels match1139 returns an empty array if no merge request matches labels1140 returns an array of labeled merge requests where all labels match1141 returns an array of merge requests with any label when filtering by any label1142 returns an array of merge requests with any label when filtering by any label1143 returns an array of merge requests with any label when filtering by any label1144 returns an array of merge requests without a label when filtering by no label1145 with ordering1146 returns an array of merge_requests in ascending order1147 returns an array of merge_requests in descending order1148 returns an array of merge_requests ordered by updated_at1149 returns an array of merge_requests ordered by created_at1150 2 merge requests with equal created_at1151 page breaks first page correctly1152 page breaks second page correctly1153 returns an array of merge_requests ordered by title1154 asc when requested1155 desc when requested1156 NOT params1157 returns merge requests without any of the labels given1158 returns merge requests without any of the milestones given1159 returns merge requests without the author given1160 returns merge requests without the assignee given1161 filter by reviewer1162 with reviewer_id1163 with an id1164 returns merge requests that do not have the given reviewer1165 with Any1166 returns a 4001167 with None1168 returns a 4001169 with reviewer_username1170 returns merge requests that do not have the given reviewer1171 when both reviewer_id and reviewer_username1172 returns a 4001173 source_branch param1174 returns merge requests with the given source branch1175 target_branch param1176 returns merge requests with the given target branch1177 #to_reference1178 exposes reference path in context of group1179 referencing from parent group1180 exposes reference path in context of parent group1181 with archived projects1182 returns an array excluding merge_requests from archived projects1183 with non_archived param set as false1184 returns an array including merge_requests from archived projects1185 GET /projects/:id/merge_requests/:merge_request_iid1186 matches json schema1187 exposes known attributes1188 exposes description and title html when render_html is true1189 exposes rebase_in_progress when include_rebase_in_progress is true1190 returns the commits behind the target branch when include_diverged_commits_count is present1191 returns a 404 error if merge_request_iid not found1192 returns a 404 error if merge_request `id` is used instead of iid1193 indicates if a user cannot merge the MR1194 returns `checking` as its merge_status instead of `cannot_be_merged_rechecking`1195 when author is not a member without any merged merge requests1196 exposes first_contribution as true1197 when merge request author has only guest access1198 behaves like rejects user from accessing merge request info1199 returns a 403 error1200 merge_request_metrics1201 has fields from merge request metrics1202 returns correct values1203 merge_user1204 when MR is set to MWPS1205 returns user who set MWPS1206 when MR is already merged1207 returns user who actually merged1208 head_pipeline1209 when user can read the pipeline1210 exposes pipeline information1211 when user can not read the pipeline1212 does not expose pipeline information1213 Draft1214 returns merge request1215 when a merge request has more than the changes limit1216 returns a string indicating that more changes were made1217 for forked projects1218 includes the `allow_collaboration` field1219 when merge request is unchecked1220 checks mergeability asynchronously1221 GET /projects/:id/merge_requests/:merge_request_iid/participants1222 behaves like issuable participants endpoint1223 returns participants1224 returns a 404 when iid does not exist1225 returns a 404 when id is used instead of iid1226 when merge request author has only guest access1227 behaves like rejects user from accessing merge request info1228 returns a 403 error1229 GET /projects/:id/merge_requests/:merge_request_iid/reviewers1230 returns reviewers1231 returns a 404 when iid does not exist1232 returns a 404 when id is used instead of iid1233 when merge request author has only guest access1234 behaves like rejects user from accessing merge request info1235 returns a 403 error1236 GET /projects/:id/merge_requests/:merge_request_iid/commits1237 returns a 200 when merge request is valid1238 returns a 404 when merge_request_iid not found1239 returns a 404 when merge_request id is used instead of iid1240 when merge request author has only guest access1241 behaves like rejects user from accessing merge request info1242 returns a 403 error1243 GET /projects/:id/merge_requests/:merge_request_iid/:context_commits1244 returns a 200 when merge request is valid1245 returns a 404 when merge_request_iid not found1246 GET /projects/:id/merge_requests/:merge_request_iid/changes1247 returns a 404 when merge_request_iid not found1248 returns a 404 when merge_request id is used instead of iid1249 returns the overflow status as false1250 when merge request author has only guest access1251 behaves like rejects user from accessing merge request info1252 returns a 403 error1253 behaves like find an existing merge request1254 returns the change information of the merge_request1255 behaves like accesses diffs via raw_diffs1256 as expected1257 when using DB-backed diffs1258 accesses diffs via DB-backed diffs.diffs1259 behaves like find an existing merge request1260 returns the change information of the merge_request1261 when the diff_collection has overflowed its size limits1262 returns the overflow status as true1263 when access_raw_diffs is true1264 behaves like accesses diffs via raw_diffs1265 as expected1266 GET /projects/:id/merge_requests/:merge_request_iid/pipelines1267 when authorized1268 returns a paginated array of corresponding pipelines1269 exposes basic attributes1270 returns 404 if MR does not exist1271 when unauthorized1272 returns 4031273 when merge request author has only guest access1274 behaves like rejects user from accessing merge request info1275 returns a 403 error1276 POST /projects/:id/merge_requests/:merge_request_iid/pipelines1277 when authorized1278 creates and returns the new Pipeline1279 when unauthorized1280 responds with a blank 4041281 when the merge request does not exist1282 responds with a blank 4041283 when the .gitlab-ci.yml file is invalid1284 creates a failed pipeline1285 POST /projects/:id/merge_requests1286 support for deprecated assignee_id1287 creates a new merge request1288 creates a new merge request when assignee_id is empty1289 filters assignee_id of unauthorized user1290 single assignee restrictions1291 creates a new project merge request with no more than one assignee1292 accepts reviewer_ids1293 creates a new merge request with a reviewer1294 creates a new merge request with no reviewer1295 between branches projects1296 returns 422 when source_branch equals target_branch1297 returns 400 when source_branch is missing1298 returns 400 when target_branch is missing1299 returns 400 when title is missing1300 different labels1301 creates merge request with special label names1302 creates merge request with special label names as array1303 empty label param does not add any labels1304 empty label param as array does not add any labels, but only explicitly as json1305 empty label param as array, does not add any labels1306 array with one empty string element does not add labels1307 array with multiple empty string elements, does not add labels1308 behaves like creates merge request with labels1309 returns merge_request1310 behaves like creates merge request with labels1311 returns merge_request1312 behaves like creates merge request with labels1313 returns merge_request1314 with existing MR1315 returns 409 when MR already exists for source/target1316 accepts remove_source_branch parameter1317 sets force_remove_source_branch to false1318 sets force_remove_source_branch to true1319 forked projects1320 returns merge_request1321 does not return 422 when source_branch equals target_branch1322 returns 403 when target project has disabled merge requests1323 returns 400 when source_branch is missing1324 returns 400 when target_branch is missing1325 returns 400 when title is missing1326 allows setting `allow_collaboration`1327 returns 201 when target_branch is specified and for the same project1328 when target_branch and target_project_id is specified1329 returns 422 if targeting a different fork1330 returns 403 if targeting a different fork which user can not access1331 when user is an inherited member from the group1332 and user is a guest1333 when project is public with private merge requests1334 behaves like user cannot create merge requests1335 returns 403 forbidden1336 when project is private1337 behaves like user cannot create merge requests1338 returns 403 forbidden1339 PUT /projects/:id/merge_requests/:merge_request_iid1340 behaves like issuable update endpoint1341 PUT /projects/:id/issues/:issue_iid1342 clears labels when labels param is nil1343 updates the issuable with labels param as array1344 when only assignee_ids are provided1345 sets the assignees1346 creates appropriate system notes1347 triggers webhooks1348 when assignee_id=user2.id1349 sets the assignees1350 when assignee_id=01351 clears the assignees1352 creates appropriate system notes1353 when only assignee_ids are provided, and the list is empty1354 clears the assignees1355 when only assignee_ids are provided, and the list contains the sentinel value1356 clears the assignees1357 when only assignee_id=01358 clears the assignees1359 accepts reviewer_ids1360 adds a reviewer to the existing merge request1361 removes a reviewer from the existing merge request1362 POST /projects/:id/merge_requests/:merge_request_iid/context_commits1363 when authenticated1364 creates and returns the new context commit1365 returns 400 when one or more shas are invalid1366 returns 400 when the commits are empty1367 returns 400 when params is empty1368 returns 403 when creating new context commit for guest role1369 returns 403 when creating new context commit for reporter role1370 doesnt create when its already created1371 returns 400 when the context commit is already created1372 when unauthenticated1373 returns 401 if user tries to create context commits1374 DELETE /projects/:id/merge_requests/:merge_request_iid1375 when the user is developer1376 denies the deletion of the merge request1377 when the user is project owner1378 destroys the merge request owners can destroy1379 returns 404 for an invalid merge request IID1380 returns 404 if the merge request id is used instead of iid1381 behaves like 412 response1382 for a modified ressource1383 returns 412 with a JSON error1384 for an unmodified ressource1385 returns 204 with an empty body1386 DELETE /projects/:id/merge_requests/:merge_request_iid/context_commits1387 when authenticated1388 deletes context commit1389 returns 400 when invalid commit sha is passed1390 returns 400 when commits is empty1391 returns 400 when no params is passed1392 returns 403 when deleting existing context commit for guest role1393 returns 403 when deleting existing context commit for reporter role1394 when unauthenticated1395 returns 401, unauthorised error1396 PUT /projects/:id/merge_requests/:merge_request_iid/merge1397 returns merge_request in case of success1398 returns 422 if branch can't be merged1399 returns 405 if merge_request is not open1400 returns 405 if merge_request is a draft1401 returns 405 if the build failed for a merge request that requires success1402 returns 401 if user has no permissions to merge1403 returns 409 if the SHA parameter doesn't match1404 succeeds if the SHA parameter matches1405 updates the MR's squash attribute1406 does not merge if merge_when_pipeline_succeeds is passed and the pipeline has failed1407 merges if the head pipeline already succeeded and `merge_when_pipeline_succeeds` is passed1408 enables merge when pipeline succeeds if the pipeline is active1409 enables merge when pipeline succeeds if the pipeline is active and only_allow_merge_if_pipeline_succeeds is true1410 returns 404 for an invalid merge request IID1411 returns 404 if the merge request id is used instead of iid1412 when the merge request fails to merge1413 returns 4221414 the squash_commit_message param1415 results in a specific squash commit message when set1416 results in a default squash commit message when not set1417 the should_remove_source_branch param1418 removes the source branch when set1419 with a merge request that has force_remove_source_branch enabled1420 removes the source branch1421 does not remove the source branch1422 performing a ff-merge with squash1423 records the squash commit SHA and returns it in the response1424 GET /projects/:id/merge_requests/:merge_request_iid/merge_ref1425 returns the generated ID from the merge service in case of success1426 when merge-ref is not synced with merge status1427 returns 200 if MR can be merged1428 returns 400 if MR cannot be merged1429 when user has no access to the MR1430 returns 4041431 when invalid merge request IID1432 returns 4041433 when merge request ID is used instead IID1434 returns 4041435 PUT /projects/:id/merge_requests/:merge_request_iid1436 updates title and returns merge_request1437 updates description and returns merge_request1438 updates milestone_id and returns merge_request1439 updates squash and returns merge_request1440 updates target_branch and returns merge_request1441 returns merge_request that removes the source branch1442 filters assignee_id of unauthorized user1443 does not update state when title is empty1444 does not update state when target_branch is empty1445 returns 404 for an invalid merge request IID1446 returns 404 if the merge request id is used instead of iid1447 updates force_remove_source_branch properly1448 sets to false1449 sets to true1450 with a merge request across forks1451 is true for an authorized user1452 is false for an unauthorized user1453 to close a MR1454 returns merge_request1455 forked projects1456 when source project is public (i.e. MergeRequest#collaborative_push_possible? == true)1457 behaves like update of allow_collaboration and allow_maintainer_to_push1458 attempts to update allow_collaboration to true and returns true for `allow_collaboration`1459 attempts to update allow_maintainer_to_push to true and returns true for `allow_collaboration`1460 when source project is private (i.e. MergeRequest#collaborative_push_possible? == false)1461 behaves like update of allow_collaboration and allow_maintainer_to_push1462 attempts to update allow_collaboration to true and returns false for `allow_collaboration`1463 attempts to update allow_maintainer_to_push to true and returns false for `allow_collaboration`1464 when updating labels1465 allows special label names1466 also accepts labels as an array1467 empty label param removes labels1468 label param as empty array, but only explicitly as json, removes labels1469 empty label as array, removes labels1470 array with one empty string element removes labels1471 array with multiple empty string elements, removes labels1472 with labels1473 when adding labels, keeps existing labels and adds new1474 when removing labels, only removes those specified1475 when removing all labels, keeps no labels1476 GET :id/merge_requests/:merge_request_iid/closes_issues1477 returns the issue that will be closed on merge1478 returns an empty array when there are no issues to be closed1479 handles external issues1480 returns 403 if the user has no access to the merge request1481 returns 404 for an invalid merge request IID1482 returns 404 if the merge request id is used instead of iid1483 POST :id/merge_requests/:merge_request_iid/subscribe1484 subscribes to a merge request1485 returns 304 if already subscribed1486 returns 404 if the merge request is not found1487 returns 404 if the merge request id is used instead of iid1488 returns 403 if user has no access to read code1489 POST :id/merge_requests/:merge_request_iid/unsubscribe1490 unsubscribes from a merge request1491 returns 304 if not subscribed1492 returns 404 if the merge request is not found1493 returns 404 if the merge request id is used instead of iid1494 returns 403 if user has no access to read code1495 POST :id/merge_requests/:merge_request_iid/cancel_merge_when_pipeline_succeeds1496 removes the merge_when_pipeline_succeeds status1497 returns 404 if the merge request is not found1498 returns 404 if the merge request id is used instead of iid1499 PUT :id/merge_requests/:merge_request_iid/rebase1500 returns 403 if the user cannot push to the branch1501 returns 409 if a rebase is already in progress1502 returns 409 if rebase can't lock the row1503 when rebase can be performed1504 enqueues a rebase of the merge request against the target branch1505 when skip_ci parameter is set1506 enqueues a rebase of the merge request with skip_ci flag set1507 when merge request branch does not allow force push1508 returns 4031509 PUT :id/merge_requests/:merge_request_iid/reset_approvals1510 when reset_approvals can be performed1511 clears approvals of the merge_request1512 for users with bot role1513 for users with non-bot roles1514 returns 4011515 returns 4011516 returns 4011517 returns 4011518 for bot-users from external namespaces1519 external group bot-user1520 returns 4011521 external project bot-user1522 returns 4011523 Time tracking1524 POST /projects/:id/merge_requests/:merge_request_id/time_estimate1525 sets the time estimate for merge_request1526 with an unauthorized user1527 behaves like an unauthorized API user1528 is expected to eq 4031529 behaves like API user with insufficient permissions1530 with non member that is the author1531 behaves like an unauthorized API user1532 is expected to eq 4031533 updating the current estimate1534 when duration has a bad format1535 does not modify the original estimate1536 with a valid duration1537 updates the estimate1538 POST /projects/:id/merge_requests/:merge_request_id/reset_time_estimate1539 resets the time estimate for merge_request1540 with an unauthorized user1541 behaves like an unauthorized API user1542 is expected to eq 4031543 behaves like API user with insufficient permissions1544 with non member that is the author1545 behaves like an unauthorized API user1546 is expected to eq 4031547 POST /projects/:id/merge_requests/:merge_request_id/add_spent_time1548 add spent time for merge_request1549 calls update service with :use_specialized_service param1550 with an unauthorized user1551 behaves like an unauthorized API user1552 is expected to eq 4031553 behaves like API user with insufficient permissions1554 with non member that is the author1555 behaves like an unauthorized API user1556 is expected to eq 4031557 when subtracting time1558 subtracts time of the total spent time1559 when time to subtract is greater than the total spent time1560 does not modify the total time spent1561 POST /projects/:id/merge_requests/:merge_request_id/reset_spent_time1562 resets spent time for merge_request1563 with an unauthorized user1564 behaves like an unauthorized API user1565 is expected to eq 4031566 behaves like API user with insufficient permissions1567 with non member that is the author1568 behaves like an unauthorized API user1569 is expected to eq 4031570 GET /projects/:id/merge_requests/:merge_request_id/time_stats1571 returns the time stats for merge_request1572API::Terraform::Modules::V1::Packages1573 GET /api/v4/packages/terraform/modules/v1/:module_namespace/:module_name/:module_system/versions1574 with a conflicting package name1575 returns only one version1576 with valid namespace1577 visibility: :public, user_role: :developer, member: true, token_type: :personal_access_token, shared_examples_name: "returns terraform module packages", expected_status: :success1578 behaves like returns terraform module packages1579 for user type developer1580 returning a valid response1581 behaves like returning response status1582 returns success1583 visibility: :public, user_role: :guest, member: true, token_type: :personal_access_token, shared_examples_name: "returns terraform module packages", expected_status: :success1584 behaves like returns terraform module packages1585 for user type guest1586 returning a valid response1587 behaves like returning response status1588 returns success1589 visibility: :public, user_role: :developer, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1590 behaves like rejects terraform module packages access1591 for user type developer1592 behaves like returning response status1593 returns unauthorized1594 visibility: :public, user_role: :guest, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1595 behaves like rejects terraform module packages access1596 for user type guest1597 behaves like returning response status1598 returns unauthorized1599 visibility: :public, user_role: :developer, member: false, token_type: :personal_access_token, shared_examples_name: "returns no terraform module packages", expected_status: :success1600 behaves like returns no terraform module packages1601 for user type developer1602 returns a response with no versions1603 behaves like returning response status1604 returns success1605 visibility: :public, user_role: :guest, member: false, token_type: :personal_access_token, shared_examples_name: "returns no terraform module packages", expected_status: :success1606 behaves like returns no terraform module packages1607 for user type guest1608 returns a response with no versions1609 behaves like returning response status1610 returns success1611 visibility: :public, user_role: :developer, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1612 behaves like rejects terraform module packages access1613 for user type developer1614 behaves like returning response status1615 returns unauthorized1616 visibility: :public, user_role: :guest, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1617 behaves like rejects terraform module packages access1618 for user type guest1619 behaves like returning response status1620 returns unauthorized1621 visibility: :public, user_role: :anonymous, member: false, token_type: nil, shared_examples_name: "returns no terraform module packages", expected_status: :success1622 behaves like returns no terraform module packages1623 for user type anonymous1624 returns a response with no versions1625 behaves like returning response status1626 returns success1627 visibility: :private, user_role: :developer, member: true, token_type: :personal_access_token, shared_examples_name: "returns terraform module packages", expected_status: :success1628 behaves like returns terraform module packages1629 for user type developer1630 returning a valid response1631 behaves like returning response status1632 returns success1633 visibility: :private, user_role: :guest, member: true, token_type: :personal_access_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden1634 behaves like rejects terraform module packages access1635 for user type guest1636 behaves like returning response status1637 returns forbidden1638 visibility: :private, user_role: :developer, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1639 behaves like rejects terraform module packages access1640 for user type developer1641 behaves like returning response status1642 returns unauthorized1643 visibility: :private, user_role: :guest, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1644 behaves like rejects terraform module packages access1645 for user type guest1646 behaves like returning response status1647 returns unauthorized1648 visibility: :private, user_role: :developer, member: false, token_type: :personal_access_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden1649 behaves like rejects terraform module packages access1650 for user type developer1651 behaves like returning response status1652 returns forbidden1653 visibility: :private, user_role: :guest, member: false, token_type: :personal_access_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden1654 behaves like rejects terraform module packages access1655 for user type guest1656 behaves like returning response status1657 returns forbidden1658 visibility: :private, user_role: :developer, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1659 behaves like rejects terraform module packages access1660 for user type developer1661 behaves like returning response status1662 returns unauthorized1663 visibility: :private, user_role: :guest, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1664 behaves like rejects terraform module packages access1665 for user type guest1666 behaves like returning response status1667 returns unauthorized1668 visibility: :private, user_role: :anonymous, member: false, token_type: nil, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1669 behaves like rejects terraform module packages access1670 for user type anonymous1671 behaves like returning response status1672 returns unauthorized1673 visibility: :public, user_role: :developer, member: true, token_type: :job_token, shared_examples_name: "returns terraform module packages", expected_status: :success1674 behaves like returns terraform module packages1675 for user type developer1676 returning a valid response1677 behaves like returning response status1678 returns success1679 visibility: :public, user_role: :guest, member: true, token_type: :job_token, shared_examples_name: "returns no terraform module packages", expected_status: :success1680 behaves like returns no terraform module packages1681 for user type guest1682 returns a response with no versions1683 behaves like returning response status1684 returns success1685 visibility: :public, user_role: :guest, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1686 behaves like rejects terraform module packages access1687 for user type guest1688 behaves like returning response status1689 returns unauthorized1690 visibility: :public, user_role: :developer, member: false, token_type: :job_token, shared_examples_name: "returns no terraform module packages", expected_status: :success1691 behaves like returns no terraform module packages1692 for user type developer1693 returns a response with no versions1694 behaves like returning response status1695 returns success1696 visibility: :public, user_role: :guest, member: false, token_type: :job_token, shared_examples_name: "returns no terraform module packages", expected_status: :success1697 behaves like returns no terraform module packages1698 for user type guest1699 returns a response with no versions1700 behaves like returning response status1701 returns success1702 visibility: :public, user_role: :developer, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1703 behaves like rejects terraform module packages access1704 for user type developer1705 behaves like returning response status1706 returns unauthorized1707 visibility: :public, user_role: :guest, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1708 behaves like rejects terraform module packages access1709 for user type guest1710 behaves like returning response status1711 returns unauthorized1712 visibility: :private, user_role: :developer, member: true, token_type: :job_token, shared_examples_name: "returns terraform module packages", expected_status: :success1713 behaves like returns terraform module packages1714 for user type developer1715 returning a valid response1716 behaves like returning response status1717 returns success1718 visibility: :private, user_role: :guest, member: true, token_type: :job_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden1719 behaves like rejects terraform module packages access1720 for user type guest1721 behaves like returning response status1722 returns forbidden1723 visibility: :private, user_role: :developer, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1724 behaves like rejects terraform module packages access1725 for user type developer1726 behaves like returning response status1727 returns unauthorized1728 visibility: :private, user_role: :guest, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1729 behaves like rejects terraform module packages access1730 for user type guest1731 behaves like returning response status1732 returns unauthorized1733 visibility: :private, user_role: :developer, member: false, token_type: :job_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden1734 behaves like rejects terraform module packages access1735 for user type developer1736 behaves like returning response status1737 returns forbidden1738 visibility: :private, user_role: :guest, member: false, token_type: :job_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden1739 behaves like rejects terraform module packages access1740 for user type guest1741 behaves like returning response status1742 returns forbidden1743 visibility: :private, user_role: :developer, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1744 behaves like rejects terraform module packages access1745 for user type developer1746 behaves like returning response status1747 returns unauthorized1748 visibility: :private, user_role: :guest, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1749 behaves like rejects terraform module packages access1750 for user type guest1751 behaves like returning response status1752 returns unauthorized1753 GET /api/v4/packages/terraform/modules/v1/:module_namespace/:module_name/:module_system/download1754 empty registry1755 returns not found when there is no module1756 with valid namespace1757 visibility: :public, user_role: :developer, member: true, token_type: :personal_access_token, shared_examples_name: "redirects to version download", expected_status: :found1758 behaves like redirects to version download1759 for user type developer1760 returns a valid response1761 behaves like returning response status1762 returns found1763 visibility: :public, user_role: :guest, member: true, token_type: :personal_access_token, shared_examples_name: "redirects to version download", expected_status: :found1764 behaves like redirects to version download1765 for user type guest1766 returns a valid response1767 behaves like returning response status1768 returns found1769 visibility: :public, user_role: :developer, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1770 behaves like rejects terraform module packages access1771 for user type developer1772 behaves like returning response status1773 returns unauthorized1774 visibility: :public, user_role: :guest, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1775 behaves like rejects terraform module packages access1776 for user type guest1777 behaves like returning response status1778 returns unauthorized1779 visibility: :public, user_role: :developer, member: false, token_type: :personal_access_token, shared_examples_name: "redirects to version download", expected_status: :found1780 behaves like redirects to version download1781 for user type developer1782 returns a valid response1783 behaves like returning response status1784 returns found1785 visibility: :public, user_role: :guest, member: false, token_type: :personal_access_token, shared_examples_name: "redirects to version download", expected_status: :found1786 behaves like redirects to version download1787 for user type guest1788 returns a valid response1789 behaves like returning response status1790 returns found1791 visibility: :public, user_role: :developer, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1792 behaves like rejects terraform module packages access1793 for user type developer1794 behaves like returning response status1795 returns unauthorized1796 visibility: :public, user_role: :guest, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1797 behaves like rejects terraform module packages access1798 for user type guest1799 behaves like returning response status1800 returns unauthorized1801 visibility: :public, user_role: :anonymous, member: false, token_type: nil, shared_examples_name: "redirects to version download", expected_status: :found1802 behaves like redirects to version download1803 for user type anonymous1804 returns a valid response1805 behaves like returning response status1806 returns found1807 visibility: :private, user_role: :developer, member: true, token_type: :personal_access_token, shared_examples_name: "redirects to version download", expected_status: :found1808 behaves like redirects to version download1809 for user type developer1810 returns a valid response1811 behaves like returning response status1812 returns found1813 visibility: :private, user_role: :guest, member: true, token_type: :personal_access_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden1814 behaves like rejects terraform module packages access1815 for user type guest1816 behaves like returning response status1817 returns forbidden1818 visibility: :private, user_role: :developer, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1819 behaves like rejects terraform module packages access1820 for user type developer1821 behaves like returning response status1822 returns unauthorized1823 visibility: :private, user_role: :guest, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1824 behaves like rejects terraform module packages access1825 for user type guest1826 behaves like returning response status1827 returns unauthorized1828 visibility: :private, user_role: :developer, member: false, token_type: :personal_access_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden1829 behaves like rejects terraform module packages access1830 for user type developer1831 behaves like returning response status1832 returns forbidden1833 visibility: :private, user_role: :guest, member: false, token_type: :personal_access_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden1834 behaves like rejects terraform module packages access1835 for user type guest1836 behaves like returning response status1837 returns forbidden1838 visibility: :private, user_role: :developer, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1839 behaves like rejects terraform module packages access1840 for user type developer1841 behaves like returning response status1842 returns unauthorized1843 visibility: :private, user_role: :guest, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1844 behaves like rejects terraform module packages access1845 for user type guest1846 behaves like returning response status1847 returns unauthorized1848 visibility: :private, user_role: :anonymous, member: false, token_type: nil, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1849 behaves like rejects terraform module packages access1850 for user type anonymous1851 behaves like returning response status1852 returns unauthorized1853 visibility: :public, user_role: :developer, member: true, token_type: :job_token, shared_examples_name: "redirects to version download", expected_status: :found1854 behaves like redirects to version download1855 for user type developer1856 returns a valid response1857 behaves like returning response status1858 returns found1859 visibility: :public, user_role: :guest, member: true, token_type: :job_token, shared_examples_name: "redirects to version download", expected_status: :found1860 behaves like redirects to version download1861 for user type guest1862 returns a valid response1863 behaves like returning response status1864 returns found1865 visibility: :public, user_role: :guest, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1866 behaves like rejects terraform module packages access1867 for user type guest1868 behaves like returning response status1869 returns unauthorized1870 visibility: :public, user_role: :developer, member: false, token_type: :job_token, shared_examples_name: "redirects to version download", expected_status: :found1871 behaves like redirects to version download1872 for user type developer1873 returns a valid response1874 behaves like returning response status1875 returns found1876 visibility: :public, user_role: :guest, member: false, token_type: :job_token, shared_examples_name: "redirects to version download", expected_status: :found1877 behaves like redirects to version download1878 for user type guest1879 returns a valid response1880 behaves like returning response status1881 returns found1882 visibility: :public, user_role: :developer, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1883 behaves like rejects terraform module packages access1884 for user type developer1885 behaves like returning response status1886 returns unauthorized1887 visibility: :public, user_role: :guest, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1888 behaves like rejects terraform module packages access1889 for user type guest1890 behaves like returning response status1891 returns unauthorized1892 visibility: :private, user_role: :developer, member: true, token_type: :job_token, shared_examples_name: "redirects to version download", expected_status: :found1893 behaves like redirects to version download1894 for user type developer1895 returns a valid response1896 behaves like returning response status1897 returns found1898 visibility: :private, user_role: :guest, member: true, token_type: :job_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden1899 behaves like rejects terraform module packages access1900 for user type guest1901 behaves like returning response status1902 returns forbidden1903 visibility: :private, user_role: :developer, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1904 behaves like rejects terraform module packages access1905 for user type developer1906 behaves like returning response status1907 returns unauthorized1908 visibility: :private, user_role: :guest, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1909 behaves like rejects terraform module packages access1910 for user type guest1911 behaves like returning response status1912 returns unauthorized1913 visibility: :private, user_role: :developer, member: false, token_type: :job_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden1914 behaves like rejects terraform module packages access1915 for user type developer1916 behaves like returning response status1917 returns forbidden1918 visibility: :private, user_role: :guest, member: false, token_type: :job_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden1919 behaves like rejects terraform module packages access1920 for user type guest1921 behaves like returning response status1922 returns forbidden1923 visibility: :private, user_role: :developer, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1924 behaves like rejects terraform module packages access1925 for user type developer1926 behaves like returning response status1927 returns unauthorized1928 visibility: :private, user_role: :guest, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1929 behaves like rejects terraform module packages access1930 for user type guest1931 behaves like returning response status1932 returns unauthorized1933 GET /api/v4/packages/terraform/modules/v1/:module_namespace/:module_name/:module_system1934 empty registry1935 returns not found when there is no module1936 with valid namespace1937 visibility: :public, user_role: :developer, member: true, token_type: :personal_access_token, shared_examples_name: "returns terraform module version", expected_status: :success1938 behaves like returns terraform module version1939 for user type developer1940 returning a valid response1941 behaves like returning response status1942 returns success1943 visibility: :public, user_role: :guest, member: true, token_type: :personal_access_token, shared_examples_name: "returns terraform module version", expected_status: :success1944 behaves like returns terraform module version1945 for user type guest1946 returning a valid response1947 behaves like returning response status1948 returns success1949 visibility: :public, user_role: :developer, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1950 behaves like rejects terraform module packages access1951 for user type developer1952 behaves like returning response status1953 returns unauthorized1954 visibility: :public, user_role: :guest, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1955 behaves like rejects terraform module packages access1956 for user type guest1957 behaves like returning response status1958 returns unauthorized1959 visibility: :public, user_role: :developer, member: false, token_type: :personal_access_token, shared_examples_name: "returns terraform module version", expected_status: :success1960 behaves like returns terraform module version1961 for user type developer1962 returning a valid response1963 behaves like returning response status1964 returns success1965 visibility: :public, user_role: :guest, member: false, token_type: :personal_access_token, shared_examples_name: "returns terraform module version", expected_status: :success1966 behaves like returns terraform module version1967 for user type guest1968 returning a valid response1969 behaves like returning response status1970 returns success1971 visibility: :public, user_role: :developer, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1972 behaves like rejects terraform module packages access1973 for user type developer1974 behaves like returning response status1975 returns unauthorized1976 visibility: :public, user_role: :guest, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1977 behaves like rejects terraform module packages access1978 for user type guest1979 behaves like returning response status1980 returns unauthorized1981 visibility: :public, user_role: :anonymous, member: false, token_type: nil, shared_examples_name: "returns terraform module version", expected_status: :success1982 behaves like returns terraform module version1983 for user type anonymous1984 returning a valid response1985 behaves like returning response status1986 returns success1987 visibility: :private, user_role: :developer, member: true, token_type: :personal_access_token, shared_examples_name: "returns terraform module version", expected_status: :success1988 behaves like returns terraform module version1989 for user type developer1990 returning a valid response1991 behaves like returning response status1992 returns success1993 visibility: :private, user_role: :guest, member: true, token_type: :personal_access_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden1994 behaves like rejects terraform module packages access1995 for user type guest1996 behaves like returning response status1997 returns forbidden1998 visibility: :private, user_role: :developer, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1999 behaves like rejects terraform module packages access2000 for user type developer2001 behaves like returning response status2002 returns unauthorized2003 visibility: :private, user_role: :guest, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2004 behaves like rejects terraform module packages access2005 for user type guest2006 behaves like returning response status2007 returns unauthorized2008 visibility: :private, user_role: :developer, member: false, token_type: :personal_access_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2009 behaves like rejects terraform module packages access2010 for user type developer2011 behaves like returning response status2012 returns forbidden2013 visibility: :private, user_role: :guest, member: false, token_type: :personal_access_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2014 behaves like rejects terraform module packages access2015 for user type guest2016 behaves like returning response status2017 returns forbidden2018 visibility: :private, user_role: :developer, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2019 behaves like rejects terraform module packages access2020 for user type developer2021 behaves like returning response status2022 returns unauthorized2023 visibility: :private, user_role: :guest, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2024 behaves like rejects terraform module packages access2025 for user type guest2026 behaves like returning response status2027 returns unauthorized2028 visibility: :private, user_role: :anonymous, member: false, token_type: nil, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2029 behaves like rejects terraform module packages access2030 for user type anonymous2031 behaves like returning response status2032 returns unauthorized2033 visibility: :public, user_role: :developer, member: true, token_type: :job_token, shared_examples_name: "returns terraform module version", expected_status: :success2034 behaves like returns terraform module version2035 for user type developer2036 returning a valid response2037 behaves like returning response status2038 returns success2039 visibility: :public, user_role: :guest, member: true, token_type: :job_token, shared_examples_name: "returns terraform module version", expected_status: :success2040 behaves like returns terraform module version2041 for user type guest2042 returning a valid response2043 behaves like returning response status2044 returns success2045 visibility: :public, user_role: :guest, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2046 behaves like rejects terraform module packages access2047 for user type guest2048 behaves like returning response status2049 returns unauthorized2050 visibility: :public, user_role: :developer, member: false, token_type: :job_token, shared_examples_name: "returns terraform module version", expected_status: :success2051 behaves like returns terraform module version2052 for user type developer2053 returning a valid response2054 behaves like returning response status2055 returns success2056 visibility: :public, user_role: :guest, member: false, token_type: :job_token, shared_examples_name: "returns terraform module version", expected_status: :success2057 behaves like returns terraform module version2058 for user type guest2059 returning a valid response2060 behaves like returning response status2061 returns success2062 visibility: :public, user_role: :developer, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2063 behaves like rejects terraform module packages access2064 for user type developer2065 behaves like returning response status2066 returns unauthorized2067 visibility: :public, user_role: :guest, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2068 behaves like rejects terraform module packages access2069 for user type guest2070 behaves like returning response status2071 returns unauthorized2072 visibility: :private, user_role: :developer, member: true, token_type: :job_token, shared_examples_name: "returns terraform module version", expected_status: :success2073 behaves like returns terraform module version2074 for user type developer2075 returning a valid response2076 behaves like returning response status2077 returns success2078 visibility: :private, user_role: :guest, member: true, token_type: :job_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2079 behaves like rejects terraform module packages access2080 for user type guest2081 behaves like returning response status2082 returns forbidden2083 visibility: :private, user_role: :developer, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2084 behaves like rejects terraform module packages access2085 for user type developer2086 behaves like returning response status2087 returns unauthorized2088 visibility: :private, user_role: :guest, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2089 behaves like rejects terraform module packages access2090 for user type guest2091 behaves like returning response status2092 returns unauthorized2093 visibility: :private, user_role: :developer, member: false, token_type: :job_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2094 behaves like rejects terraform module packages access2095 for user type developer2096 behaves like returning response status2097 returns forbidden2098 visibility: :private, user_role: :guest, member: false, token_type: :job_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2099 behaves like rejects terraform module packages access2100 for user type guest2101 behaves like returning response status2102 returns forbidden2103 visibility: :private, user_role: :developer, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2104 behaves like rejects terraform module packages access2105 for user type developer2106 behaves like returning response status2107 returns unauthorized2108 visibility: :private, user_role: :guest, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2109 behaves like rejects terraform module packages access2110 for user type guest2111 behaves like returning response status2112 returns unauthorized2113 GET /api/v4/packages/terraform/modules/v1/:module_namespace/:module_name/:module_system/:module_version2114 not found2115 returns not found when the specified version is not present in the registry2116 with valid namespace2117 visibility: :public, user_role: :developer, member: true, token_type: :personal_access_token, shared_examples_name: "returns terraform module version", expected_status: :success2118 behaves like returns terraform module version2119 for user type developer2120 returning a valid response2121 behaves like returning response status2122 returns success2123 visibility: :public, user_role: :guest, member: true, token_type: :personal_access_token, shared_examples_name: "returns terraform module version", expected_status: :success2124 behaves like returns terraform module version2125 for user type guest2126 returning a valid response2127 behaves like returning response status2128 returns success2129 visibility: :public, user_role: :developer, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2130 behaves like rejects terraform module packages access2131 for user type developer2132 behaves like returning response status2133 returns unauthorized2134 visibility: :public, user_role: :guest, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2135 behaves like rejects terraform module packages access2136 for user type guest2137 behaves like returning response status2138 returns unauthorized2139 visibility: :public, user_role: :developer, member: false, token_type: :personal_access_token, shared_examples_name: "returns terraform module version", expected_status: :success2140 behaves like returns terraform module version2141 for user type developer2142 returning a valid response2143 behaves like returning response status2144 returns success2145 visibility: :public, user_role: :guest, member: false, token_type: :personal_access_token, shared_examples_name: "returns terraform module version", expected_status: :success2146 behaves like returns terraform module version2147 for user type guest2148 returning a valid response2149 behaves like returning response status2150 returns success2151 visibility: :public, user_role: :developer, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2152 behaves like rejects terraform module packages access2153 for user type developer2154 behaves like returning response status2155 returns unauthorized2156 visibility: :public, user_role: :guest, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2157 behaves like rejects terraform module packages access2158 for user type guest2159 behaves like returning response status2160 returns unauthorized2161 visibility: :public, user_role: :anonymous, member: false, token_type: nil, shared_examples_name: "returns terraform module version", expected_status: :success2162 behaves like returns terraform module version2163 for user type anonymous2164 returning a valid response2165 behaves like returning response status2166 returns success2167 visibility: :private, user_role: :developer, member: true, token_type: :personal_access_token, shared_examples_name: "returns terraform module version", expected_status: :success2168 behaves like returns terraform module version2169 for user type developer2170 returning a valid response2171 behaves like returning response status2172 returns success2173 visibility: :private, user_role: :guest, member: true, token_type: :personal_access_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2174 behaves like rejects terraform module packages access2175 for user type guest2176 behaves like returning response status2177 returns forbidden2178 visibility: :private, user_role: :developer, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2179 behaves like rejects terraform module packages access2180 for user type developer2181 behaves like returning response status2182 returns unauthorized2183 visibility: :private, user_role: :guest, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2184 behaves like rejects terraform module packages access2185 for user type guest2186 behaves like returning response status2187 returns unauthorized2188 visibility: :private, user_role: :developer, member: false, token_type: :personal_access_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2189 behaves like rejects terraform module packages access2190 for user type developer2191 behaves like returning response status2192 returns forbidden2193 visibility: :private, user_role: :guest, member: false, token_type: :personal_access_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2194 behaves like rejects terraform module packages access2195 for user type guest2196 behaves like returning response status2197 returns forbidden2198 visibility: :private, user_role: :developer, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2199 behaves like rejects terraform module packages access2200 for user type developer2201 behaves like returning response status2202 returns unauthorized2203 visibility: :private, user_role: :guest, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2204 behaves like rejects terraform module packages access2205 for user type guest2206 behaves like returning response status2207 returns unauthorized2208 visibility: :private, user_role: :anonymous, member: false, token_type: nil, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2209 behaves like rejects terraform module packages access2210 for user type anonymous2211 behaves like returning response status2212 returns unauthorized2213 visibility: :public, user_role: :developer, member: true, token_type: :job_token, shared_examples_name: "returns terraform module version", expected_status: :success2214 behaves like returns terraform module version2215 for user type developer2216 returning a valid response2217 behaves like returning response status2218 returns success2219 visibility: :public, user_role: :guest, member: true, token_type: :job_token, shared_examples_name: "returns terraform module version", expected_status: :success2220 behaves like returns terraform module version2221 for user type guest2222 returning a valid response2223 behaves like returning response status2224 returns success2225 visibility: :public, user_role: :guest, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2226 behaves like rejects terraform module packages access2227 for user type guest2228 behaves like returning response status2229 returns unauthorized2230 visibility: :public, user_role: :developer, member: false, token_type: :job_token, shared_examples_name: "returns terraform module version", expected_status: :success2231 behaves like returns terraform module version2232 for user type developer2233 returning a valid response2234 behaves like returning response status2235 returns success2236 visibility: :public, user_role: :guest, member: false, token_type: :job_token, shared_examples_name: "returns terraform module version", expected_status: :success2237 behaves like returns terraform module version2238 for user type guest2239 returning a valid response2240 behaves like returning response status2241 returns success2242 visibility: :public, user_role: :developer, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2243 behaves like rejects terraform module packages access2244 for user type developer2245 behaves like returning response status2246 returns unauthorized2247 visibility: :public, user_role: :guest, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2248 behaves like rejects terraform module packages access2249 for user type guest2250 behaves like returning response status2251 returns unauthorized2252 visibility: :private, user_role: :developer, member: true, token_type: :job_token, shared_examples_name: "returns terraform module version", expected_status: :success2253 behaves like returns terraform module version2254 for user type developer2255 returning a valid response2256 behaves like returning response status2257 returns success2258 visibility: :private, user_role: :guest, member: true, token_type: :job_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2259 behaves like rejects terraform module packages access2260 for user type guest2261 behaves like returning response status2262 returns forbidden2263 visibility: :private, user_role: :developer, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2264 behaves like rejects terraform module packages access2265 for user type developer2266 behaves like returning response status2267 returns unauthorized2268 visibility: :private, user_role: :guest, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2269 behaves like rejects terraform module packages access2270 for user type guest2271 behaves like returning response status2272 returns unauthorized2273 visibility: :private, user_role: :developer, member: false, token_type: :job_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2274 behaves like rejects terraform module packages access2275 for user type developer2276 behaves like returning response status2277 returns forbidden2278 visibility: :private, user_role: :guest, member: false, token_type: :job_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2279 behaves like rejects terraform module packages access2280 for user type guest2281 behaves like returning response status2282 returns forbidden2283 visibility: :private, user_role: :developer, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2284 behaves like rejects terraform module packages access2285 for user type developer2286 behaves like returning response status2287 returns unauthorized2288 visibility: :private, user_role: :guest, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2289 behaves like rejects terraform module packages access2290 for user type guest2291 behaves like returning response status2292 returns unauthorized2293 GET /api/v4/packages/terraform/modules/v1/:module_namespace/:module_name/:module_system/:module_version/download2294 with valid namespace2295 visibility: :public, user_role: :developer, member: true, token_type: :personal_access_token, shared_examples_name: "grants terraform module download", expected_status: :success2296 behaves like grants terraform module download2297 for user type developer2298 returns a valid response2299 behaves like returning response status2300 returns success2301 visibility: :public, user_role: :guest, member: true, token_type: :personal_access_token, shared_examples_name: "grants terraform module download", expected_status: :success2302 behaves like grants terraform module download2303 for user type guest2304 returns a valid response2305 behaves like returning response status2306 returns success2307 visibility: :public, user_role: :developer, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2308 behaves like rejects terraform module packages access2309 for user type developer2310 behaves like returning response status2311 returns unauthorized2312 visibility: :public, user_role: :guest, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2313 behaves like rejects terraform module packages access2314 for user type guest2315 behaves like returning response status2316 returns unauthorized2317 visibility: :public, user_role: :developer, member: false, token_type: :personal_access_token, shared_examples_name: "grants terraform module download", expected_status: :success2318 behaves like grants terraform module download2319 for user type developer2320 returns a valid response2321 behaves like returning response status2322 returns success2323 visibility: :public, user_role: :guest, member: false, token_type: :personal_access_token, shared_examples_name: "grants terraform module download", expected_status: :success2324 behaves like grants terraform module download2325 for user type guest2326 returns a valid response2327 behaves like returning response status2328 returns success2329 visibility: :public, user_role: :developer, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2330 behaves like rejects terraform module packages access2331 for user type developer2332 behaves like returning response status2333 returns unauthorized2334 visibility: :public, user_role: :guest, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2335 behaves like rejects terraform module packages access2336 for user type guest2337 behaves like returning response status2338 returns unauthorized2339 visibility: :public, user_role: :anonymous, member: false, token_type: nil, shared_examples_name: "grants terraform module download", expected_status: :success2340 behaves like grants terraform module download2341 for user type anonymous2342 returns a valid response2343 behaves like returning response status2344 returns success2345 visibility: :private, user_role: :developer, member: true, token_type: :personal_access_token, shared_examples_name: "grants terraform module download", expected_status: :success2346 behaves like grants terraform module download2347 for user type developer2348 returns a valid response2349 behaves like returning response status2350 returns success2351 visibility: :private, user_role: :guest, member: true, token_type: :personal_access_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2352 behaves like rejects terraform module packages access2353 for user type guest2354 behaves like returning response status2355 returns forbidden2356 visibility: :private, user_role: :developer, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2357 behaves like rejects terraform module packages access2358 for user type developer2359 behaves like returning response status2360 returns unauthorized2361 visibility: :private, user_role: :guest, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2362 behaves like rejects terraform module packages access2363 for user type guest2364 behaves like returning response status2365 returns unauthorized2366 visibility: :private, user_role: :developer, member: false, token_type: :personal_access_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2367 behaves like rejects terraform module packages access2368 for user type developer2369 behaves like returning response status2370 returns forbidden2371 visibility: :private, user_role: :guest, member: false, token_type: :personal_access_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2372 behaves like rejects terraform module packages access2373 for user type guest2374 behaves like returning response status2375 returns forbidden2376 visibility: :private, user_role: :developer, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2377 behaves like rejects terraform module packages access2378 for user type developer2379 behaves like returning response status2380 returns unauthorized2381 visibility: :private, user_role: :guest, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2382 behaves like rejects terraform module packages access2383 for user type guest2384 behaves like returning response status2385 returns unauthorized2386 visibility: :private, user_role: :anonymous, member: false, token_type: nil, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2387 behaves like rejects terraform module packages access2388 for user type anonymous2389 behaves like returning response status2390 returns unauthorized2391 visibility: :public, user_role: :developer, member: true, token_type: :job_token, shared_examples_name: "grants terraform module download", expected_status: :success2392 behaves like grants terraform module download2393 for user type developer2394 returns a valid response2395 behaves like returning response status2396 returns success2397 visibility: :public, user_role: :guest, member: true, token_type: :job_token, shared_examples_name: "grants terraform module download", expected_status: :success2398 behaves like grants terraform module download2399 for user type guest2400 returns a valid response2401 behaves like returning response status2402 returns success2403 visibility: :public, user_role: :guest, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2404 behaves like rejects terraform module packages access2405 for user type guest2406 behaves like returning response status2407 returns unauthorized2408 visibility: :public, user_role: :developer, member: false, token_type: :job_token, shared_examples_name: "grants terraform module download", expected_status: :success2409 behaves like grants terraform module download2410 for user type developer2411 returns a valid response2412 behaves like returning response status2413 returns success2414 visibility: :public, user_role: :guest, member: false, token_type: :job_token, shared_examples_name: "grants terraform module download", expected_status: :success2415 behaves like grants terraform module download2416 for user type guest2417 returns a valid response2418 behaves like returning response status2419 returns success2420 visibility: :public, user_role: :developer, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2421 behaves like rejects terraform module packages access2422 for user type developer2423 behaves like returning response status2424 returns unauthorized2425 visibility: :public, user_role: :guest, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2426 behaves like rejects terraform module packages access2427 for user type guest2428 behaves like returning response status2429 returns unauthorized2430 visibility: :private, user_role: :developer, member: true, token_type: :job_token, shared_examples_name: "grants terraform module download", expected_status: :success2431 behaves like grants terraform module download2432 for user type developer2433 returns a valid response2434 behaves like returning response status2435 returns success2436 visibility: :private, user_role: :guest, member: true, token_type: :job_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2437 behaves like rejects terraform module packages access2438 for user type guest2439 behaves like returning response status2440 returns forbidden2441 visibility: :private, user_role: :developer, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2442 behaves like rejects terraform module packages access2443 for user type developer2444 behaves like returning response status2445 returns unauthorized2446 visibility: :private, user_role: :guest, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2447 behaves like rejects terraform module packages access2448 for user type guest2449 behaves like returning response status2450 returns unauthorized2451 visibility: :private, user_role: :developer, member: false, token_type: :job_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2452 behaves like rejects terraform module packages access2453 for user type developer2454 behaves like returning response status2455 returns forbidden2456 visibility: :private, user_role: :guest, member: false, token_type: :job_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2457 behaves like rejects terraform module packages access2458 for user type guest2459 behaves like returning response status2460 returns forbidden2461 visibility: :private, user_role: :developer, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2462 behaves like rejects terraform module packages access2463 for user type developer2464 behaves like returning response status2465 returns unauthorized2466 visibility: :private, user_role: :guest, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2467 behaves like rejects terraform module packages access2468 for user type guest2469 behaves like returning response status2470 returns unauthorized2471 GET /api/v4/packages/terraform/modules/v1/:module_namespace/:module_name/:module_system/:module_version/file2472 with valid namespace2473 visibility: :public, user_role: :developer, member: true, token_type: :personal_access_token, shared_examples_name: "grants terraform module package file access", expected_status: :success2474 behaves like grants terraform module package file access2475 for user type developer2476 behaves like returning response status2477 returns success2478 behaves like a package tracking event2479 creates a gitlab tracking event pull_package2480 visibility: :public, user_role: :guest, member: true, token_type: :personal_access_token, shared_examples_name: "grants terraform module package file access", expected_status: :success2481 behaves like grants terraform module package file access2482 for user type guest2483 behaves like returning response status2484 returns success2485 behaves like a package tracking event2486 creates a gitlab tracking event pull_package2487 visibility: :public, user_role: :developer, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2488 behaves like rejects terraform module packages access2489 for user type developer2490 behaves like returning response status2491 returns unauthorized2492 visibility: :public, user_role: :guest, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2493 behaves like rejects terraform module packages access2494 for user type guest2495 behaves like returning response status2496 returns unauthorized2497 visibility: :public, user_role: :developer, member: false, token_type: :personal_access_token, shared_examples_name: "grants terraform module package file access", expected_status: :success2498 behaves like grants terraform module package file access2499 for user type developer2500 behaves like returning response status2501 returns success2502 behaves like a package tracking event2503 creates a gitlab tracking event pull_package2504 visibility: :public, user_role: :guest, member: false, token_type: :personal_access_token, shared_examples_name: "grants terraform module package file access", expected_status: :success2505 behaves like grants terraform module package file access2506 for user type guest2507 behaves like returning response status2508 returns success2509 behaves like a package tracking event2510 creates a gitlab tracking event pull_package2511 visibility: :public, user_role: :developer, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2512 behaves like rejects terraform module packages access2513 for user type developer2514 behaves like returning response status2515 returns unauthorized2516 visibility: :public, user_role: :guest, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2517 behaves like rejects terraform module packages access2518 for user type guest2519 behaves like returning response status2520 returns unauthorized2521 visibility: :public, user_role: :anonymous, member: false, token_type: nil, shared_examples_name: "grants terraform module package file access", expected_status: :success2522 behaves like grants terraform module package file access2523 for user type anonymous2524 behaves like returning response status2525 returns success2526 behaves like a package tracking event2527 creates a gitlab tracking event pull_package2528 visibility: :private, user_role: :developer, member: true, token_type: :personal_access_token, shared_examples_name: "grants terraform module package file access", expected_status: :success2529 behaves like grants terraform module package file access2530 for user type developer2531 behaves like returning response status2532 returns success2533 behaves like a package tracking event2534 creates a gitlab tracking event pull_package2535 visibility: :private, user_role: :guest, member: true, token_type: :personal_access_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2536 behaves like rejects terraform module packages access2537 for user type guest2538 behaves like returning response status2539 returns forbidden2540 visibility: :private, user_role: :developer, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2541 behaves like rejects terraform module packages access2542 for user type developer2543 behaves like returning response status2544 returns unauthorized2545 visibility: :private, user_role: :guest, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2546 behaves like rejects terraform module packages access2547 for user type guest2548 behaves like returning response status2549 returns unauthorized2550 visibility: :private, user_role: :developer, member: false, token_type: :personal_access_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2551 behaves like rejects terraform module packages access2552 for user type developer2553 behaves like returning response status2554 returns forbidden2555 visibility: :private, user_role: :guest, member: false, token_type: :personal_access_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2556 behaves like rejects terraform module packages access2557 for user type guest2558 behaves like returning response status2559 returns forbidden2560 visibility: :private, user_role: :developer, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2561 behaves like rejects terraform module packages access2562 for user type developer2563 behaves like returning response status2564 returns unauthorized2565 visibility: :private, user_role: :guest, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2566 behaves like rejects terraform module packages access2567 for user type guest2568 behaves like returning response status2569 returns unauthorized2570 visibility: :private, user_role: :anonymous, member: false, token_type: nil, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2571 behaves like rejects terraform module packages access2572 for user type anonymous2573 behaves like returning response status2574 returns unauthorized2575 visibility: :public, user_role: :developer, member: true, token_type: :job_token, shared_examples_name: "grants terraform module package file access", expected_status: :success2576 behaves like grants terraform module package file access2577 for user type developer2578 behaves like returning response status2579 returns success2580 behaves like a package tracking event2581 creates a gitlab tracking event pull_package2582 visibility: :public, user_role: :guest, member: true, token_type: :job_token, shared_examples_name: "grants terraform module package file access", expected_status: :success2583 behaves like grants terraform module package file access2584 for user type guest2585 behaves like returning response status2586 returns success2587 behaves like a package tracking event2588 creates a gitlab tracking event pull_package2589 visibility: :public, user_role: :guest, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2590 behaves like rejects terraform module packages access2591 for user type guest2592 behaves like returning response status2593 returns unauthorized2594 visibility: :public, user_role: :developer, member: false, token_type: :job_token, shared_examples_name: "grants terraform module package file access", expected_status: :success2595 behaves like grants terraform module package file access2596 for user type developer2597 behaves like returning response status2598 returns success2599 behaves like a package tracking event2600 creates a gitlab tracking event pull_package2601 visibility: :public, user_role: :guest, member: false, token_type: :job_token, shared_examples_name: "grants terraform module package file access", expected_status: :success2602 behaves like grants terraform module package file access2603 for user type guest2604 behaves like returning response status2605 returns success2606 behaves like a package tracking event2607 creates a gitlab tracking event pull_package2608 visibility: :public, user_role: :developer, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2609 behaves like rejects terraform module packages access2610 for user type developer2611 behaves like returning response status2612 returns unauthorized2613 visibility: :public, user_role: :guest, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2614 behaves like rejects terraform module packages access2615 for user type guest2616 behaves like returning response status2617 returns unauthorized2618 visibility: :private, user_role: :developer, member: true, token_type: :job_token, shared_examples_name: "grants terraform module package file access", expected_status: :success2619 behaves like grants terraform module package file access2620 for user type developer2621 behaves like returning response status2622 returns success2623 behaves like a package tracking event2624 creates a gitlab tracking event pull_package2625 visibility: :private, user_role: :guest, member: true, token_type: :job_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2626 behaves like rejects terraform module packages access2627 for user type guest2628 behaves like returning response status2629 returns forbidden2630 visibility: :private, user_role: :developer, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2631 behaves like rejects terraform module packages access2632 for user type developer2633 behaves like returning response status2634 returns unauthorized2635 visibility: :private, user_role: :guest, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2636 behaves like rejects terraform module packages access2637 for user type guest2638 behaves like returning response status2639 returns unauthorized2640 visibility: :private, user_role: :developer, member: false, token_type: :job_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2641 behaves like rejects terraform module packages access2642 for user type developer2643 behaves like returning response status2644 returns forbidden2645 visibility: :private, user_role: :guest, member: false, token_type: :job_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2646 behaves like rejects terraform module packages access2647 for user type guest2648 behaves like returning response status2649 returns forbidden2650 visibility: :private, user_role: :developer, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2651 behaves like rejects terraform module packages access2652 for user type developer2653 behaves like returning response status2654 returns unauthorized2655 visibility: :private, user_role: :guest, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2656 behaves like rejects terraform module packages access2657 for user type guest2658 behaves like returning response status2659 returns unauthorized2660 with package file pending destruction2661 does not return them2662 PUT /api/v4/projects/:project_id/packages/terraform/modules/:module_name/:module_system/:module_version/file/authorize2663 with valid project2664 visibility: :public, user_role: :developer, member: true, token_header: "PRIVATE-TOKEN", token_type: :personal_access_token, shared_examples_name: "process terraform module workhorse authorization", expected_status: :success2665 behaves like process terraform module workhorse authorization2666 for user type developer2667 has the proper content type2668 behaves like returning response status2669 returns success2670 with a request that bypassed gitlab-workhorse2671 behaves like returning response status2672 returns forbidden2673 visibility: :public, user_role: :guest, member: true, token_header: "PRIVATE-TOKEN", token_type: :personal_access_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2674 behaves like rejects terraform module packages access2675 for user type guest2676 behaves like returning response status2677 returns forbidden2678 visibility: :public, user_role: :developer, member: true, token_header: "PRIVATE-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2679 behaves like rejects terraform module packages access2680 for user type developer2681 behaves like returning response status2682 returns unauthorized2683 visibility: :public, user_role: :guest, member: true, token_header: "PRIVATE-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2684 behaves like rejects terraform module packages access2685 for user type guest2686 behaves like returning response status2687 returns unauthorized2688 visibility: :public, user_role: :developer, member: false, token_header: "PRIVATE-TOKEN", token_type: :personal_access_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2689 behaves like rejects terraform module packages access2690 for user type developer2691 behaves like returning response status2692 returns forbidden2693 visibility: :public, user_role: :guest, member: false, token_header: "PRIVATE-TOKEN", token_type: :personal_access_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2694 behaves like rejects terraform module packages access2695 for user type guest2696 behaves like returning response status2697 returns forbidden2698 visibility: :public, user_role: :developer, member: false, token_header: "PRIVATE-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2699 behaves like rejects terraform module packages access2700 for user type developer2701 behaves like returning response status2702 returns unauthorized2703 visibility: :public, user_role: :guest, member: false, token_header: "PRIVATE-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2704 behaves like rejects terraform module packages access2705 for user type guest2706 behaves like returning response status2707 returns unauthorized2708 visibility: :public, user_role: :anonymous, member: false, token_header: nil, token_type: nil, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2709 behaves like rejects terraform module packages access2710 for user type anonymous2711 behaves like returning response status2712 returns unauthorized2713 visibility: :private, user_role: :developer, member: true, token_header: "PRIVATE-TOKEN", token_type: :personal_access_token, shared_examples_name: "process terraform module workhorse authorization", expected_status: :success2714 behaves like process terraform module workhorse authorization2715 for user type developer2716 has the proper content type2717 behaves like returning response status2718 returns success2719 with a request that bypassed gitlab-workhorse2720 behaves like returning response status2721 returns forbidden2722 visibility: :private, user_role: :guest, member: true, token_header: "PRIVATE-TOKEN", token_type: :personal_access_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2723 behaves like rejects terraform module packages access2724 for user type guest2725 behaves like returning response status2726 returns forbidden2727 visibility: :private, user_role: :developer, member: true, token_header: "PRIVATE-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2728 behaves like rejects terraform module packages access2729 for user type developer2730 behaves like returning response status2731 returns unauthorized2732 visibility: :private, user_role: :guest, member: true, token_header: "PRIVATE-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2733 behaves like rejects terraform module packages access2734 for user type guest2735 behaves like returning response status2736 returns unauthorized2737 visibility: :private, user_role: :developer, member: false, token_header: "PRIVATE-TOKEN", token_type: :personal_access_token, shared_examples_name: "rejects terraform module packages access", expected_status: :not_found2738 behaves like rejects terraform module packages access2739 for user type developer2740 behaves like returning response status2741 returns not_found2742 visibility: :private, user_role: :guest, member: false, token_header: "PRIVATE-TOKEN", token_type: :personal_access_token, shared_examples_name: "rejects terraform module packages access", expected_status: :not_found2743 behaves like rejects terraform module packages access2744 for user type guest2745 behaves like returning response status2746 returns not_found2747 visibility: :private, user_role: :developer, member: false, token_header: "PRIVATE-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2748 behaves like rejects terraform module packages access2749 for user type developer2750 behaves like returning response status2751 returns unauthorized2752 visibility: :private, user_role: :guest, member: false, token_header: "PRIVATE-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2753 behaves like rejects terraform module packages access2754 for user type guest2755 behaves like returning response status2756 returns unauthorized2757 visibility: :private, user_role: :anonymous, member: false, token_header: nil, token_type: nil, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2758 behaves like rejects terraform module packages access2759 for user type anonymous2760 behaves like returning response status2761 returns unauthorized2762 visibility: :public, user_role: :developer, member: true, token_header: "JOB-TOKEN", token_type: :job_token, shared_examples_name: "process terraform module workhorse authorization", expected_status: :success2763 behaves like process terraform module workhorse authorization2764 for user type developer2765 has the proper content type2766 behaves like returning response status2767 returns success2768 with a request that bypassed gitlab-workhorse2769 behaves like returning response status2770 returns forbidden2771 visibility: :public, user_role: :guest, member: true, token_header: "JOB-TOKEN", token_type: :job_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2772 behaves like rejects terraform module packages access2773 for user type guest2774 behaves like returning response status2775 returns forbidden2776 visibility: :public, user_role: :developer, member: true, token_header: "JOB-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2777 behaves like rejects terraform module packages access2778 for user type developer2779 behaves like returning response status2780 returns unauthorized2781 visibility: :public, user_role: :guest, member: true, token_header: "JOB-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2782 behaves like rejects terraform module packages access2783 for user type guest2784 behaves like returning response status2785 returns unauthorized2786 visibility: :public, user_role: :developer, member: false, token_header: "JOB-TOKEN", token_type: :job_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2787 behaves like rejects terraform module packages access2788 for user type developer2789 behaves like returning response status2790 returns forbidden2791 visibility: :public, user_role: :guest, member: false, token_header: "JOB-TOKEN", token_type: :job_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2792 behaves like rejects terraform module packages access2793 for user type guest2794 behaves like returning response status2795 returns forbidden2796 visibility: :public, user_role: :developer, member: false, token_header: "JOB-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2797 behaves like rejects terraform module packages access2798 for user type developer2799 behaves like returning response status2800 returns unauthorized2801 visibility: :public, user_role: :guest, member: false, token_header: "JOB-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2802 behaves like rejects terraform module packages access2803 for user type guest2804 behaves like returning response status2805 returns unauthorized2806 visibility: :private, user_role: :developer, member: true, token_header: "JOB-TOKEN", token_type: :job_token, shared_examples_name: "process terraform module workhorse authorization", expected_status: :success2807 behaves like process terraform module workhorse authorization2808 for user type developer2809 has the proper content type2810 behaves like returning response status2811 returns success2812 with a request that bypassed gitlab-workhorse2813 behaves like returning response status2814 returns forbidden2815 visibility: :private, user_role: :guest, member: true, token_header: "JOB-TOKEN", token_type: :job_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2816 behaves like rejects terraform module packages access2817 for user type guest2818 behaves like returning response status2819 returns forbidden2820 visibility: :private, user_role: :developer, member: true, token_header: "JOB-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2821 behaves like rejects terraform module packages access2822 for user type developer2823 behaves like returning response status2824 returns unauthorized2825 visibility: :private, user_role: :guest, member: true, token_header: "JOB-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2826 behaves like rejects terraform module packages access2827 for user type guest2828 behaves like returning response status2829 returns unauthorized2830 visibility: :private, user_role: :developer, member: false, token_header: "JOB-TOKEN", token_type: :job_token, shared_examples_name: "rejects terraform module packages access", expected_status: :not_found2831 behaves like rejects terraform module packages access2832 for user type developer2833 behaves like returning response status2834 returns not_found2835 visibility: :private, user_role: :guest, member: false, token_header: "JOB-TOKEN", token_type: :job_token, shared_examples_name: "rejects terraform module packages access", expected_status: :not_found2836 behaves like rejects terraform module packages access2837 for user type guest2838 behaves like returning response status2839 returns not_found2840 visibility: :private, user_role: :developer, member: false, token_header: "JOB-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2841 behaves like rejects terraform module packages access2842 for user type developer2843 behaves like returning response status2844 returns unauthorized2845 visibility: :private, user_role: :guest, member: false, token_header: "JOB-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2846 behaves like rejects terraform module packages access2847 for user type guest2848 behaves like returning response status2849 returns unauthorized2850 visibility: :public, user_role: :developer, member: true, token_header: "DEPLOY-TOKEN", token_type: :deploy_token, shared_examples_name: "process terraform module workhorse authorization", expected_status: :success2851 behaves like process terraform module workhorse authorization2852 for user type developer2853 has the proper content type2854 behaves like returning response status2855 returns success2856 with a request that bypassed gitlab-workhorse2857 behaves like returning response status2858 returns forbidden2859 visibility: :public, user_role: :developer, member: true, token_header: "DEPLOY-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2860 behaves like rejects terraform module packages access2861 for user type developer2862 behaves like returning response status2863 returns unauthorized2864 visibility: :private, user_role: :developer, member: true, token_header: "DEPLOY-TOKEN", token_type: :deploy_token, shared_examples_name: "process terraform module workhorse authorization", expected_status: :success2865 behaves like process terraform module workhorse authorization2866 for user type developer2867 has the proper content type2868 behaves like returning response status2869 returns success2870 with a request that bypassed gitlab-workhorse2871 behaves like returning response status2872 returns forbidden2873 visibility: :private, user_role: :developer, member: true, token_header: "DEPLOY-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2874 behaves like rejects terraform module packages access2875 for user type developer2876 behaves like returning response status2877 returns unauthorized2878 PUT /api/v4/projects/:project_id/packages/terraform/modules/:module_name/:module_system/:module_version/file2879 with valid project2880 visibility: :public, user_role: :developer, member: true, token_header: "PRIVATE-TOKEN", token_type: :personal_access_token, shared_examples_name: "process terraform module upload", expected_status: :created2881 behaves like process terraform module upload2882 for user type developer2883 with object storage disabled2884 without a file from workhorse2885 behaves like returning response status2886 returns bad_request2887 with correct params2888 behaves like package workhorse uploads2889 without a workhorse header2890 logs an error2891 behaves like returning response status2892 returns forbidden2893 behaves like creates terraform module package files2894 creates package files2895 behaves like a package tracking event2896 creates a gitlab tracking event push_package2897 with object storage enabled2898 and direct upload enabled2899 behaves like creates terraform module package files2900 creates package files2901 with invalid remote_id: 1231232902 behaves like returning response status2903 returns forbidden2904 with invalid remote_id: ../../1231232905 behaves like returning response status2906 returns forbidden2907 and direct upload disabled2908 and background upload disabled2909 behaves like creates terraform module package files2910 creates package files2911 and background upload enabled2912 behaves like creates terraform module package files2913 creates package files2914 visibility: :public, user_role: :guest, member: true, token_header: "PRIVATE-TOKEN", token_type: :personal_access_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2915 behaves like rejects terraform module packages access2916 for user type guest2917 behaves like returning response status2918 returns forbidden2919 visibility: :public, user_role: :developer, member: true, token_header: "PRIVATE-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2920 behaves like rejects terraform module packages access2921 for user type developer2922 behaves like returning response status2923 returns unauthorized2924 visibility: :public, user_role: :guest, member: true, token_header: "PRIVATE-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2925 behaves like rejects terraform module packages access2926 for user type guest2927 behaves like returning response status2928 returns unauthorized2929 visibility: :public, user_role: :developer, member: false, token_header: "PRIVATE-TOKEN", token_type: :personal_access_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2930 behaves like rejects terraform module packages access2931 for user type developer2932 behaves like returning response status2933 returns forbidden2934 visibility: :public, user_role: :guest, member: false, token_header: "PRIVATE-TOKEN", token_type: :personal_access_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2935 behaves like rejects terraform module packages access2936 for user type guest2937 behaves like returning response status2938 returns forbidden2939 visibility: :public, user_role: :developer, member: false, token_header: "PRIVATE-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2940 behaves like rejects terraform module packages access2941 for user type developer2942 behaves like returning response status2943 returns unauthorized2944 visibility: :public, user_role: :guest, member: false, token_header: "PRIVATE-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2945 behaves like rejects terraform module packages access2946 for user type guest2947 behaves like returning response status2948 returns unauthorized2949 visibility: :public, user_role: :anonymous, member: false, token_header: nil, token_type: nil, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2950 behaves like rejects terraform module packages access2951 for user type anonymous2952 behaves like returning response status2953 returns unauthorized2954 visibility: :private, user_role: :developer, member: true, token_header: "PRIVATE-TOKEN", token_type: :personal_access_token, shared_examples_name: "process terraform module upload", expected_status: :created2955 behaves like process terraform module upload2956 for user type developer2957 with object storage disabled2958 without a file from workhorse2959 behaves like returning response status2960 returns bad_request2961 with correct params2962 behaves like package workhorse uploads2963 without a workhorse header2964 logs an error2965 behaves like returning response status2966 returns forbidden2967 behaves like creates terraform module package files2968 creates package files2969 behaves like a package tracking event2970 creates a gitlab tracking event push_package2971 with object storage enabled2972 and direct upload enabled2973 behaves like creates terraform module package files2974 creates package files2975 with invalid remote_id: 1231232976 behaves like returning response status2977 returns forbidden2978 with invalid remote_id: ../../1231232979 behaves like returning response status2980 returns forbidden2981 and direct upload disabled2982 and background upload disabled2983 behaves like creates terraform module package files2984 creates package files2985 and background upload enabled2986 behaves like creates terraform module package files2987 creates package files2988 visibility: :private, user_role: :guest, member: true, token_header: "PRIVATE-TOKEN", token_type: :personal_access_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2989 behaves like rejects terraform module packages access2990 for user type guest2991 behaves like returning response status2992 returns forbidden2993 visibility: :private, user_role: :developer, member: true, token_header: "PRIVATE-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2994 behaves like rejects terraform module packages access2995 for user type developer2996 behaves like returning response status2997 returns unauthorized2998 visibility: :private, user_role: :guest, member: true, token_header: "PRIVATE-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2999 behaves like rejects terraform module packages access3000 for user type guest3001 behaves like returning response status3002 returns unauthorized3003 visibility: :private, user_role: :developer, member: false, token_header: "PRIVATE-TOKEN", token_type: :personal_access_token, shared_examples_name: "rejects terraform module packages access", expected_status: :not_found3004 behaves like rejects terraform module packages access3005 for user type developer3006 behaves like returning response status3007 returns not_found3008 visibility: :private, user_role: :guest, member: false, token_header: "PRIVATE-TOKEN", token_type: :personal_access_token, shared_examples_name: "rejects terraform module packages access", expected_status: :not_found3009 behaves like rejects terraform module packages access3010 for user type guest3011 behaves like returning response status3012 returns not_found3013 visibility: :private, user_role: :developer, member: false, token_header: "PRIVATE-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3014 behaves like rejects terraform module packages access3015 for user type developer3016 behaves like returning response status3017 returns unauthorized3018 visibility: :private, user_role: :guest, member: false, token_header: "PRIVATE-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3019 behaves like rejects terraform module packages access3020 for user type guest3021 behaves like returning response status3022 returns unauthorized3023 visibility: :private, user_role: :anonymous, member: false, token_header: nil, token_type: nil, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3024 behaves like rejects terraform module packages access3025 for user type anonymous3026 behaves like returning response status3027 returns unauthorized3028 visibility: :public, user_role: :developer, member: true, token_header: "JOB-TOKEN", token_type: :job_token, shared_examples_name: "process terraform module upload", expected_status: :created3029 behaves like process terraform module upload3030 for user type developer3031 with object storage disabled3032 without a file from workhorse3033 behaves like returning response status3034 returns bad_request3035 with correct params3036 behaves like package workhorse uploads3037 without a workhorse header3038 logs an error3039 behaves like returning response status3040 returns forbidden3041 behaves like creates terraform module package files3042 creates package files3043 behaves like a package tracking event3044 creates a gitlab tracking event push_package3045 with object storage enabled3046 and direct upload enabled3047 behaves like creates terraform module package files3048 creates package files3049 with invalid remote_id: 1231233050 behaves like returning response status3051 returns forbidden3052 with invalid remote_id: ../../1231233053 behaves like returning response status3054 returns forbidden3055 and direct upload disabled3056 and background upload disabled3057 behaves like creates terraform module package files3058 creates package files3059 and background upload enabled3060 behaves like creates terraform module package files3061 creates package files3062 visibility: :public, user_role: :guest, member: true, token_header: "JOB-TOKEN", token_type: :job_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden3063 behaves like rejects terraform module packages access3064 for user type guest3065 behaves like returning response status3066 returns forbidden3067 visibility: :public, user_role: :developer, member: true, token_header: "JOB-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3068 behaves like rejects terraform module packages access3069 for user type developer3070 behaves like returning response status3071 returns unauthorized3072 visibility: :public, user_role: :guest, member: true, token_header: "JOB-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3073 behaves like rejects terraform module packages access3074 for user type guest3075 behaves like returning response status3076 returns unauthorized3077 visibility: :public, user_role: :developer, member: false, token_header: "JOB-TOKEN", token_type: :job_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden3078 behaves like rejects terraform module packages access3079 for user type developer3080 behaves like returning response status3081 returns forbidden3082 visibility: :public, user_role: :guest, member: false, token_header: "JOB-TOKEN", token_type: :job_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden3083 behaves like rejects terraform module packages access3084 for user type guest3085 behaves like returning response status3086 returns forbidden3087 visibility: :public, user_role: :developer, member: false, token_header: "JOB-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3088 behaves like rejects terraform module packages access3089 for user type developer3090 behaves like returning response status3091 returns unauthorized3092 visibility: :public, user_role: :guest, member: false, token_header: "JOB-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3093 behaves like rejects terraform module packages access3094 for user type guest3095 behaves like returning response status3096 returns unauthorized3097 visibility: :private, user_role: :developer, member: true, token_header: "JOB-TOKEN", token_type: :job_token, shared_examples_name: "process terraform module upload", expected_status: :created3098 behaves like process terraform module upload3099 for user type developer3100 with object storage disabled3101 without a file from workhorse3102 behaves like returning response status3103 returns bad_request3104 with correct params3105 behaves like package workhorse uploads3106 without a workhorse header3107 logs an error3108 behaves like returning response status3109 returns forbidden3110 behaves like creates terraform module package files3111 creates package files3112 behaves like a package tracking event3113 creates a gitlab tracking event push_package3114 with object storage enabled3115 and direct upload enabled3116 behaves like creates terraform module package files3117 creates package files3118 with invalid remote_id: 1231233119 behaves like returning response status3120 returns forbidden3121 with invalid remote_id: ../../1231233122 behaves like returning response status3123 returns forbidden3124 and direct upload disabled3125 and background upload disabled3126 behaves like creates terraform module package files3127 creates package files3128 and background upload enabled3129 behaves like creates terraform module package files3130 creates package files3131 visibility: :private, user_role: :guest, member: true, token_header: "JOB-TOKEN", token_type: :job_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden3132 behaves like rejects terraform module packages access3133 for user type guest3134 behaves like returning response status3135 returns forbidden3136 visibility: :private, user_role: :developer, member: true, token_header: "JOB-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3137 behaves like rejects terraform module packages access3138 for user type developer3139 behaves like returning response status3140 returns unauthorized3141 visibility: :private, user_role: :guest, member: true, token_header: "JOB-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3142 behaves like rejects terraform module packages access3143 for user type guest3144 behaves like returning response status3145 returns unauthorized3146 visibility: :private, user_role: :developer, member: false, token_header: "JOB-TOKEN", token_type: :job_token, shared_examples_name: "rejects terraform module packages access", expected_status: :not_found3147 behaves like rejects terraform module packages access3148 for user type developer3149 behaves like returning response status3150 returns not_found3151 visibility: :private, user_role: :guest, member: false, token_header: "JOB-TOKEN", token_type: :job_token, shared_examples_name: "rejects terraform module packages access", expected_status: :not_found3152 behaves like rejects terraform module packages access3153 for user type guest3154 behaves like returning response status3155 returns not_found3156 visibility: :private, user_role: :developer, member: false, token_header: "JOB-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3157 behaves like rejects terraform module packages access3158 for user type developer3159 behaves like returning response status3160 returns unauthorized3161 visibility: :private, user_role: :guest, member: false, token_header: "JOB-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3162 behaves like rejects terraform module packages access3163 for user type guest3164 behaves like returning response status3165 returns unauthorized3166 visibility: :public, user_role: :developer, member: true, token_header: "DEPLOY-TOKEN", token_type: :deploy_token, shared_examples_name: "process terraform module upload", expected_status: :created3167 behaves like process terraform module upload3168 for user type developer3169 with object storage disabled3170 without a file from workhorse3171 behaves like returning response status3172 returns bad_request3173 with correct params3174 behaves like package workhorse uploads3175 without a workhorse header3176 logs an error3177 behaves like returning response status3178 returns forbidden3179 behaves like creates terraform module package files3180 creates package files3181 behaves like a package tracking event3182 creates a gitlab tracking event push_package3183 with object storage enabled3184 and direct upload enabled3185 behaves like creates terraform module package files3186 creates package files3187 with invalid remote_id: 1231233188 behaves like returning response status3189 returns forbidden3190 with invalid remote_id: ../../1231233191 behaves like returning response status3192 returns forbidden3193 and direct upload disabled3194 and background upload disabled3195 behaves like creates terraform module package files3196 creates package files3197 and background upload enabled3198 behaves like creates terraform module package files3199 creates package files3200 visibility: :public, user_role: :developer, member: true, token_header: "DEPLOY-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3201 behaves like rejects terraform module packages access3202 for user type developer3203 behaves like returning response status3204 returns unauthorized3205 visibility: :private, user_role: :developer, member: true, token_header: "DEPLOY-TOKEN", token_type: :deploy_token, shared_examples_name: "process terraform module upload", expected_status: :created3206 behaves like process terraform module upload3207 for user type developer3208 with object storage disabled3209 without a file from workhorse3210 behaves like returning response status3211 returns bad_request3212 with correct params3213 behaves like package workhorse uploads3214 without a workhorse header3215 logs an error3216 behaves like returning response status3217 returns forbidden3218 behaves like creates terraform module package files3219 creates package files3220 behaves like a package tracking event3221 creates a gitlab tracking event push_package3222 with object storage enabled3223 and direct upload enabled3224 behaves like creates terraform module package files3225 creates package files3226 with invalid remote_id: 1231233227 behaves like returning response status3228 returns forbidden3229 with invalid remote_id: ../../1231233230 behaves like returning response status3231 returns forbidden3232 and direct upload disabled3233 and background upload disabled3234 behaves like creates terraform module package files3235 creates package files3236 and background upload enabled3237 behaves like creates terraform module package files3238 creates package files3239 visibility: :private, user_role: :developer, member: true, token_header: "DEPLOY-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3240 behaves like rejects terraform module packages access3241 for user type developer3242 behaves like returning response status3243 returns unauthorized3244 failed package file save3245 does not create package record3246 with an existing package3247 does not create a new package3248 marked as pending_destruction3249 does create a new package3250Projects::MergeRequests::DiffsController3251 GET show3252 with default params3253 for the same project3254 serializes merge request diff collection3255 when note is a legacy diff note3256 serializes merge request diff collection3257 behaves like forked project with submodules3258 renders3259 behaves like cached diff collection3260 ensures diff highlighting cache writing3261 behaves like diff note on-demand position creation3262 updates diff discussion positions3263 GET diffs_metadata3264 behaves like 404 for unexistent diffable3265 when diffable does not exists3266 returns 4043267 when the merge_request_diff.id is blank3268 returns 4043269 behaves like show the right diff files with previous diff_id3270 with previous diff_id3271 shows the right diff files3272 when not authorized3273 returns 404 when not a member3274 returns 404 when visibility level is not enough3275 with valid diff_id3276 behaves like serializes diffs metadata with expected arguments3277 returns success3278 serializes paginated merge request diff collection3279 with diff_head param passed3280 the merge request can be compared with head3281 compares diffs with the head3282 when diff_id and start_sha are set3283 correctly generates the right diff between versions3284 the merge request cannot be compared with head3285 compares diffs with the base3286 with MR regular diff params3287 behaves like serializes diffs metadata with expected arguments3288 returns success3289 serializes paginated merge request diff collection3290 with commit param3291 behaves like serializes diffs metadata with expected arguments3292 returns success3293 serializes paginated merge request diff collection3294 when display_merge_conflicts_in_diff is disabled3295 behaves like serializes diffs metadata with expected arguments3296 returns success3297 serializes paginated merge request diff collection3298 GET diff_for_path3299 when the merge request exists3300 when the user can view the merge request3301 when the path exists in the diff3302 enables diff notes3303 only renders the diffs for the path given3304 when the user cannot view the merge request3305 returns a 4043306 when the merge request does not exist3307 returns a 4043308 when the merge request belongs to a different project3309 returns a 4043310 GET diffs_batch3311 behaves like 404 for unexistent diffable3312 when diffable does not exists3313 returns 4043314 when the merge_request_diff.id is blank3315 returns 4043316 behaves like show the right diff files with previous diff_id3317 with previous diff_id3318 shows the right diff files3319 when not authorized3320 returns 4043321 with valid diff_id3322 behaves like serializes diffs with expected arguments3323 serializes paginated merge request diff collection3324 behaves like successful request3325 returns success3326 tracks mr_diffs event3327 when DNT is enabled3328 does not track any mr_diffs event3329 when user has view_diffs_file_by_file set to false3330 does not track single_file_diffs events3331 when user has view_diffs_file_by_file set to true3332 tracks single_file_diffs events3333 with commit_id param3334 behaves like serializes diffs with expected arguments3335 serializes paginated merge request diff collection3336 with diff_id and start_sha params3337 behaves like serializes diffs with expected arguments3338 serializes paginated merge request diff collection3339 behaves like successful request3340 returns success3341 tracks mr_diffs event3342 when DNT is enabled3343 does not track any mr_diffs event3344 when user has view_diffs_file_by_file set to false3345 does not track single_file_diffs events3346 when user has view_diffs_file_by_file set to true3347 tracks single_file_diffs events3348 with paths param3349 filters down the response to the expected file path3350 behaves like serializes diffs with expected arguments3351 serializes paginated merge request diff collection3352 behaves like successful request3353 returns success3354 tracks mr_diffs event3355 when DNT is enabled3356 does not track any mr_diffs event3357 when user has view_diffs_file_by_file set to false3358 does not track single_file_diffs events3359 when user has view_diffs_file_by_file set to true3360 tracks single_file_diffs events3361 with default params3362 behaves like serializes diffs with expected arguments3363 serializes paginated merge request diff collection3364 behaves like successful request3365 returns success3366 tracks mr_diffs event3367 when DNT is enabled3368 does not track any mr_diffs event3369 when user has view_diffs_file_by_file set to false3370 does not track single_file_diffs events3371 when user has view_diffs_file_by_file set to true3372 tracks single_file_diffs events3373 with smaller diff batch params3374 behaves like serializes diffs with expected arguments3375 serializes paginated merge request diff collection3376 behaves like successful request3377 returns success3378 tracks mr_diffs event3379 when DNT is enabled3380 does not track any mr_diffs event3381 when user has view_diffs_file_by_file set to false3382 does not track single_file_diffs events3383 when user has view_diffs_file_by_file set to true3384 tracks single_file_diffs events3385 when display_merge_conflicts_in_diff is disabled3386 behaves like serializes diffs with expected arguments3387 serializes paginated merge request diff collection3388 behaves like successful request3389 returns success3390 tracks mr_diffs event3391 when DNT is enabled3392 does not track any mr_diffs event3393 when user has view_diffs_file_by_file set to false3394 does not track single_file_diffs events3395 when user has view_diffs_file_by_file set to true3396 tracks single_file_diffs events3397 behaves like forked project with submodules3398 renders3399 behaves like cached diff collection3400 ensures diff highlighting cache writing3401 diff unfolding3402 unfolds correct diff file positions3403API::Wikis3404 GET /projects/:id/wikis3405 when wiki is disabled3406 when user is guest3407 returns 404 Project Not Found3408 when user is developer3409 returns 403 Forbidden3410 when user is maintainer3411 returns 403 Forbidden3412 when wiki is available only for team members3413 when user is guest3414 returns 404 Project Not Found3415 when user is developer3416 return the empty list of wiki pages3417 when wiki has pages3418 returns the list of wiki pages without content3419 returns the list of wiki pages with content3420 when user is maintainer3421 return the empty list of wiki pages3422 when wiki has pages3423 returns the list of wiki pages without content3424 returns the list of wiki pages with content3425 when wiki is available for everyone with access3426 when user is guest3427 returns 404 Project Not Found3428 when user is developer3429 return the empty list of wiki pages3430 when wiki has pages3431 returns the list of wiki pages without content3432 returns the list of wiki pages with content3433 when user is maintainer3434 return the empty list of wiki pages3435 when wiki has pages3436 returns the list of wiki pages without content3437 returns the list of wiki pages with content3438 GET /projects/:id/wikis/:slug3439 when wiki is disabled3440 when user is guest3441 returns 404 Project Not Found3442 when user is developer3443 returns 403 Forbidden3444 when user is maintainer3445 returns 403 Forbidden3446 when wiki is available only for team members3447 when user is guest3448 returns 404 Project Not Found3449 when user is developer3450 behaves like returns wiki page3451 is expected to eq "Page 5"3452 when render param is false3453 behaves like returns wiki page3454 is expected to eq "Page 6"3455 when render param is true3456 behaves like returns wiki page3457 is expected to eq "Page 7"3458 when wiki page has versions3459 when version param is not present3460 retrieves the last version3461 when version param is set3462 retrieves the specific page version3463 when version param is not valid or inexistent3464 behaves like wiki API 404 Wiki Page Not Found3465 returns 404 Wiki Page Not Found3466 when page is not existing3467 returns 404 Wiki Page Not Found3468 when user is maintainer3469 behaves like returns wiki page3470 is expected to eq "Page 11"3471 when render param is false3472 behaves like returns wiki page3473 is expected to eq "Page 12"3474 when render param is true3475 behaves like returns wiki page3476 is expected to eq "Page 13"3477 when wiki page has versions3478 when version param is not present3479 retrieves the last version3480 when version param is set3481 retrieves the specific page version3482 when version param is not valid or inexistent3483 behaves like wiki API 404 Wiki Page Not Found3484 returns 404 Wiki Page Not Found3485 when page is not existing3486 returns 404 Wiki Page Not Found3487 when wiki is available for everyone with access3488 when user is guest3489 returns 404 Project Not Found3490 when user is developer3491 behaves like returns wiki page3492 is expected to eq "Page 18"3493 when render param is false3494 behaves like returns wiki page3495 is expected to eq "Page 19"3496 when render param is true3497 behaves like returns wiki page3498 is expected to eq "Page 20"3499 when wiki page has versions3500 when version param is not present3501 retrieves the last version3502 when version param is set3503 retrieves the specific page version3504 when version param is not valid or inexistent3505 behaves like wiki API 404 Wiki Page Not Found3506 returns 404 Wiki Page Not Found3507 when page is not existing3508 returns 404 Wiki Page Not Found3509 when user is maintainer3510 behaves like returns wiki page3511 is expected to eq "Page 24"3512 when render param is false3513 behaves like returns wiki page3514 is expected to eq "Page 25"3515 when render param is true3516 behaves like returns wiki page3517 is expected to eq "Page 26"3518 when wiki page has versions3519 when version param is not present3520 retrieves the last version3521 when version param is set3522 retrieves the specific page version3523 when version param is not valid or inexistent3524 behaves like wiki API 404 Wiki Page Not Found3525 returns 404 Wiki Page Not Found3526 when page is not existing3527 returns 404 Wiki Page Not Found3528 when content contains a reference3529 expands the reference in the content3530 POST /projects/:id/wikis3531 when wiki is disabled3532 when user is guest3533 returns 404 Project Not Found3534 when user is developer3535 returns 403 Forbidden3536 when user is maintainer3537 returns 403 Forbidden3538 when wiki is available only for team members3539 when user is guest3540 returns 404 Project Not Found3541 when user is developer3542 creates the wiki page3543 responds with validation error on empty title3544 responds with validation error on empty content3545 when user is maintainer3546 creates the wiki page3547 responds with validation error on empty title3548 responds with validation error on empty content3549 when wiki is available for everyone with access3550 when user is guest3551 returns 404 Project Not Found3552 when user is developer3553 creates the wiki page3554 responds with validation error on empty title3555 responds with validation error on empty content3556 when user is maintainer3557 creates the wiki page3558 responds with validation error on empty title3559 responds with validation error on empty content3560 PUT /projects/:id/wikis/:slug3561 when wiki is disabled3562 when user is guest3563 returns 404 Project Not Found3564 when user is developer3565 returns 403 Forbidden3566 when user is maintainer3567 returns 403 Forbidden3568 when wiki is available only for team members3569 when user is guest3570 returns 404 Project Not Found3571 when user is developer3572 updates the wiki page3573 updates with wiki with missing title3574 updates with wiki with missing content3575 updates with wiki with missing format3576 when page is not existing3577 returns 404 Wiki Page Not Found3578 when user is maintainer3579 updates the wiki page3580 updates with wiki with missing title3581 updates with wiki with missing content3582 updates with wiki with missing format3583 when page is not existing3584 returns 404 Wiki Page Not Found3585 when wiki is available for everyone with access3586 when user is guest3587 returns 404 Project Not Found3588 when user is developer3589 updates the wiki page3590 updates with wiki with missing title3591 updates with wiki with missing content3592 updates with wiki with missing format3593 when page is not existing3594 returns 404 Wiki Page Not Found3595 when user is maintainer3596 updates the wiki page3597 updates with wiki with missing title3598 updates with wiki with missing content3599 updates with wiki with missing format3600 when page is not existing3601 returns 404 Wiki Page Not Found3602 when wiki belongs to a group project3603 updates the wiki page3604 updates with wiki with missing title3605 updates with wiki with missing content3606 updates with wiki with missing format3607 DELETE /projects/:id/wikis/:slug3608 when wiki is disabled3609 when user is guest3610 returns 404 Project Not Found3611 when user is developer3612 returns 403 Forbidden3613 when user is maintainer3614 returns 403 Forbidden3615 when wiki is available only for team members3616 when user is guest3617 returns 404 Project Not Found3618 when user is developer3619 returns 403 Forbidden3620 when user is maintainer3621 returns 204 No Content3622 when wiki is available for everyone with access3623 when user is guest3624 returns 404 Project Not Found3625 when user is developer3626 returns 403 Forbidden3627 when user is maintainer3628 returns 204 No Content3629 when page is not existing3630 returns 404 Wiki Page Not Found3631 when there is an error deleting the page3632 returns 4223633 when wiki belongs to a group project3634 returns 204 No Content3635 POST /projects/:id/wikis/attachments3636 when wiki is disabled3637 when user is guest3638 returns 404 Project Not Found3639 when user is developer3640 returns 403 Forbidden3641 when user is maintainer3642 returns 403 Forbidden3643 when wiki is available only for team members3644 when user is guest3645 returns 404 Project Not Found3646 when user is developer3647 pushes attachment to the wiki repository3648 responds with validation error on empty file3649 responds with validation error on invalid temp file3650 is backward compatible with regular multipart uploads3651 when user is maintainer3652 pushes attachment to the wiki repository3653 responds with validation error on empty file3654 responds with validation error on invalid temp file3655 is backward compatible with regular multipart uploads3656 when wiki is available for everyone with access3657 when user is guest3658 returns 404 Project Not Found3659 when user is developer3660 pushes attachment to the wiki repository3661 responds with validation error on empty file3662 responds with validation error on invalid temp file3663 is backward compatible with regular multipart uploads3664 when user is maintainer3665 pushes attachment to the wiki repository3666 responds with validation error on empty file3667 responds with validation error on invalid temp file3668 is backward compatible with regular multipart uploads3669API::Release::Links3670 GET /projects/:id/releases/:tag_name/assets/links3671 when there are two release links3672 returns 200 HTTP status3673 returns release links ordered by created_at3674 matches response schema3675 when using JOB-TOKEN auth3676 returns releases links3677 when release does not exist3678 behaves like 404 response3679 returns 4043680 when user is not a project member3681 behaves like 404 response3682 returns 4043683 when project is public3684 allows the request3685 when project is public and the repository is private3686 behaves like 403 response3687 returns 4033688 when the release does not exists3689 behaves like 403 response3690 returns 4033691 GET /projects/:id/releases/:tag_name/assets/links/:link_id3692 returns 200 HTTP status3693 returns a link entry3694 matches response schema3695 when using JOB-TOKEN auth3696 returns releases link3697 when specified tag is not found in the project3698 behaves like 404 response3699 returns 4043700 when user is not a project member3701 behaves like 404 response3702 returns 4043703 when project is public3704 allows the request3705 #direct_asset_url3706 when filepath is provided3707 is expected to eq "http://localhost/namespace224/project289/-/releases/v0.1/downloads/bin/bigfile.exe"3708 when filepath is not provided3709 is expected to eq "https://google.com/-/jobs/140463678/artifacts/download"3710 POST /projects/:id/releases/:tag_name/assets/links3711 accepts the request3712 creates a new release3713 matches response schema3714 when using JOB-TOKEN auth3715 creates a new release link3716 with protected tag3717 when user has access to the protected tag3718 accepts the request3719 when user does not have access to the protected tag3720 forbids the request3721 when name is empty3722 behaves like 400 response3723 returns 4003724 when user is a reporter3725 behaves like 403 response3726 returns 4033727 when user is not a project member3728 forbids the request3729 when project is public3730 forbids the request3731 when the same link already exists3732 behaves like 400 response3733 returns 4003734 PUT /projects/:id/releases/:tag_name/assets/links/:link_id3735 accepts the request3736 updates the name3737 does not update the url3738 matches response schema3739 when using JOB-TOKEN auth3740 updates the release link3741 with protected tag3742 when user has access to the protected tag3743 accepts the request3744 when user does not have access to the protected tag3745 forbids the request3746 when params is empty3747 does not allow the request3748 when there are no corresponding release link3749 behaves like 404 response3750 returns 4043751 when user is a reporter3752 behaves like 403 response3753 returns 4033754 when user is not a project member3755 behaves like 404 response3756 returns 4043757 when project is public3758 behaves like 403 response3759 returns 4033760 DELETE /projects/:id/releases/:tag_name/assets/links/:link_id3761 accepts the request3762 destroys the release link3763 matches response schema3764 when using JOB-TOKEN auth3765 deletes the release link3766 with protected tag3767 when user has access to the protected tag3768 accepts the request3769 when user does not have access to the protected tag3770 forbids the request3771 when there are no corresponding release link3772 behaves like 404 response3773 returns 4043774 when user is a reporter3775 behaves like 403 response3776 returns 4033777 when user is not a project member3778 behaves like 404 response3779 returns 4043780 when project is public3781 behaves like 403 response3782 returns 4033783Query.merge_request(id)3784 behaves like a working graphql query3785 returns a successful response3786 behaves like a noteable graphql type we can query3787 .discussions3788 can fetch discussions3789 can fetch discussion noteable3790 .notes3791DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.3792DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.3793 can fetch notes3794 when the user does not have access to the merge request3795 returns nil3796 when the user does have access3797DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.3798DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.3799DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.3800DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.3801DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.3802DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.3803 returns the merge request3804 when selecting any single field3805 field: "createdAt"3806 behaves like a working graphql query3807 returns a successful response3808 returns the merge request and field3809 field: "description"3810 behaves like a working graphql query3811 returns a successful response3812 returns the merge request and field3813 field: "diffHeadSha"3814 behaves like a working graphql query3815 returns a successful response3816 returns the merge request and field3817 field: "draft"3818 behaves like a working graphql query3819 returns a successful response3820 returns the merge request and field3821 field: "id"3822 behaves like a working graphql query3823 returns a successful response3824 returns the merge request and field3825 field: "iid"3826 behaves like a working graphql query3827 returns a successful response3828 returns the merge request and field3829 field: "mergeWhenPipelineSucceeds"3830 behaves like a working graphql query3831 returns a successful response3832 returns the merge request and field3833 field: "mergedAt"3834 behaves like a working graphql query3835 returns a successful response3836 returns the merge request and field3837 field: "projectId"3838 behaves like a working graphql query3839 returns a successful response3840 returns the merge request and field3841 field: "sourceBranch"3842 behaves like a working graphql query3843 returns a successful response3844 returns the merge request and field3845 field: "sourceBranchProtected"3846 behaves like a working graphql query3847 returns a successful response3848 returns the merge request and field3849 field: "sourceProjectId"3850 behaves like a working graphql query3851 returns a successful response3852 returns the merge request and field3853 field: "state"3854 behaves like a working graphql query3855 returns a successful response3856 returns the merge request and field3857 field: "targetBranch"3858 behaves like a working graphql query3859 returns a successful response3860 returns the merge request and field3861 field: "targetProjectId"3862 behaves like a working graphql query3863 returns a successful response3864 returns the merge request and field3865 field: "title"3866 behaves like a working graphql query3867 returns a successful response3868 returns the merge request and field3869 field: "updatedAt"3870 behaves like a working graphql query3871 returns a successful response3872 returns the merge request and field3873 field: "allowCollaboration"3874 behaves like a working graphql query3875 returns a successful response3876 returns the merge request and field3877 field: "defaultMergeCommitMessage"3878 behaves like a working graphql query3879 returns a successful response3880 returns the merge request and field3881 field: "defaultSquashCommitMessage"3882 behaves like a working graphql query3883 returns a successful response3884 returns the merge request and field3885 field: "divergedFromTargetBranch"3886 behaves like a working graphql query3887 returns a successful response3888 returns the merge request and field3889 field: "downvotes"3890 behaves like a working graphql query3891 returns a successful response3892 returns the merge request and field3893 field: "forceRemoveSourceBranch"3894 behaves like a working graphql query3895 returns a successful response3896 returns the merge request and field3897 field: "inProgressMergeCommitSha"3898 behaves like a working graphql query3899 returns a successful response3900 returns the merge request and field3901 field: "mergeCommitSha"3902 behaves like a working graphql query3903 returns a successful response3904 returns the merge request and field3905 field: "mergeError"3906 behaves like a working graphql query3907 returns a successful response3908 returns the merge request and field3909 field: "mergeOngoing"3910 behaves like a working graphql query3911 returns a successful response3912 returns the merge request and field3913 field: "mergeStatus"3914 behaves like a working graphql query3915 returns a successful response3916 returns the merge request and field3917 field: "mergeStatusEnum"3918 behaves like a working graphql query3919 returns a successful response3920 returns the merge request and field3921 field: "detailedMergeStatus"3922 behaves like a working graphql query3923 returns a successful response3924 returns the merge request and field3925 field: "mergeableDiscussionsState"3926 behaves like a working graphql query3927 returns a successful response3928 returns the merge request and field3929 field: "rebaseCommitSha"3930 behaves like a working graphql query3931 returns a successful response3932 returns the merge request and field3933 field: "rebaseInProgress"3934 behaves like a working graphql query3935 returns a successful response3936 returns the merge request and field3937 field: "shouldBeRebased"3938 behaves like a working graphql query3939 returns a successful response3940 returns the merge request and field3941 field: "shouldRemoveSourceBranch"3942 behaves like a working graphql query3943 returns a successful response3944 returns the merge request and field3945 field: "sourceBranchExists"3946 behaves like a working graphql query3947 returns a successful response3948 returns the merge request and field3949 field: "targetBranchExists"3950 behaves like a working graphql query3951 returns a successful response3952 returns the merge request and field3953 field: "upvotes"3954 behaves like a working graphql query3955 returns a successful response3956 returns the merge request and field3957 field: "userDiscussionsCount"3958 behaves like a working graphql query3959 returns a successful response3960 returns the merge request and field3961 field: "userNotesCount"3962 behaves like a working graphql query3963 returns a successful response3964 returns the merge request and field3965 field: "webUrl"3966 behaves like a working graphql query3967 returns a successful response3968 returns the merge request and field3969 field: "discussionLocked"3970 behaves like a working graphql query3971 returns a successful response3972 returns the merge request and field3973 field: "humanTimeEstimate"3974 behaves like a working graphql query3975 returns a successful response3976 returns the merge request and field3977 field: "humanTotalTimeSpent"3978 behaves like a working graphql query3979 returns a successful response3980 returns the merge request and field3981 field: "reference"3982 behaves like a working graphql query3983 returns a successful response3984 returns the merge request and field3985 field: "autoMergeEnabled"3986 behaves like a working graphql query3987 returns a successful response3988 returns the merge request and field3989 field: "commitCount"3990 behaves like a working graphql query3991 returns a successful response3992 returns the merge request and field3993 field: "conflicts"3994 behaves like a working graphql query3995 returns a successful response3996 returns the merge request and field3997 field: "subscribed"3998 behaves like a working graphql query3999 returns a successful response4000 returns the merge request and field4001 field: "timeEstimate"4002 behaves like a working graphql query4003 returns a successful response4004 returns the merge request and field4005 field: "totalTimeSpent"4006 behaves like a working graphql query4007 returns a successful response4008 returns the merge request and field4009 field: "autoMergeStrategy"4010 behaves like a working graphql query4011 returns a successful response4012 returns the merge request and field4013 field: "availableAutoMergeStrategies"4014 behaves like a working graphql query4015 returns a successful response4016 returns the merge request and field4017 field: "hasCi"4018 behaves like a working graphql query4019 returns a successful response4020 returns the merge request and field4021 field: "mergeable"4022 behaves like a working graphql query4023 returns a successful response4024 returns the merge request and field4025 field: "securityAutoFix"4026 behaves like a working graphql query4027 returns a successful response4028 returns the merge request and field4029 field: "squash"4030 behaves like a working graphql query4031 returns a successful response4032 returns the merge request and field4033 field: "squashOnMerge"4034 behaves like a working graphql query4035 returns a successful response4036 returns the merge request and field4037 field: "titleHtml"4038 behaves like a working graphql query4039 returns a successful response4040 returns the merge request and field4041 field: "descriptionHtml"4042 behaves like a working graphql query4043 returns a successful response4044 returns the merge request and field4045 field: "approved"4046 behaves like a working graphql query4047 returns a successful response4048 returns the merge request and field4049 field: "approvalsLeft"4050 behaves like a working graphql query4051 returns a successful response4052 returns the merge request and field4053 field: "approvalsRequired"4054 behaves like a working graphql query4055 returns a successful response4056 returns the merge request and field4057 field: "mergeTrainsCount"4058 behaves like a working graphql query4059 returns a successful response4060 returns the merge request and field4061 field: "hasSecurityReports"4062 behaves like a working graphql query4063 returns a successful response4064 returns the merge request and field4065 field: "securityReportsUpToDateOnTargetBranch"4066 behaves like a working graphql query4067 returns a successful response4068 returns the merge request and field4069 when selecting multiple fields4070 returns the merge request with the specified fields4071 when passed a non-merge request gid4072 returns an error4073Groups::ChildrenController4074 GET #index4075 for projects4076 as a user4077 shows all children4078 being member of private subgroup4079 shows public and private children the user is member of4080 as a guest4081 shows the public children4082 for subgroups4083 as a user4084 shows all children4085 being member of private subgroup4086 shows public and private children the user is member of4087 as a guest4088 shows the public children4089 filtering children4090 expands the tree for matching projects4091 expands the tree for matching subgroups4092 merges the trees correctly4093 expands the tree upto a specified parent4094 returns an array with one element when only one result is matched4095 returns an empty array when there are no search results4096 succeeds if multiple pages contain matching subgroups4097 includes pagination headers4098 queries per rendered element4099 queries the expected amount for a group row4100 queries the expected amount for a project row4101 when rendering hierarchies4102 queries the expected amount when nested rows are increased for a group4103 queries the expected amount when a new group match is added4104 queries the expected amount when nested rows are increased for a project4105 pagination4106 with only projects4107 has projects on the first page4108 has projects on the second page4109 with subgroups and projects4110 contains all subgroups4111 contains the project and group on the second page4112 with a mixed first page4113 correctly calculates the counts4114 external authorization4115 works when external authorization service is enabled4116API::Terraform::State4117 GET /projects/:id/terraform/state/:name4118 behaves like endpoint with unique user tracking4119 without authentication4120 does not track unique hll event4121 does not track Snowplow event4122 with maintainer permissions4123 behaves like tracking unique hll events4124Skipping ./spec/requests/api/terraform/state_spec.rb[1:1:1:2:1:1] 'API::Terraform::State GET /projects/:id/terraform/state/:name behaves like endpoint with unique user tracking with maintainer permissions behaves like tracking unique hll events tracks unique event' because it's flaky.4125 tracks unique event (PENDING: around hook at ./spec/support/flaky_tests.rb:21 did not execute the example)4126 behaves like Snowplow event tracking with RedisHLL context4127 behaves like Snowplow event tracking4128 is not emitted if FF is disabled4129 is emitted4130 without authentication4131 returns 401 if user is not authenticated4132 personal acceess token authentication4133 with maintainer permissions4134 returns terraform state belonging to a project of given state name4135 for a project that does not exist4136 returns not found4137 behaves like cannot access a state that is scheduled for deletion4138 returns unprocessable entity4139 with developer permissions4140 returns terraform state belonging to a project of given state name4141 job token authentication4142 with maintainer permissions4143 returns terraform state belonging to a project of given state name4144 returns unauthorized if the the job is not running4145 for a project that does not exist4146 returns not found4147 with developer permissions4148 returns terraform state belonging to a project of given state name4149 POST /projects/:id/terraform/state/:name4150 behaves like endpoint with unique user tracking4151 without authentication4152 does not track unique hll event4153 does not track Snowplow event4154 with maintainer permissions4155 behaves like tracking unique hll events4156 tracks unique event4157 behaves like Snowplow event tracking with RedisHLL context4158 behaves like Snowplow event tracking4159 is not emitted if FF is disabled4160 is emitted4161 when terraform state with a given name is already present4162 with maintainer permissions4163 updates the state4164 when serial already exists4165 returns unprocessable entity4166 behaves like cannot access a state that is scheduled for deletion4167 returns unprocessable entity4168 without body4169 returns no content if no body is provided4170 with developer permissions4171 returns forbidden4172 when there is no terraform state of a given name4173 with maintainer permissions4174 creates a new state4175 without body4176 returns no content if no body is provided4177 with developer permissions4178 returns forbidden4179 when using job token authentication4180 associates the job with the newly created state version4181 DELETE /projects/:id/terraform/state/:name4182 behaves like endpoint with unique user tracking4183 without authentication4184 does not track unique hll event4185 does not track Snowplow event4186 with maintainer permissions4187 behaves like tracking unique hll events4188 tracks unique event4189 behaves like Snowplow event tracking with RedisHLL context4190 behaves like Snowplow event tracking4191 is not emitted if FF is disabled4192 is emitted4193 with maintainer permissions4194 schedules the state for deletion and returns empty body4195 behaves like cannot access a state that is scheduled for deletion4196 returns unprocessable entity4197 with developer permissions4198 returns forbidden4199 PUT /projects/:id/terraform/state/:name/lock4200 locks the terraform state4201 behaves like endpoint with unique user tracking4202 without authentication4203 does not track unique hll event4204 does not track Snowplow event4205 with maintainer permissions4206 behaves like tracking unique hll events4207 tracks unique event4208 behaves like Snowplow event tracking with RedisHLL context4209 behaves like Snowplow event tracking4210 is not emitted if FF is disabled4211 is emitted4212 behaves like cannot access a state that is scheduled for deletion4213 returns unprocessable entity4214 state is already locked4215 returns an error4216 user does not have permission to lock the state4217 returns an error4218 DELETE /projects/:id/terraform/state/:name/lock4219 behaves like endpoint with unique user tracking4220 without authentication4221 does not track unique hll event4222 does not track Snowplow event4223 with maintainer permissions4224 behaves like tracking unique hll events4225 tracks unique event4226 behaves like Snowplow event tracking with RedisHLL context4227 behaves like Snowplow event tracking4228 is not emitted if FF is disabled4229 is emitted4230 behaves like cannot access a state that is scheduled for deletion4231 returns unprocessable entity4232 with the correct lock id4233 removes the terraform state lock4234 with no lock id (force-unlock)4235 removes the terraform state lock4236 with an incorrect lock id4237 returns an error4238 with a longer than 255 character lock id4239 returns an error4240 user does not have permission to unlock the state4241 returns an error4242Admin::UsersController4243 GET #index4244 retrieves all users4245 filters by admins4246 eager loads authorized projects association4247 pagination4248 when number of users is over the pagination limit4249 marks the relation for pagination without counts4250 when number of users is below the pagination limit4251 marks the relation for pagination with counts4252 GET :id4253 finds a user case-insensitively4254 DELETE #destroy4255 when user_destroy_with_limited_execution_time_worker is enabled4256 initiates user removal4257 initiates user removal and passes hard delete option4258 prerequisites for account deletion4259 solo-owned groups4260 if the user is the sole owner of at least one group4261 soft-delete4262 fails4263 hard-delete4264 succeeds4265 when user_destroy_with_limited_execution_time_worker is disabled4266 deletes user and ghosts their contributions4267 deletes the user and their contributions when hard delete is specified4268 prerequisites for account deletion4269 solo-owned groups4270 if the user is the sole owner of at least one group4271 soft-delete4272 fails4273 hard-delete4274 succeeds4275 DELETE #reject4276 when rejecting a pending user4277 displays the rejection message4278 sends the user a rejection email4279 when user_destroy_with_limited_execution_time_worker is enabled4280 initiates user removal4281 when user_destroy_with_limited_execution_time_worker is disabled4282 hard deletes the user4283 when user is not pending4284 does not reject and delete the user4285 displays the error4286 does not email the user4287 PUT #approve4288 when successful4289 activates the user4290 emails the user on approval4291 when unsuccessful4292 displays the error4293 does not activate the user4294 does not email the pending user4295 PUT #activate4296 for a deactivated user4297 behaves like a request that activates the user4298 activates the user4299 for an active user4300 behaves like a request that activates the user4301 activates the user4302 for a blocked user4303 does not activate the user4304 PUT #deactivate4305 for an active user4306 with no recent activity4307 behaves like a request that deactivates the user4308 deactivates the user4309 with recent activity4310 does not deactivate the user4311 for a deactivated user4312 behaves like a request that deactivates the user4313 deactivates the user4314 for a blocked user4315 does not deactivate the user4316 for an internal user4317 does not deactivate the user4318 PUT block/:id4319 blocks user4320 PUT unblock/:id4321 ldap blocked users4322 does not unblock user4323 manually blocked users4324 unblocks user4325 PUT ban/:id4326 when ban_user_feature_flag is enabled4327 bans user4328 when unsuccessful4329 does not ban user4330 when ban_user_feature_flag is not enabled4331 does not ban user, renders 4044332 PUT unban/:id4333 unbans user4334 PUT unlock/:id4335 unlocks user4336 PUT confirm/:id4337 when the confirmation period has expired4338 behaves like confirms the user4339 confirms the user4340 when the confirmation period has not expired4341 behaves like confirms the user4342 confirms the user4343 PATCH disable_two_factor4344 for a user that has 2FA enabled4345 disables 2FA for the user4346 redirects back4347 displays a notice on success4348 for a user that does not have 2FA enabled4349 redirects back4350 displays an alert on failure4351 POST create4352 creates the user4353 shows only one error message for an invalid email4354 admin notes4355 creates the user with note4356 POST update4357 when the password has changed4358 when admin changes their own password4359 when password is valid4360 updates the password4361 does not set the new password to expire immediately4362 does not enqueue the `admin changed your password` email4363 enqueues the `password changed` email4364 when admin changes the password of another user4365 when the new password is valid4366 redirects to the user4367 updates the password4368 sets the new password to expire immediately4369 enqueues the `admin changed your password` email4370 does not enqueue the `password changed` email4371 when the new password is invalid4372 shows the edit page again4373 returns the error message4374 does not update the password4375 when the new password does not match the password confirmation4376 shows the edit page again4377 returns the error message4378 does not update the password4379 when the update fails4380 returns a 500 error4381 admin notes4382 updates the note for the user4383 when updating credit card validation for user account4384 when user has a credit card validation4385 with unchecked credit card validation4386 deletes credit_card_validation4387 with checked credit card validation4388 does not change credit_card_validated_at4389 behaves like no credit card validation param4390 does not change credit card validation4391 when user does not have a credit card validation4392 with checked credit card validation4393 creates new credit card validation4394 with unchecked credit card validation4395 does not blow up4396 behaves like no credit card validation param4397 does not change credit card validation4398 invalid parameters4399 behaves like no credit card validation param4400 does not change credit card validation4401 with non permitted params4402 behaves like no credit card validation param4403 does not change credit card validation4404 DELETE #remove_email4405 deletes the email4406 POST impersonate4407 when the user is blocked4408 shows a notice4409 doesn't sign us in as the user4410 when the user is not blocked4411 stores the impersonator in the session4412 signs us in as the user4413 logs the beginning of the impersonation event4414 redirects to root4415 shows a notice4416 clears token session keys4417 when impersonation is disabled4418 shows error page4419 when impersonating an admin and attempting to impersonate again4420 does not allow double impersonation4421Projects::DeployKeysController4422 GET index4423 when html requested4424 redirects to project settings with the correct anchor4425 when json requested4426 when user has access to all projects where deploy keys are used4427 returns json in a correct format4428 when user has no access to all projects where deploy keys are used4429 returns json in a correct format4430 POST create4431 creates a new deploy key for the project4432 redirects to project settings with the correct anchor4433 when the deploy key has an invalid title4434 shows an alert with the validations errors4435 when the deploy key is not supported SSH public key4436 shows an alert with a help link4437 when the deploy key already exists4438 shows an alert with the validations errors4439 /enable/:id4440 with anonymous user4441 redirects to login4442 with user with no permission4443 returns 4044444 with user with permission4445 returns 3024446 returns 4044447 with admin4448 returns 3024449 /disable/:id4450 with anonymous user4451 redirects to login4452 with user with no permission4453 returns 4044454 with user with permission4455 returns 3024456 returns 4044457 with admin4458 returns 3024459 PUT update4460 with project maintainer4461 public deploy key attached to project4462 does not update the title of the deploy key4463 updates can_push of deploy_keys_project4464 with admin4465 public deploy key attached to project4466 updates the title of the deploy key4467 updates can_push of deploy_keys_project4468 when a different deploy key id param is injected4469 and that deploy key id exists4470 does not update the can_push attribute4471 and that deploy key id does not exist4472 returns 4044473 with admin as project maintainer4474 public deploy key attached to project4475 updates can_push of deploy_keys_project4476 admin mode disabled4477 does not update the title of the deploy key4478 admin mode enabled4479 updates the title of the deploy key4480Projects::CompareController4481 GET index4482 returns successfully4483 with incorrect parameters4484 returns successfully4485 with missing parameters4486 returns successfully4487 GET show4488 when the refs exist in the same project4489 when we set the white space param4490 shows some diffs with ignore whitespace change option4491 when we do not set the white space param4492 sets the diffs and commits ivars4493 when refs have CI::Pipeline4494 avoids N+1 queries4495 when the refs exist in different projects that the user can see4496 shows the diff4497 when comparing missing commits between source and target4498 when comparing them in the other direction4499 the commits are there4500 with straight mode true4501 the commits are empty, but the removed lines are visible as diffs4502 with straight mode false4503 the additional commits are not visible in diffs and commits4504 when the refs exist in different projects but the user cannot see4505 does not show the diff4506 when the source ref does not exist4507 sets empty diff and commit ivars4508 when the target ref does not exist4509 sets empty diff and commit ivars4510 when the target ref is invalid4511 shows a flash message and redirects4512 when the source ref is invalid4513 shows a flash message and redirects4514 when the both refs are invalid4515 shows a flash message and redirects4516 when page is valid4517 shows the diff4518 only loads blobs in the current page4519 when page is not valid4520 does not return an error4521 GET diff_for_path4522 when the source and target refs exist in the same project4523 when the user has access target the project4524 when the path exists in the diff4525 disables diff notes4526 only renders the diffs for the path given4527 when the path does not exist in the diff4528 returns a 4044529 when the user does not have access target the project4530 returns a 4044531 when the source and target refs exist in different projects and the user can see4532 shows the diff for that path4533 when the source and target refs exist in different projects and the user cannot see4534 does not show the diff for that path4535 when the source ref does not exist4536 returns a 4044537 when the target ref does not exist4538 returns a 4044539 POST create4540 when sending valid params4541 without a from_project_id4542 redirects to the show page4543 with a from_project_id4544 redirects to the show page without interpreting from_project_id4545 when sending invalid params4546 from_ref: "", to_ref: "", from_project_id: "", expected_redirect_params: {}4547 redirects back to the index4548 from_ref: "main", to_ref: "", from_project_id: "", expected_redirect_params: {:from=>"main"}4549 redirects back to the index4550 from_ref: "", to_ref: "main", from_project_id: "", expected_redirect_params: {:to=>"main"}4551 redirects back to the index4552 from_ref: "", to_ref: "", from_project_id: "1", expected_redirect_params: {:from_project_id=>1}4553 redirects back to the index4554 from_ref: "main", to_ref: "", from_project_id: "1", expected_redirect_params: {:from=>"main", :from_project_id=>1}4555 redirects back to the index4556 from_ref: "", to_ref: "main", from_project_id: "1", expected_redirect_params: {:to=>"main", :from_project_id=>1}4557 redirects back to the index4558 from_ref: ["a"], to_ref: ["b"], from_project_id: ["c"], expected_redirect_params: {}4559 redirects back to the index4560 GET signatures4561 when the source and target refs exist4562 when the user has access to the project4563 returns only the commit with a signature4564 when the user has access to the project with straight compare4565 returns only the commit with a signature4566 when the user does not have access to the project4567 returns a 4044568 when the source ref does not exist4569 returns no signatures4570 when the target ref does not exist4571 returns no signatures4572ApplicationController4573 #check_password_expiration4574 redirects if the user is over their password expiry4575 does not redirect if the user is under their password expiry4576 does not redirect if the user is over their password expiry but they are an ldap user4577 does not redirect if the user is over their password expiry but password authentication is disabled for the web interface4578 #add_gon_variables4579 with html format4580 behaves like setting gon variables4581 sets gon variables4582 with json format4583 behaves like not setting gon variables4584 does not set gon variables4585 with atom format4586 behaves like not setting gon variables4587 does not set gon variables4588 session expiration4589 authenticated user4590 does not set the expire_after option4591 unauthenticated user4592 sets the expire_after option4593 response format4594 when format is handled4595 returns 200 response4596 when format is not handled4597 returns 404 response4598 #route_not_found4599 renders 404 if authenticated4600 renders 404 if client is a search engine crawler4601 redirects to login page if not authenticated4602 redirects if unauthenticated and request format is unknown4603 #set_page_title_header4604 URI encodes UTF-8 characters in the title4605 two-factor authentication4606 #check_two_factor_requirement4607 does not redirect if user has temporary oauth email4608 does not redirect if 2FA is not required4609 does not redirect if user is not logged in4610 does not redirect if user has 2FA enabled4611 does not redirect if 2FA setup can be skipped4612 redirects to 2FA setup otherwise4613 #two_factor_authentication_required?4614 returns false if no 2FA requirement is present4615 returns true if a 2FA requirement is set in the application settings4616 returns true if a 2FA requirement is set on the user4617 #two_factor_grace_period4618 returns the grace period from the application settings4619 with a 2FA requirement set on the user4620 returns the user grace period if lower than the application grace period4621 returns the application grace period if lower than the user grace period4622 #two_factor_grace_period_expired?4623 returns false if the user has not started their grace period yet4624 with grace period started4625 returns true if the grace period has expired4626 returns false if the grace period is still active4627 #two_factor_skippable4628 returns false if 2FA is not required4629 returns false if the user has already enabled 2FA4630 returns false if the 2FA grace period has expired4631 returns true otherwise4632 #skip_two_factor?4633 returns false if 2FA setup was not skipped4634 with 2FA setup skipped4635 returns false if the grace period has expired4636 returns true if the grace period is still active4637 deactivated user4638 signs out a deactivated user4639 terms4640 does not query more when terms are enforced4641 when terms are enforced4642 redirects if the user did not accept the terms4643 does not redirect when the user accepted terms4644 #append_info_to_payload4645 does not log errors with a 200 response4646 does log correlation id4647 adds context metadata to the payload4648 logs response length4649 urgency information4650 adds default urgency information to the payload4651 adds customized urgency information to the payload4652 with log_response_length disabled4653 logs response length4654 #access_denied4655 renders a 404 without a message4656 renders a 403 when a message is passed to access denied4657 renders a status passed to access denied4658 when invalid UTF-8 parameters are received4659 html4660 renders 4124661 js4662 renders 4124663 X-GitLab-Custom-Error header4664 given a 422 error page4665 sets a custom header4666 given a 500 error page4667 sets a custom header4668 given a 200 success page4669 does not set a custom header4670 given a json response4671 sets a custom header4672 for html request4673 sets a custom header4674 for 200 response4675 does not set a custom header4676 control headers4677 user not logged in4678 sets the default headers4679 user logged in4680 sets the default headers4681 #stream_csv_headers4682 sets no-cache headers4683 sets stream headers4684 sets the csv specific headers4685 Gitlab::Session4686 is set on web requests4687 with sessionless user4688 is not set4689 #current_user_mode4690 with a regular user4691 admin mode is not set4692 with an admin user4693 admin mode is not set4694 that re-authenticated4695 admin mode is set4696 #required_signup_info4697 user with required role4698 is expected to redirect to "/users/sign_up/welcome"4699 user without a required role4700 is expected not to redirect to "/users/sign_up/welcome"4701 rescue_from Gitlab::Auth::IpBlacklisted4702 returns a 403 and logs the request4703 #set_current_context4704 does not break anything when no group or project method is defined4705 sets the username in the context when signed in4706 sets the group if it was available4707 sets the project if one was available4708 sets the caller_id as controller#action4709 sets the feature_category as defined in the controller4710 assigns the context to a variable for logging4711 assigns the context when the action caused an error4712 .endpoint_id_for_action4713 returns an expected endpoint id4714 #current_user4715 when being impersonated4716 returns a User with impersonator4717 when not being impersonated4718 returns a User4719 locale4720 sets user's locale4721 setting permissions-policy header4722 with FloC enabled4723 does not set the Permissions-Policy header4724 with FloC disabled4725 sets the Permissions-Policy header4726 sets the Permissions-Policy header even when redirected before_action4727API::ProjectMilestones4728 behaves like group and project milestones4729 GET /projects/:id/milestones4730 returns milestones list4731 returns a 401 error if user not authenticated4732 returns an array of active milestones4733 returns an array of closed milestones4734 returns an array of milestones specified by iids4735 does not return any milestone if none found4736 returns a milestone by iids array4737 returns a milestone by title4738 returns a milestone by searching for title4739 returns a milestones by searching for description4740 GET /projects/:id/milestones/:milestone_id4741 returns a milestone by id4742 returns 401 error if user not authenticated4743 returns a 404 error if milestone id not found4744 POST /projects/:id/milestones4745 creates a new milestone4746 creates a new milestone with description and dates4747 returns a 400 error if title is missing4748 returns a 400 error if params are invalid (duplicate title)4749 creates a new milestone with reserved html characters4750 PUT /projects/:id/milestones/:milestone_id4751 updates a milestone4752 removes a due date if nil is passed4753 returns a 404 error if milestone id not found4754 closes milestone4755 updates milestone with only start date4756 DELETE /projects/:id/milestones/:milestone_id4757 rejects a member with guest access from deleting a milestone4758 deletes the milestone when the user has reporter access to the project4759 GET /projects/:id/milestones/:milestone_id/issues4760 returns issues for a particular milestone4761 returns issues sorted by label priority4762 matches V4 response schema for a list of issues4763 returns a 401 error if user not authenticated4764 confidential issues4765 returns confidential issues to team members4766 does not return confidential issues to team members with guest role4767 does not return confidential issues to regular users4768 returns issues ordered by label priority4769 GET /projects/:id/milestones/:milestone_id/merge_requests4770 returns merge_requests for a particular milestone4771 returns merge_requests sorted by label priority4772 returns a 404 error if milestone id not found4773 returns a 404 if the user has no access to the milestone4774 returns a 401 error if user not authenticated4775 returns merge_requests ordered by position asc4776 GET /projects/:id/milestones4777 when include_parent_milestones is true4778 when project parent is a namespace4779 behaves like listing all milestones4780 returns correct list of milestones4781 when project parent is a group4782 behaves like listing all milestones4783 returns correct list of milestones4784 when iids param is present4785 behaves like listing all milestones4786 returns correct list of milestones4787 when user is not a member of the private project4788 returns a 404 error4789 DELETE /projects/:id/milestones/:milestone_id4790 returns 404 response when the project does not exist4791 returns 404 response when the milestone does not exist4792 returns 404 from guest user deleting a milestone4793 PUT /projects/:id/milestones/:milestone_id to test observer on close4794 creates an activity event when a milestone is closed4795 POST /projects/:id/milestones/:milestone_id/promote4796 when user does not have permission to promote milestone4797 returns 4034798 when user has permission4799 returns 2004800 returns 200 for closed milestone4801 when no such resource4802 returns 404 response when the project does not exist4803 returns 404 response when the milestone does not exist4804 when project does not belong to group4805 returns 4034806API::Todos4807 GET /todos4808 avoids N+1 queries4809 when unauthenticated4810 returns authentication error4811 when authenticated4812 returns an array of pending todos for current user4813 when invalid params4814 invalid action4815 returns 4004816 invalid state4817 returns 4004818 invalid type4819 returns 4004820 when current user does not have access to one of the TODO's target4821 filters out unauthorized todos4822 and using the author filter4823 filters based on author_id param4824 and using the type filter4825 filters based on type param4826 and using the state filter4827 filters based on state param4828 and using the project filter4829 filters based on project_id param4830 and using the group filter4831 filters based on project_id param4832 and using the action filter4833 filters based on action param4834 when there is a Design Todo4835 is expected to respond with numeric status code ok4836 avoids N+1 queries4837 includes the Design Todo in the response4838 POST /todos/:id/mark_as_done4839 when unauthenticated4840 returns authentication error4841 when authenticated4842 marks a todo as done4843 updates todos cache4844 returns 404 if the todo does not belong to the current user4845 POST /mark_as_done4846 when unauthenticated4847 returns authentication error4848 when authenticated4849 marks all todos as done4850 updates todos cache4851 POST :id/issuable_type/:issuable_id/todo4852 for an issue4853 returns an error if the issue author does not have access4854 behaves like an issuable4855 creates a todo on an issuable4856 returns 304 there already exist a todo on that issuable4857 returns 404 if the issuable is not found4858 returns an error if the issuable is not accessible4859 for a merge request4860 returns an error if the merge request author does not have access4861 behaves like an issuable4862 creates a todo on an issuable4863 returns 304 there already exist a todo on that issuable4864 returns 404 if the issuable is not found4865 returns an error if the issuable is not accessible4866Updating an existing release4867 when the current user has access to update releases4868 name4869 when a new name is provided4870 behaves like updates release fields4871 updates the correct field and returns the release4872 behaves like no errors4873 returns no errors4874 when null is provided4875 behaves like updates release fields4876 updates the correct field and returns the release4877 behaves like no errors4878 returns no errors4879 description4880 when a new description is provided4881 behaves like updates release fields4882 updates the correct field and returns the release4883 behaves like no errors4884 returns no errors4885 when null is provided4886 behaves like updates release fields4887 updates the correct field and returns the release4888 behaves like no errors4889 returns no errors4890 releasedAt4891 when no time zone is provided4892 behaves like updates release fields4893 updates the correct field and returns the release4894 behaves like no errors4895 returns no errors4896 when a local time zone is provided4897 behaves like updates release fields4898 updates the correct field and returns the release4899 behaves like no errors4900 returns no errors4901 when null is provided4902 behaves like top-level error with message4903 returns a top-level error with message4904 milestones4905 when a new set of milestones is provided provided4906 behaves like updates release fields4907 updates the correct field and returns the release4908 behaves like no errors4909 returns no errors4910 when an empty array is provided4911 behaves like updates release fields4912 updates the correct field and returns the release4913 behaves like no errors4914 returns no errors4915 when null is provided4916 behaves like top-level error with message4917 returns a top-level error with message4918 when a non-existent milestone title is provided4919 behaves like errors-as-data with message4920 returns an error-as-data with message4921 when a milestone title from a different project is provided4922 behaves like errors-as-data with message4923 returns an error-as-data with message4924 validation4925 when no updated fields are provided4926 behaves like errors-as-data with message4927 returns an error-as-data with message4928 when the tag does not exist4929 behaves like errors-as-data with message4930 returns an error-as-data with message4931 when the project does not exist4932 behaves like top-level error with message4933 returns a top-level error with message4934 when the current user doesn't have access to update releases4935 when the current user is a Reporter4936 behaves like top-level error with message4937 returns a top-level error with message4938 when the current user is a Guest4939 behaves like top-level error with message4940 returns a top-level error with message4941 when the current user is a public user4942 behaves like top-level error with message4943 returns a top-level error with message4944Projects::IssuesController4945 GET #discussions4946 pagination4947 returns paginated notes and cursor based on per_page param4948 token authentication4949 when public project4950 behaves like authenticates sessionless user for the request spec4951 index atom4952 when the 'private_token' param is populated with the personal access token4953 when valid token4954 when resource is public4955 authenticates user and returns response with ok status4956 when user with expired password4957 does not authenticate user and returns response with ok status4958 when the personal access token has no api scope4959 when resource is public4960 does not authenticate user and returns response with ok status4961 when invalid token4962 when resource is public4963 does not authenticate user and returns response with ok status4964 when the 'PRIVATE-TOKEN' header is populated with the personal access token4965 when valid token4966 when resource is public4967 authenticates user and returns response with ok status4968 when user with expired password4969 does not authenticate user and returns response with ok status4970 when the personal access token has no api scope4971 when resource is public4972 does not authenticate user and returns response with ok status4973 when invalid token4974 when resource is public4975 does not authenticate user and returns response with ok status4976 when the 'feed_token' param is populated with the feed token4977 when valid token4978 when resource is public4979 authenticates user and returns response with ok status4980 when user with expired password4981 does not authenticate user and returns response with ok status4982 when invalid token4983 when resource is public4984 does not authenticate user and returns response with ok status4985 behaves like authenticates sessionless user for the request spec4986 calendar ics4987 when the 'private_token' param is populated with the personal access token4988 when valid token4989 when resource is public4990 authenticates user and returns response with ok status4991 when user with expired password4992 does not authenticate user and returns response with ok status4993 when the personal access token has no api scope4994 when resource is public4995 does not authenticate user and returns response with ok status4996 when invalid token4997 when resource is public4998 does not authenticate user and returns response with ok status4999 when the 'PRIVATE-TOKEN' header is populated with the personal access token5000 when valid token5001 when resource is public5002 authenticates user and returns response with ok status5003 when user with expired password5004 does not authenticate user and returns response with ok status5005 when the personal access token has no api scope5006 when resource is public5007 does not authenticate user and returns response with ok status5008 when invalid token5009 when resource is public5010 does not authenticate user and returns response with ok status5011 when the 'feed_token' param is populated with the feed token5012 when valid token5013 when resource is public5014 authenticates user and returns response with ok status5015 when user with expired password5016 does not authenticate user and returns response with ok status5017 when invalid token5018 when resource is public5019 does not authenticate user and returns response with ok status5020 when private project5021 behaves like authenticates sessionless user for the request spec5022 index atom5023 when the 'private_token' param is populated with the personal access token5024 when valid token5025 when resource is private5026 authenticates user and returns response with ok status5027 when user with expired password5028 does not return response with ok status5029 when password expiration is not applicable5030 when ldap user5031 authenticates user and returns response with ok status5032 when the personal access token has no api scope5033 when resource is private5034 does not return response with ok status5035 when invalid token5036 when resource is private5037 does not return response with ok status5038 when the 'PRIVATE-TOKEN' header is populated with the personal access token5039 when valid token5040 when resource is private5041 authenticates user and returns response with ok status5042 when user with expired password5043 does not return response with ok status5044 when password expiration is not applicable5045 when ldap user5046 authenticates user and returns response with ok status5047 when the personal access token has no api scope5048 when resource is private5049 does not return response with ok status5050 when invalid token5051 when resource is private5052 does not return response with ok status5053 when the 'feed_token' param is populated with the feed token5054 when valid token5055 when resource is private5056 authenticates user and returns response with ok status5057 when user with expired password5058 does not return response with ok status5059 when password expiration is not applicable5060 when ldap user5061 authenticates user and returns response with ok status5062 when invalid token5063 when resource is private5064 does not return response with ok status5065 behaves like authenticates sessionless user for the request spec5066 calendar ics5067 when the 'private_token' param is populated with the personal access token5068 when valid token5069 when resource is private5070 authenticates user and returns response with ok status5071 when user with expired password5072 does not return response with ok status5073 when password expiration is not applicable5074 when ldap user5075 authenticates user and returns response with ok status5076 when the personal access token has no api scope5077 when resource is private5078 does not return response with ok status5079 when invalid token5080 when resource is private5081 does not return response with ok status5082 when the 'PRIVATE-TOKEN' header is populated with the personal access token5083 when valid token5084 when resource is private5085 authenticates user and returns response with ok status5086 when user with expired password5087 does not return response with ok status5088 when password expiration is not applicable5089 when ldap user5090 authenticates user and returns response with ok status5091 when the personal access token has no api scope5092 when resource is private5093 does not return response with ok status5094 when invalid token5095 when resource is private5096 does not return response with ok status5097 when the 'feed_token' param is populated with the feed token5098 when valid token5099 when resource is private5100 authenticates user and returns response with ok status5101 when user with expired password5102 does not return response with ok status5103 when password expiration is not applicable5104 when ldap user5105 authenticates user and returns response with ok status5106 when invalid token5107 when resource is private5108 does not return response with ok status5109SnippetsController5110 GET #index5111 when username parameter is present5112 renders snippets of a user when username is present5113 behaves like paginated collection5114 renders a page number that is not ouf of range5115 redirects to last_page if page number is larger than number of pages5116 does not redirect to external sites when provided a host field5117 when username parameter is not present5118 redirects to explore snippets page when user is not logged in5119 redirects to snippets dashboard page when user is logged in5120 behaves like snippets sort order5121 when no sort param is provided5122 calls SnippetsFinder with updated_at sort option5123 when sort param is provided5124 calls SnippetsFinder with the given sort param5125 GET #new5126 when signed in5127 responds with status 2005128 when user is not allowed to create a personal snippet5129 responds with status 4045130 when not signed in5131 redirects to the sign in page5132 GET #show5133 when the personal snippet is private5134 when signed in5135 when signed in user is not the author5136 responds with status 4045137 when signed in user is the author5138 responds with status 404 when embeddable content is requested5139 behaves like successful response5140 renders the snippet5141 when not signed in5142 redirects to the sign in page5143 when the personal snippet is internal5144 when signed in5145 responds with status 404 when embeddable content is requested5146 behaves like successful response5147 renders the snippet5148 when not signed in5149 redirects to the sign in page5150 when the personal snippet is public5151 when signed in5152 responds with status 200 when embeddable content is requested5153 behaves like successful response5154 renders the snippet5155 behaves like tracking unique hll events5156 tracks unique event5157 when not signed in5158 renders the snippet5159 when the personal snippet does not exist5160 when signed in5161 responds with status 4045162 when not signed in5163 responds with status 4045164 POST #mark_as_spam5165 updates the snippet5166 GET #raw5167 when the personal snippet is private5168 when signed in5169 when signed in user is not the author5170 responds with status 4045171 when signed in user is the author5172 behaves like successful response5173 has expected blob headers5174 sets cache_control public header based on snippet visibility5175 behaves like 200 status5176 responds with status 2005177 sets Gitlab-Workhorse-Detect-Content-Type header5178 behaves like content disposition headers5179 sets content disposition to inline5180 when inline param is false5181 sets content disposition to attachment5182 when snippet repository is empty5183 returns snippet database content5184 behaves like 200 status5185 responds with status 2005186 sets Gitlab-Workhorse-Detect-Content-Type header5187 behaves like CRLF line ending5188 returns LF line endings by default5189 when parameter present5190 does not convert line endings when parameter present5191 behaves like content disposition headers5192 sets content disposition to inline5193 when inline param is false5194 sets content disposition to attachment5195 when not signed in5196 redirects to the sign in page5197 when the personal snippet is internal5198 when signed in5199 behaves like successful response5200 has expected blob headers5201 sets cache_control public header based on snippet visibility5202 behaves like 200 status5203 responds with status 2005204 sets Gitlab-Workhorse-Detect-Content-Type header5205 behaves like content disposition headers5206 sets content disposition to inline5207 when inline param is false5208 sets content disposition to attachment5209 when snippet repository is empty5210 returns snippet database content5211 behaves like 200 status5212 responds with status 2005213 sets Gitlab-Workhorse-Detect-Content-Type header5214 behaves like CRLF line ending5215 returns LF line endings by default5216 when parameter present5217 does not convert line endings when parameter present5218 behaves like content disposition headers5219 sets content disposition to inline5220 when inline param is false5221 sets content disposition to attachment5222 when not signed in5223 redirects to the sign in page5224 when the personal snippet is public5225 when signed in5226 behaves like successful response5227 has expected blob headers5228 sets cache_control public header based on snippet visibility5229 behaves like 200 status5230 responds with status 2005231 sets Gitlab-Workhorse-Detect-Content-Type header5232 behaves like content disposition headers5233 sets content disposition to inline5234 when inline param is false5235 sets content disposition to attachment5236 when snippet repository is empty5237 returns snippet database content5238 behaves like 200 status5239 responds with status 2005240 sets Gitlab-Workhorse-Detect-Content-Type header5241 behaves like CRLF line ending5242 returns LF line endings by default5243 when parameter present5244 does not convert line endings when parameter present5245 behaves like content disposition headers5246 sets content disposition to inline5247 when inline param is false5248 sets content disposition to attachment5249 when not signed in5250 responds with status 2005251 when the personal snippet does not exist5252 when signed in5253 responds with status 4045254 when not signed in5255 redirects to the sign in path5256 award emoji on snippets5257 POST #toggle_award_emoji5258 toggles the award emoji5259 removes the already awarded emoji5260 POST #preview_markdown5261 renders json in a correct format5262Projects::Settings::AccessTokensController5263 GET /:namespace/:project/-/settings/access_tokens5264 behaves like feature unavailable5265 user is not a maintainer5266 is expected to respond with numeric status code not_found5267 behaves like GET resource access tokens available5268 retrieves active resource access tokens5269 lists all available scopes5270 returns for json response5271 when access_tokens are paginated5272 returns paginated response5273 when access_token_pagination feature flag is disabled5274 returns all tokens in system5275 as tokens returned are ordered5276 orders token list ascending on expires_at5277 orders tokens on id in case token has same expires_at5278 POST /:namespace/:project/-/settings/access_tokens5279 behaves like feature unavailable5280 user is not a maintainer5281 is expected to respond with numeric status code not_found5282 behaves like POST resource access tokens available5283 renders JSON with a token5284 creates resource access token5285 creates project bot user5286 is expected to change `User.count` by 15287 is expected to change `PersonalAccessToken.count` by 15288 when unsuccessful5289 does not create the token5290 does not add the project bot as a member5291 does not create the project bot user5292 renders JSON with an error5293 when project access token creation is disabled5294 is expected to respond with numeric status code not_found5295 does not create the token5296 does not add the project bot as a member5297 does not create the project bot user5298 with custom access level5299 behaves like POST resource access tokens available5300 renders JSON with a token5301 creates resource access token5302 creates project bot user5303 is expected to change `User.count` by 15304 is expected to change `PersonalAccessToken.count` by 15305 when unsuccessful5306 does not create the token5307 does not add the project bot as a member5308 does not create the project bot user5309 renders JSON with an error5310 PUT /:namespace/:project/-/settings/access_tokens/:id5311 behaves like feature unavailable5312 user is not a maintainer5313 is expected to respond with numeric status code not_found5314 behaves like PUT resource access tokens available5315 calls delete user worker5316 removes membership of bot user5317 when user_destroy_with_limited_execution_time_worker is enabled5318 creates GhostUserMigration records to handle migration in a worker5319 when user_destroy_with_limited_execution_time_worker is disabled5320 converts issuables of the bot user to ghost user5321 deletes project bot user5322 when unsuccessful5323 shows a failure alert5324 #index5325 includes details of the active project access tokens5326API::Events5327 GET /events5328 when unauthenticated5329 returns authentication error5330 when authenticated5331 returns users events5332 when scope is passed5333 returns all events across projects5334 when the requesting token has "read_user" scope5335 returns users events5336 returns "200" response on head request5337 when the requesting token does not have "read_user" or "api" scope5338 returns a "403" response5339 GET /users/:id/events5340 returns a 404 error if not found5341 as a user that cannot see another user5342 returns a "404" response5343 as a user token that cannot see another user5344 returns a "404" response5345 as a user that can see the event's project5346 accepts a username5347 returns the events5348 when the list of events includes wiki page events5349 returns information about the wiki event5350 when the list of events includes push events5351 responds with HTTP 200 OK5352 includes the push payload as a Hash5353 includes the push payload details5354 when there are multiple events from different projects5355 returns events in the correct order (from newest to oldest)5356 accepts filter parameters5357 when target users profile is private5358 returns no events5359 when scope is passed5360 when unauthenticated5361 returns no user events5362API::Environments5363 GET /projects/:id/environments5364 as member of the project5365 returns project environments5366 when filtering5367 returns environment by name5368 returns no environment by non-existent name5369 returns environments by name_like5370 returns no environment by non-existent name_like5371 returns environment by valid state5372 returns all environments when state is not specified5373 returns a 400 when filtering by invalid state5374 as non member5375 returns a 404 status code5376 POST /projects/:id/environments5377 as a member5378 creates a environment with valid params5379 requires name to be passed5380 returns a 400 if environment already exists5381 returns a 400 if slug is specified5382 a non member5383 rejects the request5384 returns a 400 when the required params are missing5385 PUT /projects/:id/environments/:environment_id5386 returns a 200 if name and external_url are changed5387 returns a 200 if tier is changed5388 won't allow slug to be changed5389 won't update the external_url if only the name is passed5390 returns a 404 if the environment does not exist5391 DELETE /projects/:id/environments/:environment_id5392 as a maintainer5393 rejects the requests in environment isn't stopped5394 returns a 204 for stopped environment5395 returns a 404 for non existing id5396 behaves like 412 response5397 for a modified ressource5398 returns 412 with a JSON error5399 for an unmodified ressource5400 returns 204 with an empty body5401 a non member5402 rejects the request5403 POST /projects/:id/environments/:environment_id/stop5404 as a maintainer5405 returns a 404 for non existing id5406 with a stoppable environment5407 returns a 2005408 actually stops the environment5409 a non member5410 rejects the request5411 GET /projects/:id/environments/:environment_id5412 as member of the project5413 returns project environments5414 as non member5415 returns a 404 status code5416 DELETE /projects/:id/environments/review_apps5417 as a maintainer5418 behaves like delete stopped review environments5419 deletes the old stopped review apps5420 as a developer5421 behaves like delete stopped review environments5422 deletes the old stopped review apps5423 as a reporter5424 rejects the request5425 as a non member5426 rejects the request5427Projects::ImportsController5428 GET #show5429 when user is not authenticated and the project is public5430 returns 404 response5431 when the user has maintainer rights5432 when repository does not exists5433 renders template5434 sets flash.now if params is present5435 when repository exists5436 when import is in progress5437 renders template5438 sets flash.now if params is present5439 when import failed5440 redirects to new_namespace_project_import_path5441 when import finished5442 when project is a fork5443 redirects to namespace_project_path5444 when project is external5445 redirects to namespace_project_path5446 when continue params is present5447 redirects to internal params[:to]5448 does not redirect to external params[:to]5449 when import never happened5450 redirects to namespace_project_path5451 when project is in group5452 when user has developer access to group and import is in progress5453 when group allows developers to create projects5454 renders template5455 when group prohibits developers to create projects5456 returns 404 response5457 POST #create5458 sets import_url to the project5459Query.runner(id)5460 for active runner5461 behaves like runner details fetch5462 retrieves expected fields5463 when tagList is not requested5464 does not retrieve tagList5465 for project runner5466 locked5467 is_locked: true5468 retrieves correct locked value5469 is_locked: false5470 retrieves correct locked value5471 ownerProject5472 retrieves correct ownerProject.id values5473 for inactive runner5474 behaves like runner details fetch5475 retrieves expected fields5476 for group runner request5477 retrieves groups field with expected value5478 for runner with status5479 retrieves status fields with expected values5480 for multiple runners5481 requesting projects and counts for projects and jobs5482 retrieves expected fields5483 by regular user5484 on instance runner5485 behaves like retrieval by unauthorized user5486 returns null runner5487 on group runner5488 behaves like retrieval by unauthorized user5489 returns null runner5490 on project runner5491 behaves like retrieval by unauthorized user5492 returns null runner5493 by non-admin user5494 behaves like retrieval with no admin url5495 retrieves expected fields5496 by unauthenticated user5497 behaves like retrieval by unauthorized user5498 returns null runner5499 Query limits5500 does not execute more queries per runner5501 sorting and pagination5502 with project search term5503 set to empty string5504 with n = 15505 returns paged result5506 behaves like a working graphql query5507 returns a successful response5508 with n = 25509 returns non-paged result5510 set to partial match5511 with n = 15512 returns paged result with no additional pages5513 behaves like a working graphql query5514 returns a successful response5515API::ProjectTemplates5516 GET /projects/:id/templates/:type5517 returns dockerfiles5518 returns gitignores5519 returns gitlab_ci_ymls5520 returns licenses5521 returns metrics_dashboard_ymls5522 returns issue templates5523 returns merge request templates5524 returns 400 for an unknown template type5525 denies access to an anonymous user on a private project5526 permits access to a developer on a private project5527 behaves like accepts project paths with dots5528 is expected to respond with numeric status code ok5529 GET /projects/:id/templates/licenses5530 returns key and name for the listed licenses5531 behaves like accepts project paths with dots5532 is expected to respond with numeric status code ok5533 GET /projects/:id/templates/:type/:name5534 returns a specific dockerfile5535 returns a specific gitignore5536 returns C++ gitignore5537 returns C++ gitignore for URL-encoded names5538 returns a specific gitlab_ci_yml5539 returns a specific metrics_dashboard_yml5540 returns a specific license5541 returns a specific issue template5542 returns a specific merge request template5543 returns 404 for an unknown specific template5544 returns 404 for an unknown issue template5545 returns 404 for an unknown merge request template5546 denies access to an anonymous user on a private project5547 permits access to a developer on a private project5548 behaves like accepts project paths with dots5549 is expected to respond with numeric status code ok5550 behaves like accepts project paths with dots5551 is expected to respond with numeric status code ok5552 behaves like path traversal attempt5553 rejects invalid filenames5554 behaves like path traversal attempt5555 rejects invalid filenames5556 behaves like path traversal attempt5557 rejects invalid filenames5558 behaves like path traversal attempt5559 rejects invalid filenames5560 behaves like path traversal attempt5561 rejects invalid filenames5562 behaves like path traversal attempt5563 rejects invalid filenames5564 GET /projects/:id/templates/licenses/:key5565 fills placeholders in the license5566 behaves like accepts project paths with dots5567 is expected to respond with numeric status code ok5568API::ProtectedBranches5569 GET /projects/:id/protected_branches5570 when authenticated as a maintainer5571 when search param is not present5572 behaves like protected branches5573 returns the protected branches5574 when search param is present5575 behaves like protected branches5576 returns the protected branches5577 when authenticated as a guest5578 behaves like 403 response5579 returns 4035580 GET /projects/:id/protected_branches/:branch5581 when authenticated as a maintainer5582 behaves like protected branch5583 returns the protected branch5584 when protected branch does not exist5585 behaves like 404 response5586 returns 4045587 when protected branch contains a wildcard5588 behaves like protected branch5589 returns the protected branch5590 when protected branch does not exist5591 behaves like 404 response5592 returns 4045593 when protected branch contains a period5594 behaves like protected branch5595 returns the protected branch5596 when protected branch does not exist5597 behaves like 404 response5598 returns 4045599 when authenticated as a guest5600 behaves like 403 response5601 returns 4035602 POST /projects/:id/protected_branches5603 when authenticated as a maintainer5604 protects a single branch5605 protects a single branch and developers can push5606 protects a single branch and developers can merge5607 protects a single branch and developers can push and merge5608 protects a single branch and no one can push5609 protects a single branch and no one can merge5610 protects a single branch and no one can push or merge5611 protects a single branch and allows force pushes5612 returns a 409 error if the same branch is protected twice5613 when branch has a wildcard in its name5614 protects multiple branches with a wildcard in the name5615 when a policy restricts rule creation5616 prevents creations of the protected branch rule5617 when authenticated as a guest5618 returns a 403 error if guest5619 PATCH /projects/:id/protected_branches/:name5620 when authenticated as a maintainer5621 updates a single branch5622 when returned protected branch is invalid5623 returns a 4225624 when authenticated as a guest5625 returns a 403 error5626 DELETE /projects/:id/protected_branches/unprotect/:branch5627 unprotects a single branch5628 returns 404 if branch does not exist5629 behaves like 412 response5630 for a modified ressource5631 returns 412 with a JSON error5632 for an unmodified ressource5633 returns 204 with an empty body5634 when a policy restricts rule deletion5635 prevents deletion of the protected branch rule5636 when branch has a wildcard in its name5637 unprotects a wildcard branch5638Projects::Settings::RepositoryController5639 GET show5640 renders show with 200 status code5641 PUT cleanup5642 enqueues a project cleanup5643 when project cleanup returns an error5644 shows an error5645 POST create_deploy_token5646 when ajax_new_deploy_token feature flag is disabled for the project5647 behaves like a created deploy token5648 creates deploy token5649 when no scope is selected5650 creates a variable with a errored deploy token5651 when ajax_new_deploy_token feature flag is enabled for the project5652 a good request5653 creates the deploy token5654 a bad request5655 does not create the deploy token5656 an invalid request5657 raises a validation error5658 PUT update5659 when updating default branch5660 with a good request5661 updates default branch and redirect to project_settings_repository_path5662 with a bad input5663 does not update default branch and shows an alert5664 when updating branch names template from issues5665 with a good request5666 updates issue_branch_template and redirect to project_settings_repository_path5667 with a bad input5668 updates issue_branch_template and redirect to project_settings_repository_path5669Projects::Ci::LintsController5670 GET #show5671 with enough privileges5672 is expected to respond with numeric status code ok5673 renders show page5674 retrieves project5675 without enough privileges5676 responds with 4045677 POST #create5678 with a valid gitlab-ci.yml5679 behaves like returns a successful validation5680 returns successfully5681 renders json5682 retrieves project5683 using legacy validation (YamlProcessor)5684 runs validations through YamlProcessor5685 behaves like returns a successful validation5686 returns successfully5687 renders json5688 retrieves project5689 using dry_run mode5690 runs validations through Ci::CreatePipelineService5691 behaves like returns a successful validation5692 returns successfully5693 renders json5694 retrieves project5695 with an invalid gitlab-ci.yml5696 assigns result with errors5697 behaves like returns a successful validation5698 returns successfully5699 renders json5700 retrieves project5701 with dry_run mode5702 assigns result with errors5703 behaves like returns a successful validation5704 returns successfully5705 renders json5706 retrieves project5707 without enough privileges5708 responds with 4045709Setting Draft status of a merge request5710 returns an error if the user is not allowed to update the merge request5711 marks the merge request as Draft5712 does not do anything if the merge request was already marked `Draft`5713 when passing Draft false as input5714 does not do anything if the merge reqeust was not marked draft5715 unmarks the merge request as `Draft`5716API::SnippetRepositoryStorageMoves5717 behaves like repository_storage_moves API5718 GET /snippets/:id/repository_storage_moves5719 behaves like get container repository storage move list5720 returns container repository storage moves5721 avoids N+1 queries5722 returns the most recently created first5723 permissions5724 is expected to be allowed for :admin5725 is expected to be denied for :user5726 non-existent container5727 returns not found5728 GET /snippets/:id/repository_storage_moves/:repository_storage_move_id5729 behaves like get single container repository storage move5730 returns a container repository storage move5731 non-existent container repository storage move5732 returns not found5733 permissions5734 is expected to be allowed for :admin5735 is expected to be denied for :user5736 non-existent container5737 returns not found5738 GET /snippet_repository_storage_moves5739 behaves like get container repository storage move list5740 returns container repository storage moves5741 avoids N+1 queries5742 returns the most recently created first5743 permissions5744 is expected to be allowed for :admin5745 is expected to be denied for :user5746 GET /snippet_repository_storage_moves/:repository_storage_move_id5747 behaves like get single container repository storage move5748 returns a container repository storage move5749 non-existent container repository storage move5750 returns not found5751 permissions5752 is expected to be allowed for :admin5753 is expected to be denied for :user5754 POST /snippets/:id/repository_storage_moves5755 schedules a container repository storage move5756 permissions5757 is expected to be allowed for :admin5758 is expected to be denied for :user5759 destination_storage_name is missing5760 schedules a container repository storage move5761 when container does not exist5762 returns not found5763 POST /snippet_repository_storage_moves5764 schedules the worker5765 source_storage_name is invalid5766 gives an error5767 destination_storage_name is missing5768 schedules the worker5769 destination_storage_name is invalid5770 gives an error5771 normal user5772 is expected to be denied for :user5773getting a work item list for a project5774DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5775DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5776DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5777DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5778 returns only items visible to user5779 N + 1 queries5780 when querying root fields5781 behaves like work items resolver without N + 1 queries5782DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5783DEPRECATION 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.5785DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5786DEPRECATION 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.5788DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5789DEPRECATION 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.5791DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5792DEPRECATION 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.5794DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5795DEPRECATION 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.5797DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5798DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5799DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5800 avoids N+1 queries5801 when querying the widget interface5802 behaves like work items resolver without N + 1 queries5803 avoids N+1 queries5804 behaves like a working graphql query5805DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5806DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5807DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5808DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5809 returns a successful response5810 when the user does not have access to the item5811 returns an empty list5812 when the user can see confidential items5813DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5814DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5815DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5816DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5817DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5818DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5819 returns also confidential items5820 when filtering by search5821 behaves like query with a search term5822DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5823DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5824 returns only matching issuables5825 sorting and pagination5826 when sorting by title ascending5827 behaves like sorted paginated query5828 behaves like requires variables5829 shared example requires variables to be set5831 when sorting5832 sorts correctly5833 when paginating5834 paginates correctly5835 when sorting by title descending5836 behaves like sorted paginated query5837 behaves like requires variables5838 shared example requires variables to be set5840 when sorting5841 sorts correctly5842 when paginating5843 paginates correctly5844Projects::Registry::TagsController5845 GET index5846 when user can control the registry5847 receive a list of tags5848 tracks the event5849 when user can read the registry5850 receive a list of tags5851 when user does not have access to registry5852 does not receive a list of tags5853 POST destroy5854 when user has access to registry5855 when there is matching tag present5856 makes it possible to delete regular tag5857 makes it possible to delete a tag that ends with a dot5858 tracks the event5859 POST bulk_destroy5860 when user has access to registry5861 when there is matching tag present5862 makes it possible to delete tags in bulk5863 tracks the event5864InvitesController5865 GET #show5866 when logged in5867 behaves like invite email match enforcement5868 accepts user if invite email matches signed in user5869 accepts invite if invite email matches confirmed secondary email5870 does not accept if invite email matches unconfirmed secondary email5871 does not accept if invite email does not match signed in user5872 behaves like invalid token5873 when invite token is not valid5874 redirects to root5875 when it is an initial invite email5876 tracks the initial join click from email5877 when member does not exist5878 does not track join click5879 when it is not an initial email5880 does not track the join click5881 when not logged in5882 when invite token belongs to a valid member5883 when instance allows sign up5884 indicates an account can be created in notice5885 when user exists with the invited email5886 is redirected to a new session with invite email param5887 when user exists with the invited email as secondary email5888 when secondary email is confirmed5889 is redirected to a new session with invite email param5890 when secondary email is unconfirmed5891 is redirected to a new registration with invite email param and flash message5892 when user does not exist with the invited email5893 indicates an account can be created in notice5894 is redirected to a new registration with invite email param and flash message5895 sets session keys for auto email confirmation on sign up5896 when it is part of our invite email experiment5897 sets session key for invite acceptance tracking on sign-up5898 when it is not part of our invite email experiment5899 does not set the session key for invite acceptance tracking on sign-up5900 when instance does not allow sign up5901 does not indicate an account can be created in notice5902 when user exists with the invited email5903 is redirected to a new session with invite email param5904 when user does not exist with the invited email5905 is redirected to a new session with invite email param5906 when invite token does not belong to a valid member5907 is redirected to a new session5908 POST #accept5909 behaves like invite email match enforcement5910 accepts user if invite email matches signed in user5911 accepts invite if invite email matches confirmed secondary email5912 does not accept if invite email matches unconfirmed secondary email5913 does not accept if invite email does not match signed in user5914 behaves like invalid token5915 when invite token is not valid5916 redirects to root5917 POST #decline for link in UI5918 behaves like invalid token5919 when invite token is not valid5920 redirects to root5921 GET #decline for link in email5922 behaves like invalid token5923 when invite token is not valid5924 redirects to root5925Projects::Pipelines::TestsController5926 GET #summary.json5927 when pipeline has build report results5928 renders test report summary data5929 when pipeline does not have build report results5930 renders test report summary data5931 GET #show.json5932 when pipeline has builds with test reports5933 when artifacts are expired5934 renders test suite5935 when artifacts do not exist5936 renders not_found errors5937 when artifacts are not expired5938 renders test suite data5939 when pipeline has no builds that matches the given build_ids5940 renders 4045941API::ProtectedTags5942 GET /projects/:id/protected_tags5943 when authenticated as a maintainer5944 behaves like protected tags5945 returns the protected tags5946 when authenticated as a guest5947 behaves like 403 response5948 returns 4035949 GET /projects/:id/protected_tags/:tag5950 when authenticated as a maintainer5951 behaves like protected tag5952 returns the protected tag5953 when protected tag does not exist5954 behaves like 404 response5955 returns 4045956 when protected tag contains a wildcard5957 behaves like protected tag5958 returns the protected tag5959 when protected tag does not exist5960 behaves like 404 response5961 returns 4045962 when authenticated as a guest5963 behaves like 403 response5964 returns 4035965 POST /projects/:id/protected_tags5966 when authenticated as a maintainer5967 protects a single tag with maintainers can create tags5968 protects a single tag with developers can create tags5969 protects a single tag with no one can create tags5970 returns a 422 error if the same tag is protected twice5971 returns 201 if the same tag is proteted on different projects5972 when tag has a wildcard in its name5973 protects multiple tags with a wildcard in the name5974 when authenticated as a guest5975 returns a 403 error if guest5976 DELETE /projects/:id/protected_tags/unprotect/:tag5977 unprotects a single tag5978 returns 404 if tag does not exist5979 behaves like 412 response5980 for a modified ressource5981 returns 412 with a JSON error5982 for an unmodified ressource5983 returns 204 with an empty body5984 when tag has a wildcard in its name5985 unprotects a wildcard tag5986OAuth Tokens requests5987 when there is already a token for the application5988 and the request is done by the resource owner5989 with authorization code grant type5990 issues a new token5991 does not revoke previous token5992 with refresh token grant type5993 issues a new token5994 revokes previous token5995 expired refresh token5996 issues a new token5997 revokes previous token5998 revoked refresh token5999 does not issue a new token6000 when there is no token stored for the application6001 generates and returns a new token6002Projects::RunnersController6003 #update6004 updates the runner and ticks the queue6005 #destroy6006 destroys the runner6007 #resume6008 marks the runner as active and ticks the queue6009 #pause6010 marks the runner as inactive and ticks the queue6011 #toggle_shared_runners6012 toggles shared_runners_enabled when the group allows shared runners6013 toggles shared_runners_enabled when the group disallows shared runners but allows overrides6014 does not enable if the group disallows shared runners6015API::NotificationSettings6016 GET /notification_settings6017 returns global notification settings for the current user6018 PUT /notification_settings6019 updates global notification settings for the current user6020 PUT /notification_settings6021 fails on non-user email address6022 GET /groups/:id/notification_settings6023 returns group level notification settings for the current user6024 PUT /groups/:id/notification_settings6025 updates group level notification settings for the current user6026 GET /projects/:id/notification_settings6027 returns project level notification settings for the current user6028 PUT /projects/:id/notification_settings6029 updates project level notification settings for the current user6030 PUT /projects/:id/notification_settings6031 fails on invalid level6032Query current user todos6033 contains the expected ids6034 returns Todos for all target types6035 behaves like a working graphql query6036 returns a successful response6037Creation of a new branch6038 when project is public6039 when user is not allowed to create a branch6040 behaves like a mutation that returns a top-level access error6041 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"6042 when user is a direct project member6043 and user is a developer6044 behaves like creates a new branch6045 is expected to include {"name" => "new_branch_91f41815", "commit" => (a hash including "id")}6046 when ref is not correct6047 behaves like a mutation that returns errors in the response6048 is expected to contain exactly "Failed to create branch 'another_branch': invalid reference name 'unknown'"6049 when user is an inherited member from the group6050 when project has a private repository6051 and user is a guest6052 behaves like a mutation that returns a top-level access error6053 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"6054 and user is a developer6055 behaves like creates a new branch6056 is expected to include {"name" => "new_branch_f257ac1a", "commit" => (a hash including "id")}6057 when project is private6058 when user is an inherited member from the group6059 and user is a guest6060 behaves like a mutation that returns a top-level access error6061 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"6062 and user is a developer6063 behaves like creates a new branch6064 is expected to include {"name" => "new_branch_00d66ead", "commit" => (a hash including "id")}6065Projects::FeatureFlagsUserListsController6066 GET #index6067 redirects when the user is unauthenticated6068 returns not found if the user does not belong to the project6069 returns not found for a reporter6070 renders the new page for a developer6071 GET #new6072 redirects when the user is unauthenticated6073 returns not found if the user does not belong to the project6074 returns not found for a reporter6075 renders the new page for a developer6076 GET #edit6077 renders the edit page for a developer6078 returns not found with an iid that does not exist6079 returns not found for a list belonging to a another project6080 GET #show6081 renders the page for a developer6082 returns not found with an iid that does not exist6083 returns not found for a list belonging to a another project6084Destroying a Note6085 when the user does not have permission6086 does not destroy the Note6087 behaves like a mutation that returns a top-level access error6088 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"6089 when the user has permission6090 destroys the Note6091 returns an empty Note6092 behaves like a Note mutation when the given resource id is not for a Note6093 behaves like a mutation that returns top-level errors6094 is expected to include /does not represent an instance of Note/6095SendFileUpload6096 #send_upload6097 when local file is used6098 sends a file6099 behaves like handles image resize requests6100 behaves like handles image resize requests allowed by FF6101 with valid width parameter6102 renders OK with workhorse command header6103 with missing width parameter6104 does not write workhorse command header6105 with invalid width parameter6106 does not write workhorse command header6107 with width that is not allowed6108 does not write workhorse command header6109 when image file is not an avatar6110 does not write workhorse command header6111 when image file type is not considered safe for scaling6112 does not write workhorse command header6113 when FF is disabled6114 behaves like bypasses image resize requests not allowed by FF6115 does not write workhorse command header6116 with inline image6117 sends a file with inline disposition6118 with attachment6119 sends a file with content-type of text/plain6120 with a proxied file in object storage6121 sends a file with a custom type6122 when remote file is used6123 and proxying is enabled6124 behaves like proxied file6125 sends a file6126 and proxying is disabled6127 sends a file6128 with proxy requested6129 behaves like proxied file6130 sends a file6131 behaves like handles image resize requests6132 behaves like handles image resize requests allowed by FF6133 with valid width parameter6134 renders OK with workhorse command header6135 with missing width parameter6136 does not write workhorse command header6137 with invalid width parameter6138 does not write workhorse command header6139 with width that is not allowed6140 does not write workhorse command header6141 when image file is not an avatar6142 does not write workhorse command header6143 when image file type is not considered safe for scaling6144 does not write workhorse command header6145 when FF is disabled6146 behaves like bypasses image resize requests not allowed by FF6147 does not write workhorse command header6148PasswordsController6149 #check_password_authentication_available6150 when password authentication is disabled for the web interface and Git6151 prevents a password reset6152 when reset email belongs to an ldap user6153 prevents a password reset6154 #update6155 updating the password6156 sets the username and caller_id in the context6157 password update is successful6158 updates the password-related flags6159 password update is unsuccessful6160 does not update the password-related flags6161 password is weak6162 tracks the event6163 #create6164 when reCAPTCHA is disabled6165 successfully sends password reset when reCAPTCHA is not solved6166 when reCAPTCHA is enabled6167 successfully sends password reset when reCAPTCHA is solved6168 when the reCAPTCHA is not solved6169 displays an error6170 sets gon variables6171Projects::Harbor::ArtifactsController6172 behaves like a harbor artifacts controller6173 GET #index.json6174 with harbor registry feature flag enabled6175 behaves like responds with 200 status with json6176 renders the index template6177 with harbor registry feature flag disabled6178 behaves like responds with 404 status6179 returns 4046180 with anonymous user6181 behaves like responds with 302 status6182 returns 3026183 with unauthorized user6184 behaves like responds with 404 status6185 returns 4046186 with valid params6187 with valid repository6188 behaves like responds with 200 status with json6189 renders the index template6190 with valid page6191 behaves like responds with 200 status with json6192 renders the index template6193 with valid limit6194 behaves like responds with 200 status with json6195 renders the index template6196 with invalid params6197 with invalid page6198 behaves like responds with 422 status with json6199 returns 4226200 with invalid limit6201 behaves like responds with 422 status with json6202 returns 4226203API::Internal::ErrorTracking6204 GET /internal/error_tracking/allowed6205 when the secret header is missing6206 responds with unauthorized entity6207 when some params are missing6208 responds with unprocessable entity6209 when public_key is unknown6210 returns enabled: false6211 when unknown project_id is unknown6212 responds with 404 not found6213 when the error tracking is disabled6214 returns enabled: false6215 when the error tracking is enabled6216 returns enabled: true6217 when feature flags use_click_house_database_for_error_tracking or gitlab_error_tracking are disabled6218 returns enabled: false6219Create a new cluster agent6220 without project permissions6221 does not create cluster agent6222 behaves like a mutation that returns a top-level access error6223 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"6224 with user permissions6225DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.6226DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.6227 creates a new cluster agent6228Query.project.mergeRequests.pipelines6229 .count6230 produces correct results6231 is scalable6232 .nodes6233 produces correct results6234 is scalable6235 requests merge_request_diffs at most once6236API::DependencyProxy6237 DELETE /groups/:id/dependency_proxy/cache6238 with a group id6239 behaves like responding to purge requests6240 with feature available and enabled6241 an admin user6242 deletes the blobs and returns no content6243 a non-admin6244 behaves like returning response status6245 returns forbidden6246 depencency proxy is not enabled in the config6247 behaves like returning response status6248 returns not_found6249 with an url encoded group id6250 behaves like responding to purge requests6251 with feature available and enabled6252 an admin user6253 deletes the blobs and returns no content6254 a non-admin6255 behaves like returning response status6256 returns forbidden6257 depencency proxy is not enabled in the config6258 behaves like returning response status6259 returns not_found6260API::Ci::Runner6261 /api/v4/runners6262 POST /api/v4/runners6263 when no token is provided6264 returns 400 error6265 when invalid token is provided6266 returns 403 error6267 when valid parameters are provided6268 when token_expires_at is nil6269 creates runner6270 when token_expires_at is a valid date6271 creates runner6272 behaves like storing arguments in the application context for the API6273 places the expected params in the application context6274 behaves like not executing any extra queries for the application context6275 does not execute more queries than without adding anything to the application context6276 when deprecated maintainer_note field is provided6277 converts to maintenance_note param6278 when deprecated active parameter is provided6279 uses active value in registration6280 calling actual register service6281 sets the runner's ip_address6282 when info parameter 'name' info is present6283 updates provided Runner's parameter6284 when info parameter 'version' info is present6285 updates provided Runner's parameter6286 when info parameter 'revision' info is present6287 updates provided Runner's parameter6288 when info parameter 'platform' info is present6289 updates provided Runner's parameter6290 when info parameter 'architecture' info is present6291 updates provided Runner's parameter6292 when tags parameter is provided6293 with number of tags above limit6294 uses tag_list value in registration and returns error6295 with number of tags below limit6296 uses tag_list value in registration and successfully creates runner6297Importing Jira Users6298 with anonymous user6299 behaves like a mutation that returns top-level errors6300 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"6301 with user without permissions6302 behaves like a mutation that returns top-level errors6303 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"6304 when the user has permissions6305 when the project path is invalid6306 returns an an error6307 with start_at6308 when nil6309 behaves like start users import at zero6310 returns imported users6311 when not provided6312 behaves like start users import at zero6313 returns imported users6314 when all params and permissions are ok6315 when service returns a successful response6316 returns imported users6317 when service returns an error response6318 returns an error messaege6319API::UserCounts6320 GET /user_counts6321 when unauthenticated6322 returns authentication error6323 when authenticated6324 returns assigned issue counts for current_user6325 returns pending todo counts for current_user6326 merge requests6327 returns assigned MR counts for current user6328 updates the mr count when a new mr is assigned6329HealthCheckController6330 GET #index6331 when services are up but accessed from outside whitelisted ips6332 returns a not found page6333 when services are accessed with token6334 supports passing the token in the header6335 supports passing the token in query params6336 when services are up and accessed from whitelisted ips6337 supports successful plaintext response6338 supports successful json response6339 supports successful xml response6340 supports successful responses for specific checks6341 when a service is down but NO access token6342 returns a not found page6343 when a service is down and an endpoint is accessed from whitelisted ip6344 supports failure plaintext response6345 supports failure json response6346 supports failure xml response6347 supports failure responses for specific checks6348query a single terraform state6349 returns terraform state data6350 behaves like a working graphql query6351 returns a successful response6352 unauthorized users6353 is expected to be nil6354query terraform states6355 returns terraform state data6356 returns count of terraform states6357 unauthorized users6358 is expected to be nil6359Setting an issue as confidential6360 returns an error if the user is not allowed to update the issue6361 updates the issue confidentiality6362query Jira service6363 behaves like unauthorized users cannot read services6364 when anonymous user6365 is expected to equal nil6366 when user developer6367 is expected to equal nil6368 when user can access project services6369 returns list of jira integrations6370 behaves like a working graphql query6371 returns a successful response6372Emails::IdentityVerification6373 # order random6374 verification_instructions_email6375 is sent to the user6376 has the correct subject6377 has the mailgun suppression bypass header6378 includes the token6379 includes the expiration time6380 behaves like an email sent from GitLab6381 has the characteristics of an email sent from GitLab6382Dashboard::LabelsController6383 #index6384 returns labels with unique titles for projects the user has a relationship with6385 behaves like disabled when using an external authorization service6386 works when the feature is not enabled6387 renders a 404 with a message when the feature is enabled6388Setting severity level of an incident6389 when the user is not allowed to update the incident6390 returns an error6391 when the user is allowed to update the incident6392 updates the issue6393Updating an incident timeline event6394 updates the timeline event6395 when note is more than 280 characters long6396 behaves like timeline event mutation responds with validation error6397 responds with a validation error6398Groups::DependencyProxiesController6399 GET #show6400 with global config enabled6401 with the setting enabled6402 returns 200 and renders the view6403 with the setting disabled6404 behaves like returning response status6405 returns not_found6406 with global config disabled6407 behaves like returning response status6408 returns not_found6409Admin::IdentitiesController6410 GET #index6411 when the user has no identities6412 shows no identities6413 when the user has identities6414 shows identities6415 UPDATE identity6416 repairs ldap blocks6417 DELETE identity6418 repairs ldap blocks6419Create a label or backlog board list6420 behaves like board lists create request6421 the user is not allowed to read board lists6422 behaves like a mutation that returns a top-level access error6423 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"6424 when user has permissions to admin board lists6425 backlog list6426 creates the list6427 label list6428 creates the list6429Profiles::GpgKeysController6430 POST #create6431 creates a new key6432GracefulTimeoutHandling6433 for json request6434 renders graceful error message6435 logs exception6436 for html request6437 has no effect6438MetricsController6439 #index6440 accessed from whitelisted ip6441 behaves like providing metrics6442 returns prometheus metrics6443 prometheus metrics are disabled6444 returns proper response6445 accessed from ip in whitelisted range6446 behaves like providing metrics6447 returns prometheus metrics6448 prometheus metrics are disabled6449 returns proper response6450 accessed from not whitelisted ip6451 returns the expected error response6452 #system6453 accessed from whitelisted ip6454 behaves like providing system stats6455 renders system stats JSON6456 accessed from ip in whitelisted range6457 behaves like providing system stats6458 renders system stats JSON6459 accessed from not whitelisted ip6460 returns the expected error response6461API::APIGuard::ResponseCoercerMiddleware6462 is loaded6463 #call6464 returns a String body6465 returns a String body6466 returns a String body6467 returns a String body6468 allows nil body6469 allows nil body6470 allows nil body6471getting Alert Management Alert Assignees6472 includes the correct metrics dashboard url6473Query.group(fullPath).ciVariables6474 when the user can administer the group6475 returns the group's CI variables6476 when the user cannot administer the group6477 returns nothing6478getting a repository in a project6479 behaves like a working graphql query6480 returns a successful response6481JwksController6482 Endpoints from the parent Doorkeeper::OpenidConnect::DiscoveryController6483 respond successfully6484 GET /-/jwks6485 returns signing keys used to sign CI_JOB_JWT6486 does not leak private key data6487Admin::Topics::AvatarsController6488/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 nil6489 removes avatar from DB by calling destroy6490Sessions6491 authentication6492 logout does not require a csrf token6493Knapsack report was generated. Preview:6494{6495 "spec/requests/api/merge_requests_spec.rb": 350.78644277600006,6496 "spec/requests/api/terraform/modules/v1/packages_spec.rb": 111.7063821050001,6497 "spec/controllers/projects/merge_requests/diffs_controller_spec.rb": 112.54746753800009,6498 "spec/requests/api/wikis_spec.rb": 78.00504662100002,6499 "spec/requests/api/release/links_spec.rb": 90.18709927000054,6500 "spec/requests/api/graphql/merge_request/merge_request_spec.rb": 45.6493098130004,6501 "spec/controllers/groups/children_controller_spec.rb": 46.190068099999735,6502 "spec/requests/api/terraform/state_spec.rb": 42.08641361900027,6503 "spec/controllers/admin/users_controller_spec.rb": 34.76399213100012,6504 "spec/controllers/projects/deploy_keys_controller_spec.rb": 34.012063240000316,6505 "spec/controllers/projects/compare_controller_spec.rb": 33.64977829199961,6506 "spec/controllers/application_controller_spec.rb": 22.376612817999558,6507 "spec/requests/api/project_milestones_spec.rb": 17.621084658000655,6508 "spec/requests/api/todos_spec.rb": 18.24826608300009,6509 "spec/requests/api/graphql/mutations/releases/update_spec.rb": 16.302330473999973,6510 "spec/requests/projects/issues_controller_spec.rb": 15.471518733999801,6511 "spec/controllers/snippets_controller_spec.rb": 10.703764613000203,6512 "spec/requests/projects/settings/access_tokens_controller_spec.rb": 17.071976287000325,6513 "spec/requests/api/events_spec.rb": 15.974528498999462,6514 "spec/requests/api/environments_spec.rb": 10.735004335000667,6515 "spec/controllers/projects/imports_controller_spec.rb": 11.164415101000486,6516 "spec/requests/api/graphql/ci/runner_spec.rb": 9.905811996000011,6517 "spec/requests/api/project_templates_spec.rb": 9.7324975370002,6518 "spec/requests/api/protected_branches_spec.rb": 6.86312972900032,6519 "spec/controllers/projects/settings/repository_controller_spec.rb": 10.928213448999486,6520 "spec/controllers/projects/ci/lints_controller_spec.rb": 11.021521614999983,6521 "spec/requests/api/graphql/mutations/merge_requests/set_draft_spec.rb": 8.427754453000489,6522 "spec/requests/api/snippet_repository_storage_moves_spec.rb": 5.40087702800065,6523 "spec/requests/api/graphql/project/work_items_spec.rb": 8.274862590000339,6524 "spec/controllers/projects/registry/tags_controller_spec.rb": 7.172530335000374,6525 "spec/controllers/invites_controller_spec.rb": 3.8944347560000097,6526 "spec/controllers/projects/pipelines/tests_controller_spec.rb": 7.525221908000276,6527 "spec/requests/api/protected_tags_spec.rb": 6.060687440000038,6528 "spec/requests/oauth_tokens_spec.rb": 3.8895206050001434,6529 "spec/controllers/projects/runners_controller_spec.rb": 6.835193959999742,6530 "spec/requests/api/notification_settings_spec.rb": 4.581605654000668,6531 "spec/requests/api/graphql/current_user/todos_query_spec.rb": 4.744526045999919,6532 "spec/requests/api/graphql/mutations/branches/create_spec.rb": 4.089958382000077,6533 "spec/controllers/projects/feature_flags_user_lists_controller_spec.rb": 3.724497772000177,6534 "spec/requests/api/graphql/mutations/notes/destroy_spec.rb": 3.7514937880005164,6535 "spec/controllers/concerns/send_file_upload_spec.rb": 1.7769146410000758,6536 "spec/controllers/passwords_controller_spec.rb": 2.4592039409999416,6537 "spec/requests/projects/harbor/artifacts_controller_spec.rb": 3.2519311139994898,6538 "spec/requests/api/internal/error_tracking_spec.rb": 3.0753818409993983,6539 "spec/requests/api/graphql/mutations/clusters/agents/create_spec.rb": 4.4571134990001156,6540 "spec/requests/api/graphql/project/merge_request/pipelines_spec.rb": 2.8268455679999533,6541 "spec/requests/api/dependency_proxy_spec.rb": 2.5754583580001054,6542 "spec/requests/api/ci/runner/runners_post_spec.rb": 1.4283357700005581,6543 "spec/requests/api/graphql/mutations/jira_import/import_users_spec.rb": 2.1907304910000676,6544 "spec/requests/api/user_counts_spec.rb": 2.3220465599997624,6545 "spec/controllers/health_check_controller_spec.rb": 1.5519845669996357,6546 "spec/requests/api/graphql/project/terraform/state_spec.rb": 1.5946194059997651,6547 "spec/requests/api/graphql/project/terraform/states_spec.rb": 1.63321810799971,6548 "spec/requests/api/graphql/mutations/issues/set_confidential_spec.rb": 2.114089005999631,6549 "spec/requests/api/graphql/project/jira_service_spec.rb": 1.7498928639997757,6550 "spec/mailers/emails/identity_verification_spec.rb": 2.008296406000227,6551 "spec/controllers/dashboard/labels_controller_spec.rb": 1.3516242449995843,6552 "spec/requests/api/graphql/mutations/issues/set_severity_spec.rb": 1.6514357349997226,6553 "spec/requests/api/graphql/mutations/incident_management/timeline_event/update_spec.rb": 1.9941554340002767,6554 "spec/controllers/groups/dependency_proxies_controller_spec.rb": 1.1585676730001069,6555 "spec/controllers/admin/identities_controller_spec.rb": 1.2230939320006655,6556 "spec/requests/api/graphql/mutations/boards/lists/create_spec.rb": 1.6801521110000976,6557 "spec/controllers/profiles/gpg_keys_controller_spec.rb": 1.1040215600005467,6558 "spec/controllers/concerns/graceful_timeout_handling_spec.rb": 0.9781924649996654,6559 "spec/controllers/metrics_controller_spec.rb": 0.5374601380008244,6560 "spec/requests/api/api_guard/response_coercer_middleware_spec.rb": 0.5843343000005916,6561 "spec/requests/api/graphql/project/alert_management/alert/todos_spec.rb": 0.9397188419998201,6562 "spec/requests/api/graphql/ci/group_variables_spec.rb": 1.014747759999409,6563 "spec/requests/api/graphql/project/container_expiration_policy_spec.rb": 0.7422337250000055,6564 "spec/requests/jwks_controller_spec.rb": 0.6346323279994976,6565 "spec/controllers/admin/topics/avatars_controller_spec.rb": 0.42642204399999173,6566 "spec/requests/sessions_spec.rb": 0.42393295799956836567}6568Knapsack global time execution for tests: 21m 55s6569Pending: (Failures listed here are expected and do not affect your suite's status)6570 1) API::Terraform::State GET /projects/:id/terraform/state/:name behaves like endpoint with unique user tracking with maintainer permissions behaves like tracking unique hll events tracks unique event6571 # around hook at ./spec/support/flaky_tests.rb:21 did not execute the example6572 # ./spec/support/shared_examples/controllers/unique_hll_events_examples.rb:96573Finished in 22 minutes 0 seconds (files took 36.43 seconds to load)65742358 examples, 0 failures, 1 pending6575Randomized with seed 405096576[TEST PROF INFO] Time spent in factories: 09:24.288 (42.63% of total time)6577RSpec exited with 0.6578No examples to retry, congrats!6580Not uploading cache ruby-gems-debian-bullseye-ruby-2.7-16 due to policy6581Not uploading cache gitaly-ruby-gems-debian-bullseye-ruby-2.7-16 due to policy6583Uploading artifacts...6584coverage/: found 5 matching files and directories 6585crystalball/: found 2 matching files and directories 6586WARNING: deprecations/: no matching files. Ensure that the artifact path is relative to the working directory 6587knapsack/: found 3 matching files and directories 6588rspec/: found 10 matching files and directories 6589WARNING: tmp/capybara/: no matching files. Ensure that the artifact path is relative to the working directory 6590log/*.log: found 16 matching files and directories 6591WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/3281613471/artifacts?artifact_format=zip&artifact_type=archive&expire_in=31d new-url=https://gitlab.com6592WARNING: Retrying... context=artifacts-uploader error=request redirected6593Uploading artifacts as "archive" to coordinator... 201 Created id=3281613471 responseStatus=201 Created token=CNfVhq1V6594Uploading artifacts...6595rspec/junit_rspec.xml: found 1 matching files and directories 6596WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/3281613471/artifacts?artifact_format=gzip&artifact_type=junit&expire_in=31d new-url=https://gitlab.com6597WARNING: Retrying... context=artifacts-uploader error=request redirected6598Uploading artifacts as "junit" to coordinator... 201 Created id=3281613471 responseStatus=201 Created token=CNfVhq1V6600Job succeeded