rspec integration pg13 6/12
Passed Started
by
@dskim_gitlab
Sincheol (David) Kim
1Running with gitlab-runner 15.9.0~beta.212.g8ccc65e7 (8ccc65e7)2 on green-2.private.runners-manager.gitlab.com/gitlab.com/gitlab-org GaSD-S1F, system ID: s_5651e5b5643b3 feature flags: FF_NETWORK_PER_BUILD:true, 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-3.0.patched-golang-1.19-rust-1.65-node-16.14-postgresql-13:rubygems-3.4-git-2.36-lfs-2.9-chrome-109-yarn-1.22-graphicsmagick-1.3.36 ...7Starting service registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-13-pgvector-0.4.1 ...8Authenticating with credentials from job payload (GitLab Registry)9Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-13-pgvector-0.4.1 ...10Using docker image sha256:b643610fd4d2fbdd55447ceb5a6cba0c3d1a26945817741d73e1b51a1ec07d01 for registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-13-pgvector-0.4.1 with digest registry.gitlab.com/gitlab-org/gitlab-build-images@sha256:dfccb5b5ddadf4f1a3b9cb72cf21f5b99a28a55c217de34d9fa6b7a45a910031 ...11Starting service redis:6.2-alpine ...12Pulling docker image redis:6.2-alpine ...13Using docker image sha256:a9a47a706682d445577bb5da7328f0faaa0863a5742a315c829faa461dfc23ae for redis:6.2-alpine with digest redis@sha256:317575f05099ea47b1f2855b1bb6e068b52847bfa19b87014d88d57f82d4b8f0 ...14Waiting for services to be up and running (timeout 30 seconds)...15Authenticating with credentials from job payload (GitLab Registry)16Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-16.14-postgresql-13:rubygems-3.4-git-2.36-lfs-2.9-chrome-109-yarn-1.22-graphicsmagick-1.3.36 ...17Using docker image sha256:552b81110cdd830e05d17c8e7365f72e1dd96842217d7225636cb55a75777ea7 for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-16.14-postgresql-13:rubygems-3.4-git-2.36-lfs-2.9-chrome-109-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-16.14-postgresql-13@sha256:a386dd1acb1341f710f3c3c320984f70512694bcfec8cb1c771365058ac7c475 ...19Running on runner-gasd-s1f-project-278964-concurrent-0 via runner-gasd-s1f-private-1682566230-88fbabf5...21$ eval "$CI_PRE_CLONE_SCRIPT"22Fetching changes with git depth set to 20...23Initialized empty Git repository in /builds/gitlab-org/gitlab/.git/24Created fresh repository.25remote: Enumerating objects: 162343, done. 26remote: Counting objects: 100% (162343/162343), done. 27remote: Compressing objects: 100% (98373/98373), done. 28remote: Total 162343 (delta 79431), reused 115388 (delta 58038), pack-reused 0 29Receiving objects: 100% (162343/162343), 129.51 MiB | 30.49 MiB/s, done.30Resolving deltas: 100% (79431/79431), done.32 * [new ref] refs/pipelines/850455016 -> refs/pipelines/85045501633Checking out 997198e5 as detached HEAD (ref is refs/merge-requests/118423/merge)...34Skipping Git submodules setup35$ git remote set-url origin "${CI_REPOSITORY_URL}"37Checking cache for ruby-gems-debian-bullseye-ruby-3.0-16...38cache.zip is up to date 39Successfully extracted cache41Downloading artifacts for compile-test-assets (4187655852)...42Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4187655852 responseStatus=200 OK token=64_9XtyS43Downloading artifacts for detect-tests (4187655860)...44Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4187655860 responseStatus=200 OK token=64_9XtyS45Downloading artifacts for retrieve-tests-metadata (4187655863)...46Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4187655863 responseStatus=200 OK token=64_9XtyS47Downloading artifacts for setup-test-env (4187655855)...48Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4187655855 responseStatus=200 OK token=64_9XtyS50Using docker image sha256:552b81110cdd830e05d17c8e7365f72e1dd96842217d7225636cb55a75777ea7 for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-16.14-postgresql-13:rubygems-3.4-git-2.36-lfs-2.9-chrome-109-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-16.14-postgresql-13@sha256:a386dd1acb1341f710f3c3c320984f70512694bcfec8cb1c771365058ac7c475 ...51$ echo $FOSS_ONLY52$ [ "$FOSS_ONLY" = "1" ] && rm -rf ee/ qa/spec/ee/ qa/qa/specs/features/ee/ qa/qa/ee/ qa/qa/ee.rb53$ export GOPATH=$CI_PROJECT_DIR/.go54$ mkdir -p $GOPATH55$ source scripts/utils.sh56$ source scripts/prepare_build.sh712Using decomposed database config (config/database.yml.decomposed-postgresql)713Geo DB won't be set up.714Embedding DB won't be set up.730$ source ./scripts/rspec_helpers.sh731$ run_timed_command "gem install knapsack --no-document"732$ gem install knapsack --no-document733Successfully installed knapsack-4.0.07341 gem installed735$ echo -e "\e[0Ksection_start:`date +%s`:gitaly-test-spawn[collapsed=true]\r\e[0KStarting Gitaly"736==> 'gem install knapsack --no-document' succeeded in 0 seconds.738$ section_start "gitaly-test-spawn" "Spawning Gitaly"; scripts/gitaly-test-spawn; section_end "gitaly-test-spawn"743$ echo -e "\e[0Ksection_end:`date +%s`:gitaly-test-spawn\r\e[0K"744$ rspec_paralellized_job "--tag ~quarantine --tag ~level:background_migration"745SKIP_FLAKY_TESTS_AUTOMATICALLY: false746RETRY_FAILED_TESTS_IN_NEW_PROCESS: true747KNAPSACK_GENERATE_REPORT: true748FLAKY_RSPEC_GENERATE_REPORT: true749KNAPSACK_TEST_FILE_PATTERN: spec/{commands,controllers,mailers,requests}{,/**/}*_spec.rb750KNAPSACK_LOG_LEVEL: debug751KNAPSACK_REPORT_PATH: knapsack/rspec_integration_pg13_6_12_report.json752FLAKY_RSPEC_SUITE_REPORT_PATH: rspec/flaky/report-suite.json753FLAKY_RSPEC_REPORT_PATH: rspec/flaky/all_rspec_integration_pg13_6_12_report.json754NEW_FLAKY_RSPEC_REPORT_PATH: rspec/flaky/new_rspec_integration_pg13_6_12_report.json755SKIPPED_FLAKY_TESTS_REPORT_PATH: rspec/flaky/skipped_flaky_tests_rspec_integration_pg13_6_12_report.txt756CRYSTALBALL: 757RSPEC_TESTS_MAPPING_ENABLED: 758RSPEC_TESTS_FILTER_FILE: 759Knapsack report generator started!760warning: parser/current is loading parser/ruby30, which recognizes 3.0.5-compliant syntax, but you are running 3.0.6.762WARNING: Shared example group 'creates terraform module package files' has been previously defined at:763 /builds/gitlab-org/gitlab/spec/support/shared_examples/requests/api/terraform/modules/v1/packages_shared_examples.rb:199764...and you are now defining it at:765 /builds/gitlab-org/gitlab/spec/support/shared_examples/requests/api/terraform/modules/v1/packages_shared_examples.rb:199766The new definition will overwrite the original one.767WARNING: Shared example group 'creates terraform module package files' has been previously defined at:768 /builds/gitlab-org/gitlab/spec/support/shared_examples/requests/api/terraform/modules/v1/packages_shared_examples.rb:199769...and you are now defining it at:770 /builds/gitlab-org/gitlab/spec/support/shared_examples/requests/api/terraform/modules/v1/packages_shared_examples.rb:199771The new definition will overwrite the original one.772WARNING: Shared example group 'creates terraform module package files' has been previously defined at:773 /builds/gitlab-org/gitlab/spec/support/shared_examples/requests/api/terraform/modules/v1/packages_shared_examples.rb:199774...and you are now defining it at:775 /builds/gitlab-org/gitlab/spec/support/shared_examples/requests/api/terraform/modules/v1/packages_shared_examples.rb:199776The new definition will overwrite the original one.777WARNING: Shared example group 'creates terraform module package files' has been previously defined at:778 /builds/gitlab-org/gitlab/spec/support/shared_examples/requests/api/terraform/modules/v1/packages_shared_examples.rb:199779...and you are now defining it at:780 /builds/gitlab-org/gitlab/spec/support/shared_examples/requests/api/terraform/modules/v1/packages_shared_examples.rb:199781The new definition will overwrite the original one.782WARNING: Shared example group 'creates terraform module package files' has been previously defined at:783 /builds/gitlab-org/gitlab/spec/support/shared_examples/requests/api/terraform/modules/v1/packages_shared_examples.rb:199784...and you are now defining it at:785 /builds/gitlab-org/gitlab/spec/support/shared_examples/requests/api/terraform/modules/v1/packages_shared_examples.rb:199786The new definition will overwrite the original one.787Run options: exclude {:quarantine=>true, :level=>"background_migration"}788Test environment set up in 0.807540553 seconds789Git HTTP requests790 User with no identities791 when the project doesn't exist792 when namespace doesn't exist793 behaves like pulls require Basic HTTP Authentication794 when no credentials are provided795 responds to downloads with status 401 Unauthorized (no project existence information leak)796 when only username is provided797 responds to downloads with status 401 Unauthorized798 when username and password are provided799 when authentication fails800 responds to downloads with status 401 Unauthorized801 when user is blocked802 responds to downloads with status 401 Unauthorized803 when authentication succeeds804 does not respond to downloads with status 401 Unauthorized805 behaves like pushes require Basic HTTP Authentication806 when no credentials are provided807 responds to uploads with status 401 Unauthorized (no project existence information leak)808 when only username is provided809 responds to uploads with status 401 Unauthorized810 when username and password are provided811 when authentication fails812 responds to uploads with status 401 Unauthorized813 when authentication succeeds814 does not respond to uploads with status 401 Unauthorized815 behaves like operations are not allowed with expired password816 when password is expired817 responds to downloads with status 401 Unauthorized818 responds to uploads with status 401 Unauthorized819 when authenticated820 rejects downloads and uploads with 404 Not Found821 when namespace exists822 when authenticated823 creates a new project under the existing namespace824 rejects push with 422 Unprocessable Entity when project is invalid825 when project name is missing826 does not redirect to the incorrect path827 behaves like project path without .git suffix828 GET info/refs829 when no params are added830 redirects to the .git suffix version831 when the upload-pack service is requested832 redirects to the .git suffix version833 when the receive-pack service is requested834 redirects to the .git suffix version835 when the params are anything else836 redirects to the sign-in page837 POST git-upload-pack838 fails to find a route839 POST git-receive-pack840 fails to find a route841 when requesting the Wiki842 when the project is public843 behaves like pushes require Basic HTTP Authentication844 when no credentials are provided845 responds to uploads with status 401 Unauthorized (no project existence information leak)846 when only username is provided847 responds to uploads with status 401 Unauthorized848 when username and password are provided849 when authentication fails850 responds to uploads with status 401 Unauthorized851 when authentication succeeds852 does not respond to uploads with status 401 Unauthorized853 when unauthenticated854 responds to pulls with the wiki's repo855 behaves like pulls are allowed856 allows pulls857 when authenticated858 and as a developer on the team859 but the repo is disabled860 behaves like pulls are allowed861 allows pulls862 behaves like pushes are allowed863 allows pushes864 and not on the team865 rejects pushes with 403 Forbidden866 behaves like pulls are allowed867 allows pulls868 when the project is private869 behaves like pulls require Basic HTTP Authentication870 when no credentials are provided871 responds to downloads with status 401 Unauthorized (no project existence information leak)872 when only username is provided873 responds to downloads with status 401 Unauthorized874 when username and password are provided875 when authentication fails876 responds to downloads with status 401 Unauthorized877 when user is blocked878 responds to downloads with status 401 Unauthorized879 when authentication succeeds880 does not respond to downloads with status 401 Unauthorized881 behaves like pushes require Basic HTTP Authentication882 when no credentials are provided883 responds to uploads with status 401 Unauthorized (no project existence information leak)884 when only username is provided885 responds to uploads with status 401 Unauthorized886 when username and password are provided887 when authentication fails888 responds to uploads with status 401 Unauthorized889 when authentication succeeds890 does not respond to uploads with status 401 Unauthorized891 behaves like operations are not allowed with expired password892 when password is expired893 responds to downloads with status 401 Unauthorized894 responds to uploads with status 401 Unauthorized895 when authenticated896 and as a developer on the team897 when user is using credentials with special characters898 with password with special characters899 allows clones900 but the repo is disabled901 allows clones902 pushes are allowed903 and not on the team904 rejects clones with 404 Not Found905 rejects pushes with 404 Not Found906 when the project exists907 when the project is public908 behaves like pushes require Basic HTTP Authentication909 when no credentials are provided910 responds to uploads with status 401 Unauthorized (no project existence information leak)911 when only username is provided912 responds to uploads with status 401 Unauthorized913 when username and password are provided914 when authentication fails915 responds to uploads with status 401 Unauthorized916 when authentication succeeds917 does not respond to uploads with status 401 Unauthorized918 when not authenticated919 behaves like pulls are allowed920 allows pulls921 when authenticated922 as a developer on the team923 behaves like pulls are allowed924 allows pulls925 behaves like pushes are allowed926 allows pushes927 but git-receive-pack over HTTP is disabled in config928 rejects pushes with 403 Forbidden929 but git-upload-pack over HTTP is disabled in config930 rejects pushes with 403 Forbidden931 but the service parameter is missing932 rejects clones with 403 Forbidden933 and not a member of the team934 rejects pushes with 403 Forbidden935 behaves like pulls are allowed936 allows pulls937 when merge requests are open that allow maintainer access938 behaves like pushes are allowed939 allows pushes940 but the service parameter is missing941 rejects clones with 401 Unauthorized942 when the request is not from gitlab-workhorse943 responds with 403 Forbidden944 when the repo is public945 but the repo is disabled946 behaves like pulls require Basic HTTP Authentication947 when no credentials are provided948 responds to downloads with status 401 Unauthorized (no project existence information leak)949 when only username is provided950 responds to downloads with status 401 Unauthorized951 when username and password are provided952 when authentication fails953 responds to downloads with status 401 Unauthorized954 when user is blocked955 responds to downloads with status 401 Unauthorized956 when authentication succeeds957 does not respond to downloads with status 401 Unauthorized958 behaves like pushes require Basic HTTP Authentication959 when no credentials are provided960 responds to uploads with status 401 Unauthorized (no project existence information leak)961 when only username is provided962 responds to uploads with status 401 Unauthorized963 when username and password are provided964 when authentication fails965 responds to uploads with status 401 Unauthorized966 when authentication succeeds967 does not respond to uploads with status 401 Unauthorized968 behaves like operations are not allowed with expired password969 when password is expired970 responds to downloads with status 401 Unauthorized971 responds to uploads with status 401 Unauthorized972 but the repo is enabled973 behaves like pulls are allowed974 allows pulls975 but only project members are allowed976 behaves like pulls require Basic HTTP Authentication977 when no credentials are provided978 responds to downloads with status 401 Unauthorized (no project existence information leak)979 when only username is provided980 responds to downloads with status 401 Unauthorized981 when username and password are provided982 when authentication fails983 responds to downloads with status 401 Unauthorized984 when user is blocked985 responds to downloads with status 401 Unauthorized986 when authentication succeeds987 does not respond to downloads with status 401 Unauthorized988 behaves like pushes require Basic HTTP Authentication989 when no credentials are provided990 responds to uploads with status 401 Unauthorized (no project existence information leak)991 when only username is provided992 responds to uploads with status 401 Unauthorized993 when username and password are provided994 when authentication fails995 responds to uploads with status 401 Unauthorized996 when authentication succeeds997 does not respond to uploads with status 401 Unauthorized998 behaves like operations are not allowed with expired password999 when password is expired1000 responds to downloads with status 401 Unauthorized1001 responds to uploads with status 401 Unauthorized1002 and the user requests a redirected path1003 downloads get status 200 for redirects1004 when the project is private1005 behaves like pulls require Basic HTTP Authentication1006 when no credentials are provided1007 responds to downloads with status 401 Unauthorized (no project existence information leak)1008 when only username is provided1009 responds to downloads with status 401 Unauthorized1010 when username and password are provided1011 when authentication fails1012 responds to downloads with status 401 Unauthorized1013 when user is blocked1014 responds to downloads with status 401 Unauthorized1015 when authentication succeeds1016 does not respond to downloads with status 401 Unauthorized1017 behaves like pushes require Basic HTTP Authentication1018 when no credentials are provided1019 responds to uploads with status 401 Unauthorized (no project existence information leak)1020 when only username is provided1021 responds to uploads with status 401 Unauthorized1022 when username and password are provided1023 when authentication fails1024 responds to uploads with status 401 Unauthorized1025 when authentication succeeds1026 does not respond to uploads with status 401 Unauthorized1027 behaves like operations are not allowed with expired password1028 when password is expired1029 responds to downloads with status 401 Unauthorized1030 responds to uploads with status 401 Unauthorized1031 when username and password are provided1032 when authentication fails1033 when the user is IP banned1034 responds with status 4031035 when authentication succeeds1036 when the user has access to the project1037 when the user is blocked1038 rejects pulls with 401 Unauthorized1039 rejects pulls with 401 Unauthorized for unknown projects (no project existence information leak)1040 when the user isn't blocked1041 resets the IP in Rack Attack on download1042 resets the IP in Rack Attack on upload1043 updates the user last activity1044 when an oauth token is provided1045 behaves like pulls are allowed1046 allows pulls1047 behaves like pushes are allowed1048 allows pushes1049 when password is expired1050 responds to downloads with status 401 unauthorized1051 when user has 2FA enabled1052 when username and password are provided1053 rejects pulls with generic error message1054 rejects the push attempt with generic error message1055 when username and personal access token are provided1056 rejects the push attempt for read_repository scope1057 accepts the push attempt for write_repository scope1058 accepts the pull attempt for read_repository scope1059 accepts the pull attempt for api scope1060 accepts the push attempt for api scope1061 behaves like pulls are allowed1062 allows pulls1063 behaves like pushes are allowed1064 allows pushes1065 when password is expired1066 responds to uploads with status 401 unauthorized1067 when token is impersonated1068 when impersonation is off1069 responds to uploads with status 401 unauthorized1070 when impersonation is on1071 responds to uploads with status 2001072 when internal auth is disabled1073 rejects pulls with generic error message1074 rejects pushes with generic error message1075 when LDAP is configured1076 displays the generic error message1077 when blank password attempts follow a valid login1078 repeated attempts followed by successful attempt1079 and the user requests a redirected path1080 downloads get status 2001081 uploads get status 404 with "project was moved" message1082 when the user doesn't have access to the project1083 pulls get status 4041084 uploads get status 4041085 when the user is admin1086 when admin mode is enabled1087 behaves like pulls are allowed1088 allows pulls1089 behaves like pushes are allowed1090 allows pushes1091 when admin mode is disabled1092 behaves like pulls are allowed1093 allows pulls1094 behaves like pushes are allowed1095 allows pushes1096 when a gitlab ci token is provided1097 when build created by system is authenticated1098 rejects pulls1099 rejects pushes1100 and build created by1101 administrator1102 when admin mode is enabled1103 downloads from other project get status 4031104 behaves like can download code only1105 rejects pushes with 403 Forbidden1106 behaves like pulls are allowed1107 allows pulls1108 when the repo does not exist1109 rejects pulls with 404 Not Found1110 when admin mode is disabled1111 downloads from other project get status 4031112 behaves like can download code only1113 rejects pushes with 403 Forbidden1114 behaves like pulls are allowed1115 allows pulls1116 when the repo does not exist1117 rejects pulls with 404 Not Found1118 regular user1119 downloads from other project get status 4041120 behaves like can download code only1121 rejects pushes with 403 Forbidden1122 behaves like pulls are allowed1123 allows pulls1124 when the repo does not exist1125 rejects pulls with 404 Not Found1126 when users password is expired1127 rejects pulls with 401 unauthorized1128 behaves like project path without .git suffix1129 GET info/refs1130 when no params are added1131 redirects to the .git suffix version1132 when the upload-pack service is requested1133 redirects to the .git suffix version1134 when the receive-pack service is requested1135 redirects to the .git suffix version1136 when the params are anything else1137 redirects to the sign-in page1138 POST git-upload-pack1139 fails to find a route1140 POST git-receive-pack1141 fails to find a route1142 retrieving an info/refs file1143 when the file exists1144 returns the file1145 when the file does not exist1146 redirects1147 when the project path ends with a dot1148 when the project is public1149 behaves like pushes require Basic HTTP Authentication1150 when no credentials are provided1151 responds to uploads with status 401 Unauthorized (no project existence information leak)1152 when only username is provided1153 responds to uploads with status 401 Unauthorized1154 when username and password are provided1155 when authentication fails1156 responds to uploads with status 401 Unauthorized1157 when authentication succeeds1158 does not respond to uploads with status 401 Unauthorized1159 when not authenticated1160 behaves like pulls are allowed1161 allows pulls1162 when authenticated1163 as a developer on the team1164 behaves like pulls are allowed1165 allows pulls1166 behaves like pushes are allowed1167 allows pushes1168 but git-receive-pack over HTTP is disabled in config1169 rejects pushes with 403 Forbidden1170 but git-upload-pack over HTTP is disabled in config1171 rejects pushes with 403 Forbidden1172 but the service parameter is missing1173 rejects clones with 403 Forbidden1174 and not a member of the team1175 rejects pushes with 403 Forbidden1176 behaves like pulls are allowed1177 allows pulls1178 when merge requests are open that allow maintainer access1179 behaves like pushes are allowed1180 allows pushes1181 but the service parameter is missing1182 rejects clones with 401 Unauthorized1183 when the request is not from gitlab-workhorse1184 responds with 403 Forbidden1185 when the repo is public1186 but the repo is disabled1187 behaves like pulls require Basic HTTP Authentication1188 when no credentials are provided1189 responds to downloads with status 401 Unauthorized (no project existence information leak)1190 when only username is provided1191 responds to downloads with status 401 Unauthorized1192 when username and password are provided1193 when authentication fails1194 responds to downloads with status 401 Unauthorized1195 when user is blocked1196 responds to downloads with status 401 Unauthorized1197 when authentication succeeds1198 does not respond to downloads with status 401 Unauthorized1199 behaves like pushes require Basic HTTP Authentication1200 when no credentials are provided1201 responds to uploads with status 401 Unauthorized (no project existence information leak)1202 when only username is provided1203 responds to uploads with status 401 Unauthorized1204 when username and password are provided1205 when authentication fails1206 responds to uploads with status 401 Unauthorized1207 when authentication succeeds1208 does not respond to uploads with status 401 Unauthorized1209 behaves like operations are not allowed with expired password1210 when password is expired1211 responds to downloads with status 401 Unauthorized1212 responds to uploads with status 401 Unauthorized1213 but the repo is enabled1214 behaves like pulls are allowed1215 allows pulls1216 but only project members are allowed1217 behaves like pulls require Basic HTTP Authentication1218 when no credentials are provided1219 responds to downloads with status 401 Unauthorized (no project existence information leak)1220 when only username is provided1221 responds to downloads with status 401 Unauthorized1222 when username and password are provided1223 when authentication fails1224 responds to downloads with status 401 Unauthorized1225 when user is blocked1226 responds to downloads with status 401 Unauthorized1227 when authentication succeeds1228 does not respond to downloads with status 401 Unauthorized1229 behaves like pushes require Basic HTTP Authentication1230 when no credentials are provided1231 responds to uploads with status 401 Unauthorized (no project existence information leak)1232 when only username is provided1233 responds to uploads with status 401 Unauthorized1234 when username and password are provided1235 when authentication fails1236 responds to uploads with status 401 Unauthorized1237 when authentication succeeds1238 does not respond to uploads with status 401 Unauthorized1239 behaves like operations are not allowed with expired password1240 when password is expired1241 responds to downloads with status 401 Unauthorized1242 responds to uploads with status 401 Unauthorized1243 and the user requests a redirected path1244 downloads get status 200 for redirects1245 when the project is private1246 behaves like pulls require Basic HTTP Authentication1247 when no credentials are provided1248 responds to downloads with status 401 Unauthorized (no project existence information leak)1249 when only username is provided1250 responds to downloads with status 401 Unauthorized1251 when username and password are provided1252 when authentication fails1253 responds to downloads with status 401 Unauthorized1254 when user is blocked1255 responds to downloads with status 401 Unauthorized1256 when authentication succeeds1257 does not respond to downloads with status 401 Unauthorized1258 behaves like pushes require Basic HTTP Authentication1259 when no credentials are provided1260 responds to uploads with status 401 Unauthorized (no project existence information leak)1261 when only username is provided1262 responds to uploads with status 401 Unauthorized1263 when username and password are provided1264 when authentication fails1265 responds to uploads with status 401 Unauthorized1266 when authentication succeeds1267 does not respond to uploads with status 401 Unauthorized1268 behaves like operations are not allowed with expired password1269 when password is expired1270 responds to downloads with status 401 Unauthorized1271 responds to uploads with status 401 Unauthorized1272 when username and password are provided1273 when authentication fails1274 when the user is IP banned1275 responds with status 4031276 when authentication succeeds1277 when the user has access to the project1278 when the user is blocked1279 rejects pulls with 401 Unauthorized1280 rejects pulls with 401 Unauthorized for unknown projects (no project existence information leak)1281 when the user isn't blocked1282 resets the IP in Rack Attack on download1283 resets the IP in Rack Attack on upload1284 updates the user last activity1285 when an oauth token is provided1286 behaves like pulls are allowed1287 allows pulls1288 behaves like pushes are allowed1289 allows pushes1290 when password is expired1291 responds to downloads with status 401 unauthorized1292 when user has 2FA enabled1293 when username and password are provided1294 rejects pulls with generic error message1295 rejects the push attempt with generic error message1296 when username and personal access token are provided1297 rejects the push attempt for read_repository scope1298 accepts the push attempt for write_repository scope1299 accepts the pull attempt for read_repository scope1300 accepts the pull attempt for api scope1301 accepts the push attempt for api scope1302 behaves like pulls are allowed1303 allows pulls1304 behaves like pushes are allowed1305 allows pushes1306 when password is expired1307 responds to uploads with status 401 unauthorized1308 when internal auth is disabled1309 rejects pulls with generic error message1310 rejects pushes with generic error message1311 when LDAP is configured1312 returns a generic error message1313 when blank password attempts follow a valid login1314 repeated attempts followed by successful attempt1315 and the user requests a redirected path1316 downloads get status 2001317 uploads get status 404 with "project was moved" message1318 when the user doesn't have access to the project1319 pulls get status 4041320 uploads get status 4041321 when a gitlab ci token is provided1322 when build created by system is authenticated1323 rejects pulls1324 rejects pushes1325 and build created by1326 administrator1327 when admin mode is enabled1328 downloads from other project get status 4031329 behaves like can download code only1330 rejects pushes with 403 Forbidden1331 behaves like pulls are allowed1332 allows pulls1333 when the repo does not exist1334 rejects pulls with 404 Not Found1335 when admin mode is disabled1336 downloads from other project get status 4031337 behaves like can download code only1338 rejects pushes with 403 Forbidden1339 behaves like pulls are allowed1340 allows pulls1341 when the repo does not exist1342 rejects pulls with 404 Not Found1343 regular user1344 downloads from other project get status 4041345 behaves like can download code only1346 rejects pushes with 403 Forbidden1347 behaves like pulls are allowed1348 allows pulls1349 when the repo does not exist1350 rejects pulls with 404 Not Found1351 when users password is expired1352 rejects pulls with 401 unauthorized1353 behaves like project path without .git suffix1354 GET info/refs1355 when no params are added1356 redirects to the .git suffix version1357 when the upload-pack service is requested1358 redirects to the .git suffix version1359 when the receive-pack service is requested1360 redirects to the .git suffix version1361 when the params are anything else1362 redirects to the sign-in page1363 POST git-upload-pack1364 fails to find a route1365 POST git-receive-pack1366 fails to find a route1367 retrieving an info/refs file1368 when the file exists1369 returns the file1370 when the file does not exist1371 redirects1372 when the Wiki path ends with a dot1373 when the project is public1374 behaves like pushes require Basic HTTP Authentication1375 when no credentials are provided1376 responds to uploads with status 401 Unauthorized (no project existence information leak)1377 when only username is provided1378 responds to uploads with status 401 Unauthorized1379 when username and password are provided1380 when authentication fails1381 responds to uploads with status 401 Unauthorized1382 when authentication succeeds1383 does not respond to uploads with status 401 Unauthorized1384 when unauthenticated1385 responds to pulls with the wiki's repo1386 behaves like pulls are allowed1387 allows pulls1388 when authenticated1389 and as a developer on the team1390 but the repo is disabled1391 behaves like pulls are allowed1392 allows pulls1393 behaves like pushes are allowed1394 allows pushes1395 and not on the team1396 rejects pushes with 403 Forbidden1397 behaves like pulls are allowed1398 allows pulls1399 when the project is private1400 behaves like pulls require Basic HTTP Authentication1401 when no credentials are provided1402 responds to downloads with status 401 Unauthorized (no project existence information leak)1403 when only username is provided1404 responds to downloads with status 401 Unauthorized1405 when username and password are provided1406 when authentication fails1407 responds to downloads with status 401 Unauthorized1408 when user is blocked1409 responds to downloads with status 401 Unauthorized1410 when authentication succeeds1411 does not respond to downloads with status 401 Unauthorized1412 behaves like pushes require Basic HTTP Authentication1413 when no credentials are provided1414 responds to uploads with status 401 Unauthorized (no project existence information leak)1415 when only username is provided1416 responds to uploads with status 401 Unauthorized1417 when username and password are provided1418 when authentication fails1419 responds to uploads with status 401 Unauthorized1420 when authentication succeeds1421 does not respond to uploads with status 401 Unauthorized1422 behaves like operations are not allowed with expired password1423 when password is expired1424 responds to downloads with status 401 Unauthorized1425 responds to uploads with status 401 Unauthorized1426 when authenticated1427 and as a developer on the team1428 when user is using credentials with special characters1429 with password with special characters1430 allows clones1431 but the repo is disabled1432 allows clones1433 pushes are allowed1434 and not on the team1435 rejects clones with 404 Not Found1436 rejects pushes with 404 Not Found1437 User with LDAP identity1438 behaves like pulls require Basic HTTP Authentication1439 when no credentials are provided1440 responds to downloads with status 401 Unauthorized (no project existence information leak)1441 when only username is provided1442 responds to downloads with status 401 Unauthorized1443 when username and password are provided1444 when authentication fails1445 responds to downloads with status 401 Unauthorized1446 when user is blocked1447 responds to downloads with status 401 Unauthorized1448 when authentication succeeds1449 does not respond to downloads with status 401 Unauthorized1450 behaves like pushes require Basic HTTP Authentication1451 when no credentials are provided1452 responds to uploads with status 401 Unauthorized (no project existence information leak)1453 when only username is provided1454 responds to uploads with status 401 Unauthorized1455 when username and password are provided1456 when authentication fails1457 responds to uploads with status 401 Unauthorized1458 when authentication succeeds1459 does not respond to uploads with status 401 Unauthorized1460 when authentication succeeds1461 when the project doesn't exist1462 responds with status 404 Not Found1463 when the project exists1464 and the user is on the team1465 responds with status 2001466 behaves like pulls are allowed1467 allows pulls1468 behaves like pushes are allowed1469 allows pushes1470 when password is expired1471 responds to downloads with status 2001472 responds to uploads with status 2001473 when terms are enforced1474 blocks git access when the user did not accept terms1475 when the user accepted the terms1476 allows clones1477 behaves like pulls are allowed1478 allows pulls1479 behaves like pushes are allowed1480 allows pushes1481 from CI1482 behaves like pulls are allowed1483 allows pulls1484API::Terraform::Modules::V1::Packages1485 GET /api/v4/packages/terraform/modules/v1/:module_namespace/:module_name/:module_system/versions1486 with a conflicting package name1487 returns only one version1488 with valid namespace1489 visibility: :public, user_role: :developer, member: true, token_type: :personal_access_token, shared_examples_name: "returns terraform module packages", expected_status: :success1490 behaves like returns terraform module packages1491 for user type developer1492 returning a valid response1493 behaves like returning response status1494 returns success1495 visibility: :public, user_role: :guest, member: true, token_type: :personal_access_token, shared_examples_name: "returns terraform module packages", expected_status: :success1496 behaves like returns terraform module packages1497 for user type guest1498 returning a valid response1499 behaves like returning response status1500 returns success1501 visibility: :public, user_role: :developer, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1502 behaves like rejects terraform module packages access1503 for user type developer1504 behaves like returning response status1505 returns unauthorized1506 visibility: :public, user_role: :guest, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1507 behaves like rejects terraform module packages access1508 for user type guest1509 behaves like returning response status1510 returns unauthorized1511 visibility: :public, user_role: :developer, member: false, token_type: :personal_access_token, shared_examples_name: "returns no terraform module packages", expected_status: :success1512 behaves like returns no terraform module packages1513 for user type developer1514 returns a response with no versions1515 behaves like returning response status1516 returns success1517 visibility: :public, user_role: :guest, member: false, token_type: :personal_access_token, shared_examples_name: "returns no terraform module packages", expected_status: :success1518 behaves like returns no terraform module packages1519 for user type guest1520 returns a response with no versions1521 behaves like returning response status1522 returns success1523 visibility: :public, user_role: :developer, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1524 behaves like rejects terraform module packages access1525 for user type developer1526 behaves like returning response status1527 returns unauthorized1528 visibility: :public, user_role: :guest, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1529 behaves like rejects terraform module packages access1530 for user type guest1531 behaves like returning response status1532 returns unauthorized1533 visibility: :public, user_role: :anonymous, member: false, token_type: nil, shared_examples_name: "returns no terraform module packages", expected_status: :success1534 behaves like returns no terraform module packages1535 for user type anonymous1536 returns a response with no versions1537 behaves like returning response status1538 returns success1539 visibility: :private, user_role: :developer, member: true, token_type: :personal_access_token, shared_examples_name: "returns terraform module packages", expected_status: :success1540 behaves like returns terraform module packages1541 for user type developer1542 returning a valid response1543 behaves like returning response status1544 returns success1545 visibility: :private, user_role: :guest, member: true, token_type: :personal_access_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden1546 behaves like rejects terraform module packages access1547 for user type guest1548 behaves like returning response status1549 returns forbidden1550 visibility: :private, user_role: :developer, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1551 behaves like rejects terraform module packages access1552 for user type developer1553 behaves like returning response status1554 returns unauthorized1555 visibility: :private, user_role: :guest, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1556 behaves like rejects terraform module packages access1557 for user type guest1558 behaves like returning response status1559 returns unauthorized1560 visibility: :private, user_role: :developer, member: false, token_type: :personal_access_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden1561 behaves like rejects terraform module packages access1562 for user type developer1563 behaves like returning response status1564 returns forbidden1565 visibility: :private, user_role: :guest, member: false, token_type: :personal_access_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden1566 behaves like rejects terraform module packages access1567 for user type guest1568 behaves like returning response status1569 returns forbidden1570 visibility: :private, user_role: :developer, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1571 behaves like rejects terraform module packages access1572 for user type developer1573 behaves like returning response status1574 returns unauthorized1575 visibility: :private, user_role: :guest, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1576 behaves like rejects terraform module packages access1577 for user type guest1578 behaves like returning response status1579 returns unauthorized1580 visibility: :private, user_role: :anonymous, member: false, token_type: nil, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1581 behaves like rejects terraform module packages access1582 for user type anonymous1583 behaves like returning response status1584 returns unauthorized1585 visibility: :public, user_role: :developer, member: true, token_type: :job_token, shared_examples_name: "returns terraform module packages", expected_status: :success1586 behaves like returns terraform module packages1587 for user type developer1588 returning a valid response1589 behaves like returning response status1590 returns success1591 visibility: :public, user_role: :guest, member: true, token_type: :job_token, shared_examples_name: "returns no terraform module packages", expected_status: :success1592 behaves like returns no terraform module packages1593 for user type guest1594 returns a response with no versions1595 behaves like returning response status1596 returns success1597 visibility: :public, user_role: :guest, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1598 behaves like rejects terraform module packages access1599 for user type guest1600 behaves like returning response status1601 returns unauthorized1602 visibility: :public, user_role: :developer, member: false, token_type: :job_token, shared_examples_name: "returns no terraform module packages", expected_status: :success1603 behaves like returns no terraform module packages1604 for user type developer1605 returns a response with no versions1606 behaves like returning response status1607 returns success1608 visibility: :public, user_role: :guest, member: false, token_type: :job_token, shared_examples_name: "returns no terraform module packages", expected_status: :success1609 behaves like returns no terraform module packages1610 for user type guest1611 returns a response with no versions1612 behaves like returning response status1613 returns success1614 visibility: :public, user_role: :developer, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1615 behaves like rejects terraform module packages access1616 for user type developer1617 behaves like returning response status1618 returns unauthorized1619 visibility: :public, user_role: :guest, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1620 behaves like rejects terraform module packages access1621 for user type guest1622 behaves like returning response status1623 returns unauthorized1624 visibility: :private, user_role: :developer, member: true, token_type: :job_token, shared_examples_name: "returns terraform module packages", expected_status: :success1625 behaves like returns terraform module packages1626 for user type developer1627 returning a valid response1628 behaves like returning response status1629 returns success1630 visibility: :private, user_role: :guest, member: true, token_type: :job_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden1631 behaves like rejects terraform module packages access1632 for user type guest1633 behaves like returning response status1634 returns forbidden1635 visibility: :private, user_role: :developer, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1636 behaves like rejects terraform module packages access1637 for user type developer1638 behaves like returning response status1639 returns unauthorized1640 visibility: :private, user_role: :guest, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1641 behaves like rejects terraform module packages access1642 for user type guest1643 behaves like returning response status1644 returns unauthorized1645 visibility: :private, user_role: :developer, member: false, token_type: :job_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden1646 behaves like rejects terraform module packages access1647 for user type developer1648 behaves like returning response status1649 returns forbidden1650 visibility: :private, user_role: :guest, member: false, token_type: :job_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden1651 behaves like rejects terraform module packages access1652 for user type guest1653 behaves like returning response status1654 returns forbidden1655 visibility: :private, user_role: :developer, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1656 behaves like rejects terraform module packages access1657 for user type developer1658 behaves like returning response status1659 returns unauthorized1660 visibility: :private, user_role: :guest, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1661 behaves like rejects terraform module packages access1662 for user type guest1663 behaves like returning response status1664 returns unauthorized1665 GET /api/v4/packages/terraform/modules/v1/:module_namespace/:module_name/:module_system/download1666 empty registry1667 returns not found when there is no module1668 with valid namespace1669 visibility: :public, user_role: :developer, member: true, token_type: :personal_access_token, shared_examples_name: "redirects to version download", expected_status: :found1670 behaves like redirects to version download1671 for user type developer1672 returns a valid response1673 behaves like returning response status1674 returns found1675 visibility: :public, user_role: :guest, member: true, token_type: :personal_access_token, shared_examples_name: "redirects to version download", expected_status: :found1676 behaves like redirects to version download1677 for user type guest1678 returns a valid response1679 behaves like returning response status1680 returns found1681 visibility: :public, user_role: :developer, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1682 behaves like rejects terraform module packages access1683 for user type developer1684 behaves like returning response status1685 returns unauthorized1686 visibility: :public, user_role: :guest, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1687 behaves like rejects terraform module packages access1688 for user type guest1689 behaves like returning response status1690 returns unauthorized1691 visibility: :public, user_role: :developer, member: false, token_type: :personal_access_token, shared_examples_name: "redirects to version download", expected_status: :found1692 behaves like redirects to version download1693 for user type developer1694 returns a valid response1695 behaves like returning response status1696 returns found1697 visibility: :public, user_role: :guest, member: false, token_type: :personal_access_token, shared_examples_name: "redirects to version download", expected_status: :found1698 behaves like redirects to version download1699 for user type guest1700 returns a valid response1701 behaves like returning response status1702 returns found1703 visibility: :public, user_role: :developer, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1704 behaves like rejects terraform module packages access1705 for user type developer1706 behaves like returning response status1707 returns unauthorized1708 visibility: :public, user_role: :guest, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1709 behaves like rejects terraform module packages access1710 for user type guest1711 behaves like returning response status1712 returns unauthorized1713 visibility: :public, user_role: :anonymous, member: false, token_type: nil, shared_examples_name: "redirects to version download", expected_status: :found1714 behaves like redirects to version download1715 for user type anonymous1716 returns a valid response1717 behaves like returning response status1718 returns found1719 visibility: :private, user_role: :developer, member: true, token_type: :personal_access_token, shared_examples_name: "redirects to version download", expected_status: :found1720 behaves like redirects to version download1721 for user type developer1722 returns a valid response1723 behaves like returning response status1724 returns found1725 visibility: :private, user_role: :guest, member: true, token_type: :personal_access_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden1726 behaves like rejects terraform module packages access1727 for user type guest1728 behaves like returning response status1729 returns forbidden1730 visibility: :private, user_role: :developer, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1731 behaves like rejects terraform module packages access1732 for user type developer1733 behaves like returning response status1734 returns unauthorized1735 visibility: :private, user_role: :guest, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1736 behaves like rejects terraform module packages access1737 for user type guest1738 behaves like returning response status1739 returns unauthorized1740 visibility: :private, user_role: :developer, member: false, token_type: :personal_access_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden1741 behaves like rejects terraform module packages access1742 for user type developer1743 behaves like returning response status1744 returns forbidden1745 visibility: :private, user_role: :guest, member: false, token_type: :personal_access_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden1746 behaves like rejects terraform module packages access1747 for user type guest1748 behaves like returning response status1749 returns forbidden1750 visibility: :private, user_role: :developer, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1751 behaves like rejects terraform module packages access1752 for user type developer1753 behaves like returning response status1754 returns unauthorized1755 visibility: :private, user_role: :guest, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1756 behaves like rejects terraform module packages access1757 for user type guest1758 behaves like returning response status1759 returns unauthorized1760 visibility: :private, user_role: :anonymous, member: false, token_type: nil, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1761 behaves like rejects terraform module packages access1762 for user type anonymous1763 behaves like returning response status1764 returns unauthorized1765 visibility: :public, user_role: :developer, member: true, token_type: :job_token, shared_examples_name: "redirects to version download", expected_status: :found1766 behaves like redirects to version download1767 for user type developer1768 returns a valid response1769 behaves like returning response status1770 returns found1771 visibility: :public, user_role: :guest, member: true, token_type: :job_token, shared_examples_name: "redirects to version download", expected_status: :found1772 behaves like redirects to version download1773 for user type guest1774 returns a valid response1775 behaves like returning response status1776 returns found1777 visibility: :public, user_role: :guest, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1778 behaves like rejects terraform module packages access1779 for user type guest1780 behaves like returning response status1781 returns unauthorized1782 visibility: :public, user_role: :developer, member: false, token_type: :job_token, shared_examples_name: "redirects to version download", expected_status: :found1783 behaves like redirects to version download1784 for user type developer1785 returns a valid response1786 behaves like returning response status1787 returns found1788 visibility: :public, user_role: :guest, member: false, token_type: :job_token, shared_examples_name: "redirects to version download", expected_status: :found1789 behaves like redirects to version download1790 for user type guest1791 returns a valid response1792 behaves like returning response status1793 returns found1794 visibility: :public, user_role: :developer, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1795 behaves like rejects terraform module packages access1796 for user type developer1797 behaves like returning response status1798 returns unauthorized1799 visibility: :public, user_role: :guest, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1800 behaves like rejects terraform module packages access1801 for user type guest1802 behaves like returning response status1803 returns unauthorized1804 visibility: :private, user_role: :developer, member: true, token_type: :job_token, shared_examples_name: "redirects to version download", expected_status: :found1805 behaves like redirects to version download1806 for user type developer1807 returns a valid response1808 behaves like returning response status1809 returns found1810 visibility: :private, user_role: :guest, member: true, token_type: :job_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden1811 behaves like rejects terraform module packages access1812 for user type guest1813 behaves like returning response status1814 returns forbidden1815 visibility: :private, user_role: :developer, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1816 behaves like rejects terraform module packages access1817 for user type developer1818 behaves like returning response status1819 returns unauthorized1820 visibility: :private, user_role: :guest, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1821 behaves like rejects terraform module packages access1822 for user type guest1823 behaves like returning response status1824 returns unauthorized1825 visibility: :private, user_role: :developer, member: false, token_type: :job_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden1826 behaves like rejects terraform module packages access1827 for user type developer1828 behaves like returning response status1829 returns forbidden1830 visibility: :private, user_role: :guest, member: false, token_type: :job_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden1831 behaves like rejects terraform module packages access1832 for user type guest1833 behaves like returning response status1834 returns forbidden1835 visibility: :private, user_role: :developer, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1836 behaves like rejects terraform module packages access1837 for user type developer1838 behaves like returning response status1839 returns unauthorized1840 visibility: :private, user_role: :guest, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1841 behaves like rejects terraform module packages access1842 for user type guest1843 behaves like returning response status1844 returns unauthorized1845 GET /api/v4/packages/terraform/modules/v1/:module_namespace/:module_name/:module_system1846 empty registry1847 returns not found when there is no module1848 with valid namespace1849 visibility: :public, user_role: :developer, member: true, token_type: :personal_access_token, shared_examples_name: "returns terraform module version", expected_status: :success1850 behaves like returns terraform module version1851 for user type developer1852 returning a valid response1853 behaves like returning response status1854 returns success1855 visibility: :public, user_role: :guest, member: true, token_type: :personal_access_token, shared_examples_name: "returns terraform module version", expected_status: :success1856 behaves like returns terraform module version1857 for user type guest1858 returning a valid response1859 behaves like returning response status1860 returns success1861 visibility: :public, user_role: :developer, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1862 behaves like rejects terraform module packages access1863 for user type developer1864 behaves like returning response status1865 returns unauthorized1866 visibility: :public, user_role: :guest, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1867 behaves like rejects terraform module packages access1868 for user type guest1869 behaves like returning response status1870 returns unauthorized1871 visibility: :public, user_role: :developer, member: false, token_type: :personal_access_token, shared_examples_name: "returns terraform module version", expected_status: :success1872 behaves like returns terraform module version1873 for user type developer1874 returning a valid response1875 behaves like returning response status1876 returns success1877 visibility: :public, user_role: :guest, member: false, token_type: :personal_access_token, shared_examples_name: "returns terraform module version", expected_status: :success1878 behaves like returns terraform module version1879 for user type guest1880 returning a valid response1881 behaves like returning response status1882 returns success1883 visibility: :public, user_role: :developer, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1884 behaves like rejects terraform module packages access1885 for user type developer1886 behaves like returning response status1887 returns unauthorized1888 visibility: :public, user_role: :guest, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1889 behaves like rejects terraform module packages access1890 for user type guest1891 behaves like returning response status1892 returns unauthorized1893 visibility: :public, user_role: :anonymous, member: false, token_type: nil, shared_examples_name: "returns terraform module version", expected_status: :success1894 behaves like returns terraform module version1895 for user type anonymous1896 returning a valid response1897 behaves like returning response status1898 returns success1899 visibility: :private, user_role: :developer, member: true, token_type: :personal_access_token, shared_examples_name: "returns terraform module version", expected_status: :success1900 behaves like returns terraform module version1901 for user type developer1902 returning a valid response1903 behaves like returning response status1904 returns success1905 visibility: :private, user_role: :guest, member: true, token_type: :personal_access_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden1906 behaves like rejects terraform module packages access1907 for user type guest1908 behaves like returning response status1909 returns forbidden1910 visibility: :private, user_role: :developer, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1911 behaves like rejects terraform module packages access1912 for user type developer1913 behaves like returning response status1914 returns unauthorized1915 visibility: :private, user_role: :guest, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1916 behaves like rejects terraform module packages access1917 for user type guest1918 behaves like returning response status1919 returns unauthorized1920 visibility: :private, user_role: :developer, member: false, token_type: :personal_access_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden1921 behaves like rejects terraform module packages access1922 for user type developer1923 behaves like returning response status1924 returns forbidden1925 visibility: :private, user_role: :guest, member: false, token_type: :personal_access_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden1926 behaves like rejects terraform module packages access1927 for user type guest1928 behaves like returning response status1929 returns forbidden1930 visibility: :private, user_role: :developer, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1931 behaves like rejects terraform module packages access1932 for user type developer1933 behaves like returning response status1934 returns unauthorized1935 visibility: :private, user_role: :guest, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1936 behaves like rejects terraform module packages access1937 for user type guest1938 behaves like returning response status1939 returns unauthorized1940 visibility: :private, user_role: :anonymous, member: false, token_type: nil, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1941 behaves like rejects terraform module packages access1942 for user type anonymous1943 behaves like returning response status1944 returns unauthorized1945 visibility: :public, user_role: :developer, member: true, token_type: :job_token, shared_examples_name: "returns terraform module version", expected_status: :success1946 behaves like returns terraform module version1947 for user type developer1948 returning a valid response1949 behaves like returning response status1950 returns success1951 visibility: :public, user_role: :guest, member: true, token_type: :job_token, shared_examples_name: "returns terraform module version", expected_status: :success1952 behaves like returns terraform module version1953 for user type guest1954 returning a valid response1955 behaves like returning response status1956 returns success1957 visibility: :public, user_role: :guest, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1958 behaves like rejects terraform module packages access1959 for user type guest1960 behaves like returning response status1961 returns unauthorized1962 visibility: :public, user_role: :developer, member: false, token_type: :job_token, shared_examples_name: "returns terraform module version", expected_status: :success1963 behaves like returns terraform module version1964 for user type developer1965 returning a valid response1966 behaves like returning response status1967 returns success1968 visibility: :public, user_role: :guest, member: false, token_type: :job_token, shared_examples_name: "returns terraform module version", expected_status: :success1969 behaves like returns terraform module version1970 for user type guest1971 returning a valid response1972 behaves like returning response status1973 returns success1974 visibility: :public, user_role: :developer, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1975 behaves like rejects terraform module packages access1976 for user type developer1977 behaves like returning response status1978 returns unauthorized1979 visibility: :public, user_role: :guest, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1980 behaves like rejects terraform module packages access1981 for user type guest1982 behaves like returning response status1983 returns unauthorized1984 visibility: :private, user_role: :developer, member: true, token_type: :job_token, shared_examples_name: "returns terraform module version", expected_status: :success1985 behaves like returns terraform module version1986 for user type developer1987 returning a valid response1988 behaves like returning response status1989 returns success1990 visibility: :private, user_role: :guest, member: true, token_type: :job_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden1991 behaves like rejects terraform module packages access1992 for user type guest1993 behaves like returning response status1994 returns forbidden1995 visibility: :private, user_role: :developer, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized1996 behaves like rejects terraform module packages access1997 for user type developer1998 behaves like returning response status1999 returns unauthorized2000 visibility: :private, user_role: :guest, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2001 behaves like rejects terraform module packages access2002 for user type guest2003 behaves like returning response status2004 returns unauthorized2005 visibility: :private, user_role: :developer, member: false, token_type: :job_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2006 behaves like rejects terraform module packages access2007 for user type developer2008 behaves like returning response status2009 returns forbidden2010 visibility: :private, user_role: :guest, member: false, token_type: :job_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2011 behaves like rejects terraform module packages access2012 for user type guest2013 behaves like returning response status2014 returns forbidden2015 visibility: :private, user_role: :developer, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2016 behaves like rejects terraform module packages access2017 for user type developer2018 behaves like returning response status2019 returns unauthorized2020 visibility: :private, user_role: :guest, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2021 behaves like rejects terraform module packages access2022 for user type guest2023 behaves like returning response status2024 returns unauthorized2025 GET /api/v4/packages/terraform/modules/v1/:module_namespace/:module_name/:module_system/:module_version2026 not found2027 returns not found when the specified version is not present in the registry2028 with valid namespace2029 visibility: :public, user_role: :developer, member: true, token_type: :personal_access_token, shared_examples_name: "returns terraform module version", expected_status: :success2030 behaves like returns terraform module version2031 for user type developer2032 returning a valid response2033 behaves like returning response status2034 returns success2035 visibility: :public, user_role: :guest, member: true, token_type: :personal_access_token, shared_examples_name: "returns terraform module version", expected_status: :success2036 behaves like returns terraform module version2037 for user type guest2038 returning a valid response2039 behaves like returning response status2040 returns success2041 visibility: :public, user_role: :developer, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2042 behaves like rejects terraform module packages access2043 for user type developer2044 behaves like returning response status2045 returns unauthorized2046 visibility: :public, user_role: :guest, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2047 behaves like rejects terraform module packages access2048 for user type guest2049 behaves like returning response status2050 returns unauthorized2051 visibility: :public, user_role: :developer, member: false, token_type: :personal_access_token, shared_examples_name: "returns terraform module version", expected_status: :success2052 behaves like returns terraform module version2053 for user type developer2054 returning a valid response2055 behaves like returning response status2056 returns success2057 visibility: :public, user_role: :guest, member: false, token_type: :personal_access_token, shared_examples_name: "returns terraform module version", expected_status: :success2058 behaves like returns terraform module version2059 for user type guest2060 returning a valid response2061 behaves like returning response status2062 returns success2063 visibility: :public, user_role: :developer, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2064 behaves like rejects terraform module packages access2065 for user type developer2066 behaves like returning response status2067 returns unauthorized2068 visibility: :public, user_role: :guest, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2069 behaves like rejects terraform module packages access2070 for user type guest2071 behaves like returning response status2072 returns unauthorized2073 visibility: :public, user_role: :anonymous, member: false, token_type: nil, shared_examples_name: "returns terraform module version", expected_status: :success2074 behaves like returns terraform module version2075 for user type anonymous2076 returning a valid response2077 behaves like returning response status2078 returns success2079 visibility: :private, user_role: :developer, member: true, token_type: :personal_access_token, shared_examples_name: "returns terraform module version", expected_status: :success2080 behaves like returns terraform module version2081 for user type developer2082 returning a valid response2083 behaves like returning response status2084 returns success2085 visibility: :private, user_role: :guest, member: true, token_type: :personal_access_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2086 behaves like rejects terraform module packages access2087 for user type guest2088 behaves like returning response status2089 returns forbidden2090 visibility: :private, user_role: :developer, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2091 behaves like rejects terraform module packages access2092 for user type developer2093 behaves like returning response status2094 returns unauthorized2095 visibility: :private, user_role: :guest, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2096 behaves like rejects terraform module packages access2097 for user type guest2098 behaves like returning response status2099 returns unauthorized2100 visibility: :private, user_role: :developer, member: false, token_type: :personal_access_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2101 behaves like rejects terraform module packages access2102 for user type developer2103 behaves like returning response status2104 returns forbidden2105 visibility: :private, user_role: :guest, member: false, token_type: :personal_access_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2106 behaves like rejects terraform module packages access2107 for user type guest2108 behaves like returning response status2109 returns forbidden2110 visibility: :private, user_role: :developer, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2111 behaves like rejects terraform module packages access2112 for user type developer2113 behaves like returning response status2114 returns unauthorized2115 visibility: :private, user_role: :guest, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2116 behaves like rejects terraform module packages access2117 for user type guest2118 behaves like returning response status2119 returns unauthorized2120 visibility: :private, user_role: :anonymous, member: false, token_type: nil, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2121 behaves like rejects terraform module packages access2122 for user type anonymous2123 behaves like returning response status2124 returns unauthorized2125 visibility: :public, user_role: :developer, member: true, token_type: :job_token, shared_examples_name: "returns terraform module version", expected_status: :success2126 behaves like returns terraform module version2127 for user type developer2128 returning a valid response2129 behaves like returning response status2130 returns success2131 visibility: :public, user_role: :guest, member: true, token_type: :job_token, shared_examples_name: "returns terraform module version", expected_status: :success2132 behaves like returns terraform module version2133 for user type guest2134 returning a valid response2135 behaves like returning response status2136 returns success2137 visibility: :public, user_role: :guest, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2138 behaves like rejects terraform module packages access2139 for user type guest2140 behaves like returning response status2141 returns unauthorized2142 visibility: :public, user_role: :developer, member: false, token_type: :job_token, shared_examples_name: "returns terraform module version", expected_status: :success2143 behaves like returns terraform module version2144 for user type developer2145 returning a valid response2146 behaves like returning response status2147 returns success2148 visibility: :public, user_role: :guest, member: false, token_type: :job_token, shared_examples_name: "returns terraform module version", expected_status: :success2149 behaves like returns terraform module version2150 for user type guest2151 returning a valid response2152 behaves like returning response status2153 returns success2154 visibility: :public, user_role: :developer, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2155 behaves like rejects terraform module packages access2156 for user type developer2157 behaves like returning response status2158 returns unauthorized2159 visibility: :public, user_role: :guest, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2160 behaves like rejects terraform module packages access2161 for user type guest2162 behaves like returning response status2163 returns unauthorized2164 visibility: :private, user_role: :developer, member: true, token_type: :job_token, shared_examples_name: "returns terraform module version", expected_status: :success2165 behaves like returns terraform module version2166 for user type developer2167 returning a valid response2168 behaves like returning response status2169 returns success2170 visibility: :private, user_role: :guest, member: true, token_type: :job_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2171 behaves like rejects terraform module packages access2172 for user type guest2173 behaves like returning response status2174 returns forbidden2175 visibility: :private, user_role: :developer, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2176 behaves like rejects terraform module packages access2177 for user type developer2178 behaves like returning response status2179 returns unauthorized2180 visibility: :private, user_role: :guest, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2181 behaves like rejects terraform module packages access2182 for user type guest2183 behaves like returning response status2184 returns unauthorized2185 visibility: :private, user_role: :developer, member: false, token_type: :job_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2186 behaves like rejects terraform module packages access2187 for user type developer2188 behaves like returning response status2189 returns forbidden2190 visibility: :private, user_role: :guest, member: false, token_type: :job_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2191 behaves like rejects terraform module packages access2192 for user type guest2193 behaves like returning response status2194 returns forbidden2195 visibility: :private, user_role: :developer, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2196 behaves like rejects terraform module packages access2197 for user type developer2198 behaves like returning response status2199 returns unauthorized2200 visibility: :private, user_role: :guest, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2201 behaves like rejects terraform module packages access2202 for user type guest2203 behaves like returning response status2204 returns unauthorized2205 GET /api/v4/packages/terraform/modules/v1/:module_namespace/:module_name/:module_system/:module_version/download2206 with valid namespace2207 visibility: :public, user_role: :developer, member: true, token_type: :personal_access_token, shared_examples_name: "grants terraform module download", expected_status: :success2208 behaves like grants terraform module download2209 for user type developer2210 returns a valid response2211 behaves like returning response status2212 returns success2213 visibility: :public, user_role: :guest, member: true, token_type: :personal_access_token, shared_examples_name: "grants terraform module download", expected_status: :success2214 behaves like grants terraform module download2215 for user type guest2216 returns a valid response2217 behaves like returning response status2218 returns success2219 visibility: :public, user_role: :developer, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2220 behaves like rejects terraform module packages access2221 for user type developer2222 behaves like returning response status2223 returns unauthorized2224 visibility: :public, user_role: :guest, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2225 behaves like rejects terraform module packages access2226 for user type guest2227 behaves like returning response status2228 returns unauthorized2229 visibility: :public, user_role: :developer, member: false, token_type: :personal_access_token, shared_examples_name: "grants terraform module download", expected_status: :success2230 behaves like grants terraform module download2231 for user type developer2232 returns a valid response2233 behaves like returning response status2234 returns success2235 visibility: :public, user_role: :guest, member: false, token_type: :personal_access_token, shared_examples_name: "grants terraform module download", expected_status: :success2236 behaves like grants terraform module download2237 for user type guest2238 returns a valid response2239 behaves like returning response status2240 returns success2241 visibility: :public, user_role: :developer, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2242 behaves like rejects terraform module packages access2243 for user type developer2244 behaves like returning response status2245 returns unauthorized2246 visibility: :public, user_role: :guest, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2247 behaves like rejects terraform module packages access2248 for user type guest2249 behaves like returning response status2250 returns unauthorized2251 visibility: :public, user_role: :anonymous, member: false, token_type: nil, shared_examples_name: "grants terraform module download", expected_status: :success2252 behaves like grants terraform module download2253 for user type anonymous2254 returns a valid response2255 behaves like returning response status2256 returns success2257 visibility: :private, user_role: :developer, member: true, token_type: :personal_access_token, shared_examples_name: "grants terraform module download", expected_status: :success2258 behaves like grants terraform module download2259 for user type developer2260 returns a valid response2261 behaves like returning response status2262 returns success2263 visibility: :private, user_role: :guest, member: true, token_type: :personal_access_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2264 behaves like rejects terraform module packages access2265 for user type guest2266 behaves like returning response status2267 returns forbidden2268 visibility: :private, user_role: :developer, 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 developer2271 behaves like returning response status2272 returns unauthorized2273 visibility: :private, user_role: :guest, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2274 behaves like rejects terraform module packages access2275 for user type guest2276 behaves like returning response status2277 returns unauthorized2278 visibility: :private, user_role: :developer, member: false, token_type: :personal_access_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2279 behaves like rejects terraform module packages access2280 for user type developer2281 behaves like returning response status2282 returns forbidden2283 visibility: :private, user_role: :guest, member: false, token_type: :personal_access_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2284 behaves like rejects terraform module packages access2285 for user type guest2286 behaves like returning response status2287 returns forbidden2288 visibility: :private, user_role: :developer, 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 developer2291 behaves like returning response status2292 returns unauthorized2293 visibility: :private, user_role: :guest, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2294 behaves like rejects terraform module packages access2295 for user type guest2296 behaves like returning response status2297 returns unauthorized2298 visibility: :private, user_role: :anonymous, member: false, token_type: nil, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2299 behaves like rejects terraform module packages access2300 for user type anonymous2301 behaves like returning response status2302 returns unauthorized2303 visibility: :public, user_role: :developer, member: true, token_type: :job_token, shared_examples_name: "grants terraform module download", expected_status: :success2304 behaves like grants terraform module download2305 for user type developer2306 returns a valid response2307 behaves like returning response status2308 returns success2309 visibility: :public, user_role: :guest, member: true, token_type: :job_token, shared_examples_name: "grants terraform module download", expected_status: :success2310 behaves like grants terraform module download2311 for user type guest2312 returns a valid response2313 behaves like returning response status2314 returns success2315 visibility: :public, user_role: :guest, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2316 behaves like rejects terraform module packages access2317 for user type guest2318 behaves like returning response status2319 returns unauthorized2320 visibility: :public, user_role: :developer, member: false, token_type: :job_token, shared_examples_name: "grants terraform module download", expected_status: :success2321 behaves like grants terraform module download2322 for user type developer2323 returns a valid response2324 behaves like returning response status2325 returns success2326 visibility: :public, user_role: :guest, member: false, token_type: :job_token, shared_examples_name: "grants terraform module download", expected_status: :success2327 behaves like grants terraform module download2328 for user type guest2329 returns a valid response2330 behaves like returning response status2331 returns success2332 visibility: :public, user_role: :developer, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2333 behaves like rejects terraform module packages access2334 for user type developer2335 behaves like returning response status2336 returns unauthorized2337 visibility: :public, user_role: :guest, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2338 behaves like rejects terraform module packages access2339 for user type guest2340 behaves like returning response status2341 returns unauthorized2342 visibility: :private, user_role: :developer, member: true, token_type: :job_token, shared_examples_name: "grants terraform module download", expected_status: :success2343 behaves like grants terraform module download2344 for user type developer2345 returns a valid response2346 behaves like returning response status2347 returns success2348 visibility: :private, user_role: :guest, member: true, token_type: :job_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2349 behaves like rejects terraform module packages access2350 for user type guest2351 behaves like returning response status2352 returns forbidden2353 visibility: :private, user_role: :developer, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2354 behaves like rejects terraform module packages access2355 for user type developer2356 behaves like returning response status2357 returns unauthorized2358 visibility: :private, user_role: :guest, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2359 behaves like rejects terraform module packages access2360 for user type guest2361 behaves like returning response status2362 returns unauthorized2363 visibility: :private, user_role: :developer, member: false, token_type: :job_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2364 behaves like rejects terraform module packages access2365 for user type developer2366 behaves like returning response status2367 returns forbidden2368 visibility: :private, user_role: :guest, member: false, token_type: :job_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2369 behaves like rejects terraform module packages access2370 for user type guest2371 behaves like returning response status2372 returns forbidden2373 visibility: :private, user_role: :developer, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2374 behaves like rejects terraform module packages access2375 for user type developer2376 behaves like returning response status2377 returns unauthorized2378 visibility: :private, user_role: :guest, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2379 behaves like rejects terraform module packages access2380 for user type guest2381 behaves like returning response status2382 returns unauthorized2383 GET /api/v4/packages/terraform/modules/v1/:module_namespace/:module_name/:module_system/:module_version/file2384 with valid namespace2385 visibility: :public, user_role: :developer, member: true, token_type: :personal_access_token, shared_examples_name: "grants terraform module package file access", expected_status: :success2386 behaves like grants terraform module package file access2387 for user type developer2388 behaves like returning response status2389 returns success2390 behaves like a package tracking event2391 creates a gitlab tracking event pull_package2392 visibility: :public, user_role: :guest, member: true, token_type: :personal_access_token, shared_examples_name: "grants terraform module package file access", expected_status: :success2393 behaves like grants terraform module package file access2394 for user type guest2395 behaves like returning response status2396 returns success2397 behaves like a package tracking event2398 creates a gitlab tracking event pull_package2399 visibility: :public, user_role: :developer, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2400 behaves like rejects terraform module packages access2401 for user type developer2402 behaves like returning response status2403 returns unauthorized2404 visibility: :public, user_role: :guest, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2405 behaves like rejects terraform module packages access2406 for user type guest2407 behaves like returning response status2408 returns unauthorized2409 visibility: :public, user_role: :developer, member: false, token_type: :personal_access_token, shared_examples_name: "grants terraform module package file access", expected_status: :success2410 behaves like grants terraform module package file access2411 for user type developer2412 behaves like returning response status2413 returns success2414 behaves like a package tracking event2415 creates a gitlab tracking event pull_package2416 visibility: :public, user_role: :guest, member: false, token_type: :personal_access_token, shared_examples_name: "grants terraform module package file access", expected_status: :success2417 behaves like grants terraform module package file access2418 for user type guest2419 behaves like returning response status2420 returns success2421 behaves like a package tracking event2422 creates a gitlab tracking event pull_package2423 visibility: :public, user_role: :developer, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2424 behaves like rejects terraform module packages access2425 for user type developer2426 behaves like returning response status2427 returns unauthorized2428 visibility: :public, user_role: :guest, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2429 behaves like rejects terraform module packages access2430 for user type guest2431 behaves like returning response status2432 returns unauthorized2433 visibility: :public, user_role: :anonymous, member: false, token_type: nil, shared_examples_name: "grants terraform module package file access", expected_status: :success2434 behaves like grants terraform module package file access2435 for user type anonymous2436 behaves like returning response status2437 returns success2438 behaves like a package tracking event2439 creates a gitlab tracking event pull_package2440 visibility: :private, user_role: :developer, member: true, token_type: :personal_access_token, shared_examples_name: "grants terraform module package file access", expected_status: :success2441 behaves like grants terraform module package file access2442 for user type developer2443 behaves like returning response status2444 returns success2445 behaves like a package tracking event2446 creates a gitlab tracking event pull_package2447 visibility: :private, user_role: :guest, member: true, token_type: :personal_access_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2448 behaves like rejects terraform module packages access2449 for user type guest2450 behaves like returning response status2451 returns forbidden2452 visibility: :private, user_role: :developer, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2453 behaves like rejects terraform module packages access2454 for user type developer2455 behaves like returning response status2456 returns unauthorized2457 visibility: :private, user_role: :guest, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2458 behaves like rejects terraform module packages access2459 for user type guest2460 behaves like returning response status2461 returns unauthorized2462 visibility: :private, user_role: :developer, member: false, token_type: :personal_access_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2463 behaves like rejects terraform module packages access2464 for user type developer2465 behaves like returning response status2466 returns forbidden2467 visibility: :private, user_role: :guest, member: false, token_type: :personal_access_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2468 behaves like rejects terraform module packages access2469 for user type guest2470 behaves like returning response status2471 returns forbidden2472 visibility: :private, user_role: :developer, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2473 behaves like rejects terraform module packages access2474 for user type developer2475 behaves like returning response status2476 returns unauthorized2477 visibility: :private, user_role: :guest, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2478 behaves like rejects terraform module packages access2479 for user type guest2480 behaves like returning response status2481 returns unauthorized2482 visibility: :private, user_role: :anonymous, member: false, token_type: nil, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2483 behaves like rejects terraform module packages access2484 for user type anonymous2485 behaves like returning response status2486 returns unauthorized2487 visibility: :public, user_role: :developer, member: true, token_type: :job_token, shared_examples_name: "grants terraform module package file access", expected_status: :success2488 behaves like grants terraform module package file access2489 for user type developer2490 behaves like returning response status2491 returns success2492 behaves like a package tracking event2493 creates a gitlab tracking event pull_package2494 visibility: :public, user_role: :guest, member: true, token_type: :job_token, shared_examples_name: "grants terraform module package file access", expected_status: :success2495 behaves like grants terraform module package file access2496 for user type guest2497 behaves like returning response status2498 returns success2499 behaves like a package tracking event2500 creates a gitlab tracking event pull_package2501 visibility: :public, user_role: :guest, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2502 behaves like rejects terraform module packages access2503 for user type guest2504 behaves like returning response status2505 returns unauthorized2506 visibility: :public, user_role: :developer, member: false, token_type: :job_token, shared_examples_name: "grants terraform module package file access", expected_status: :success2507 behaves like grants terraform module package file access2508 for user type developer2509 behaves like returning response status2510 returns success2511 behaves like a package tracking event2512 creates a gitlab tracking event pull_package2513 visibility: :public, user_role: :guest, member: false, token_type: :job_token, shared_examples_name: "grants terraform module package file access", expected_status: :success2514 behaves like grants terraform module package file access2515 for user type guest2516 behaves like returning response status2517 returns success2518 behaves like a package tracking event2519 creates a gitlab tracking event pull_package2520 visibility: :public, user_role: :developer, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2521 behaves like rejects terraform module packages access2522 for user type developer2523 behaves like returning response status2524 returns unauthorized2525 visibility: :public, user_role: :guest, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2526 behaves like rejects terraform module packages access2527 for user type guest2528 behaves like returning response status2529 returns unauthorized2530 visibility: :private, user_role: :developer, member: true, token_type: :job_token, shared_examples_name: "grants terraform module package file access", expected_status: :success2531 behaves like grants terraform module package file access2532 for user type developer2533 behaves like returning response status2534 returns success2535 behaves like a package tracking event2536 creates a gitlab tracking event pull_package2537 visibility: :private, user_role: :guest, member: true, token_type: :job_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2538 behaves like rejects terraform module packages access2539 for user type guest2540 behaves like returning response status2541 returns forbidden2542 visibility: :private, user_role: :developer, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2543 behaves like rejects terraform module packages access2544 for user type developer2545 behaves like returning response status2546 returns unauthorized2547 visibility: :private, user_role: :guest, member: true, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2548 behaves like rejects terraform module packages access2549 for user type guest2550 behaves like returning response status2551 returns unauthorized2552 visibility: :private, user_role: :developer, member: false, token_type: :job_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2553 behaves like rejects terraform module packages access2554 for user type developer2555 behaves like returning response status2556 returns forbidden2557 visibility: :private, user_role: :guest, member: false, token_type: :job_token, shared_examples_name: "rejects terraform module packages access", expected_status: :forbidden2558 behaves like rejects terraform module packages access2559 for user type guest2560 behaves like returning response status2561 returns forbidden2562 visibility: :private, user_role: :developer, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2563 behaves like rejects terraform module packages access2564 for user type developer2565 behaves like returning response status2566 returns unauthorized2567 visibility: :private, user_role: :guest, member: false, token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2568 behaves like rejects terraform module packages access2569 for user type guest2570 behaves like returning response status2571 returns unauthorized2572 with package file pending destruction2573 does not return them2574 PUT /api/v4/projects/:project_id/packages/terraform/modules/:module_name/:module_system/:module_version/file/authorize2575 with valid project2576 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: :success2577 behaves like process terraform module workhorse authorization2578 for user type developer2579 has the proper content type2580 behaves like returning response status2581 returns success2582 with a request that bypassed gitlab-workhorse2583 behaves like returning response status2584 returns forbidden2585 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: :forbidden2586 behaves like rejects terraform module packages access2587 for user type guest2588 behaves like returning response status2589 returns forbidden2590 visibility: :public, user_role: :developer, member: true, token_header: "PRIVATE-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2591 behaves like rejects terraform module packages access2592 for user type developer2593 behaves like returning response status2594 returns unauthorized2595 visibility: :public, user_role: :guest, member: true, token_header: "PRIVATE-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2596 behaves like rejects terraform module packages access2597 for user type guest2598 behaves like returning response status2599 returns unauthorized2600 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: :forbidden2601 behaves like rejects terraform module packages access2602 for user type developer2603 behaves like returning response status2604 returns forbidden2605 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: :forbidden2606 behaves like rejects terraform module packages access2607 for user type guest2608 behaves like returning response status2609 returns forbidden2610 visibility: :public, user_role: :developer, member: false, token_header: "PRIVATE-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2611 behaves like rejects terraform module packages access2612 for user type developer2613 behaves like returning response status2614 returns unauthorized2615 visibility: :public, user_role: :guest, member: false, token_header: "PRIVATE-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2616 behaves like rejects terraform module packages access2617 for user type guest2618 behaves like returning response status2619 returns unauthorized2620 visibility: :public, user_role: :anonymous, member: false, token_header: nil, token_type: nil, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2621 behaves like rejects terraform module packages access2622 for user type anonymous2623 behaves like returning response status2624 returns unauthorized2625 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: :success2626 behaves like process terraform module workhorse authorization2627 for user type developer2628 has the proper content type2629 behaves like returning response status2630 returns success2631 with a request that bypassed gitlab-workhorse2632 behaves like returning response status2633 returns forbidden2634 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: :forbidden2635 behaves like rejects terraform module packages access2636 for user type guest2637 behaves like returning response status2638 returns forbidden2639 visibility: :private, user_role: :developer, member: true, token_header: "PRIVATE-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2640 behaves like rejects terraform module packages access2641 for user type developer2642 behaves like returning response status2643 returns unauthorized2644 visibility: :private, user_role: :guest, member: true, token_header: "PRIVATE-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2645 behaves like rejects terraform module packages access2646 for user type guest2647 behaves like returning response status2648 returns unauthorized2649 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_found2650 behaves like rejects terraform module packages access2651 for user type developer2652 behaves like returning response status2653 returns not_found2654 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_found2655 behaves like rejects terraform module packages access2656 for user type guest2657 behaves like returning response status2658 returns not_found2659 visibility: :private, user_role: :developer, member: false, token_header: "PRIVATE-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2660 behaves like rejects terraform module packages access2661 for user type developer2662 behaves like returning response status2663 returns unauthorized2664 visibility: :private, user_role: :guest, member: false, token_header: "PRIVATE-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2665 behaves like rejects terraform module packages access2666 for user type guest2667 behaves like returning response status2668 returns unauthorized2669 visibility: :private, user_role: :anonymous, member: false, token_header: nil, token_type: nil, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2670 behaves like rejects terraform module packages access2671 for user type anonymous2672 behaves like returning response status2673 returns unauthorized2674 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: :success2675 behaves like process terraform module workhorse authorization2676 for user type developer2677 has the proper content type2678 behaves like returning response status2679 returns success2680 with a request that bypassed gitlab-workhorse2681 behaves like returning response status2682 returns forbidden2683 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: :forbidden2684 behaves like rejects terraform module packages access2685 for user type guest2686 behaves like returning response status2687 returns forbidden2688 visibility: :public, user_role: :developer, member: true, token_header: "JOB-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2689 behaves like rejects terraform module packages access2690 for user type developer2691 behaves like returning response status2692 returns unauthorized2693 visibility: :public, user_role: :guest, member: true, token_header: "JOB-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2694 behaves like rejects terraform module packages access2695 for user type guest2696 behaves like returning response status2697 returns unauthorized2698 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: :forbidden2699 behaves like rejects terraform module packages access2700 for user type developer2701 behaves like returning response status2702 returns forbidden2703 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: :forbidden2704 behaves like rejects terraform module packages access2705 for user type guest2706 behaves like returning response status2707 returns forbidden2708 visibility: :public, user_role: :developer, member: false, token_header: "JOB-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2709 behaves like rejects terraform module packages access2710 for user type developer2711 behaves like returning response status2712 returns unauthorized2713 visibility: :public, user_role: :guest, member: false, token_header: "JOB-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2714 behaves like rejects terraform module packages access2715 for user type guest2716 behaves like returning response status2717 returns unauthorized2718 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: :success2719 behaves like process terraform module workhorse authorization2720 for user type developer2721 has the proper content type2722 behaves like returning response status2723 returns success2724 with a request that bypassed gitlab-workhorse2725 behaves like returning response status2726 returns forbidden2727 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: :forbidden2728 behaves like rejects terraform module packages access2729 for user type guest2730 behaves like returning response status2731 returns forbidden2732 visibility: :private, user_role: :developer, member: true, token_header: "JOB-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 developer2735 behaves like returning response status2736 returns unauthorized2737 visibility: :private, user_role: :guest, member: true, token_header: "JOB-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2738 behaves like rejects terraform module packages access2739 for user type guest2740 behaves like returning response status2741 returns unauthorized2742 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_found2743 behaves like rejects terraform module packages access2744 for user type developer2745 behaves like returning response status2746 returns not_found2747 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_found2748 behaves like rejects terraform module packages access2749 for user type guest2750 behaves like returning response status2751 returns not_found2752 visibility: :private, user_role: :developer, member: false, token_header: "JOB-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 developer2755 behaves like returning response status2756 returns unauthorized2757 visibility: :private, user_role: :guest, member: false, token_header: "JOB-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2758 behaves like rejects terraform module packages access2759 for user type guest2760 behaves like returning response status2761 returns unauthorized2762 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: :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: :developer, member: true, token_header: "DEPLOY-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2772 behaves like rejects terraform module packages access2773 for user type developer2774 behaves like returning response status2775 returns unauthorized2776 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: :success2777 behaves like process terraform module workhorse authorization2778 for user type developer2779 has the proper content type2780 behaves like returning response status2781 returns success2782 with a request that bypassed gitlab-workhorse2783 behaves like returning response status2784 returns forbidden2785 visibility: :private, user_role: :developer, member: true, token_header: "DEPLOY-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2786 behaves like rejects terraform module packages access2787 for user type developer2788 behaves like returning response status2789 returns unauthorized2790 PUT /api/v4/projects/:project_id/packages/terraform/modules/:module_name/:module_system/:module_version/file2791 with valid project2792 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: :created2793 behaves like process terraform module upload2794 for user type developer2795 with object storage disabled2796 without a file from workhorse2797 behaves like returning response status2798 returns bad_request2799 with correct params2800 behaves like package workhorse uploads2801 without a workhorse header2802 logs an error2803 behaves like returning response status2804 returns forbidden2805 behaves like creates terraform module package files2806 creates package files2807 behaves like a package tracking event2808 creates a gitlab tracking event push_package2809 with object storage enabled2810 and direct upload enabled2811 behaves like creates terraform module package files2812 creates package files2813 with invalid remote_id: 1231232814 behaves like returning response status2815 returns forbidden2816 with invalid remote_id: ../../1231232817 behaves like returning response status2818 returns forbidden2819 and direct upload disabled2820 behaves like creates terraform module package files2821 creates package files2822 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: :forbidden2823 behaves like rejects terraform module packages access2824 for user type guest2825 behaves like returning response status2826 returns forbidden2827 visibility: :public, user_role: :developer, member: true, token_header: "PRIVATE-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2828 behaves like rejects terraform module packages access2829 for user type developer2830 behaves like returning response status2831 returns unauthorized2832 visibility: :public, user_role: :guest, member: true, token_header: "PRIVATE-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2833 behaves like rejects terraform module packages access2834 for user type guest2835 behaves like returning response status2836 returns unauthorized2837 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: :forbidden2838 behaves like rejects terraform module packages access2839 for user type developer2840 behaves like returning response status2841 returns forbidden2842 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: :forbidden2843 behaves like rejects terraform module packages access2844 for user type guest2845 behaves like returning response status2846 returns forbidden2847 visibility: :public, user_role: :developer, member: false, token_header: "PRIVATE-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2848 behaves like rejects terraform module packages access2849 for user type developer2850 behaves like returning response status2851 returns unauthorized2852 visibility: :public, user_role: :guest, member: false, token_header: "PRIVATE-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2853 behaves like rejects terraform module packages access2854 for user type guest2855 behaves like returning response status2856 returns unauthorized2857 visibility: :public, user_role: :anonymous, member: false, token_header: nil, token_type: nil, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2858 behaves like rejects terraform module packages access2859 for user type anonymous2860 behaves like returning response status2861 returns unauthorized2862 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: :created2863 behaves like process terraform module upload2864 for user type developer2865 with object storage disabled2866 without a file from workhorse2867 behaves like returning response status2868 returns bad_request2869 with correct params2870 behaves like package workhorse uploads2871 without a workhorse header2872 logs an error2873 behaves like returning response status2874 returns forbidden2875 behaves like creates terraform module package files2876 creates package files2877 behaves like a package tracking event2878 creates a gitlab tracking event push_package2879 with object storage enabled2880 and direct upload enabled2881 behaves like creates terraform module package files2882 creates package files2883 with invalid remote_id: 1231232884 behaves like returning response status2885 returns forbidden2886 with invalid remote_id: ../../1231232887 behaves like returning response status2888 returns forbidden2889 and direct upload disabled2890 behaves like creates terraform module package files2891 creates package files2892 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: :forbidden2893 behaves like rejects terraform module packages access2894 for user type guest2895 behaves like returning response status2896 returns forbidden2897 visibility: :private, user_role: :developer, member: true, token_header: "PRIVATE-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2898 behaves like rejects terraform module packages access2899 for user type developer2900 behaves like returning response status2901 returns unauthorized2902 visibility: :private, user_role: :guest, member: true, token_header: "PRIVATE-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2903 behaves like rejects terraform module packages access2904 for user type guest2905 behaves like returning response status2906 returns unauthorized2907 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_found2908 behaves like rejects terraform module packages access2909 for user type developer2910 behaves like returning response status2911 returns not_found2912 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_found2913 behaves like rejects terraform module packages access2914 for user type guest2915 behaves like returning response status2916 returns not_found2917 visibility: :private, user_role: :developer, member: false, token_header: "PRIVATE-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2918 behaves like rejects terraform module packages access2919 for user type developer2920 behaves like returning response status2921 returns unauthorized2922 visibility: :private, user_role: :guest, member: false, token_header: "PRIVATE-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2923 behaves like rejects terraform module packages access2924 for user type guest2925 behaves like returning response status2926 returns unauthorized2927 visibility: :private, user_role: :anonymous, member: false, token_header: nil, token_type: nil, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2928 behaves like rejects terraform module packages access2929 for user type anonymous2930 behaves like returning response status2931 returns unauthorized2932 visibility: :public, user_role: :developer, member: true, token_header: "JOB-TOKEN", token_type: :job_token, shared_examples_name: "process terraform module upload", expected_status: :created2933 behaves like process terraform module upload2934 for user type developer2935 with object storage disabled2936 without a file from workhorse2937 behaves like returning response status2938 returns bad_request2939 with correct params2940 behaves like package workhorse uploads2941 without a workhorse header2942 logs an error2943 behaves like returning response status2944 returns forbidden2945 behaves like creates terraform module package files2946 creates package files2947 behaves like a package tracking event2948 creates a gitlab tracking event push_package2949 with object storage enabled2950 and direct upload enabled2951 behaves like creates terraform module package files2952 creates package files2953 with invalid remote_id: 1231232954 behaves like returning response status2955 returns forbidden2956 with invalid remote_id: ../../1231232957 behaves like returning response status2958 returns forbidden2959 and direct upload disabled2960 behaves like creates terraform module package files2961 creates package files2962 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: :forbidden2963 behaves like rejects terraform module packages access2964 for user type guest2965 behaves like returning response status2966 returns forbidden2967 visibility: :public, user_role: :developer, member: true, token_header: "JOB-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2968 behaves like rejects terraform module packages access2969 for user type developer2970 behaves like returning response status2971 returns unauthorized2972 visibility: :public, user_role: :guest, member: true, token_header: "JOB-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2973 behaves like rejects terraform module packages access2974 for user type guest2975 behaves like returning response status2976 returns unauthorized2977 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: :forbidden2978 behaves like rejects terraform module packages access2979 for user type developer2980 behaves like returning response status2981 returns forbidden2982 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: :forbidden2983 behaves like rejects terraform module packages access2984 for user type guest2985 behaves like returning response status2986 returns forbidden2987 visibility: :public, user_role: :developer, member: false, token_header: "JOB-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2988 behaves like rejects terraform module packages access2989 for user type developer2990 behaves like returning response status2991 returns unauthorized2992 visibility: :public, user_role: :guest, member: false, token_header: "JOB-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized2993 behaves like rejects terraform module packages access2994 for user type guest2995 behaves like returning response status2996 returns unauthorized2997 visibility: :private, user_role: :developer, member: true, token_header: "JOB-TOKEN", token_type: :job_token, shared_examples_name: "process terraform module upload", expected_status: :created2998 behaves like process terraform module upload2999 for user type developer3000 with object storage disabled3001 without a file from workhorse3002 behaves like returning response status3003 returns bad_request3004 with correct params3005 behaves like package workhorse uploads3006 without a workhorse header3007 logs an error3008 behaves like returning response status3009 returns forbidden3010 behaves like creates terraform module package files3011 creates package files3012 behaves like a package tracking event3013 creates a gitlab tracking event push_package3014 with object storage enabled3015 and direct upload enabled3016 behaves like creates terraform module package files3017 creates package files3018 with invalid remote_id: 1231233019 behaves like returning response status3020 returns forbidden3021 with invalid remote_id: ../../1231233022 behaves like returning response status3023 returns forbidden3024 and direct upload disabled3025 behaves like creates terraform module package files3026 creates package files3027 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: :forbidden3028 behaves like rejects terraform module packages access3029 for user type guest3030 behaves like returning response status3031 returns forbidden3032 visibility: :private, user_role: :developer, member: true, token_header: "JOB-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3033 behaves like rejects terraform module packages access3034 for user type developer3035 behaves like returning response status3036 returns unauthorized3037 visibility: :private, user_role: :guest, member: true, token_header: "JOB-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3038 behaves like rejects terraform module packages access3039 for user type guest3040 behaves like returning response status3041 returns unauthorized3042 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_found3043 behaves like rejects terraform module packages access3044 for user type developer3045 behaves like returning response status3046 returns not_found3047 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_found3048 behaves like rejects terraform module packages access3049 for user type guest3050 behaves like returning response status3051 returns not_found3052 visibility: :private, user_role: :developer, member: false, token_header: "JOB-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3053 behaves like rejects terraform module packages access3054 for user type developer3055 behaves like returning response status3056 returns unauthorized3057 visibility: :private, user_role: :guest, member: false, token_header: "JOB-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3058 behaves like rejects terraform module packages access3059 for user type guest3060 behaves like returning response status3061 returns unauthorized3062 visibility: :public, user_role: :developer, member: true, token_header: "DEPLOY-TOKEN", token_type: :deploy_token, shared_examples_name: "process terraform module upload", expected_status: :created3063 behaves like process terraform module upload3064 for user type developer3065 with object storage disabled3066 without a file from workhorse3067 behaves like returning response status3068 returns bad_request3069 with correct params3070 behaves like package workhorse uploads3071 without a workhorse header3072 logs an error3073 behaves like returning response status3074 returns forbidden3075 behaves like creates terraform module package files3076 creates package files3077 behaves like a package tracking event3078 creates a gitlab tracking event push_package3079 with object storage enabled3080 and direct upload enabled3081 behaves like creates terraform module package files3082 creates package files3083 with invalid remote_id: 1231233084 behaves like returning response status3085 returns forbidden3086 with invalid remote_id: ../../1231233087 behaves like returning response status3088 returns forbidden3089 and direct upload disabled3090 behaves like creates terraform module package files3091 creates package files3092 visibility: :public, user_role: :developer, member: true, token_header: "DEPLOY-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 developer3095 behaves like returning response status3096 returns unauthorized3097 visibility: :private, user_role: :developer, member: true, token_header: "DEPLOY-TOKEN", token_type: :deploy_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 behaves like creates terraform module package files3126 creates package files3127 visibility: :private, user_role: :developer, member: true, token_header: "DEPLOY-TOKEN", token_type: :invalid, shared_examples_name: "rejects terraform module packages access", expected_status: :unauthorized3128 behaves like rejects terraform module packages access3129 for user type developer3130 behaves like returning response status3131 returns unauthorized3132 failed package file save3133 does not create package record3134 with an existing package3135 does not create a new package3136 marked as pending_destruction3137 does create a new package3138API::ProjectPackages3139 GET /projects/:id/packages3140 without the need for a license3141 project is public3142 behaves like returns packages3143 for no_type3144 returns success response3145 returns a valid response schema3146 returns two packages3147 with conan package3148 uses the conan recipe as the package name3149 with terraform module package3150 when no package_type filter is set3151 filters out terraform module packages3152 returns packages with the package registry web_path3153 when package_type filter is set to terraform_module3154 returns the terraform module package3155 returns the terraform module package with the infrastructure registry web_path3156 in nested group3157 returns the nested terraform module package with the correct web_path3158 with JOB-TOKEN auth3159 behaves like returns packages3160 for maintainer3161 returns success response3162 returns a valid response schema3163 returns two packages3164 behaves like returns packages3165 for developer3166 returns success response3167 returns a valid response schema3168 returns two packages3169 behaves like returns packages3170 for reporter3171 returns success response3172 returns a valid response schema3173 returns two packages3174 behaves like returns packages3175 for no_type3176 returns success response3177 returns a valid response schema3178 returns two packages3179 behaves like returns packages3180 for guest3181 returns success response3182 returns a valid response schema3183 returns two packages3184 project is private3185 for unauthenticated user3186 behaves like rejects packages access3187 for no_type3188 behaves like returning response status3189 returns not_found3190 for authenticated user3191 behaves like returns packages3192 for maintainer3193 returns success response3194 returns a valid response schema3195 returns two packages3196 behaves like returns packages3197 for developer3198 returns success response3199 returns a valid response schema3200 returns two packages3201 behaves like returns packages3202 for reporter3203 returns success response3204 returns a valid response schema3205 returns two packages3206 behaves like rejects packages access3207 for no_type3208 behaves like returning response status3209 returns not_found3210 behaves like rejects packages access3211 for guest3212 behaves like returning response status3213 returns forbidden3214 user is a maintainer3215 returns the destroy url3216 with JOB-TOKEN auth3217 behaves like returns packages3218 for maintainer3219 returns success response3220 returns a valid response schema3221 returns two packages3222 behaves like returns packages3223 for developer3224 returns success response3225 returns a valid response schema3226 returns two packages3227 behaves like returns packages3228 for reporter3229 returns success response3230 returns a valid response schema3231 returns two packages3232 behaves like rejects packages access3233 for no_type3234 behaves like returning response status3235 returns not_found3236 with pagination params3237 with pagination params3238 behaves like returns paginated packages3239 when viewing the first page3240 returns first 2 packages3241 when viewing the second page3242 returns first 2 packages3243 with sorting3244 behaves like package sorting3245 sorting by name3246 ascending order3247 returns the sorted packages3248 descending order3249 returns the sorted packages3250 behaves like package sorting3251 sorting by created_at3252 ascending order3253 returns the sorted packages3254 descending order3255 returns the sorted packages3256 behaves like package sorting3257 sorting by version3258 ascending order3259 returns the sorted packages3260 descending order3261 returns the sorted packages3262 behaves like package sorting3263 sorting by type3264 ascending order3265 returns the sorted packages3266 descending order3267 returns the sorted packages3268 behaves like filters on each package_type3269 for package type maven3270 returns maven packages3271 for package type npm3272 returns npm packages3273 for package type conan3274 returns conan packages3275 for package type nuget3276 returns nuget packages3277 for package type pypi3278 returns pypi packages3279 for package type composer3280 returns composer packages3281 for package type generic3282 returns generic packages3283 for package type golang3284 returns golang packages3285 for package type debian3286 returns debian packages3287 for package type rubygems3288 returns rubygems packages3289 for package type helm3290 returns helm packages3291 for package type terraform_module3292 returns terraform_module packages3293 for package type rpm3294 returns rpm packages3295 filtering on package_name3296 returns the named package3297 behaves like with versionless packages3298 with versionless package3299 behaves like not including the package3300 does not return the package3301 with include_versionless param3302 with true include_versionless param3303 for param true3304 returns the package3305 for param true3306 returns the package3307 for param 13308 returns the package3309 for param 13310 returns the package3311 with falsy include_versionless param3312 for param false3313 behaves like not including the package3314 does not return the package3315 for param3316 behaves like not including the package3317 does not return the package3318 for param3319 behaves like not including the package3320 does not return the package3321 for param false3322 behaves like not including the package3323 does not return the package3324 for param 03325 behaves like not including the package3326 does not return the package3327 for param 03328 behaves like not including the package3329 does not return the package3330 behaves like with status param3331 hidden packages3332 no status param3333 behaves like not including the hidden package3334 does not return the package3335 with hidden status param3336 returns the package3337 bad status param3338 returns the package3339 behaves like does not cause n^2 queries3340 avoids N^2 database queries3341 GET /projects/:id/packages/:package_id3342 without the need for a license3343 with build info3344 does not result in additional queries3345 project is public3346 returns 200 and the package information3347 returns 404 when the package does not exist3348 returns 404 for the package from a different project3349 behaves like no destroy url3350 returns no destroy url3351 with JOB-TOKEN auth3352 behaves like returns package3353 for maintainer3354 returns success response3355 returns a valid response schema3356 behaves like returns package3357 for developer3358 returns success response3359 returns a valid response schema3360 behaves like returns package3361 for reporter3362 returns success response3363 returns a valid response schema3364 behaves like returns package3365 for no_type3366 returns success response3367 returns a valid response schema3368 behaves like returns package3369 for guest3370 returns success response3371 returns a valid response schema3372 with a package without last_downloaded_at3373 returns 200 and the package information3374 project is private3375 returns 404 for non authenticated user3376 returns 404 for a user without access to the project3377 user is a developer3378 returns 200 and the package information3379 behaves like no destroy url3380 returns no destroy url3381 user is a maintainer3382 behaves like destroy url3383 returns destroy url3384 with JOB-TOKEN auth3385 behaves like returns package3386 for maintainer3387 returns success response3388 returns a valid response schema3389 behaves like returns package3390 for developer3391 returns success response3392 returns a valid response schema3393 behaves like returns package3394 for reporter3395 returns success response3396 returns a valid response schema3397 behaves like rejects packages access3398 for no_type3399 behaves like returning response status3400 returns not_found3401 with pipeline3402 returns the pipeline info3403 when package has no default status3404 returns 4043405 DELETE /projects/:id/packages/:package_id3406 without the need for a license3407 project is public3408 returns 403 for non authenticated user3409 returns 403 for a user without access to the project3410 project is private3411 returns 404 for non authenticated user3412 returns 404 for a user without access to the project3413 returns 404 when the package does not exist3414 returns 404 for the package from a different project3415 returns 403 for a user without enough permissions3416 returns 2043417 with JOB-TOKEN auth3418 returns 403 for a user without enough permissions3419 returns 2043420 with a maven package3421 enqueues a sync worker job3422Git LFS API and storage3423 with projects3424 behaves like LFS http requests3425 when LFS is disabled globally3426 download request3427 behaves like LFS http 501 response3428 behaves like LFS http expected response code and message3429 is expected to eq "Git LFS is not enabled on this GitLab server, contact your admin."3430 upload request3431 behaves like LFS http 501 response3432 behaves like LFS http expected response code and message3433 is expected to eq "Git LFS is not enabled on this GitLab server, contact your admin."3434 unauthenticated3435 download request3436 behaves like LFS http 401 response3437 behaves like LFS http expected response code and message3438 is expected to match "text/plain"3439 upload request3440 behaves like LFS http 401 response3441 behaves like LFS http expected response code and message3442 is expected to match "text/plain"3443 without access3444 download request3445 behaves like LFS http 404 response3446 behaves like LFS http expected response code and message3447 is expected to match "application/vnd.git-lfs+json"3448 upload request3449 behaves like LFS http 404 response3450 behaves like LFS http expected response code and message3451 is expected to match "application/vnd.git-lfs+json"3452 with guest access3453 download request3454 behaves like LFS http 404 response3455 behaves like LFS http expected response code and message3456 is expected to match "application/vnd.git-lfs+json"3457 upload request3458 behaves like LFS http 404 response3459 behaves like LFS http expected response code and message3460 is expected to match "application/vnd.git-lfs+json"3461 with download permission3462 download request3463 behaves like LFS http 200 blob response3464 behaves like LFS http expected response code and message3465 is expected to match "application/octet-stream"3466 when container does not exist3467 behaves like LFS http 404 response3468 behaves like LFS http expected response code and message3469 is expected to match "application/vnd.git-lfs+json"3470 upload request3471 behaves like LFS http 403 response3472 behaves like LFS http expected response code and message3473 is expected to eq "Access forbidden. Check your access level."3474 with upload permission3475 upload request3476 behaves like LFS http 200 response3477 behaves like LFS http expected response code and message3478 is expected to match "application/vnd.git-lfs+json"3479 deprecated API3480 when fetching LFS object using deprecated API3481 behaves like deprecated request3482 behaves like LFS http expected response code and message3483 is expected to eq "Server supports batch API only, please update your Git LFS client to version 1.0.1 and up."3484 when handling LFS request using deprecated API3485 behaves like deprecated request3486 behaves like LFS http expected response code and message3487 is expected to eq "Server supports batch API only, please update your Git LFS client to version 1.0.1 and up."3488 project specific LFS settings3489 LFS disabled in project3490 when uploading3491 behaves like LFS http 404 response3492 behaves like LFS http expected response code and message3493 is expected to match "application/vnd.git-lfs+json"3494 when downloading3495 behaves like LFS http 404 response3496 behaves like LFS http expected response code and message3497 is expected to match "application/vnd.git-lfs+json"3498 LFS enabled in project3499 when uploading3500 behaves like LFS http 200 response3501 behaves like LFS http expected response code and message3502 is expected to match "application/vnd.git-lfs+json"3503 when downloading3504 behaves like LFS http 200 blob response3505 behaves like LFS http expected response code and message3506 is expected to match "application/octet-stream"3507 when fetching LFS object3508 when LFS uses object storage3509 when proxy download is enabled3510 responds with the workhorse send-url3511 when proxy download is disabled3512 responds with redirect3513 responds with the file location3514 when deploy key is authorized3515 behaves like LFS http 200 blob response3516 behaves like LFS http expected response code and message3517 is expected to match "application/octet-stream"3518 when using a user key (LFSToken)3519 when user allowed3520 behaves like LFS http 200 blob response3521 behaves like LFS http expected response code and message3522 is expected to match "application/octet-stream"3523 when user password is expired3524 behaves like LFS http 401 response3525 behaves like LFS http expected response code and message3526 is expected to match "text/plain"3527 when user is blocked3528 behaves like LFS http 401 response3529 behaves like LFS http expected response code and message3530 is expected to match "text/plain"3531 when user not allowed3532 behaves like LFS http 404 response3533 behaves like LFS http expected response code and message3534 is expected to match "application/vnd.git-lfs+json"3535 when build is authorized as3536 administrator3537 behaves like can download LFS only from own projects3538 for owned project3539 behaves like LFS http 200 blob response3540 behaves like LFS http expected response code and message3541 is expected to match "application/octet-stream"3542 for member of project3543 behaves like LFS http 200 blob response3544 behaves like LFS http expected response code and message3545 is expected to match "application/octet-stream"3546 for other project3547 rejects downloading code3548 regular user3549 behaves like can download LFS only from own projects3550 for owned project3551 behaves like LFS http 200 blob response3552 behaves like LFS http expected response code and message3553 is expected to match "application/octet-stream"3554 for member of project3555 behaves like LFS http 200 blob response3556 behaves like LFS http expected response code and message3557 is expected to match "application/octet-stream"3558 for other project3559 rejects downloading code3560 does not have user3561 behaves like can download LFS only from own projects3562 for owned project3563 behaves like LFS http 200 blob response3564 behaves like LFS http expected response code and message3565 is expected to match "application/octet-stream"3566 for member of project3567 behaves like LFS http 200 blob response3568 behaves like LFS http expected response code and message3569 is expected to match "application/octet-stream"3570 for other project3571 rejects downloading code3572 when handling LFS batch request3573 download3574 when user is authenticated3575 behaves like an authorized request3576 when downloading an LFS object that is assigned to our project3577 with href to download3578 behaves like LFS http 200 response3579 behaves like LFS http expected response code and message3580 is expected to match "application/vnd.git-lfs+json"3581 behaves like process authorization header3582 when the authorization comes from a user3583 returns a new valid LFS token authorization3584 returns a valid token3585 generates only one new token per each request3586 when downloading an LFS object that is assigned to other project3587 with an 404 for specific object3588 behaves like LFS http 200 response3589 behaves like LFS http expected response code and message3590 is expected to match "application/vnd.git-lfs+json"3591 when downloading a LFS object that does not exist3592 with an 404 for specific object3593 behaves like LFS http 200 response3594 behaves like LFS http expected response code and message3595 is expected to match "application/vnd.git-lfs+json"3596 when downloading one existing and one missing LFS object3597 responds with download hypermedia link for the existing object3598 behaves like LFS http 200 response3599 behaves like LFS http expected response code and message3600 is expected to match "application/vnd.git-lfs+json"3601 behaves like process authorization header3602 when the authorization comes from a user3603 returns a new valid LFS token authorization3604 returns a valid token3605 generates only one new token per each request3606 when downloading two existing LFS objects3607 responds with the download hypermedia link for each object3608 behaves like process authorization header3609 when the authorization comes from a user3610 returns a new valid LFS token authorization3611 returns a valid token3612 generates only one new token per each request3613 when user is not a member of the project3614 behaves like LFS http 404 response3615 behaves like LFS http expected response code and message3616 is expected to match "application/vnd.git-lfs+json"3617 when user does not have download access3618 behaves like LFS http 404 response3619 behaves like LFS http expected response code and message3620 is expected to match "application/vnd.git-lfs+json"3621 when user password is expired3622 behaves like LFS http 401 response3623 behaves like LFS http expected response code and message3624 is expected to match "text/plain"3625 when user is blocked3626 behaves like LFS http 401 response3627 behaves like LFS http expected response code and message3628 is expected to match "text/plain"3629 when using Deploy Tokens3630 when Deploy Token is not valid3631 behaves like LFS http 401 response3632 behaves like LFS http expected response code and message3633 is expected to match "text/plain"3634 when Deploy Token is not related to the project3635 behaves like LFS http 401 response3636 behaves like LFS http expected response code and message3637 is expected to match "text/plain"3638 when deploy token is from an unrelated group to the project3639 behaves like LFS http 401 response3640 behaves like LFS http expected response code and message3641 is expected to match "text/plain"3642 when deploy token is from a parent group of the project and valid3643 behaves like an authorized request3644 when downloading an LFS object that is assigned to our project3645 with href to download3646 behaves like LFS http 200 response3647 behaves like LFS http expected response code and message3648 is expected to match "application/vnd.git-lfs+json"3649 behaves like process authorization header3650 when the authorization comes from a token3651 returns the same authorization header3652 when downloading an LFS object that is assigned to other project3653 with an 404 for specific object3654 behaves like LFS http 200 response3655 behaves like LFS http expected response code and message3656 is expected to match "application/vnd.git-lfs+json"3657 when downloading a LFS object that does not exist3658 with an 404 for specific object3659 behaves like LFS http 200 response3660 behaves like LFS http expected response code and message3661 is expected to match "application/vnd.git-lfs+json"3662 when downloading one existing and one missing LFS object3663 responds with download hypermedia link for the existing object3664 behaves like LFS http 200 response3665 behaves like LFS http expected response code and message3666 is expected to match "application/vnd.git-lfs+json"3667 behaves like process authorization header3668 when the authorization comes from a token3669 returns the same authorization header3670 when downloading two existing LFS objects3671 responds with the download hypermedia link for each object3672 behaves like process authorization header3673 when the authorization comes from a token3674 returns the same authorization header3675 when Deploy Token is valid3676 behaves like an authorized request3677 when downloading an LFS object that is assigned to our project3678 with href to download3679 behaves like LFS http 200 response3680 behaves like LFS http expected response code and message3681 is expected to match "application/vnd.git-lfs+json"3682 behaves like process authorization header3683 when the authorization comes from a token3684 returns the same authorization header3685 when downloading an LFS object that is assigned to other project3686 with an 404 for specific object3687 behaves like LFS http 200 response3688 behaves like LFS http expected response code and message3689 is expected to match "application/vnd.git-lfs+json"3690 when downloading a LFS object that does not exist3691 with an 404 for specific object3692 behaves like LFS http 200 response3693 behaves like LFS http expected response code and message3694 is expected to match "application/vnd.git-lfs+json"3695 when downloading one existing and one missing LFS object3696 responds with download hypermedia link for the existing object3697 behaves like LFS http 200 response3698 behaves like LFS http expected response code and message3699 is expected to match "application/vnd.git-lfs+json"3700 behaves like process authorization header3701 when the authorization comes from a token3702 returns the same authorization header3703 when downloading two existing LFS objects3704 responds with the download hypermedia link for each object3705 behaves like process authorization header3706 when the authorization comes from a token3707 returns the same authorization header3708 when build is authorized as3709 administrator3710 behaves like can download LFS only from own projects3711 for own project3712 behaves like an authorized request3713 when downloading an LFS object that is assigned to our project3714 with href to download3715 behaves like LFS http 200 response3716 behaves like LFS http expected response code and message3717 is expected to match "application/vnd.git-lfs+json"3718 behaves like process authorization header3719 when the authorization comes from a user3720 returns a new valid LFS token authorization3721 returns a valid token3722 generates only one new token per each request3723 when downloading an LFS object that is assigned to other project3724 with an 404 for specific object3725 behaves like LFS http 200 response3726 behaves like LFS http expected response code and message3727 is expected to match "application/vnd.git-lfs+json"3728 when downloading a LFS object that does not exist3729 with an 404 for specific object3730 behaves like LFS http 200 response3731 behaves like LFS http expected response code and message3732 is expected to match "application/vnd.git-lfs+json"3733 when downloading one existing and one missing LFS object3734 responds with download hypermedia link for the existing object3735 behaves like LFS http 200 response3736 behaves like LFS http expected response code and message3737 is expected to match "application/vnd.git-lfs+json"3738 behaves like process authorization header3739 when the authorization comes from a user3740 returns a new valid LFS token authorization3741 returns a valid token3742 generates only one new token per each request3743 when downloading two existing LFS objects3744 responds with the download hypermedia link for each object3745 behaves like process authorization header3746 when the authorization comes from a user3747 returns a new valid LFS token authorization3748 returns a valid token3749 generates only one new token per each request3750 for other project3751 rejects downloading code3752 regular user3753 behaves like can download LFS only from own projects3754 for own project3755 behaves like an authorized request3756 when downloading an LFS object that is assigned to our project3757 with href to download3758 behaves like LFS http 200 response3759 behaves like LFS http expected response code and message3760 is expected to match "application/vnd.git-lfs+json"3761 behaves like process authorization header3762 when the authorization comes from a user3763 returns a new valid LFS token authorization3764 returns a valid token3765 generates only one new token per each request3766 when downloading an LFS object that is assigned to other project3767 with an 404 for specific object3768 behaves like LFS http 200 response3769 behaves like LFS http expected response code and message3770 is expected to match "application/vnd.git-lfs+json"3771 when downloading a LFS object that does not exist3772 with an 404 for specific object3773 behaves like LFS http 200 response3774 behaves like LFS http expected response code and message3775 is expected to match "application/vnd.git-lfs+json"3776 when downloading one existing and one missing LFS object3777 responds with download hypermedia link for the existing object3778 behaves like LFS http 200 response3779 behaves like LFS http expected response code and message3780 is expected to match "application/vnd.git-lfs+json"3781 behaves like process authorization header3782 when the authorization comes from a user3783 returns a new valid LFS token authorization3784 returns a valid token3785 generates only one new token per each request3786 when downloading two existing LFS objects3787 responds with the download hypermedia link for each object3788 behaves like process authorization header3789 when the authorization comes from a user3790 returns a new valid LFS token authorization3791 returns a valid token3792 generates only one new token per each request3793 for other project3794 rejects downloading code3795 does not have user3796 behaves like can download LFS only from own projects3797 for own project3798 behaves like an authorized request3799 when downloading an LFS object that is assigned to our project3800 with href to download3801 behaves like LFS http 200 response3802 behaves like LFS http expected response code and message3803 is expected to match "application/vnd.git-lfs+json"3804 behaves like process authorization header3805 when the authorization comes from a token3806 returns the same authorization header3807 when downloading an LFS object that is assigned to other project3808 with an 404 for specific object3809 behaves like LFS http 200 response3810 behaves like LFS http expected response code and message3811 is expected to match "application/vnd.git-lfs+json"3812 when downloading a LFS object that does not exist3813 with an 404 for specific object3814 behaves like LFS http 200 response3815 behaves like LFS http expected response code and message3816 is expected to match "application/vnd.git-lfs+json"3817 when downloading one existing and one missing LFS object3818 responds with download hypermedia link for the existing object3819 behaves like LFS http 200 response3820 behaves like LFS http expected response code and message3821 is expected to match "application/vnd.git-lfs+json"3822 behaves like process authorization header3823 when the authorization comes from a token3824 returns the same authorization header3825 when downloading two existing LFS objects3826 responds with the download hypermedia link for each object3827 behaves like process authorization header3828 when the authorization comes from a token3829 returns the same authorization header3830 for other project3831 rejects downloading code3832 when user is not authenticated3833 is accessing public project3834 returns href to download3835 behaves like LFS http 200 response3836 behaves like LFS http expected response code and message3837 is expected to match "application/vnd.git-lfs+json"3838 is accessing non-public project3839 behaves like LFS http 401 response3840 behaves like LFS http expected response code and message3841 is expected to match "text/plain"3842 upload3843 when request is authenticated3844 when user has project push access3845 when pushing an LFS object that already exists3846 in another project3847 behaves like batch upload with existing LFS object3848 responds with links to the object in the project3849 behaves like LFS http 200 response3850 behaves like LFS http expected response code and message3851 is expected to match "application/vnd.git-lfs+json"3852 behaves like process authorization header3853 when the authorization comes from a user3854 returns a new valid LFS token authorization3855 returns a valid token3856 generates only one new token per each request3857 in source of fork project3858 when user has access to both the parent and fork3859 links existing LFS objects to other project3860 when user does not have access to parent3861 behaves like batch upload with existing LFS object3862 responds with links to the object in the project3863 behaves like LFS http 200 response3864 behaves like LFS http expected response code and message3865 is expected to match "application/vnd.git-lfs+json"3866 behaves like process authorization header3867 when the authorization comes from a user3868 returns a new valid LFS token authorization3869 returns a valid token3870 generates only one new token per each request3871 when pushing a LFS object that does not exist3872 behaves like pushes new LFS objects3873 responds with upload hypermedia link3874 behaves like LFS http 200 response3875 behaves like LFS http expected response code and message3876 is expected to match "application/vnd.git-lfs+json"3877 behaves like process authorization header3878 when the authorization comes from a user3879 returns a new valid LFS token authorization3880 returns a valid token3881 generates only one new token per each request3882 when pushing one new and one existing LFS object3883 responds with upload hypermedia link for the new object3884 behaves like LFS http 200 response3885 behaves like LFS http expected response code and message3886 is expected to match "application/vnd.git-lfs+json"3887 behaves like process authorization header3888 when the authorization comes from a user3889 returns a new valid LFS token authorization3890 returns a valid token3891 generates only one new token per each request3892 when user does not have push access3893 behaves like LFS http 403 response3894 behaves like LFS http expected response code and message3895 is expected to eq "Access forbidden. Check your access level."3896 when build is authorized3897 build has an user3898 tries to push to own project3899 behaves like LFS http 403 response3900 behaves like LFS http expected response code and message3901 is expected to eq "Access forbidden. Check your access level."3902 tries to push to other project3903 behaves like LFS http 403 response3904 behaves like LFS http expected response code and message3905 is expected to eq "Access forbidden. Check your access level."3906 does not have user3907 behaves like LFS http 403 response3908 behaves like LFS http expected response code and message3909 is expected to eq "Access forbidden. Check your access level."3910 when deploy key has project push access3911 behaves like pushes new LFS objects3912 responds with upload hypermedia link3913 behaves like LFS http 200 response3914 behaves like LFS http expected response code and message3915 is expected to match "application/vnd.git-lfs+json"3916 behaves like process authorization header3917 when the authorization comes from a token3918 returns the same authorization header3919 when user is not authenticated3920 when user has push access3921 behaves like LFS http 401 response3922 behaves like LFS http expected response code and message3923 is expected to match "text/plain"3924 when user does not have push access3925 behaves like LFS http 401 response3926 behaves like LFS http expected response code and message3927 is expected to match "text/plain"3928 unsupported3929 behaves like LFS http 404 response3930 behaves like LFS http expected response code and message3931 is expected to match "application/vnd.git-lfs+json"3932 when handling LFS batch request on a read-only GitLab instance3933 when downloading3934 behaves like LFS http 200 response3935 behaves like LFS http expected response code and message3936 is expected to match "application/vnd.git-lfs+json"3937 when uploading3938 behaves like LFS http expected response code and message3939 is expected to eq "You cannot write to this read-only GitLab instance."3940 when pushing a LFS object3941 to one project3942 when user is authenticated3943 when user has push access to the project3944 and the request bypassed workhorse3945 raises an exception3946 and request is sent by gitlab-workhorse to authorize the request3947 when using local storage3948 behaves like a local file3949 behaves like a valid response3950 responds with status 200, location of LFS store and object details3951 behaves like LFS http 200 workhorse response3952 behaves like LFS http expected response code and message3953 is expected to match "application/vnd.gitlab-workhorse+json"3954 when using remote storage3955 when direct upload is enabled3956 behaves like a valid response3957 responds with status 200, location of LFS remote store and object details3958 behaves like LFS http 200 workhorse response3959 behaves like LFS http expected response code and message3960 is expected to match "application/vnd.gitlab-workhorse+json"3961 when direct upload is disabled3962 behaves like a local file3963 behaves like a valid response3964 responds with status 200, location of LFS store and object details3965 behaves like LFS http 200 workhorse response3966 behaves like LFS http expected response code and message3967 is expected to match "application/vnd.gitlab-workhorse+json"3968 and request is sent by gitlab-workhorse to finalize the upload3969 LFS object is linked to the project3970 behaves like LFS http 200 response3971 behaves like LFS http expected response code and message3972 is expected to match "application/vnd.git-lfs+json"3973 and request to finalize the upload is not sent by gitlab-workhorse3974 fails with a JWT decode error3975 and the uploaded file is invalid3976 size: nil, sha256: nil, status: :ok3977 validates the upload size and SHA2563978 size: 0, sha256: nil, status: :bad_request3979 validates the upload size and SHA2563980 size: nil, sha256: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", status: :bad_request3981 validates the upload size and SHA2563982 and workhorse requests upload finalize for a new LFS object3983 with object storage enabled3984 and direct upload enabled3985 with invalid remote_id: 1231233986 responds with status 4033987 with invalid remote_id: ../../1231233988 responds with status 4033989 with valid remote_id3990 responds with status 2003991 schedules migration of file to object storage3992 have valid file3993 without the lfs object3994 rejects slashes in the tempfile name (path traversal)3995 not sending the workhorse jwt header3996 rejects the request3997 and user does not have push access3998 behaves like forbidden3999 and request is sent by gitlab-workhorse to authorize the request4000 behaves like LFS http 403 response4001 behaves like LFS http expected response code and message4002 is expected to eq "Access forbidden. Check your access level."4003 and request is sent by gitlab-workhorse to finalize the upload4004 behaves like LFS http 403 response4005 behaves like LFS http expected response code and message4006 is expected to eq "Access forbidden. Check your access level."4007 and request is sent with a malformed headers4008 behaves like LFS http 403 response4009 behaves like LFS http expected response code and message4010 is expected to eq "Access forbidden. Check your access level."4011 when build is authorized4012 build has an user4013 tries to push to own project4014 behaves like LFS http 403 response4015 behaves like LFS http expected response code and message4016 is expected to eq "Access forbidden. Check your access level."4017 tries to push to other project4018 behaves like LFS http 404 response4019 behaves like LFS http expected response code and message4020 is expected to match "application/vnd.git-lfs+json"4021 does not have user4022 behaves like LFS http 403 response4023 behaves like LFS http expected response code and message4024 is expected to eq "Access forbidden. Check your access level."4025 when using a user key (LFSToken)4026 when user allowed4027 behaves like LFS http 200 workhorse response4028 behaves like LFS http expected response code and message4029 is expected to match "application/vnd.gitlab-workhorse+json"4030 when user password is expired4031 behaves like LFS http 401 response4032 behaves like LFS http expected response code and message4033 is expected to match "text/plain"4034 when user is blocked4035 behaves like LFS http 401 response4036 behaves like LFS http expected response code and message4037 is expected to match "text/plain"4038 when user not allowed4039 behaves like LFS http 404 response4040 behaves like LFS http expected response code and message4041 is expected to match "application/vnd.git-lfs+json"4042 for unauthenticated4043 behaves like unauthorized4044 and request is sent by gitlab-workhorse to authorize the request4045 behaves like LFS http 401 response4046 behaves like LFS http expected response code and message4047 is expected to match "text/plain"4048 and request is sent by gitlab-workhorse to finalize the upload4049 behaves like LFS http 401 response4050 behaves like LFS http expected response code and message4051 is expected to match "text/plain"4052 and request is sent with a malformed headers4053 behaves like LFS http 401 response4054 behaves like LFS http expected response code and message4055 is expected to match "text/plain"4056 to a forked project4057 when user is authenticated4058 when user has push access to the project4059 and request is sent by gitlab-workhorse to authorize the request4060 with location of LFS store and object details4061 behaves like LFS http 200 workhorse response4062 behaves like LFS http expected response code and message4063 is expected to match "application/vnd.gitlab-workhorse+json"4064 and request is sent by gitlab-workhorse to finalize the upload4065 LFS object is linked to the forked project4066 behaves like LFS http 200 response4067 behaves like LFS http expected response code and message4068 is expected to match "application/vnd.git-lfs+json"4069 when user has push access to upstream project4070 an MR exists on target forked project4071 with allow_collaboration option set to true4072 and request is sent by gitlab-workhorse to authorize the request4073 behaves like LFS http 200 workhorse response4074 behaves like LFS http expected response code and message4075 is expected to match "application/vnd.gitlab-workhorse+json"4076 and request is sent by gitlab-workhorse to finalize the upload4077 behaves like LFS http 200 response4078 behaves like LFS http expected response code and message4079 is expected to match "application/vnd.git-lfs+json"4080 with allow_collaboration option set to false4081 request is sent by gitlab-workhorse to authorize the request4082 behaves like forbidden4083 and request is sent by gitlab-workhorse to authorize the request4084 behaves like LFS http 403 response4085 behaves like LFS http expected response code and message4086 is expected to eq "Access forbidden. Check your access level."4087 and request is sent by gitlab-workhorse to finalize the upload4088 behaves like LFS http 403 response4089 behaves like LFS http expected response code and message4090 is expected to eq "Access forbidden. Check your access level."4091 and request is sent with a malformed headers4092 behaves like LFS http 403 response4093 behaves like LFS http expected response code and message4094 is expected to eq "Access forbidden. Check your access level."4095 and user does not have push access4096 behaves like forbidden4097 and request is sent by gitlab-workhorse to authorize the request4098 behaves like LFS http 403 response4099 behaves like LFS http expected response code and message4100 is expected to eq "Access forbidden. Check your access level."4101 and request is sent by gitlab-workhorse to finalize the upload4102 behaves like LFS http 403 response4103 behaves like LFS http expected response code and message4104 is expected to eq "Access forbidden. Check your access level."4105 and request is sent with a malformed headers4106 behaves like LFS http 403 response4107 behaves like LFS http expected response code and message4108 is expected to eq "Access forbidden. Check your access level."4109 when build is authorized4110 build has an user4111 tries to push to own project4112 behaves like LFS http 403 response4113 behaves like LFS http expected response code and message4114 is expected to eq "Access forbidden. Check your access level."4115 tries to push to other project4116 behaves like LFS http 403 response4117 behaves like LFS http expected response code and message4118 is expected to eq "Access forbidden. Check your access level."4119 does not have user4120 behaves like LFS http 403 response4121 behaves like LFS http expected response code and message4122 is expected to eq "Access forbidden. Check your access level."4123 for unauthenticated4124 behaves like unauthorized4125 and request is sent by gitlab-workhorse to authorize the request4126 behaves like LFS http 401 response4127 behaves like LFS http expected response code and message4128 is expected to match "text/plain"4129 and request is sent by gitlab-workhorse to finalize the upload4130 behaves like LFS http 401 response4131 behaves like LFS http expected response code and message4132 is expected to match "text/plain"4133 and request is sent with a malformed headers4134 behaves like LFS http 401 response4135 behaves like LFS http expected response code and message4136 is expected to match "text/plain"4137 and second project not related to fork or a source project4138 when pushing the same LFS object to the second project4139 links the LFS object to the project4140 behaves like LFS http 200 response4141 behaves like LFS http expected response code and message4142 is expected to match "application/vnd.git-lfs+json"4143 with project wikis4144 behaves like LFS http requests4145 when LFS is disabled globally4146 download request4147 behaves like LFS http 501 response4148 behaves like LFS http expected response code and message4149 is expected to eq "Git LFS is not enabled on this GitLab server, contact your admin."4150 upload request4151 behaves like LFS http 501 response4152 behaves like LFS http expected response code and message4153 is expected to eq "Git LFS is not enabled on this GitLab server, contact your admin."4154 unauthenticated4155 download request4156 behaves like LFS http 401 response4157 behaves like LFS http expected response code and message4158 is expected to match "text/plain"4159 upload request4160 behaves like LFS http 401 response4161 behaves like LFS http expected response code and message4162 is expected to match "text/plain"4163 without access4164 download request4165 behaves like LFS http 404 response4166 behaves like LFS http expected response code and message4167 is expected to match "application/vnd.git-lfs+json"4168 upload request4169 behaves like LFS http 404 response4170 behaves like LFS http expected response code and message4171 is expected to match "application/vnd.git-lfs+json"4172 with guest access4173 download request4174 behaves like LFS http 404 response4175 behaves like LFS http expected response code and message4176 is expected to match "application/vnd.git-lfs+json"4177 upload request4178 behaves like LFS http 404 response4179 behaves like LFS http expected response code and message4180 is expected to match "application/vnd.git-lfs+json"4181 with download permission4182 download request4183 behaves like LFS http 200 blob response4184 behaves like LFS http expected response code and message4185 is expected to match "application/octet-stream"4186 when container does not exist4187 behaves like LFS http 404 response4188 behaves like LFS http expected response code and message4189 is expected to match "application/vnd.git-lfs+json"4190 upload request4191 behaves like LFS http 403 response4192 behaves like LFS http expected response code and message4193 is expected to eq "Access forbidden. Check your access level."4194 with upload permission4195 upload request4196 behaves like LFS http 200 response4197 behaves like LFS http expected response code and message4198 is expected to match "application/vnd.git-lfs+json"4199 deprecated API4200 when fetching LFS object using deprecated API4201 behaves like deprecated request4202 behaves like LFS http expected response code and message4203 is expected to eq "Server supports batch API only, please update your Git LFS client to version 1.0.1 and up."4204 when handling LFS request using deprecated API4205 behaves like deprecated request4206 behaves like LFS http expected response code and message4207 is expected to eq "Server supports batch API only, please update your Git LFS client to version 1.0.1 and up."4208 with snippets4209 with project snippets4210 behaves like LFS http requests4211 when LFS is disabled globally4212 download request4213 behaves like LFS http 501 response4214 behaves like LFS http expected response code and message4215 is expected to eq "Git LFS is not enabled on this GitLab server, contact your admin."4216 upload request4217 behaves like LFS http 501 response4218 behaves like LFS http expected response code and message4219 is expected to eq "Git LFS is not enabled on this GitLab server, contact your admin."4220 unauthenticated4221 download request4222 behaves like LFS http 401 response4223 behaves like LFS http expected response code and message4224 is expected to match "text/plain"4225 upload request4226 behaves like LFS http 401 response4227 behaves like LFS http expected response code and message4228 is expected to match "text/plain"4229 without access4230 download request4231 behaves like LFS http 404 response4232 behaves like LFS http expected response code and message4233 is expected to match "application/vnd.git-lfs+json"4234 upload request4235 behaves like LFS http 404 response4236 behaves like LFS http expected response code and message4237 is expected to match "application/vnd.git-lfs+json"4238 with guest access4239 download request4240 behaves like LFS http 404 response4241 behaves like LFS http expected response code and message4242 is expected to match "application/vnd.git-lfs+json"4243 upload request4244 behaves like LFS http 404 response4245 behaves like LFS http expected response code and message4246 is expected to match "application/vnd.git-lfs+json"4247 with download permission4248 download request4249 behaves like LFS http 200 blob response4250 behaves like LFS http 404 response4251 behaves like LFS http expected response code and message4252 is expected to match "application/vnd.git-lfs+json"4253 when container does not exist4254 behaves like LFS http 404 response4255 behaves like LFS http expected response code and message4256 is expected to match "application/vnd.git-lfs+json"4257 upload request4258 behaves like LFS http 403 response4259 behaves like LFS http 404 response4260 behaves like LFS http expected response code and message4261 is expected to match "application/vnd.git-lfs+json"4262 with upload permission4263 upload request4264 behaves like LFS http 200 response4265 behaves like LFS http 404 response4266 behaves like LFS http expected response code and message4267 is expected to match "application/vnd.git-lfs+json"4268 deprecated API4269 when fetching LFS object using deprecated API4270 behaves like deprecated request4271 behaves like LFS http expected response code and message4272 is expected to eq "Server supports batch API only, please update your Git LFS client to version 1.0.1 and up."4273 when handling LFS request using deprecated API4274 behaves like deprecated request4275 behaves like LFS http expected response code and message4276 is expected to eq "Server supports batch API only, please update your Git LFS client to version 1.0.1 and up."4277 with personal snippets4278 behaves like LFS http requests4279 when LFS is disabled globally4280 download request4281 behaves like LFS http 501 response4282 behaves like LFS http expected response code and message4283 is expected to eq "Git LFS is not enabled on this GitLab server, contact your admin."4284 upload request4285 behaves like LFS http 501 response4286 behaves like LFS http expected response code and message4287 is expected to eq "Git LFS is not enabled on this GitLab server, contact your admin."4288 unauthenticated4289 download request4290 behaves like LFS http 401 response4291 behaves like LFS http expected response code and message4292 is expected to match "text/plain"4293 upload request4294 behaves like LFS http 401 response4295 behaves like LFS http expected response code and message4296 is expected to match "text/plain"4297 without access4298 download request4299 behaves like LFS http 404 response4300 behaves like LFS http expected response code and message4301 is expected to match "application/vnd.git-lfs+json"4302 upload request4303 behaves like LFS http 404 response4304 behaves like LFS http expected response code and message4305 is expected to match "application/vnd.git-lfs+json"4306 with guest access4307 download request4308 behaves like LFS http 404 response4309 behaves like LFS http expected response code and message4310 is expected to match "application/vnd.git-lfs+json"4311 upload request4312 behaves like LFS http 404 response4313 behaves like LFS http expected response code and message4314 is expected to match "application/vnd.git-lfs+json"4315 with download permission4316 download request4317 behaves like LFS http 200 blob response4318 behaves like LFS http 404 response4319 behaves like LFS http expected response code and message4320 is expected to match "application/vnd.git-lfs+json"4321 when container does not exist4322 behaves like LFS http 404 response4323 behaves like LFS http expected response code and message4324 is expected to match "application/vnd.git-lfs+json"4325 upload request4326 behaves like LFS http 403 response4327 behaves like LFS http 404 response4328 behaves like LFS http expected response code and message4329 is expected to match "application/vnd.git-lfs+json"4330 with upload permission4331 upload request4332 behaves like LFS http 200 response4333 behaves like LFS http 404 response4334 behaves like LFS http expected response code and message4335 is expected to match "application/vnd.git-lfs+json"4336 deprecated API4337 when fetching LFS object using deprecated API4338 behaves like deprecated request4339 behaves like LFS http expected response code and message4340 is expected to eq "Server supports batch API only, please update your Git LFS client to version 1.0.1 and up."4341 when handling LFS request using deprecated API4342 behaves like deprecated request4343 behaves like LFS http expected response code and message4344 is expected to eq "Server supports batch API only, please update your Git LFS client to version 1.0.1 and up."4345API::Issues4346 GET /issues/:id4347 behaves like GET request permissions for admin mode4348 behaves like when admin4349 behaves like makes request4350 returns4351 behaves like makes request4352 returns4353 behaves like when user4354 returns4355 behaves like makes request4356 returns4357 when unauthorized4358 returns unauthorized4359 when authorized4360 as a normal user4361 returns forbidden4362 as an admin4363 when issue exists4364 returns the issue4365 when issue does not exist4366 returns 4044367 GET /issues4368 when unauthenticated4369 returns an array of all issues4370 returns authentication error without any scope4371 returns authentication error when scope is assigned-to-me4372 returns authentication error when scope is created-by-me4373 returns an array of issues matching state in milestone4374 returns an array of issues matching state in milestone4375 responds with a 401 instead of the specified issue4376 behaves like issuable API rate-limited search4377 behaves like rate limited endpoint4378 when rate limiter enabled4379 logs request and declines it when endpoint called more than the threshold4380 when rate limiter is disabled4381 does not log request and does not block the request4382 behaves like rate limited endpoint4383 when rate limiter enabled4384 logs request and declines it when endpoint called more than the threshold4385 when rate limiter is disabled4386 does not log request and does not block the request4387 issues_statistics4388 returns authentication error without any scope4389 returns authentication error when scope is assigned_to_me4390 returns authentication error when scope is created_by_me4391 no state is treated as all state4392 behaves like issues statistics4393 returns issues statistics4394 statistics when all state is passed4395 behaves like issues statistics4396 returns issues statistics4397 closed state is treated as all state4398 behaves like issues statistics4399 returns issues statistics4400 opened state is treated as all state4401 behaves like issues statistics4402 returns issues statistics4403 when filtering by milestone and no state treated as all state4404 behaves like issues statistics4405 returns issues statistics4406 when filtering by milestone and all state4407 behaves like issues statistics4408 returns issues statistics4409 when filtering by milestone and closed state treated as all state4410 behaves like issues statistics4411 returns issues statistics4412 when filtering by milestone and opened state treated as all state4413 behaves like issues statistics4414 returns issues statistics4415 sort does not affect statistics4416 behaves like issues statistics4417 returns issues statistics4418 with search param4419 behaves like issues statistics4420 returns issues statistics4421 when authenticated4422 returns an array of issues4423 returns an array of closed issues4424 returns an array of opened issues4425 returns an array of all issues4426 returns issues assigned to me4427 returns issues assigned to me (kebab-case)4428 returns issues authored by the given author id4429 returns issues assigned to the given assignee id4430 returns issues authored by the given author id and assigned to the given assignee id4431 returns issues with no assignee4432 returns issues with any assignee4433 returns only confidential issues4434 returns only public issues4435 returns issues reacted by the authenticated user4436 returns issues not reacted by the authenticated user4437 returns issues with a given issue_type4438 returns issues matching given search string for title4439 returns issues matching given search string for title and scoped in title4440 returns an empty array if no issue matches given search string for title and scoped in description4441 returns issues matching given search string for description4442 returns an array of issues found by iids4443 returns an empty array if iid does not exist4444 sorts ascending when requested4445 sorts by updated_at descending when requested4446 sorts by updated_at ascending when requested4447 sorts by title asc when requested4448 sorts by title desc when requested4449 matches V4 response schema4450 returns a related merge request count of 0 if there are no related merge requests4451 returns a related merge request count > 0 if there are related merge requests4452 filtering before a specific date4453 returns issues created before a specific date4454 returns issues updated before a specific date4455 filtering after a specific date4456 returns issues created after a specific date4457 returns issues updated after a specific date4458 filtering by due date4459 returns them all when argument is empty4460 returns issues with due date4461 returns issues without due date4462 returns issues due for this week4463 returns issues due for this month4464 returns issues that are due previous two weeks and next month4465 returns issues that are due today4466 returns issues that are due tomorrow4467 returns issues that are overdue4468 with incident issues4469 avoids N+1 queries4470 with issues closed as duplicates4471 avoids N+1 queries4472 filter by labels or label_name param4473 returns an array of labeled issues4474 returns an array of labeled issues with labels param as array4475 returns an empty array if no issue matches labels4476 returns an empty array if no issue matches labels with labels param as array4477 returns an array of labeled issues matching given state4478 returns an array of labeled issues matching given state with labels param as array4479 returns an empty array if no issue matches labels and state filters4480 returns an array of issues with any label4481 returns an array of issues with any label with labels param as array4482 returns an array of issues with no label4483 returns an array of issues with no label with labels param as array4484 N+14485 tests N+14486 with labeled issues4487 behaves like labeled issues with labels and label_name params4488 array of labeled issues when all labels match4489 behaves like returns label names4490 returns label names4491 array of labeled issues when all labels match with labels param as array4492 behaves like returns label names4493 returns label names4494 negation4495 array of labeled issues when all labels match with negation4496 behaves like returns negated label names4497 returns label names4498 array of labeled issues when all labels match with negation with label params as array4499 behaves like returns negated label names4500 returns label names4501 when with_labels_details provided4502 array of labeled issues when all labels match4503 behaves like returns basic label entity4504 returns basic label entity4505 array of labeled issues when all labels match with labels param as array4506 behaves like returns basic label entity4507 returns basic label entity4508 filter by milestone4509 returns an empty array if no issue matches milestone4510 returns an empty array if milestone does not exist4511 returns an array of issues in given milestone4512 returns an array of issues in given milestone_title param4513 returns an array of issues matching state in milestone4514 returns an array of issues with no milestone4515 returns an array of issues with no milestone using milestone_title param4516 negated4517 returns all issues if milestone does not exist4518 returns all issues that do not belong to a milestone but have a milestone4519 returns an array of issues with any milestone4520 returns an array of issues matching state not in milestone4521 filtering by milestone_id4522 milestone_id: wildcard_none, not_milestone: nil, expected_issues: lazy { [issue_none.id] }4523 returns correct issues when filtering with 'milestone_id' and optionally negated 'milestone'4524 milestone_id: wildcard_any, not_milestone: nil, expected_issues: lazy { [issue_future.id, issue_started.id, issue_upcoming.id, issue.id, closed_issue.id] }4525 returns correct issues when filtering with 'milestone_id' and optionally negated 'milestone'4526 milestone_id: wildcard_started, not_milestone: nil, expected_issues: lazy { [issue_started.id, issue_upcoming.id] }4527 returns correct issues when filtering with 'milestone_id' and optionally negated 'milestone'4528 milestone_id: wildcard_upcoming, not_milestone: nil, expected_issues: lazy { [issue_upcoming.id] }4529 returns correct issues when filtering with 'milestone_id' and optionally negated 'milestone'4530 milestone_id: wildcard_any, not_milestone: "upcoming milestone", expected_issues: lazy { [issue_future.id, issue_started.id, issue.id, closed_issue.id] }4531 returns correct issues when filtering with 'milestone_id' and optionally negated 'milestone'4532 milestone_id: wildcard_upcoming, not_milestone: "upcoming milestone", expected_issues: []4533 returns correct issues when filtering with 'milestone_id' and optionally negated 'milestone'4534 negated filtering4535 not_milestone_id: wildcard_started, expected_issues: lazy { [issue_future.id] }4536 returns correct issues when filtering with negated 'milestone_id'4537 not_milestone_id: wildcard_upcoming, expected_issues: lazy { [issue_started.id] }4538 returns correct issues when filtering with negated 'milestone_id'4539 when mutually exclusive params are passed4540 params: lazy { { milestone: "foo", milestone_id: wildcard_any } }4541 raises an error4542 params: lazy { { not: { milestone: "foo", milestone_id: wildcard_any } } }4543 raises an error4544 without sort params4545 sorts by created_at descending by default4546 with 2 issues with same created_at4547 page breaks first page correctly4548 page breaks second page correctly4549 with issues list sort options4550 accepts only predefined order by params4551 fails to sort with non predefined options4552 issues_statistics4553 no state is treated as all state4554 behaves like issues statistics4555 returns issues statistics4556 statistics when all state is passed4557 behaves like issues statistics4558 returns issues statistics4559 closed state is treated as all state4560 behaves like issues statistics4561 returns issues statistics4562 opened state is treated as all state4563 behaves like issues statistics4564 returns issues statistics4565 when filtering by milestone and no state treated as all state4566 behaves like issues statistics4567 returns issues statistics4568 when filtering by milestone and all state4569 behaves like issues statistics4570 returns issues statistics4571 when filtering by milestone and closed state treated as all state4572 behaves like issues statistics4573 returns issues statistics4574 when filtering by milestone and opened state treated as all state4575 behaves like issues statistics4576 returns issues statistics4577 sort does not affect statistics4578 behaves like issues statistics4579 returns issues statistics4580 filtering by assignee_username4581 returns issues with by assignee_username4582 returns issues by assignee_username as string4583 returns error when multiple assignees are passed4584 returns error when assignee_username and assignee_id are passed together4585 filtering by non_archived4586 returns issues from non archived projects by default4587 returns issues from archived project with non_archived set as false4588 when returns issue merge_requests_count for different access levels4589 behaves like accessible merge requests count4590 returns anonymous accessible merge requests count4591 returns guest accessible merge requests count4592 returns reporter accessible merge requests count4593 returns admin accessible merge requests count4594 GET /projects/:id/issues/:issue_iid4595 exposes full reference path4596 when issue is closed as duplicate4597 user does not have permission to view new issue4598 does not return the issue as closed_as_duplicate_of4599 when user has access to new issue4600 returns the issue as closed_as_duplicate_of4601 POST /projects/:id/issues4602 creates a new project issue4603 when confidential is null4604 responds with 400 error4605 when issue create service returns an unrecoverable error4606 returns and error message and status code from the service4607 PUT /projects/:id/issues/:issue_iid4608 behaves like issuable update endpoint4609 PUT /projects/:id/issues/:issue_iid4610 clears labels when labels param is nil4611 updates the issuable with labels param as array4612 clears milestone when milestone_id=04613 behaves like PUT request permissions for admin mode4614 behaves like when admin4615 behaves like makes request4616 returns4617 behaves like makes request4618 returns4619 behaves like when user4620 returns4621 behaves like makes request4622 returns4623 updated_at param4624 allows admins to set the timestamp4625 does not allow other users to set the timestamp4626 issue_type param4627 allows issue type to be converted4628 DELETE /projects/:id/issues/:issue_iid4629 rejects a non member from deleting an issue4630 rejects a developer from deleting an issue4631 returns 404 when using the issue ID instead of IID4632 when the user is project owner4633 deletes the issue if an admin requests it4634 behaves like 412 response4635 for a modified ressource4636 returns 412 with a JSON error4637 for an unmodified ressource4638 returns 204 with an empty body4639 when issue does not exist4640 returns 404 when trying to delete an issue4641 time tracking endpoints4642 POST /projects/:id/issues/:issue_id/time_estimate4643 sets the time estimate for issue4644 with an unauthorized user4645 behaves like an unauthorized API user4646 is expected to eq 4034647 behaves like API user with insufficient permissions4648 with non member that is the author4649 behaves like an unauthorized API user4650 is expected to eq 4034651 updating the current estimate4652 when duration has a bad format4653 does not modify the original estimate4654 with a valid duration4655 updates the estimate4656 POST /projects/:id/issues/:issue_id/reset_time_estimate4657 resets the time estimate for issue4658 with an unauthorized user4659 behaves like an unauthorized API user4660 is expected to eq 4034661 behaves like API user with insufficient permissions4662 with non member that is the author4663 behaves like an unauthorized API user4664 is expected to eq 4034665 POST /projects/:id/issues/:issue_id/add_spent_time4666 add spent time for issue4667 calls update service without :use_specialized_service param4668 with an unauthorized user4669 behaves like an unauthorized API user4670 is expected to eq 4034671 behaves like API user with insufficient permissions4672 with non member that is the author4673 behaves like an unauthorized API user4674 is expected to eq 4034675 when subtracting time4676 subtracts time of the total spent time4677 when time to subtract is greater than the total spent time4678 does not modify the total time spent4679 POST /projects/:id/issues/:issue_id/reset_spent_time4680 resets spent time for issue4681 with an unauthorized user4682 behaves like an unauthorized API user4683 is expected to eq 4034684 behaves like API user with insufficient permissions4685 with non member that is the author4686 behaves like an unauthorized API user4687 is expected to eq 4034688 GET /projects/:id/issues/:issue_id/time_stats4689 returns the time stats for issue4690 PUT /projects/:id/issues/:issue_iid/reorder4691 when user has access4692 with valid params4693 reorders issues and returns a successful 200 response4694 with invalid params4695 returns a unprocessable entity 422 response for invalid move ids4696 returns a not found 404 response for invalid issue id4697 with issue in different project4698 reorders issues and returns a successful 200 response4699 with unauthorized user4700 responds with 403 forbidden4701API::Snippets4702 GET /snippets/4703 returns snippets available for user4704 hides private snippets from regular user4705 returns 401 for non-authenticated4706 does not return snippets related to a project with disable feature visibility4707 filtering snippets by created_after/created_before4708 returns snippets available for user in given time range4709 GET /snippets/public4710 returns only public snippets from all users when authenticated4711 requires authentication4712 filtering public snippets by created_after/created_before4713 returns public snippets available to user in given time range4714 GET /snippets/:id/raw4715 returns raw text4716 returns 404 for invalid snippet id4717 behaves like snippet access with different users4718 requester: :admin, visibility: :public, status: :ok4719 returns the correct response4720 requester: :admin, visibility: :private, status: :ok4721 returns the correct response4722 requester: :admin, visibility: :internal, status: :ok4723 returns the correct response4724 requester: :author, visibility: :public, status: :ok4725 returns the correct response4726 requester: :author, visibility: :private, status: :ok4727 returns the correct response4728 requester: :author, visibility: :internal, status: :ok4729 returns the correct response4730 requester: :other, visibility: :public, status: :ok4731 returns the correct response4732 requester: :other, visibility: :private, status: :not_found4733 returns the correct response4734 requester: :other, visibility: :internal, status: :ok4735 returns the correct response4736 requester: nil, visibility: :public, status: :ok4737 returns the correct response4738 requester: nil, visibility: :private, status: :not_found4739 returns the correct response4740 requester: nil, visibility: :internal, status: :not_found4741 returns the correct response4742 behaves like snippet blob content4743 returns content from repository4744 when snippet repository is empty4745 returns content from database4746 GET /snippets/:id/files/:ref/:file_path/raw4747 behaves like raw snippet files4748 with an invalid snippet ID4749 returns 4044750 with valid params4751 returns the raw file info4752 with unauthorized user4753 returns 4044754 with invalid params4755 file_path: "%2Egitattributes", ref: "invalid-ref", status: :not_found, key: "message", message: "404 Reference Not Found"4756 returns the proper response code and message4757 file_path: "%2Egitattributes", ref: nil, status: :not_found, key: "error", message: "404 Not Found"4758 returns the proper response code and message4759 file_path: "%2Egitattributes", ref: "", status: :not_found, key: "error", message: "404 Not Found"4760 returns the proper response code and message4761 file_path: "doesnotexist.rb", ref: "master", status: :not_found, key: "message", message: "404 File Not Found"4762 returns the proper response code and message4763 file_path: "/does/not/exist.rb", ref: "master", status: :not_found, key: "error", message: "404 Not Found"4764 returns the proper response code and message4765 file_path: "%2E%2E%2Fetc%2Fpasswd", ref: "master", status: :bad_request, key: "error", message: "file_path should be a valid file path"4766 returns the proper response code and message4767 file_path: "%2Fetc%2Fpasswd", ref: "master", status: :bad_request, key: "error", message: "file_path should be a valid file path"4768 returns the proper response code and message4769 file_path: "../../etc/passwd", ref: "master", status: :not_found, key: "error", message: "404 Not Found"4770 returns the proper response code and message4771 behaves like snippet access with different users4772 requester: :admin, visibility: :public, status: :ok4773 returns the correct response4774 requester: :admin, visibility: :private, status: :ok4775 returns the correct response4776 requester: :admin, visibility: :internal, status: :ok4777 returns the correct response4778 requester: :author, visibility: :public, status: :ok4779 returns the correct response4780 requester: :author, visibility: :private, status: :ok4781 returns the correct response4782 requester: :author, visibility: :internal, status: :ok4783 returns the correct response4784 requester: :other, visibility: :public, status: :ok4785 returns the correct response4786 requester: :other, visibility: :private, status: :not_found4787 returns the correct response4788 requester: :other, visibility: :internal, status: :ok4789 returns the correct response4790 requester: nil, visibility: :public, status: :ok4791 returns the correct response4792 requester: nil, visibility: :private, status: :not_found4793 returns the correct response4794 requester: nil, visibility: :internal, status: :not_found4795 returns the correct response4796 GET /snippets/:id4797 with the author4798 returns snippet json4799 with a non-existent snippet ID4800 returns 4044801 behaves like snippet access with different users4802 requester: :admin, visibility: :public, status: :ok4803 returns the correct response4804 requester: :admin, visibility: :private, status: :ok4805 returns the correct response4806 requester: :admin, visibility: :internal, status: :ok4807 returns the correct response4808 requester: :author, visibility: :public, status: :ok4809 returns the correct response4810 requester: :author, visibility: :private, status: :ok4811 returns the correct response4812 requester: :author, visibility: :internal, status: :ok4813 returns the correct response4814 requester: :other, visibility: :public, status: :ok4815 returns the correct response4816 requester: :other, visibility: :private, status: :not_found4817 returns the correct response4818 requester: :other, visibility: :internal, status: :ok4819 returns the correct response4820 requester: nil, visibility: :public, status: :ok4821 returns the correct response4822 requester: nil, visibility: :private, status: :not_found4823 returns the correct response4824 requester: nil, visibility: :internal, status: :not_found4825 returns the correct response4826 POST /snippets/4827 returns 400 for missing parameters4828 returns 400 if title is blank4829 with files parameter4830 behaves like snippet creation with files parameter4831 returns 400 if both files and content are provided4832 returns 400 when neither files or content are provided4833 path: ".gitattributes", content: "file content", status: :created, error: nil4834 responds correctly4835 path: "valid/path/file.rb", content: "file content", status: :created, error: nil4836 responds correctly4837 path: ".gitattributes", content: nil, status: :bad_request, error: "files[0][content] is empty"4838 responds correctly4839 path: ".gitattributes", content: "", status: :bad_request, error: "files[0][content] is empty"4840 responds correctly4841 path: "", content: "file content", status: :bad_request, error: "files[0][file_path] is empty"4842 responds correctly4843 path: nil, content: "file content", status: :bad_request, error: "files[0][file_path] should be a valid file path, files[0][file_path] is empty"4844 responds correctly4845 path: "../../etc/passwd", content: "file content", status: :bad_request, error: "files[0][file_path] should be a valid file path"4846 responds correctly4847 with multiple files4848 behaves like snippet creation4849 creates a new snippet4850 creates repository4851 commit the files to the repository4852 behaves like snippet creation without files parameter4853 allows file_name and content parameters4854 returns 400 if file_name and content are not both provided4855 returns 400 if content is blank4856 with restricted visibility settings4857 behaves like snippet creation4858 creates a new snippet4859 creates repository4860 commit the files to the repository4861 behaves like snippet creation4862 creates a new snippet4863 creates repository4864 commit the files to the repository4865 with an external user4866 does not create a new snippet4867 when save fails because the repository could not be created4868 returns 4004869 when the snippet is spam4870 when the snippet is private4871 creates the snippet4872 when the snippet is public4873 rejects the snippet4874 creates a spam log4875 PUT /snippets/:id4876 returns 404 for another user's snippet4877 behaves like snippet file updates4878 with various snippet file changes4879 is_multi_file: true, file_name: nil, content: nil, files: [{:action=>"create", :file_path=>"foo.txt", :content=>"bar"}], status: :success4880 has the correct response4881 is_multi_file: true, file_name: nil, content: nil, files: [{:action=>"update", :file_path=>"CHANGELOG", :content=>"bar"}], status: :success4882 has the correct response4883 is_multi_file: true, file_name: nil, content: nil, files: [{:action=>"move", :file_path=>".old-gitattributes", :previous_path=>".gitattributes"}], status: :success4884 has the correct response4885 is_multi_file: true, file_name: nil, content: nil, files: [{:action=>"delete", :file_path=>"CONTRIBUTING.md"}], status: :success4886 has the correct response4887 is_multi_file: true, file_name: nil, content: nil, files: [{:action=>"create", :file_path=>"foo.txt", :content=>"bar"}, {:action=>"update", :file_path=>"CHANGELOG", :content=>"bar"}], status: :success4888 has the correct response4889 is_multi_file: true, file_name: "foo.txt", content: "bar", files: [{:action=>"create", :file_path=>"foo.txt", :content=>"bar"}], status: :bad_request4890 has the correct response4891 is_multi_file: true, file_name: "foo.txt", content: "bar", files: nil, status: :bad_request4892 has the correct response4893 is_multi_file: true, file_name: nil, content: nil, files: nil, status: :bad_request4894 has the correct response4895 is_multi_file: true, file_name: "foo.txt", content: nil, files: [{:action=>"create", :file_path=>"foo.txt", :content=>"bar"}], status: :bad_request4896 has the correct response4897 is_multi_file: true, file_name: nil, content: "bar", files: [{:action=>"create", :file_path=>"foo.txt", :content=>"bar"}], status: :bad_request4898 has the correct response4899 is_multi_file: true, file_name: "", content: nil, files: [{:action=>"create", :file_path=>"foo.txt", :content=>"bar"}], status: :bad_request4900 has the correct response4901 is_multi_file: true, file_name: nil, content: "", files: [{:action=>"create", :file_path=>"foo.txt", :content=>"bar"}], status: :bad_request4902 has the correct response4903 is_multi_file: true, file_name: nil, content: nil, files: [{:action=>"create", :file_path=>"../../etc/passwd", :content=>"bar"}], status: :bad_request4904 has the correct response4905 is_multi_file: true, file_name: nil, content: nil, files: [{:action=>"create", :previous_path=>"../../etc/passwd", :file_path=>"CHANGELOG", :content=>"bar"}], status: :bad_request4906 has the correct response4907 is_multi_file: true, file_name: nil, content: nil, files: [{:action=>"move", :file_path=>"missing_previous_path.txt"}], status: :unprocessable_entity4908 has the correct response4909 is_multi_file: false, file_name: "foo.txt", content: "bar", files: nil, status: :success4910 has the correct response4911 is_multi_file: false, file_name: "foo.txt", content: nil, files: nil, status: :success4912 has the correct response4913 is_multi_file: false, file_name: nil, content: "bar", files: nil, status: :success4914 has the correct response4915 is_multi_file: false, file_name: "foo.txt", content: "bar", files: [{:action=>"create", :file_path=>"foo.txt", :content=>"bar"}], status: :bad_request4916 has the correct response4917 is_multi_file: false, file_name: nil, content: nil, files: nil, status: :bad_request4918 has the correct response4919 is_multi_file: false, file_name: nil, content: "", files: nil, status: :bad_request4920 has the correct response4921 is_multi_file: false, file_name: nil, content: nil, files: [{:action=>"create", :file_path=>"../../etc/passwd", :content=>"bar"}], status: :bad_request4922 has the correct response4923 is_multi_file: false, file_name: nil, content: nil, files: [{:action=>"create", :previous_path=>"../../etc/passwd", :file_path=>"CHANGELOG", :content=>"bar"}], status: :bad_request4924 has the correct response4925 when save fails due to a repository commit error4926 returns a bad request response4927 behaves like snippet non-file updates4928 updates a snippet non-file attributes4929 behaves like snippet individual non-file updates4930 attribute: :description, updated_value: "new description"4931 updates the attribute4932 attribute: :title, updated_value: "new title"4933 updates the attribute4934 attribute: :visibility, updated_value: "private"4935 updates the attribute4936 behaves like invalid snippet updates4937 returns 404 for invalid snippet id4938 returns 400 for missing parameters4939 returns 400 if content is blank4940 returns 400 if title is blank4941 with restricted visibility settings4942 behaves like snippet non-file updates4943 updates a snippet non-file attributes4944 behaves like update with repository actions4945 when the repository exists4946 commits the changes to the repository4947 when the repository does not exist4948 when update attributes does not include file_name or content4949 does not create the repository4950 when update attributes include file_name or content4951 creates the repository4952 commits the file to the repository4953 when save fails due to a repository creation error4954 returns 4004955 does not save the changes to the snippet object4956 when the snippet is spam4957 when the snippet is private4958 updates the snippet4959 when the snippet is public4960 rejects the snippet4961 creates a spam log4962 when a private snippet is made public4963 rejects the snippet4964 creates a spam log4965 when admin4966 when sudo is defined4967 returns 200 and updates snippet visibility4968 does not commit data4969 DELETE /snippets/:id4970 deletes snippet4971 returns 404 for invalid snippet id4972 behaves like 412 response4973 for a modified ressource4974 returns 412 with a JSON error4975 for an unmodified ressource4976 returns 204 with an empty body4977 GET /snippets/:id/user_agent_detail4978 exposes known attributes4979 behaves like GET request permissions for admin mode4980 behaves like when admin4981 behaves like makes request4982 returns4983 behaves like makes request4984 returns4985 behaves like when user4986 returns4987 behaves like makes request4988 returns4989API::Members4990 GET /:source_type/:id/members/all4991 finds all project members including inherited members4992 returns only one member for each user without returning duplicated members4993 finds all group members including inherited members4994 with a subgroup4995 subgroup member cannot get parent group members list4996 DELETE /groups/:id/members/:user_id4997 deletes only the member with skip_subresources=true4998 deletes member and its sub memberships with skip_subresources=false4999 behaves like GET /:source_type/:id/members/(all)5000 with :source_type == projects5001 avoids N+1 queries5002 does not return invitees5003 finds members with the given user_ids5004 finds all members with no query specified5005 behaves like a 404 response when source is private5006 returns 4045007 when authenticated as a maintainer5008 returns 2005009 when authenticated as a developer5010 returns 2005011 when authenticated as a access_requester5012 returns 2005013 when authenticated as a stranger5014 returns 2005015 with cross db check disabled5016 finds members with query string5017 behaves like GET /:source_type/:id/members/(all)5018 with :source_type == groups5019 avoids N+1 queries5020 does not return invitees5021 finds members with the given user_ids5022 finds all members with no query specified5023 behaves like a 404 response when source is private5024 returns 4045025 when authenticated as a maintainer5026 returns 2005027 when authenticated as a developer5028 returns 2005029 when authenticated as a access_requester5030 returns 2005031 when authenticated as a stranger5032 returns 2005033 with cross db check disabled5034 finds members with query string5035 behaves like GET /:source_type/:id/members/(all)5036 with :source_type == projects5037 avoids N+1 queries5038 does not return invitees5039 finds members with the given user_ids5040 finds all members with no query specified5041 behaves like a 404 response when source is private5042 returns 4045043 when authenticated as a maintainer5044 returns 2005045 when authenticated as a developer5046 returns 2005047 when authenticated as a access_requester5048 returns 2005049 when authenticated as a stranger5050 returns 2005051 with cross db check disabled5052 finds members with query string5053 behaves like GET /:source_type/:id/members/(all)5054 with :source_type == groups5055 avoids N+1 queries5056 does not return invitees5057 finds members with the given user_ids5058 finds all members with no query specified5059 behaves like a 404 response when source is private5060 returns 4045061 when authenticated as a maintainer5062 returns 2005063 when authenticated as a developer5064 returns 2005065 when authenticated as a access_requester5066 returns 2005067 when authenticated as a stranger5068 returns 2005069 with cross db check disabled5070 finds members with query string5071 behaves like GET /:source_type/:id/members/(all/):user_id5072 with :source_type == projects and all == false5073 behaves like a 404 response when source is private5074 returns 4045075 when authenticated as a non-member5076 as a access_requester5077 returns 2005078 as a stranger5079 returns 2005080 with ancestral membership5081 is expected to eq 405082 having email invite5083 is expected to eq 405084 behaves like GET /:source_type/:id/members/(all/):user_id5085 with :source_type == groups and all == false5086 behaves like a 404 response when source is private5087 returns 4045088 when authenticated as a non-member5089 as a access_requester5090 returns 2005091 as a stranger5092 returns 2005093 with ancestral membership5094 is expected to eq 405095 having email invite5096 is expected to eq 405097 behaves like GET /:source_type/:id/members/(all/):user_id5098 with :source_type == projects and all == true5099 behaves like a 404 response when source is private5100 returns 4045101 when authenticated as a non-member5102 as a access_requester5103 returns 2005104 as a stranger5105 returns 2005106 with ancestral membership5107 is expected to eq 405108 having email invite5109 is expected to eq 405110 behaves like GET /:source_type/:id/members/(all/):user_id5111 with :source_type == groups and all == true5112 behaves like a 404 response when source is private5113 returns 4045114 when authenticated as a non-member5115 as a access_requester5116 returns 2005117 as a stranger5118 returns 2005119 with ancestral membership5120 is expected to eq 405121 having email invite5122 is expected to eq 405123 POST /projects/:id/members5124 behaves like POST /:source_type/:id/members5125 with :source_type == projects5126 returns 409 if member already exists5127 returns 404 when the user_id is not valid5128 returns 400 when user_id is not given5129 returns 400 when access_level is not given5130 returns 400 when access_level is not valid5131 behaves like a 404 response when source is private5132 returns 4045133 when authenticated as a non-member or member with insufficient membership management rights5134 when the user does not have rights to manage members5135 as a access_requester5136 behaves like a 403 response when user does not have rights to manage members of a specific access level5137 returns 4035138 as a stranger5139 behaves like a 403 response when user does not have rights to manage members of a specific access level5140 returns 4035141 as a developer5142 behaves like a 403 response when user does not have rights to manage members of a specific access level5143 returns 4035144 when the user has the rights to manage members but tries to manage members with a higher access level5145 when an access requester is added as OWNER5146 behaves like a 403 response when user does not have rights to manage members of a specific access level5147 returns 4035148 when a totally new user is added as OWNER5149 behaves like a 403 response when user does not have rights to manage members of a specific access level5150 returns 4035151 when authenticated as a member with membership management rights5152 creates a new member5153 and new member is already a requester5154 when the requester is of equal or lower access level5155 transforms the requester into a proper member5156 with invite_source considerations5157 tracks the invite source as api5158 tracks the invite source from params5159 when executing the Members::CreateService for multiple user_ids5160 returns success when it successfully create all members5161 returns the error message if there was an error adding members to group5162 access levels5163 does not create the member if group level is higher5164 creates the member if group level is lower5165 access expiry date5166 when set to a date in the past5167 does not create a member5168 when set to a date in the future5169 creates a member5170 with tasks_to_be_done and tasks_project_id in the params5171 when there is 1 user to add5172 creates a member_task with the correct attributes5173 when there are multiple users to add5174 creates a member_task with the correct attributes5175 adding project bot5176 returns 4005177 adding owner to project5178 behaves like a 403 response when user does not have rights to manage members of a specific access level5179 returns 4035180 remove bot from project5181 returns a 403 forbidden5182 behaves like POST /:source_type/:id/members5183 with :source_type == groups5184 returns 409 if member already exists5185 returns 404 when the user_id is not valid5186 returns 400 when user_id is not given5187 returns 400 when access_level is not given5188 returns 400 when access_level is not valid5189 behaves like a 404 response when source is private5190 returns 4045191 when authenticated as a non-member or member with insufficient membership management rights5192 when the user does not have rights to manage members5193 as a access_requester5194 behaves like a 403 response when user does not have rights to manage members of a specific access level5195 returns 4035196 as a stranger5197 behaves like a 403 response when user does not have rights to manage members of a specific access level5198 returns 4035199 as a developer5200 behaves like a 403 response when user does not have rights to manage members of a specific access level5201 returns 4035202 when the user has the rights to manage members but tries to manage members with a higher access level5203 when an access requester is added as OWNER5204 behaves like a 403 response when user does not have rights to manage members of a specific access level5205 returns 4035206 when a totally new user is added as OWNER5207 behaves like a 403 response when user does not have rights to manage members of a specific access level5208 returns 4035209 when authenticated as a member with membership management rights5210 creates a new member5211 and new member is already a requester5212 when the requester is of equal or lower access level5213 transforms the requester into a proper member5214 with invite_source considerations5215 tracks the invite source as api5216 tracks the invite source from params5217 when executing the Members::CreateService for multiple user_ids5218 returns success when it successfully create all members5219 returns the error message if there was an error adding members to group5220 access levels5221 does not create the member if group level is higher5222 creates the member if group level is lower5223 access expiry date5224 when set to a date in the past5225 does not create a member5226 when set to a date in the future5227 creates a member5228 with tasks_to_be_done and tasks_project_id in the params5229 when there is 1 user to add5230 creates a member_task with the correct attributes5231 when there are multiple users to add5232 creates a member_task with the correct attributes5233 adding project bot5234 returns 4005235 behaves like PUT /:source_type/:id/members/:user_id5236 with :source_type == projects5237 returns 409 if member does not exist5238 returns 400 when access_level is not given5239 returns 400 when access level is not valid5240 behaves like a 404 response when source is private5241 returns 4045242 when authenticated as a non-member or member with insufficient rights5243 as a access_requester5244 behaves like a 403 response when user does not have rights to manage members of a specific access level5245 returns 4035246 as a stranger5247 behaves like a 403 response when user does not have rights to manage members of a specific access level5248 returns 4035249 as a developer5250 behaves like a 403 response when user does not have rights to manage members of a specific access level5251 returns 4035252 as a maintainer updating a member to one with higher access level than themselves5253 updating a member to OWNER5254 behaves like a 403 response when user does not have rights to manage members of a specific access level5255 returns 4035256 when authenticated as a maintainer/owner5257 when updating a member with the same or lower access level5258 updates the member5259 when updating a member with higher access level5260 behaves like a 403 response when user does not have rights to manage members of a specific access level5261 returns 4035262 access expiry date5263 when set to a date in the past5264 does not update the member5265 when set to a date in the future5266 updates the member5267 behaves like PUT /:source_type/:id/members/:user_id5268 with :source_type == groups5269 returns 409 if member does not exist5270 returns 400 when access_level is not given5271 returns 400 when access level is not valid5272 behaves like a 404 response when source is private5273 returns 4045274 when authenticated as a non-member or member with insufficient rights5275 as a access_requester5276 behaves like a 403 response when user does not have rights to manage members of a specific access level5277 returns 4035278 as a stranger5279 behaves like a 403 response when user does not have rights to manage members of a specific access level5280 returns 4035281 as a developer5282 behaves like a 403 response when user does not have rights to manage members of a specific access level5283 returns 4035284 as a maintainer updating a member to one with higher access level than themselves5285 updating a member to OWNER5286 behaves like a 403 response when user does not have rights to manage members of a specific access level5287 returns 4035288 when authenticated as a maintainer/owner5289 when updating a member with the same or lower access level5290 updates the member5291 when updating a member with higher access level5292 behaves like a 403 response when user does not have rights to manage members of a specific access level5293 returns 4035294 access expiry date5295 when set to a date in the past5296 does not update the member5297 when set to a date in the future5298 updates the member5299 behaves like DELETE /:source_type/:id/members/:user_id5300 with :source_type == projects5301 returns 404 if member does not exist5302 behaves like a 404 response when source is private5303 returns 4045304 when authenticated as a non-member or member with insufficient rights5305 as a access_requester5306 behaves like a 403 response when user does not have rights to manage members of a specific access level5307 returns 4035308 as a stranger5309 behaves like a 403 response when user does not have rights to manage members of a specific access level5310 returns 4035311 when authenticated as a member and deleting themself5312 deletes the member5313 when authenticated as a maintainer/owner5314 deletes the member5315 and member is a requester5316 returns 4045317 when attempting to delete a member with higher access level5318 behaves like a 403 response when user does not have rights to manage members of a specific access level5319 returns 4035320 behaves like rate limited endpoint5321 when rate limiter enabled5322 logs request and declines it when endpoint called more than the threshold5323 when rate limiter is disabled5324 does not log request and does not block the request5325 behaves like 412 response5326 for a modified ressource5327 returns 412 with a JSON error5328 for an unmodified ressource5329 returns 204 with an empty body5330 behaves like DELETE /:source_type/:id/members/:user_id5331 with :source_type == groups5332 returns 404 if member does not exist5333 behaves like a 404 response when source is private5334 returns 4045335 when authenticated as a non-member or member with insufficient rights5336 as a access_requester5337 behaves like a 403 response when user does not have rights to manage members of a specific access level5338 returns 4035339 as a stranger5340 behaves like a 403 response when user does not have rights to manage members of a specific access level5341 returns 4035342 when authenticated as a member and deleting themself5343 deletes the member5344 when authenticated as a maintainer/owner5345 deletes the member5346 and member is a requester5347 returns 4045348 when attempting to delete a member with higher access level5349 behaves like a 403 response when user does not have rights to manage members of a specific access level5350 returns 4035351 behaves like rate limited endpoint5352 when rate limiter enabled5353 logs request and declines it when endpoint called more than the threshold5354 when rate limiter is disabled5355 does not log request and does not block the request5356 behaves like 412 response5357 for a modified ressource5358 returns 412 with a JSON error5359 for an unmodified ressource5360 returns 204 with an empty body5361Projects::PipelineSchedulesController5362 GET #index5363 renders the index view5364 avoids N + 1 queries5365 when the scope is set to active5366 only shows active pipeline schedules5367 GET #new5368 initializes a pipeline schedule model5369 POST #create5370 functionality5371 when variables_attributes has one variable5372 creates a new schedule5373 when variables_attributes has two variables and duplicated5374 returns an error that the keys of variable are duplicated5375 security5376 is allowed for admin when admin mode enabled5377 is denied for admin when admin mode disabled5378 is expected to be allowed for owner. Expected: 200,201,204,302 Got: 3025379 is expected to be allowed for maintainer. Expected: 200,201,204,302 Got: 3025380 is expected to be allowed for developer. Expected: 200,201,204,302 Got: 3025381 is expected to be denied for reporter. Expected: 401,404 Got: 4045382 is expected to be denied for guest. Expected: 401,404 Got: 4045383 is expected to be denied for user. Expected: 401,404 Got: 4045384 is expected to be denied for external. Expected: 401,404 Got: 4045385 is expected to be denied for visitor. Expected: 401,404 Got: 4045386 PUT #update5387 functionality5388 when a pipeline schedule has no variables5389 when params include one variable5390 inserts new variable to the pipeline schedule5391 when params include two duplicated variables5392 returns an error that variables are duplciated5393 when a pipeline schedule has one variable5394 when adds a new variable5395 adds the new variable5396 when adds a new duplicated variable5397 returns an error5398 when updates a variable5399 updates the variable5400 when deletes a variable5401 delete the existsed variable5402 when deletes and creates a same key simultaneously5403 updates the variable5404 security5405 behaves like access update schedule5406 security5407 is allowed for admin when admin mode enabled5408 is denied for admin when admin mode disabled5409 is expected to be denied for owner. Expected: 401,404 Got: 4045410 is expected to be denied for maintainer. Expected: 401,404 Got: 4045411 is expected to be denied for developer. Expected: 401,404 Got: 4045412 is expected to be denied for reporter. Expected: 401,404 Got: 4045413 is expected to be denied for guest. Expected: 401,404 Got: 4045414 is expected to be denied for user. Expected: 401,404 Got: 4045415 is expected to be denied for external. Expected: 401,404 Got: 4045416 is expected to be denied for visitor. Expected: 401,404 Got: 4045417 when user is schedule owner5418 is expected to be allowed for owner. Expected: 200,201,204,302 Got: 3025419 is expected to be allowed for maintainer. Expected: 200,201,204,302 Got: 3025420 is expected to be allowed for developer. Expected: 200,201,204,302 Got: 3025421 is expected to be denied for reporter. Expected: 401,404 Got: 4045422 is expected to be denied for guest. Expected: 401,404 Got: 4045423 is expected to be denied for user. Expected: 401,404 Got: 4045424 is expected to be denied for external. Expected: 401,404 Got: 4045425 is expected to be denied for visitor. Expected: 401,404 Got: 4045426 when a developer created a pipeline schedule5427 is expected to be allowed for #<User:0x00007f3f8fb8d618>. Expected: 200,201,204,302 Got: 3025428 is expected to be denied for owner. Expected: 401,404 Got: 4045429 is expected to be denied for maintainer. Expected: 401,404 Got: 4045430 is expected to be denied for developer. Expected: 401,404 Got: 4045431 when a maintainer created a pipeline schedule5432 is expected to be allowed for #<User:0x00007f3f5f579270>. Expected: 200,201,204,302 Got: 3025433 is expected to be denied for owner. Expected: 401,404 Got: 4045434 is expected to be denied for maintainer. Expected: 401,404 Got: 4045435 is expected to be denied for developer. Expected: 401,404 Got: 4045436 GET #edit5437 functionality5438 loads the pipeline schedule5439 behaves like access update schedule5440 security5441 is allowed for admin when admin mode enabled5442 is denied for admin when admin mode disabled5443 is expected to be denied for owner. Expected: 401,404 Got: 4045444 is expected to be denied for maintainer. Expected: 401,404 Got: 4045445 is expected to be denied for developer. Expected: 401,404 Got: 4045446 is expected to be denied for reporter. Expected: 401,404 Got: 4045447 is expected to be denied for guest. Expected: 401,404 Got: 4045448 is expected to be denied for user. Expected: 401,404 Got: 4045449 is expected to be denied for external. Expected: 401,404 Got: 4045450 is expected to be denied for visitor. Expected: 401,404 Got: 4045451 when user is schedule owner5452 is expected to be allowed for owner. Expected: 200,201,204,302 Got: 2005453 is expected to be allowed for maintainer. Expected: 200,201,204,302 Got: 2005454 is expected to be allowed for developer. Expected: 200,201,204,302 Got: 2005455 is expected to be denied for reporter. Expected: 401,404 Got: 4045456 is expected to be denied for guest. Expected: 401,404 Got: 4045457 is expected to be denied for user. Expected: 401,404 Got: 4045458 is expected to be denied for external. Expected: 401,404 Got: 4045459 is expected to be denied for visitor. Expected: 401,404 Got: 4045460 GET #take_ownership5461 security5462 is allowed for admin when admin mode enabled5463 is denied for admin when admin mode disabled5464 is expected to be allowed for owner. Expected: 200,201,204,302 Got: 3025465 is expected to be allowed for maintainer. Expected: 200,201,204,302 Got: 3025466 is expected to be denied for developer. Expected: 401,404 Got: 4045467 is expected to be denied for reporter. Expected: 401,404 Got: 4045468 is expected to be denied for guest. Expected: 401,404 Got: 4045469 is expected to be denied for user. Expected: 401,404 Got: 4045470 is expected to be denied for external. Expected: 401,404 Got: 4045471 is expected to be denied for visitor. Expected: 401,404 Got: 4045472 when user is schedule owner5473 is expected to be allowed for owner. Expected: 200,201,204,302 Got: 3025474 is expected to be allowed for maintainer. Expected: 200,201,204,302 Got: 3025475 is expected to be allowed for developer. Expected: 200,201,204,302 Got: 3025476 is expected to be denied for reporter. Expected: 401,404 Got: 4045477 is expected to be denied for guest. Expected: 401,404 Got: 4045478 is expected to be denied for user. Expected: 401,404 Got: 4045479 is expected to be denied for external. Expected: 401,404 Got: 4045480 is expected to be denied for visitor. Expected: 401,404 Got: 4045481 POST #play5482 when an anonymous user makes the request5483 does not allow pipeline to be executed5484 when a developer makes the request5485 executes a new pipeline5486 prevents users from scheduling the same pipeline repeatedly5487 when a developer attempts to schedule a protected ref5488 does not allow pipeline to be executed5489 DELETE #destroy5490 when a developer makes the request5491 does not delete the pipeline schedule5492 when a maintainer makes the request5493 destroys the pipeline schedule5494Query.runner(id)5495 for active runner5496 behaves like runner details fetch5497 retrieves expected fields5498 does not execute more queries per runner5499 when tagList is not requested5500 does not retrieve tagList5501 with build running5502 behaves like runner details fetch5503 retrieves expected fields5504 does not execute more queries per runner5505 for project runner5506 locked5507 is_locked: true5508 retrieves correct locked value5509 is_locked: false5510 retrieves correct locked value5511 jobCount5512 retrieves correct jobCount values5513 when JOB_COUNT_LIMIT is in effect5514 retrieves correct capped jobCount values5515 ownerProject5516 retrieves correct ownerProject.id values5517 for inactive runner5518 behaves like runner details fetch5519 retrieves expected fields5520 does not execute more queries per runner5521 for registration type5522 when registered with registration token5523 behaves like runner details fetch5524 retrieves expected fields5525 does not execute more queries per runner5526 when registered with authenticated user5527 behaves like runner details fetch5528 retrieves expected fields5529 does not execute more queries per runner5530 for group runner request5531 retrieves groups field with expected value5532 ephemeralRegisterUrl5533 with an instance runner5534 with valid ephemeral registration5535 behaves like has register url5536 retrieves register url5537 when runner ephemeral registration has expired5538 behaves like has no register url5539 retrieves no register url5540 when runner has already been registered5541 behaves like has no register url5542 retrieves no register url5543 with a group runner5544 with valid ephemeral registration5545 behaves like has register url5546 retrieves register url5547 when request not from creator5548 behaves like has no register url5549 retrieves no register url5550 with a project runner5551 with valid ephemeral registration5552 behaves like has register url5553 retrieves register url5554 when request not from creator5555 behaves like has no register url5556 retrieves no register url5557 for runner with status5558 retrieves status fields with expected values5559 when disable_runner_graphql_legacy_mode is enabled5560 retrieves status fields with expected values5561 for multiple runners5562 requesting projects and counts for projects and jobs5563 retrieves expected fields5564 by regular user5565 on instance runner5566 behaves like retrieval by unauthorized user5567 returns null runner5568 on group runner5569 behaves like retrieval by unauthorized user5570 returns null runner5571 on project runner5572 behaves like retrieval by unauthorized user5573 returns null runner5574 by non-admin user5575 behaves like retrieval with no admin url5576 retrieves expected fields5577 by unauthenticated user5578 behaves like retrieval by unauthorized user5579 returns null runner5580 ephemeralAuthenticationToken5581 with request made by creator5582 with runner created in UI5583 with runner created in last hour5584 with no runner manager registered yet5585 behaves like an ephemeral_authentication_token5586 returns token in ephemeral_authentication_token field5587 with first runner manager already registered5588 behaves like a protected ephemeral_authentication_token5589 returns nil ephemeral_authentication_token5590 with runner created almost too long ago5591 behaves like an ephemeral_authentication_token5592 returns token in ephemeral_authentication_token field5593 with runner created too long ago5594 behaves like a protected ephemeral_authentication_token5595 returns nil ephemeral_authentication_token5596 with runner registered from command line5597 with runner created in last 1 hour5598 behaves like a protected ephemeral_authentication_token5599 returns nil ephemeral_authentication_token5600 when request is made by non-creator of the runner5601 with runner created in UI5602 behaves like a protected ephemeral_authentication_token5603 returns nil ephemeral_authentication_token5604 Query limits with jobs5605 when requesting individual fields5606 field: "detailedStatus { id detailsPath group icon text }"5607 does not execute more queries per job5608 field: "project { id name webUrl }"5609 does not execute more queries per job5610 field: "shortSha"5611 does not execute more queries per job5612 field: "browseArtifactsPath"5613 does not execute more queries per job5614 field: "commitPath"5615 does not execute more queries per job5616 field: "playPath"5617 does not execute more queries per job5618 field: "refPath"5619 does not execute more queries per job5620 field: "webPath"5621 does not execute more queries per job5622 field: "finishedAt"5623 does not execute more queries per job5624 field: "duration"5625 does not execute more queries per job5626 field: "queuedDuration"5627 does not execute more queries per job5628 field: "tags"5629 does not execute more queries per job5630 sorting and pagination5631 with project search term5632 set to empty string5633 with n = 15634 returns paged result5635 behaves like a working graphql query5636 returns a successful response5637 with n = 25638 returns non-paged result5639 set to partial match5640 with n = 15641 returns paged result with no additional pages5642 behaves like a working graphql query5643 returns a successful response5644Projects::IssuesController5645 GET #new5646 behaves like observability csp policy5647 when there is no CSP config5648 does not add any csp header5649 when observability is disabled5650 does not add observability urls to the csp header5651 when frame-src exists in the CSP config5652 appends the proper url to frame-src CSP directives5653 when signin is already present in the policy5654 does not append signin again5655 when oauth is already present in the policy5656 does not append oauth again5657 when default-src exists in the CSP config5658 does not change default-src5659 appends the proper url to frame-src CSP directives5660 when frame-src and default-src exist in the CSP config5661 appends to frame-src CSP directives5662 GET #show5663 behaves like observability csp policy5664 when there is no CSP config5665 does not add any csp header5666 when observability is disabled5667 does not add observability urls to the csp header5668 when frame-src exists in the CSP config5669 appends the proper url to frame-src CSP directives5670 when signin is already present in the policy5671 does not append signin again5672 when oauth is already present in the policy5673 does not append oauth again5674 when default-src exists in the CSP config5675 does not change default-src5676 appends the proper url to frame-src CSP directives5677 when frame-src and default-src exist in the CSP config5678 appends to frame-src CSP directives5679 incident tabs5680 redirects to the issues route for non-incidents5681 responds with selected tab for incidents5682 GET #discussions5683 pagination5684 returns paginated notes and cursor based on per_page param5685 token authentication5686 when public project5687 behaves like authenticates sessionless user for the request spec5688 index atom5689 when the 'private_token' param is populated with the personal access token5690 when valid token5691 when resource is public5692 authenticates user and returns response with ok status5693 when user with expired password5694 does not authenticate user and returns response with ok status5695 when the personal access token has no api scope5696 when resource is public5697 does not authenticate user and returns response with ok status5698 when invalid token5699 when resource is public5700 does not authenticate user and returns response with ok status5701 when the 'PRIVATE-TOKEN' header is populated with the personal access token5702 when valid token5703 when resource is public5704 authenticates user and returns response with ok status5705 when user with expired password5706 does not authenticate user and returns response with ok status5707 when the personal access token has no api scope5708 when resource is public5709 does not authenticate user and returns response with ok status5710 when invalid token5711 when resource is public5712 does not authenticate user and returns response with ok status5713 when the 'feed_token' param is populated with the feed token5714 when valid token5715 when resource is public5716 authenticates user and returns response with ok status5717 when user with expired password5718 does not authenticate user and returns response with ok status5719 when invalid token5720 when resource is public5721 does not authenticate user and returns response with ok status5722 behaves like authenticates sessionless user for the request spec5723 calendar ics5724 when the 'private_token' param is populated with the personal access token5725 when valid token5726 when resource is public5727 authenticates user and returns response with ok status5728 when user with expired password5729 does not authenticate user and returns response with ok status5730 when the personal access token has no api scope5731 when resource is public5732 does not authenticate user and returns response with ok status5733 when invalid token5734 when resource is public5735 does not authenticate user and returns response with ok status5736 when the 'PRIVATE-TOKEN' header is populated with the personal access token5737 when valid token5738 when resource is public5739 authenticates user and returns response with ok status5740 when user with expired password5741 does not authenticate user and returns response with ok status5742 when the personal access token has no api scope5743 when resource is public5744 does not authenticate user and returns response with ok status5745 when invalid token5746 when resource is public5747 does not authenticate user and returns response with ok status5748 when the 'feed_token' param is populated with the feed token5749 when valid token5750 when resource is public5751 authenticates user and returns response with ok status5752 when user with expired password5753 does not authenticate user and returns response with ok status5754 when invalid token5755 when resource is public5756 does not authenticate user and returns response with ok status5757 when private project5758 behaves like authenticates sessionless user for the request spec5759 index atom5760 when the 'private_token' param is populated with the personal access token5761 when valid token5762 when resource is private5763 authenticates user and returns response with ok status5764 when user with expired password5765 does not return response with ok status5766 when password expiration is not applicable5767 when ldap user5768 authenticates user and returns response with ok status5769 when the personal access token has no api scope5770 when resource is private5771 does not return response with ok status5772 when invalid token5773 when resource is private5774 does not return response with ok status5775 when the 'PRIVATE-TOKEN' header is populated with the personal access token5776 when valid token5777 when resource is private5778 authenticates user and returns response with ok status5779 when user with expired password5780 does not return response with ok status5781 when password expiration is not applicable5782 when ldap user5783 authenticates user and returns response with ok status5784 when the personal access token has no api scope5785 when resource is private5786 does not return response with ok status5787 when invalid token5788 when resource is private5789 does not return response with ok status5790 when the 'feed_token' param is populated with the feed token5791 when valid token5792 when resource is private5793 authenticates user and returns response with ok status5794 when user with expired password5795 does not return response with ok status5796 when password expiration is not applicable5797 when ldap user5798 authenticates user and returns response with ok status5799 when invalid token5800 when resource is private5801 does not return response with ok status5802 behaves like authenticates sessionless user for the request spec5803 calendar ics5804 when the 'private_token' param is populated with the personal access token5805 when valid token5806 when resource is private5807 authenticates user and returns response with ok status5808 when user with expired password5809 does not return response with ok status5810 when password expiration is not applicable5811 when ldap user5812 authenticates user and returns response with ok status5813 when the personal access token has no api scope5814 when resource is private5815 does not return response with ok status5816 when invalid token5817 when resource is private5818 does not return response with ok status5819 when the 'PRIVATE-TOKEN' header is populated with the personal access token5820 when valid token5821 when resource is private5822 authenticates user and returns response with ok status5823 when user with expired password5824 does not return response with ok status5825 when password expiration is not applicable5826 when ldap user5827 authenticates user and returns response with ok status5828 when the personal access token has no api scope5829 when resource is private5830 does not return response with ok status5831 when invalid token5832 when resource is private5833 does not return response with ok status5834 when the 'feed_token' param is populated with the feed token5835 when valid token5836 when resource is private5837 authenticates user and returns response with ok status5838 when user with expired password5839 does not return response with ok status5840 when password expiration is not applicable5841 when ldap user5842 authenticates user and returns response with ok status5843 when invalid token5844 when resource is private5845 does not return response with ok status5846merge requests discussions5847 GET /:namespace/:project/-/merge_requests/:iid/discussions5848 returns 2005849 avoids N+1 DB queries5850 limits Gitaly queries5851 caching5852 behaves like cache hit5853 gets cached on subsequent requests5854 when a note in a discussion got updated5855 behaves like cache miss5856WARNING: You're overriding a previous stub implementation of `represent`. Called from /builds/gitlab-org/gitlab/spec/requests/projects/merge_requests_discussions_spec.rb:75:in `block (6 levels) in <top (required)>'.. Called from /builds/gitlab-org/gitlab/spec/requests/projects/merge_requests_discussions_spec.rb:75:in `block (6 levels) in <top (required)>'.5857 does not hit a warm cache5858 when a note in a discussion got its reference state updated5859 behaves like cache miss5860WARNING: You're overriding a previous stub implementation of `represent`. Called from /builds/gitlab-org/gitlab/spec/requests/projects/merge_requests_discussions_spec.rb:75:in `block (6 levels) in <top (required)>'.. Called from /builds/gitlab-org/gitlab/spec/requests/projects/merge_requests_discussions_spec.rb:75:in `block (6 levels) in <top (required)>'.5861 does not hit a warm cache5862 when a note in a discussion got resolved5863 behaves like cache miss5864WARNING: You're overriding a previous stub implementation of `represent`. Called from /builds/gitlab-org/gitlab/spec/requests/projects/merge_requests_discussions_spec.rb:75:in `block (6 levels) in <top (required)>'.. Called from /builds/gitlab-org/gitlab/spec/requests/projects/merge_requests_discussions_spec.rb:75:in `block (6 levels) in <top (required)>'.5865 does not hit a warm cache5866 when a note is added to a discussion5867 behaves like cache miss5868WARNING: You're overriding a previous stub implementation of `represent`. Called from /builds/gitlab-org/gitlab/spec/requests/projects/merge_requests_discussions_spec.rb:75:in `block (6 levels) in <top (required)>'.. Called from /builds/gitlab-org/gitlab/spec/requests/projects/merge_requests_discussions_spec.rb:75:in `block (6 levels) in <top (required)>'.5869 does not hit a warm cache5870 when a note is removed from a discussion5871 behaves like cache miss5872WARNING: You're overriding a previous stub implementation of `represent`. Called from /builds/gitlab-org/gitlab/spec/requests/projects/merge_requests_discussions_spec.rb:75:in `block (6 levels) in <top (required)>'.. Called from /builds/gitlab-org/gitlab/spec/requests/projects/merge_requests_discussions_spec.rb:75:in `block (6 levels) in <top (required)>'.5873 does not hit a warm cache5874 when an emoji is awarded to a note in discussion5875 behaves like cache miss5876WARNING: You're overriding a previous stub implementation of `represent`. Called from /builds/gitlab-org/gitlab/spec/requests/projects/merge_requests_discussions_spec.rb:75:in `block (6 levels) in <top (required)>'.. Called from /builds/gitlab-org/gitlab/spec/requests/projects/merge_requests_discussions_spec.rb:75:in `block (6 levels) in <top (required)>'.5877 does not hit a warm cache5878 when an award emoji is removed from a note in discussion5879 behaves like cache miss5880WARNING: You're overriding a previous stub implementation of `represent`. Called from /builds/gitlab-org/gitlab/spec/requests/projects/merge_requests_discussions_spec.rb:75:in `block (6 levels) in <top (required)>'.. Called from /builds/gitlab-org/gitlab/spec/requests/projects/merge_requests_discussions_spec.rb:75:in `block (6 levels) in <top (required)>'.5881 does not hit a warm cache5882 when the diff note position changes5883 behaves like cache miss5884WARNING: You're overriding a previous stub implementation of `represent`. Called from /builds/gitlab-org/gitlab/spec/requests/projects/merge_requests_discussions_spec.rb:75:in `block (6 levels) in <top (required)>'.. Called from /builds/gitlab-org/gitlab/spec/requests/projects/merge_requests_discussions_spec.rb:75:in `block (6 levels) in <top (required)>'.5885 does not hit a warm cache5886 when the HEAD diff note position changes5887 behaves like cache miss5888WARNING: You're overriding a previous stub implementation of `represent`. Called from /builds/gitlab-org/gitlab/spec/requests/projects/merge_requests_discussions_spec.rb:75:in `block (6 levels) in <top (required)>'.. Called from /builds/gitlab-org/gitlab/spec/requests/projects/merge_requests_discussions_spec.rb:75:in `block (6 levels) in <top (required)>'.5889 does not hit a warm cache5890 when author detail changes5891 behaves like cache miss5892WARNING: You're overriding a previous stub implementation of `represent`. Called from /builds/gitlab-org/gitlab/spec/requests/projects/merge_requests_discussions_spec.rb:75:in `block (6 levels) in <top (required)>'.. Called from /builds/gitlab-org/gitlab/spec/requests/projects/merge_requests_discussions_spec.rb:75:in `block (6 levels) in <top (required)>'.5893 does not hit a warm cache5894 when author status changes5895 behaves like cache miss5896WARNING: You're overriding a previous stub implementation of `represent`. Called from /builds/gitlab-org/gitlab/spec/requests/projects/merge_requests_discussions_spec.rb:75:in `block (6 levels) in <top (required)>'.. Called from /builds/gitlab-org/gitlab/spec/requests/projects/merge_requests_discussions_spec.rb:75:in `block (6 levels) in <top (required)>'.5897 does not hit a warm cache5898 when author role changes5899 behaves like cache miss5900WARNING: You're overriding a previous stub implementation of `represent`. Called from /builds/gitlab-org/gitlab/spec/requests/projects/merge_requests_discussions_spec.rb:75:in `block (6 levels) in <top (required)>'.. Called from /builds/gitlab-org/gitlab/spec/requests/projects/merge_requests_discussions_spec.rb:75:in `block (6 levels) in <top (required)>'.5901 does not hit a warm cache5902 when current_user role changes5903 behaves like cache miss5904WARNING: You're overriding a previous stub implementation of `represent`. Called from /builds/gitlab-org/gitlab/spec/requests/projects/merge_requests_discussions_spec.rb:75:in `block (6 levels) in <top (required)>'.. Called from /builds/gitlab-org/gitlab/spec/requests/projects/merge_requests_discussions_spec.rb:75:in `block (6 levels) in <top (required)>'.5905 does not hit a warm cache5906API::Terraform::StateVersion5907 GET /projects/:id/terraform/state/:name/versions/:serial5908 behaves like it depends on value of the `terraform_state.enabled` config5909 when terraform_state.enabled=false5910 returns `forbidden` response5911 when terraform_state.enabled=true5912 returns a successful response5913 with invalid authentication5914 returns unauthorized status5915 with no authentication5916 returns unauthorized status5917 personal acceess token authentication5918 with maintainer permissions5919 returns the state contents at the given version5920 for a project that does not exist5921 returns not found status5922 with developer permissions5923 returns the state contents at the given version5924 with no permissions5925 returns not found status5926 job token authentication5927 with maintainer permissions5928 returns the state contents at the given version5929 returns unauthorized status if the the job is not running5930 for a project that does not exist5931 returns not found status5932 with developer permissions5933 returns the state contents at the given version5934 with no permissions5935 returns not found status5936 DELETE /projects/:id/terraform/state/:name/versions/:serial5937 behaves like it depends on value of the `terraform_state.enabled` config5938 when terraform_state.enabled=false5939 returns `forbidden` response5940 when terraform_state.enabled=true5941 returns a successful response5942 with invalid authentication5943 returns unauthorized status5944 with no authentication5945 returns unauthorized status5946 with maintainer permissions5947 deletes the version5948 version does not exist5949 does not delete a version5950 with developer permissions5951 returns forbidden status5952 with no permissions5953 returns not found status5954API::RpmProjectPackages5955 # order random5956 GET /api/v4/projects/:id/packages/rpm/:package_file_id/:filename5957 behaves like a package tracking event5958 creates a gitlab tracking event pull_package5959 behaves like a job token for RPM requests5960 with job token headers5961 with valid token5962 behaves like returning response status5963 returns not_found5964 with invalid token5965 behaves like returning response status5966 returns unauthorized5967 with invalid user5968 behaves like returning response status5969 returns unauthorized5970 behaves like a deploy token for RPM requests5971 with deploy token headers5972 when token is valid5973 behaves like returning response status5974 returns not_found5975 when token is invalid5976 behaves like returning response status5977 returns unauthorized5978 behaves like a user token for RPM requests5979 with valid project5980 visibility_level: "PUBLIC", user_role: :developer, member: true, user_token: true, shared_examples_name: "process rpm packages upload/download", expected_status: :not_found5981 behaves like process rpm packages upload/download5982 behaves like returning response status5983 returns not_found5984 visibility_level: "PUBLIC", user_role: :guest, member: true, user_token: true, shared_examples_name: "process rpm packages upload/download", expected_status: :forbidden5985 behaves like process rpm packages upload/download5986 behaves like returning response status5987 returns forbidden5988 visibility_level: "PUBLIC", user_role: :developer, member: true, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized5989 behaves like rejects rpm packages access5990 has the correct response header5991 behaves like returning response status5992 returns unauthorized5993 visibility_level: "PUBLIC", user_role: :guest, member: true, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized5994 behaves like rejects rpm packages access5995 has the correct response header5996 behaves like returning response status5997 returns unauthorized5998 visibility_level: "PUBLIC", user_role: :developer, member: false, user_token: true, shared_examples_name: "process rpm packages upload/download", expected_status: :not_found5999 behaves like process rpm packages upload/download6000 behaves like returning response status6001 returns not_found6002 visibility_level: "PUBLIC", user_role: :guest, member: false, user_token: true, shared_examples_name: "process rpm packages upload/download", expected_status: :not_found6003 behaves like process rpm packages upload/download6004 behaves like returning response status6005 returns not_found6006 visibility_level: "PUBLIC", user_role: :developer, member: false, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized6007 behaves like rejects rpm packages access6008 has the correct response header6009 behaves like returning response status6010 returns unauthorized6011 visibility_level: "PUBLIC", user_role: :guest, member: false, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized6012 behaves like rejects rpm packages access6013 has the correct response header6014 behaves like returning response status6015 returns unauthorized6016 visibility_level: "PUBLIC", user_role: :anonymous, member: false, user_token: true, shared_examples_name: "process rpm packages upload/download", expected_status: :unauthorized6017 behaves like process rpm packages upload/download6018 behaves like returning response status6019 returns unauthorized6020 visibility_level: "PRIVATE", user_role: :developer, member: true, user_token: true, shared_examples_name: "process rpm packages upload/download", expected_status: :not_found6021 behaves like process rpm packages upload/download6022 behaves like returning response status6023 returns not_found6024 visibility_level: "PRIVATE", user_role: :guest, member: true, user_token: true, shared_examples_name: "rejects rpm packages access", expected_status: :forbidden6025 behaves like rejects rpm packages access6026 behaves like returning response status6027 returns forbidden6028 visibility_level: "PRIVATE", user_role: :developer, member: true, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized6029 behaves like rejects rpm packages access6030 has the correct response header6031 behaves like returning response status6032 returns unauthorized6033 visibility_level: "PRIVATE", user_role: :guest, member: true, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized6034 behaves like rejects rpm packages access6035 has the correct response header6036 behaves like returning response status6037 returns unauthorized6038 visibility_level: "PRIVATE", user_role: :developer, member: false, user_token: true, shared_examples_name: "rejects rpm packages access", expected_status: :not_found6039 behaves like rejects rpm packages access6040 behaves like returning response status6041 returns not_found6042 visibility_level: "PRIVATE", user_role: :guest, member: false, user_token: true, shared_examples_name: "rejects rpm packages access", expected_status: :not_found6043 behaves like rejects rpm packages access6044 behaves like returning response status6045 returns not_found6046 visibility_level: "PRIVATE", user_role: :developer, member: false, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized6047 behaves like rejects rpm packages access6048 has the correct response header6049 behaves like returning response status6050 returns unauthorized6051 visibility_level: "PRIVATE", user_role: :guest, member: false, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized6052 behaves like rejects rpm packages access6053 has the correct response header6054 behaves like returning response status6055 returns unauthorized6056 visibility_level: "PRIVATE", user_role: :anonymous, member: false, user_token: true, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized6057 behaves like rejects rpm packages access6058 has the correct response header6059 behaves like returning response status6060 returns unauthorized6061 POST /api/v4/projects/:project_id/packages/rpm6062 with user token6063 with valid project6064 visibility_level: "PUBLIC", user_role: :developer, member: true, user_token: true, shared_examples_name: "process rpm packages upload/download", expected_status: :not_found, tracked: true6065 behaves like a package tracking event6066 creates a gitlab tracking event push_package6067 behaves like process rpm packages upload/download6068 behaves like returning response status6069 returns not_found6070 visibility_level: "PUBLIC", user_role: :guest, member: true, user_token: true, shared_examples_name: "rejects rpm packages access", expected_status: :forbidden, tracked: false6071 behaves like not a package tracking event6072 does not create a gitlab tracking event6073 behaves like rejects rpm packages access6074 behaves like returning response status6075 returns forbidden6076 visibility_level: "PUBLIC", user_role: :developer, member: true, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized, tracked: false6077 behaves like not a package tracking event6078 does not create a gitlab tracking event6079 behaves like rejects rpm packages access6080 has the correct response header6081 behaves like returning response status6082 returns unauthorized6083 visibility_level: "PUBLIC", user_role: :guest, member: true, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized, tracked: false6084 behaves like not a package tracking event6085 does not create a gitlab tracking event6086 behaves like rejects rpm packages access6087 has the correct response header6088 behaves like returning response status6089 returns unauthorized6090 visibility_level: "PUBLIC", user_role: :developer, member: false, user_token: true, shared_examples_name: "rejects rpm packages access", expected_status: :not_found, tracked: false6091 behaves like not a package tracking event6092 does not create a gitlab tracking event6093 behaves like rejects rpm packages access6094 behaves like returning response status6095 returns not_found6096 visibility_level: "PUBLIC", user_role: :guest, member: false, user_token: true, shared_examples_name: "rejects rpm packages access", expected_status: :not_found, tracked: false6097 behaves like not a package tracking event6098 does not create a gitlab tracking event6099 behaves like rejects rpm packages access6100 behaves like returning response status6101 returns not_found6102 visibility_level: "PUBLIC", user_role: :developer, member: false, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized, tracked: false6103 behaves like not a package tracking event6104 does not create a gitlab tracking event6105 behaves like rejects rpm packages access6106 has the correct response header6107 behaves like returning response status6108 returns unauthorized6109 visibility_level: "PUBLIC", user_role: :guest, member: false, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized, tracked: false6110 behaves like not a package tracking event6111 does not create a gitlab tracking event6112 behaves like rejects rpm packages access6113 has the correct response header6114 behaves like returning response status6115 returns unauthorized6116 visibility_level: "PUBLIC", user_role: :anonymous, member: false, user_token: true, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized, tracked: false6117 behaves like not a package tracking event6118 does not create a gitlab tracking event6119 behaves like rejects rpm packages access6120 has the correct response header6121 behaves like returning response status6122 returns unauthorized6123 visibility_level: "PRIVATE", user_role: :developer, member: true, user_token: true, shared_examples_name: "process rpm packages upload/download", expected_status: :not_found, tracked: true6124 behaves like a package tracking event6125 creates a gitlab tracking event push_package6126 behaves like process rpm packages upload/download6127 behaves like returning response status6128 returns not_found6129 visibility_level: "PRIVATE", user_role: :guest, member: true, user_token: true, shared_examples_name: "rejects rpm packages access", expected_status: :forbidden, tracked: false6130 behaves like not a package tracking event6131 does not create a gitlab tracking event6132 behaves like rejects rpm packages access6133 behaves like returning response status6134 returns forbidden6135 visibility_level: "PRIVATE", user_role: :developer, member: true, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized, tracked: false6136 behaves like not a package tracking event6137 does not create a gitlab tracking event6138 behaves like rejects rpm packages access6139 has the correct response header6140 behaves like returning response status6141 returns unauthorized6142 visibility_level: "PRIVATE", user_role: :guest, member: true, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized, tracked: false6143 behaves like not a package tracking event6144 does not create a gitlab tracking event6145 behaves like rejects rpm packages access6146 has the correct response header6147 behaves like returning response status6148 returns unauthorized6149 visibility_level: "PRIVATE", user_role: :developer, member: false, user_token: true, shared_examples_name: "rejects rpm packages access", expected_status: :not_found, tracked: false6150 behaves like not a package tracking event6151 does not create a gitlab tracking event6152 behaves like rejects rpm packages access6153 behaves like returning response status6154 returns not_found6155 visibility_level: "PRIVATE", user_role: :guest, member: false, user_token: true, shared_examples_name: "rejects rpm packages access", expected_status: :not_found, tracked: false6156 behaves like not a package tracking event6157 does not create a gitlab tracking event6158 behaves like rejects rpm packages access6159 behaves like returning response status6160 returns not_found6161 visibility_level: "PRIVATE", user_role: :developer, member: false, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized, tracked: false6162 behaves like not a package tracking event6163 does not create a gitlab tracking event6164 behaves like rejects rpm packages access6165 has the correct response header6166 behaves like returning response status6167 returns unauthorized6168 visibility_level: "PRIVATE", user_role: :guest, member: false, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized, tracked: false6169 behaves like not a package tracking event6170 does not create a gitlab tracking event6171 behaves like rejects rpm packages access6172 has the correct response header6173 behaves like returning response status6174 returns unauthorized6175 visibility_level: "PRIVATE", user_role: :anonymous, member: false, user_token: true, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized, tracked: false6176 behaves like not a package tracking event6177 does not create a gitlab tracking event6178 behaves like rejects rpm packages access6179 has the correct response header6180 behaves like returning response status6181 returns unauthorized6182 when user can upload file6183 when file size too large6184 returns an error6185 when filelists.xml file size too large6186 returns an error6187 behaves like a deploy token for RPM requests6188 with deploy token headers6189 when token is valid6190 behaves like returning response status6191 returns not_found6192 when token is invalid6193 behaves like returning response status6194 returns unauthorized6195 behaves like a job token for RPM requests6196 with job token headers6197 with valid token6198 behaves like returning response status6199 returns not_found6200 with invalid token6201 behaves like returning response status6202 returns unauthorized6203 with invalid user6204 behaves like returning response status6205 returns unauthorized6206 GET /api/v4/projects/:project_id/packages/rpm/repodata/:filename6207 behaves like a job token for RPM requests6208 with job token headers6209 with valid token6210 behaves like returning response status6211 returns success6212 with invalid token6213 behaves like returning response status6214 returns unauthorized6215 with invalid user6216 behaves like returning response status6217 returns unauthorized6218 behaves like a deploy token for RPM requests6219 with deploy token headers6220 when token is valid6221 behaves like returning response status6222 returns success6223 when token is invalid6224 behaves like returning response status6225 returns unauthorized6226 behaves like a user token for RPM requests6227 with valid project6228 visibility_level: "PUBLIC", user_role: :developer, member: true, user_token: true, shared_examples_name: "process rpm packages upload/download", expected_status: :success6229 behaves like process rpm packages upload/download6230 behaves like returning response status6231 returns success6232 visibility_level: "PUBLIC", user_role: :guest, member: true, user_token: true, shared_examples_name: "process rpm packages upload/download", expected_status: :forbidden6233 behaves like process rpm packages upload/download6234 behaves like returning response status6235 returns forbidden6236 visibility_level: "PUBLIC", user_role: :developer, member: true, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized6237 behaves like rejects rpm packages access6238 has the correct response header6239 behaves like returning response status6240 returns unauthorized6241 visibility_level: "PUBLIC", user_role: :guest, member: true, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized6242 behaves like rejects rpm packages access6243 has the correct response header6244 behaves like returning response status6245 returns unauthorized6246 visibility_level: "PUBLIC", user_role: :developer, member: false, user_token: true, shared_examples_name: "process rpm packages upload/download", expected_status: :not_found6247 behaves like process rpm packages upload/download6248 behaves like returning response status6249 returns not_found6250 visibility_level: "PUBLIC", user_role: :guest, member: false, user_token: true, shared_examples_name: "process rpm packages upload/download", expected_status: :not_found6251 behaves like process rpm packages upload/download6252 behaves like returning response status6253 returns not_found6254 visibility_level: "PUBLIC", user_role: :developer, member: false, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized6255 behaves like rejects rpm packages access6256 has the correct response header6257 behaves like returning response status6258 returns unauthorized6259 visibility_level: "PUBLIC", user_role: :guest, member: false, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized6260 behaves like rejects rpm packages access6261 has the correct response header6262 behaves like returning response status6263 returns unauthorized6264 visibility_level: "PUBLIC", user_role: :anonymous, member: false, user_token: true, shared_examples_name: "process rpm packages upload/download", expected_status: :unauthorized6265 behaves like process rpm packages upload/download6266 behaves like returning response status6267 returns unauthorized6268 visibility_level: "PRIVATE", user_role: :developer, member: true, user_token: true, shared_examples_name: "process rpm packages upload/download", expected_status: :success6269 behaves like process rpm packages upload/download6270 behaves like returning response status6271 returns success6272 visibility_level: "PRIVATE", user_role: :guest, member: true, user_token: true, shared_examples_name: "rejects rpm packages access", expected_status: :forbidden6273 behaves like rejects rpm packages access6274 behaves like returning response status6275 returns forbidden6276 visibility_level: "PRIVATE", user_role: :developer, member: true, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized6277 behaves like rejects rpm packages access6278 has the correct response header6279 behaves like returning response status6280 returns unauthorized6281 visibility_level: "PRIVATE", user_role: :guest, member: true, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized6282 behaves like rejects rpm packages access6283 has the correct response header6284 behaves like returning response status6285 returns unauthorized6286 visibility_level: "PRIVATE", user_role: :developer, member: false, user_token: true, shared_examples_name: "rejects rpm packages access", expected_status: :not_found6287 behaves like rejects rpm packages access6288 behaves like returning response status6289 returns not_found6290 visibility_level: "PRIVATE", user_role: :guest, member: false, user_token: true, shared_examples_name: "rejects rpm packages access", expected_status: :not_found6291 behaves like rejects rpm packages access6292 behaves like returning response status6293 returns not_found6294 visibility_level: "PRIVATE", user_role: :developer, member: false, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized6295 behaves like rejects rpm packages access6296 has the correct response header6297 behaves like returning response status6298 returns unauthorized6299 visibility_level: "PRIVATE", user_role: :guest, member: false, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized6300 behaves like rejects rpm packages access6301 has the correct response header6302 behaves like returning response status6303 returns unauthorized6304 visibility_level: "PRIVATE", user_role: :anonymous, member: false, user_token: true, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized6305 behaves like rejects rpm packages access6306 has the correct response header6307 behaves like returning response status6308 returns unauthorized6309 POST /api/v4/projects/:project_id/packages/rpm/authorize6310 behaves like returning response status6311 returns not_found6312 when feature flag is disabled6313 behaves like returning response status6314 returns not_found6315 when package feature is disabled6316 behaves like returning response status6317 returns not_found6318Groups::EmailCampaignsController6319 GET #index6320 track parameter6321 when valid6322 track: :create6323 behaves like track and redirect6324 redirects6325 on SaaS6326 emits a snowplow event6327 does not save the cta_click6328 when not on.com6329 saves the cta_click6330 does not track snowplow events6331 track: :team_short6332 behaves like track and redirect6333 redirects6334 on SaaS6335 emits a snowplow event6336 does not save the cta_click6337 when not on.com6338 saves the cta_click6339 does not track snowplow events6340 track: :trial_short6341 behaves like track and redirect6342 redirects6343 on SaaS6344 emits a snowplow event6345 does not save the cta_click6346 when not on.com6347 saves the cta_click6348 does not track snowplow events6349 track: :admin_verify6350 behaves like track and redirect6351 redirects6352 on SaaS6353 emits a snowplow event6354 does not save the cta_click6355 when not on.com6356 saves the cta_click6357 does not track snowplow events6358 track: :verify6359 behaves like track and redirect6360 redirects6361 on SaaS6362 emits a snowplow event6363 does not save the cta_click6364 when not on.com6365 saves the cta_click6366 does not track snowplow events6367 track: :trial6368 behaves like track and redirect6369 redirects6370 on SaaS6371 emits a snowplow event6372 does not save the cta_click6373 when not on.com6374 saves the cta_click6375 does not track snowplow events6376 track: :team6377 behaves like track and redirect6378 redirects6379 on SaaS6380 emits a snowplow event6381 does not save the cta_click6382 when not on.com6383 saves the cta_click6384 does not track snowplow events6385 when invalid6386 track: nil6387 behaves like no track and 4046388 returns 4046389 does not emit a snowplow event6390 track: "xxxx"6391 behaves like no track and 4046392 returns 4046393 does not emit a snowplow event6394 series parameter6395 when valid6396 series: 06397 behaves like track and redirect6398 redirects6399 on SaaS6400 emits a snowplow event6401 does not save the cta_click6402 when not on.com6403 saves the cta_click6404 does not track snowplow events6405 series: 16406 behaves like track and redirect6407 redirects6408 on SaaS6409 emits a snowplow event6410 does not save the cta_click6411 when not on.com6412 saves the cta_click6413 does not track snowplow events6414 series: 26415 behaves like track and redirect6416 redirects6417 on SaaS6418 emits a snowplow event6419 does not save the cta_click6420 when not on.com6421 saves the cta_click6422 does not track snowplow events6423 when invalid6424 series: -16425 behaves like no track and 4046426 returns 4046427 does not emit a snowplow event6428 series: nil6429 behaves like no track and 4046430 returns 4046431 does not emit a snowplow event6432 series: 36433 behaves like no track and 4046434 returns 4046435 does not emit a snowplow event6436Admin::IntegrationsController6437 behaves like Integrations::Actions6438 GET #edit6439 assigns the integration6440 PUT #update6441 updates the integration with the provided params and redirects to the form6442 when sending a password field6443 updates the integration with the password and other params6444 when sending a blank password field6445 ignores the password field and saves the other params6446 #edit6447 apple_app_store6448 successfully displays the template6449 asana6450 successfully displays the template6451 assembla6452 successfully displays the template6453 bamboo6454 successfully displays the template6455 bugzilla6456 successfully displays the template6457 buildkite6458 successfully displays the template6459 campfire6460 successfully displays the template6461 confluence6462 successfully displays the template6463 custom_issue_tracker6464 successfully displays the template6465 datadog6466 successfully displays the template6467 discord6468 successfully displays the template6469 drone_ci6470 successfully displays the template6471 emails_on_push6472 successfully displays the template6473 ewm6474 successfully displays the template6475 external_wiki6476 successfully displays the template6477 github6478 successfully displays the template6479 gitlab_slack_application6480 successfully displays the template6481 google_play6482 successfully displays the template6483 hangouts_chat6484 successfully displays the template6485 harbor6486 successfully displays the template6487 irker6488 successfully displays the template6489 jenkins6490 successfully displays the template6491 jira6492 successfully displays the template6493 mattermost6494 successfully displays the template6495 mattermost_slash_commands6496 successfully displays the template6497 microsoft_teams6498 successfully displays the template6499 mock_ci6500 successfully displays the template6501 mock_monitoring6502 successfully displays the template6503 packagist6504 successfully displays the template6505 pipelines_email6506 successfully displays the template6507 pivotaltracker6508 successfully displays the template6509 prometheus6510 successfully displays the template6511 pumble6512 successfully displays the template6513 pushover6514 successfully displays the template6515 redmine6516 successfully displays the template6517 shimo6518 successfully displays the template6519 slack6520 successfully displays the template6521 slack_slash_commands6522 successfully displays the template6523 squash_tm6524 successfully displays the template6525 teamcity6526 successfully displays the template6527 unify_circuit6528 successfully displays the template6529 webex_teams6530 successfully displays the template6531 youtrack6532 successfully displays the template6533 zentao6534 successfully displays the template6535 when GitLab.com6536 returns 4046537 #update6538 valid params6539 updates the integration6540 calls to PropagateIntegrationWorker6541 invalid params6542 does not update the integration6543 does not call to PropagateIntegrationWorker6544 #reset6545 returns 200 OK6546 deletes the integration and all inheriting integrations6547getting a work item list for a project6548 returns only items visible to user6549 N + 1 queries6550 when querying root fields6551 behaves like work items resolver without N + 1 queries6552 avoids N+1 queries6553 when querying the widget interface6554 behaves like work items resolver without N + 1 queries6555 avoids N+1 queries6556 when querying WorkItemWidgetHierarchy6557 executes limited number of N+1 queries6558 avoids N+1 queries when children are added to a work item6559 with ordered children6560 returns children ordered by created_at by default6561 when ordered by relative position6562 returns children in correct order6563 behaves like a working graphql query6564 returns a successful response6565 when the user does not have access to the item6566 returns an empty list6567 when the user can see confidential items6568 returns also confidential items6569 when filtering by search6570 behaves like query with a search term6571 returns only matching issuables6572 when filtering by author username6573 returns correct results6574 sorting and pagination6575 when sorting by title ascending6576 behaves like sorted paginated query6577 behaves like requires variables6578 shared example requires variables to be set6580 when sorting6581 sorts correctly6582 when paginating6583 paginates correctly6584 when sorting by title descending6585 behaves like sorted paginated query6586 behaves like requires variables6587 shared example requires variables to be set6589 when sorting6590 sorts correctly6591 when paginating6592 paginates correctly6593 fetching work item notes widget6594 when user has permission to view internal notes6595 behaves like fetches work item notes6596 fetches notes6597 when user cannot view internal notes6598 behaves like fetches work item notes6599 fetches notes6600 when fetching work item notifications widget6601 executes limited number of N+1 queries6602 when fetching work item award emoji widget6603 executes limited number of N+1 queries6604Import::GithubController6605 GET new6606 redirects to GitHub for an access token if logged in with GitHub6607 prompts for an access token if GitHub not configured6608 gets authorization url using oauth client6609 behaves like a GitHub-ish import controller: GET new6610 redirects to status if we already have a token6611 renders the :new page if no token is present in session6612 when importing a CI/CD project6613 always prompts for an access token6614 GET callback6615 when auth state param is missing from session6616 reports an error6617 when auth state param is present in session6618 reports an error if state param is invalid6619 when remove_legacy_github_client feature is disabled6620 updates access token if state param is valid6621 includes namespace_id from query params if it is present6622 when remove_legacy_github_client feature is enabled6623 updates access token if state param is valid6624 includes namespace_id from query params if it is present6625 POST personal_access_token6626 behaves like a GitHub-ish import controller: POST personal_access_token6627 updates access token6628 strips access token with spaces6629 passes namespace_id param as query param if it was present6630 GET status6631 with OAuth6632 when OAuth config is missing6633 returns missing config error6634 with invalid access token6635 handles an invalid token6636 when user has few different repos6637 responds with expected high-level structure6638 behaves like calls repos through Clients::Proxy with expected args6639 calls repos list from provider with expected args6640 with namespace_id param6641 when user is allowed to create projects in this namespace6642 provides namespace to the template6643 when user is not allowed to create projects in this namespace6644 renders 4046645 pagination6646 when cursor is specified6647 behaves like calls repos through Clients::Proxy with expected args6648 calls repos list from provider with expected args6649 when relation type params present6650 behaves like calls repos through Clients::Proxy with expected args6651 calls repos list from provider with expected args6652 when organization_login is too long and with ":"6653 behaves like calls repos through Clients::Proxy with expected args6654 calls repos list from provider with expected args6655 when filtering6656 behaves like calls repos through Clients::Proxy with expected args6657 calls repos list from provider with expected args6658 with pagination6659 when before cursor present6660 behaves like calls repos through Clients::Proxy with expected args6661 calls repos list from provider with expected args6662 when after cursor present6663 behaves like calls repos through Clients::Proxy with expected args6664 calls repos list from provider with expected args6665 when user input contains colons and spaces6666 behaves like calls repos through Clients::Proxy with expected args6667 calls repos list from provider with expected args6668 when rate limit threshold is exceeded6669 returns 4296670 POST create6671 behaves like a GitHub-ish import controller: POST create6672 returns 200 response when the project is imported successfully6673 returns 422 response with the base error when the project could not be imported6674 touches the etag cache store6675 when the repository owner is the provider user6676 when the provider user and GitLab user's usernames match6677 takes the current user's namespace6678 when the provider user and GitLab user's usernames don't match6679 takes the current user's namespace6680 when the repository owner is not the provider user6681 when a namespace with the provider user's username already exists6682 when the namespace is owned by the GitLab user6683 takes the existing namespace6684 when the namespace is not owned by the GitLab user6685 creates a project using user's namespace6686 when a namespace with the provider user's username doesn't exist6687 when current user can create namespaces6688 does not create the namespace6689 user has chosen a namespace and name for the project6690 takes the selected namespace and name6691 user has chosen an existing nested namespace and name for the project6692 takes the selected namespace and name6693 user has chosen a non-existent nested namespaces and name for the project6694 does not take the selected namespace and name6695 does not create namespaces6696 user has chosen existent and non-existent nested namespaces and name for the project6697 does not take the selected namespace and name6698 does not create the namespaces6699 does not create a new namespace under the user namespace6700 user can use a group without having permissions to create a group6701 takes the selected namespace and name6702 when user can not create projects in the chosen namespace6703 returns 422 response6704 behaves like project import rate limiter6705 when limit exceeds6706 notifies and redirects user6707 GET realtime_changes6708 includes stats in response6709 behaves like a GitHub-ish import controller: GET realtime_changes6710 sets a Poll-Interval header6711 GET failures6712 when import is not finished6713 return bad_request6714 when import is finished6715 includes failure details in response6716 paginates records6717 POST cancel6718 when project import was canceled6719 returns success6720 when project import was not canceled6721 returns error6722 POST cancel_all6723 when import is in progress6724 returns success6725 when there is no imports in progress6726 returns an empty array6727 when there is no projects created by user6728 returns an empty array6729 GET counts6730 returns repos count by type6731SearchController6732 GET /search6733 for issues scope6734 behaves like an efficient database result6735 avoids N+1 database queries6736 for merge_requests scope6737 behaves like an efficient database result6738 avoids N+1 database queries6739 for projects scope6740 behaves like an efficient database result6741 avoids N+1 database queries6742 for milestones scope6743 behaves like an efficient database result6744 avoids N+1 database queries6745 for users scope6746 behaves like an efficient database result6747 avoids N+1 database queries6748 for notes scope6749 behaves like an efficient database result6750 avoids N+1 database queries6751 for blobs scope6752 avoids N+1 database queries6753 for commits scope6754 avoids N+1 database queries6755 for code search6756 sets scope to blobs if code search literals are used6757 when searching by SHA6758 finds a commit and redirects to its page6759 finds a commit in uppercase and redirects to its page6760 finds a commit with a partial sha and redirects to its page6761 redirects to the commit even if another scope result is returned6762 goes to search results with the force_search_results param set6763 does not redirect if commit sha not found in project6764 does not redirect if not using project scope6765 when user cannot read_code6766 does not redirect6767Import::GitlabController6768 GET callback6769 updates access token6770 importable_repos should return an array6771 passes namespace_id query param to status if provided6772 GET status6773 redirects to auth if session does not contain access token6774 when session contains access token6775 behaves like import controller status6776 returns variables for json request6777 when format is html6778 when namespace_id is present6779 when user cannot import projects6780 returns 4046781 when user can import projects6782 returns 2006783 POST create6784 returns 200 response when the project is imported successfully6785 returns 422 response when the project could not be imported6786 when the repository owner is the GitLab.com user6787 when the GitLab.com user and GitLab server user's usernames match6788 takes the current user's namespace6789 when the GitLab.com user and GitLab server user's usernames don't match6790 takes the current user's namespace6791 when the repository owner is not the GitLab.com user6792 when a namespace with the GitLab.com user's username already exists6793 when the namespace is owned by the GitLab server user6794 takes the existing namespace6795 when the namespace is not owned by the GitLab server user6796 doesn't create a project6797 when a namespace with the GitLab.com user's username doesn't exist6798 when current user can create namespaces6799 creates the namespace6800 takes the new namespace6801 when current user can't create namespaces6802 doesn't create the namespace6803 takes the current user's namespace6804 user has chosen an existing nested namespace for the project6805 takes the selected namespace and name6806 user has chosen a non-existent nested namespaces for the project6807 takes the selected namespace and name6808 creates the namespaces6809 new namespace has the right parent6810 user has chosen existent and non-existent nested namespaces and name for the project6811 takes the selected namespace and name6812 creates the namespaces6813 when user can not create projects in the chosen namespace6814 returns 422 response6815 behaves like project import rate limiter6816 when limit exceeds6817 notifies and redirects user6818Projects::TagsController6819 GET index6820 returns the tags for the page6821 returns releases matching those tags6822 default sort for tags6823 sorts tags by recently updated6824 when Gitaly is unavailable6825 format: :html6826 returns 503 status code6827 format: :atom6828 returns 503 status code6829 @tag_pipeline_status6830 when no pipelines exist6831 is empty6832 when multiple tags exist6833 all relevant commit statuses are received6834 when a tag has multiple pipelines6835 chooses the latest to determine status6836 GET show6837 valid tag6838 is expected to respond with 2006839 invalid tag6840 is expected to respond with 4046841 POST #create6842 creates tag6843 when release description is set6844 creates tag and release6845 passes the last pipeline for evidence creation6846 DELETE #destroy6847 deletes tag and redirects to tags path6848API::ProtectedBranches6849 GET /projects/:id/protected_branches6850 when authenticated as a maintainer6851 when search param is not present6852 behaves like protected branches6853 returns the protected branches6854 when search param is present6855 behaves like protected branches6856 returns the protected branches6857 when authenticated as a developer6858 behaves like protected branches6859 returns the protected branches6860 when authenticated as a guest6861 behaves like 403 response6862 returns 4036863 GET /projects/:id/protected_branches/:branch6864 when authenticated as a maintainer6865 behaves like protected branch6866 returns the protected branch6867 when protected branch does not exist6868 behaves like 404 response6869 returns 4046870 when protected branch contains a wildcard6871 behaves like protected branch6872 returns the protected branch6873 when protected branch does not exist6874 behaves like 404 response6875 returns 4046876 when protected branch contains a period6877 behaves like protected branch6878 returns the protected branch6879 when protected branch does not exist6880 behaves like 404 response6881 returns 4046882 when authenticated as a developer6883 behaves like protected branch6884 returns the protected branch6885 when protected branch does not exist6886 behaves like 404 response6887 returns 4046888 when authenticated as a guest6889 behaves like 403 response6890 returns 4036891 POST /projects/:id/protected_branches6892 when authenticated as a maintainer6893 protects a single branch6894 protects a single branch and developers can push6895 protects a single branch and developers can merge6896 protects a single branch and developers can push and merge6897 protects a single branch and no one can push6898 protects a single branch and no one can merge6899 protects a single branch and no one can push or merge6900 protects a single branch and allows force pushes6901 returns a 409 error if the same branch is protected twice6902 when branch has a wildcard in its name6903 protects multiple branches with a wildcard in the name6904 when a policy restricts rule creation6905 prevents creations of the protected branch rule6906 when authenticated as a developer6907 returns a 403 error6908 when authenticated as a guest6909 returns a 403 error6910 PATCH /projects/:id/protected_branches/:name6911 when authenticated as a maintainer6912 updates a single branch6913 when allow_force_push is not set6914 responds with a bad request error6915 when returned protected branch is invalid6916 returns a 4226917 when authenticated as a developer6918 returns a 403 error6919 when authenticated as a guest6920 returns a 403 error6921 DELETE /projects/:id/protected_branches/unprotect/:branch6922 when authenticated as a maintainer6923 unprotects a single branch6924 returns 404 if branch does not exist6925 behaves like 412 response6926 for a modified ressource6927 returns 412 with a JSON error6928 for an unmodified ressource6929 returns 204 with an empty body6930 when a policy restricts rule deletion6931 prevents deletion of the protected branch rule6932 when branch has a wildcard in its name6933 unprotects a wildcard branch6934 when authenticated as a developer6935 returns a 403 error6936 when authenticated as a guest6937 returns a 403 error6938getting Alert Management Alerts6939 with alert data6940 without project permissions6941 is expected to equal nil6942 behaves like a working graphql query6943 returns a successful response6944 with project permissions6945 is expected to eq 26946 returns the correct properties of the alerts6947 behaves like a working graphql query6948 returns a successful response6949 with iid given6950 is expected to eq 16951 is expected to eq "1"6952 behaves like a working graphql query6953 returns a successful response6954 with statuses given6955 is expected to eq 16956 is expected to eq "2"6957 behaves like a working graphql query6958 returns a successful response6959 sorting data given6960 sorts in the correct order6961 behaves like a working graphql query6962 returns a successful response6963 ascending order6964 sorts in the correct order6965 searching6966 is expected to eq 16967 is expected to eq "1"6968 behaves like a working graphql query6969 returns a successful response6970 unknown criteria6971 is expected to eq 06972 assignee_username6973 is expected to eq "2"6974 behaves like a working graphql query6975 returns a successful response6976Projects::AutocompleteSourcesController6977 GET commands6978 with a public project6979 with an issue6980 behaves like issuable commands6981 returns empty array when no user logged in6982 raises an error when no target type specified6983 returns an array of commands6984 with work items6985 behaves like issuable commands6986 returns empty array when no user logged in6987 raises an error when no target type specified6988 returns an array of commands6989 with merge request6990 behaves like issuable commands6991 returns empty array when no user logged in6992 raises an error when no target type specified6993 returns an array of commands6994 GET labels6995 with issues6996 behaves like label commands6997 raises an error when no target type specified6998 returns an array of labels6999 with work items7000 behaves like label commands7001 raises an error when no target type specified7002 returns an array of labels7003 GET members7004 when logged in7005 returns 400 when no target type specified7006 with issue7007 behaves like all members are returned7008 returns an array of member object7009 with work item7010 behaves like all members are returned7011 returns an array of member object7012 when anonymous7013 with issue7014 behaves like private project is inaccessible7015 redirects to login page for private project7016 behaves like only public members are returned for public project7017 only returns public members7018 with work item7019 behaves like private project is inaccessible7020 redirects to login page for private project7021 behaves like only public members are returned for public project7022 only returns public members7023 GET milestones7024 lists milestones7025 when user cannot read project issues and merge requests7026 renders 4047027 GET contacts7028 when feature flag is enabled7029 when a group has contact relations enabled7030 when a user can read contacts7031 lists contacts7032 when a user can not read contacts7033 renders 4047034 when a group has contact relations disabled7035 renders 4047036Oauth::ApplicationsController7037 project members7038 GET #new7039 is expected to respond with numeric status code ok7040 behaves like redirects to login page when the user is not signed in7041 is expected to redirect to "/users/sign_in"7042 behaves like redirects to 2fa setup page when the user requires it7043 when 2fa is set up on application level7044 is expected to redirect to "/-/profile/two_factor_auth"7045 when 2fa is set up on group level7046 is expected to redirect to "/-/profile/two_factor_auth"7047 DELETE #destroy7048 is expected to redirect to "http://test.host/oauth/applications"7049 behaves like redirects to login page when the user is not signed in7050 is expected to redirect to "/users/sign_in"7051 behaves like redirects to 2fa setup page when the user requires it7052 when 2fa is set up on application level7053 is expected to redirect to "/-/profile/two_factor_auth"7054 when 2fa is set up on group level7055 is expected to redirect to "/-/profile/two_factor_auth"7056 GET #edit7057 is expected to respond with numeric status code ok7058 behaves like redirects to login page when the user is not signed in7059 is expected to redirect to "/users/sign_in"7060 behaves like redirects to 2fa setup page when the user requires it7061 when 2fa is set up on application level7062 is expected to redirect to "/-/profile/two_factor_auth"7063 when 2fa is set up on group level7064 is expected to redirect to "/-/profile/two_factor_auth"7065 PUT #update7066 is expected to redirect to "http://test.host/oauth/applications/15"7067 behaves like redirects to login page when the user is not signed in7068 is expected to redirect to "/users/sign_in"7069 behaves like redirects to 2fa setup page when the user requires it7070 when 2fa is set up on application level7071 is expected to redirect to "/-/profile/two_factor_auth"7072 when 2fa is set up on group level7073 is expected to redirect to "/-/profile/two_factor_auth"7074 PUT #renew7075 is expected to respond with numeric status code ok7076 is expected to change `application.reload.secret`7077 returns the secret in json format7078 behaves like redirects to login page when the user is not signed in7079 is expected to redirect to "/users/sign_in"7080 behaves like redirects to 2fa setup page when the user requires it7081 when 2fa is set up on application level7082 is expected to redirect to "/-/profile/two_factor_auth"7083 when 2fa is set up on group level7084 is expected to redirect to "/-/profile/two_factor_auth"7085 when renew fails7086 is expected not to change `application.reload.secret`7087 is expected to respond with numeric status code unprocessable_entity7088 GET #show7089 is expected to respond with numeric status code ok7090 behaves like redirects to login page when the user is not signed in7091 is expected to redirect to "/users/sign_in"7092 behaves like redirects to 2fa setup page when the user requires it7093 when 2fa is set up on application level7094 is expected to redirect to "/-/profile/two_factor_auth"7095 when 2fa is set up on group level7096 is expected to redirect to "/-/profile/two_factor_auth"7097 GET #index7098 is expected to respond with numeric status code ok7099 when OAuth applications are disabled7100 is expected to respond with numeric status code ok7101 behaves like redirects to login page when the user is not signed in7102 is expected to redirect to "/users/sign_in"7103 behaves like redirects to 2fa setup page when the user requires it7104 when 2fa is set up on application level7105 is expected to redirect to "/-/profile/two_factor_auth"7106 when 2fa is set up on group level7107 is expected to redirect to "/-/profile/two_factor_auth"7108 POST #create7109 creates an application7110 redirects back to profile page if OAuth applications are disabled7111 when redirect_uri is invalid7112 shows an error for a forbidden URI7113 when scopes are not present7114 shows an error for blank scopes7115 when scopes are invalid7116 shows an error for invalid scopes7117 behaves like redirects to login page when the user is not signed in7118 is expected to redirect to "/users/sign_in"7119 behaves like redirects to 2fa setup page when the user requires it7120 when 2fa is set up on application level7121 is expected to redirect to "/-/profile/two_factor_auth"7122 when 2fa is set up on group level7123 is expected to redirect to "/-/profile/two_factor_auth"7124 Helpers7125 current_user_mode available7126 includes Two-factor enforcement concern7127 locale7128 sets user's locale7129Projects::TagsController7130 token authentication7131 when public project7132 behaves like authenticates sessionless user for the request spec7133 index atom7134 when the 'private_token' param is populated with the personal access token7135 when valid token7136 when resource is public7137 authenticates user and returns response with ok status7138 when user with expired password7139 does not authenticate user and returns response with ok status7140 when the personal access token has no api scope7141 when resource is public7142 does not authenticate user and returns response with ok status7143 when invalid token7144 when resource is public7145 does not authenticate user and returns response with ok status7146 when the 'PRIVATE-TOKEN' header is populated with the personal access token7147 when valid token7148 when resource is public7149 authenticates user and returns response with ok status7150 when user with expired password7151 does not authenticate user and returns response with ok status7152 when the personal access token has no api scope7153 when resource is public7154 does not authenticate user and returns response with ok status7155 when invalid token7156 when resource is public7157 does not authenticate user and returns response with ok status7158 when the 'feed_token' param is populated with the feed token7159 when valid token7160 when resource is public7161 authenticates user and returns response with ok status7162 when user with expired password7163 does not authenticate user and returns response with ok status7164 when invalid token7165 when resource is public7166 does not authenticate user and returns response with ok status7167 when private project7168 behaves like authenticates sessionless user for the request spec7169 index atom7170 when the 'private_token' param is populated with the personal access token7171 when valid token7172 when resource is private7173 authenticates user and returns response with ok status7174 when user with expired password7175 does not return response with ok status7176 when password expiration is not applicable7177 when ldap user7178 authenticates user and returns response with ok status7179 when the personal access token has no api scope7180 when resource is private7181 does not return response with ok status7182 when invalid token7183 when resource is private7184 does not return response with ok status7185 when the 'PRIVATE-TOKEN' header is populated with the personal access token7186 when valid token7187 when resource is private7188 authenticates user and returns response with ok status7189 when user with expired password7190 does not return response with ok status7191 when password expiration is not applicable7192 when ldap user7193 authenticates user and returns response with ok status7194 when the personal access token has no api scope7195 when resource is private7196 does not return response with ok status7197 when invalid token7198 when resource is private7199 does not return response with ok status7200 when the 'feed_token' param is populated with the feed token7201 when valid token7202 when resource is private7203 authenticates user and returns response with ok status7204 when user with expired password7205 does not return response with ok status7206 when password expiration is not applicable7207 when ldap user7208 authenticates user and returns response with ok status7209 when invalid token7210 when resource is private7211 does not return response with ok status7212API::ProjectRepositoryStorageMoves7213 behaves like repository_storage_moves API7214 GET /projects/:id/repository_storage_moves7215 behaves like get container repository storage move list7216 returns container repository storage moves7217 avoids N+1 queries7218 returns the most recently created first7219 permissions7220 is expected to be allowed for :admin7221 is expected to be denied for :user7222 non-existent container7223 returns not found7224 GET /projects/:id/repository_storage_moves/:repository_storage_move_id7225 behaves like get single container repository storage move7226 returns a container repository storage move7227 non-existent container repository storage move7228 returns not found7229 permissions7230 is expected to be allowed for :admin7231 is expected to be denied for :user7232 non-existent container7233 returns not found7234 GET /project_repository_storage_moves7235 behaves like get container repository storage move list7236 returns container repository storage moves7237 avoids N+1 queries7238 returns the most recently created first7239 permissions7240 is expected to be allowed for :admin7241 is expected to be denied for :user7242 GET /project_repository_storage_moves/:repository_storage_move_id7243 behaves like get single container repository storage move7244 returns a container repository storage move7245 non-existent container repository storage move7246 returns not found7247 permissions7248 is expected to be allowed for :admin7249 is expected to be denied for :user7250 POST /projects/:id/repository_storage_moves7251 schedules a container repository storage move7252 permissions7253 is expected to be allowed for :admin7254 is expected to be denied for :user7255 destination_storage_name is missing7256 schedules a container repository storage move7257 when container does not exist7258 returns not found7259 POST /project_repository_storage_moves7260 schedules the worker7261 source_storage_name is invalid7262 gives an error7263 destination_storage_name is missing7264 schedules the worker7265 destination_storage_name is invalid7266 gives an error7267 normal user7268 is expected to be denied for :user7269Emails::Projects7270 #prometheus_alert_fired_email7271 has expected X-GitLab alert headers7272 behaves like an email with X-GitLab headers containing project details7273 has X-GitLab-Project headers7274 with incident7275 has expected X-GitLab incident headers7276 with empty payload7277 has expected subject7278 has expected content7279 behaves like an email sent from GitLab7280 has the characteristics of an email sent from GitLab7281 behaves like it should not have Gmail Actions links7282 is expected not to have body including "ViewAction"7283 behaves like a user cannot unsubscribe through footer link7284 does not have a List-Unsubscribe header or a body link7285 with description7286 has expected subject7287 has expected content7288 behaves like an email sent from GitLab7289 has the characteristics of an email sent from GitLab7290 behaves like it should not have Gmail Actions links7291 is expected not to have body including "ViewAction"7292 behaves like a user cannot unsubscribe through footer link7293 does not have a List-Unsubscribe header or a body link7294 with environment7295 has expected subject7296 has expected content7297 behaves like an email sent from GitLab7298 has the characteristics of an email sent from GitLab7299 behaves like it should not have Gmail Actions links7300 is expected not to have body including "ViewAction"7301 behaves like a user cannot unsubscribe through footer link7302 does not have a List-Unsubscribe header or a body link7303 with gitlab alerting rule7304 has expected subject7305 has expected content7306 behaves like an email sent from GitLab7307 has the characteristics of an email sent from GitLab7308 behaves like it should not have Gmail Actions links7309 is expected not to have body including "ViewAction"7310 behaves like a user cannot unsubscribe through footer link7311 does not have a List-Unsubscribe header or a body link7312 behaves like shows the incident issues url7313 create issue setting enabled7314 is expected to have body including "http://localhost/group92/project-809/-/incidents"7315 resolved7316 has expected subject7317 has expected content7318 behaves like an email sent from GitLab7319 has the characteristics of an email sent from GitLab7320 behaves like it should not have Gmail Actions links7321 is expected not to have body including "ViewAction"7322 behaves like a user cannot unsubscribe through footer link7323 does not have a List-Unsubscribe header or a body link7324 .inactive_project_deletion_warning_email7325 has the correct subject and body7326 behaves like an email sent to a user7327 is sent to user's global notification email address7328 with group notification email7329 is sent to user's group notification email7330 behaves like an email sent from GitLab7331 has the characteristics of an email sent from GitLab7332 behaves like it should not have Gmail Actions links7333 is expected not to have body including "ViewAction"7334 behaves like a user cannot unsubscribe through footer link7335 does not have a List-Unsubscribe header or a body link7336 behaves like appearance header and footer enabled7337 contains header and footer7338 behaves like appearance header and footer not enabled7339 does not contain header and footer7340Projects::AvatarsController7341 GET #show7342 when repository has no avatar7343 shows 4047344 when repository has an avatar7345 when the avatar is stored in the repository7346 sends the avatar7347 sets appropriate caching headers7348 behaves like project cache control headers7349 when project is public7350 returns cache_control public header to true7351 when project is private7352 returns cache_control public header to true7353 when project is internal7354 returns cache_control public header to true7355 when the avatar is stored in lfs7356 behaves like a controller that can serve LFS files7357 when lfs is enabled7358 when the project is linked to the LfsObject7359 serves the file7360 and lfs uses object storage7361 responds with redirect to file7362 sets content disposition7363 when project is not linked to the LfsObject7364 does not serve the file7365 when the project is part of a fork network7366 when the project is the root of the fork network7367 behaves like a controller that correctly serves lfs files within a fork network7368 is expected not to eq #<Project id:814 namespace770/project-810>>7369 does not serve the file if no members are linked to the LfsObject7370 serves the file when the fork network root is linked to the LfsObject7371 serves the file when the fork network member is linked to the LfsObject7372 when the project is a downstream member of the fork network7373 behaves like a controller that correctly serves lfs files within a fork network7374 is expected not to eq #<Project id:819 namespace775/project-815>>7375 does not serve the file if no members are linked to the LfsObject7376 serves the file when the fork network root is linked to the LfsObject7377 serves the file when the fork network member is linked to the LfsObject7378 when lfs is not enabled7379 delivers ASCII file7380 behaves like project cache control headers7381 when project is public7382 returns cache_control public header to true7383 when project is private7384 returns cache_control public header to true7385 when project is internal7386 returns cache_control public header to true7387 DELETE #destroy7388 removes avatar from DB by calling destroy7389DeviseMailer7390 #confirmation_instructions7391 when confirming a new account7392 shows the expected text7393 when confirming the unconfirmed_email7394 shows the expected text7395 when re-confirming the primary email after a security issue7396 shows the expected text7397 #password_change_by_admin7398 is sent to the user7399 has the correct subject7400 includes the correct content7401 includes a link to GitLab7402 behaves like an email sent from GitLab7403 has the characteristics of an email sent from GitLab7404 behaves like it should not have Gmail Actions links7405 is expected not to have body including "ViewAction"7406 behaves like a user cannot unsubscribe through footer link7407 does not have a List-Unsubscribe header or a body link7408 #user_admin_approval7409 is sent to the user7410 has the correct subject7411 greets the user7412 includes the correct content7413 includes a link to GitLab7414 behaves like an email sent from GitLab7415 has the characteristics of an email sent from GitLab7416 behaves like it should not have Gmail Actions links7417 is expected not to have body including "ViewAction"7418 behaves like a user cannot unsubscribe through footer link7419 does not have a List-Unsubscribe header or a body link7420 #reset_password_instructions7421 is sent to the user7422 has the correct subject7423 greets the user7424 includes the correct content7425 includes a link to reset the password7426 has the mailgun suppression bypass header7427 behaves like an email sent from GitLab7428 has the characteristics of an email sent from GitLab7429 behaves like it should not have Gmail Actions links7430 is expected not to have body including "ViewAction"7431 behaves like a user cannot unsubscribe through footer link7432 does not have a List-Unsubscribe header or a body link7433 #email_changed7434 is sent to the user7435 has the correct subject7436 greets the user7437 behaves like an email sent from GitLab7438 has the characteristics of an email sent from GitLab7439 email contains updated id7440 includes changed email id7441RoutableActions7442 #find_routable!7443 when signed in7444 with a project7445 prevents access when not authorized7446 when authorized7447 returns the project7448 allows access7449 with a group7450 prevents access when not authorized7451 when authorized7452 returns the group7453 allows access7454 with a user7455 allows access when authorized7456 prevents access when unauthorized7457 when not signed in7458 redirects to sign in for private resouces7459 #perform_not_found_actions7460 performs multiple checks7461 performs checks in the context of the controller7462 skips checks once one has resulted in a render/redirect7463Projects::GoogleCloud::DeploymentsController7464 Routes must be restricted behind Google OAuth27465 when a public request is made7466 returns not found on GET request7467 when unauthorized members make requests7468 returns not found on GET request7469 when authorized members make requests7470 redirects on GET request7471 Authorized GET project/-/google_cloud/deployments7472 renders template7473 Authorized GET project/-/google_cloud/deployments/cloud_run7474 when enable service fails7475 redirects to google cloud deployments and tracks event on enable service error7476 shows a flash alert7477 when enable service raises an error7478 redirects to google cloud deployments with error7479 shows a flash warning7480 GCP_PROJECT_IDs are defined7481 redirects to create merge request form7482 when generate pipeline service fails7483 redirects to google_cloud deployments and tracks event on generate pipeline error7484 shows a flash alert7485 Authorized GET project/-/google_cloud/deployments/cloud_storage7486 renders placeholder7487conan package details7488 has the correct metadata7489 has the correct file metadata7490 behaves like a package detail7491 behaves like a working graphql query7492 returns a successful response7493 behaves like matching the package details schema7494 matches the JSON schema7495 with pipelines7496 behaves like a working graphql query7497 returns a successful response7498 behaves like matching the package details schema7499 matches the JSON schema7500 behaves like a package with files7501 has the right amount of files7502 has the basic package files data7503 with package files pending destruction7504 does not return them7505doorkeeper access7506 unauthenticated7507 returns authentication success7508 allows user authenticating from the same ip7509 blocks user authenticating from two distinct ips7510 when token invalid7511 returns authentication error7512 authorization by OAuth token7513 returns authentication success7514 allows user authenticating from the same ip7515 blocks user authenticating from two distinct ips7516 when user is blocked7517 behaves like forbidden request7518 returns 403 response7519 when user is ldap_blocked7520 behaves like forbidden request7521 returns 403 response7522 when user is deactivated7523 behaves like forbidden request7524 returns 403 response7525 when user is blocked pending approval7526 behaves like forbidden request7527 returns 403 response7528sentry errors requests7529 getting a detailed sentry error7530 returns a successful response7531 when data is loading via reactive cache7532 is expected to return an empty error7533 when reactive cache returns data7534 is expected to return the frequency correctly7535 behaves like setting sentry error data7536 sets the sentry error data correctly7537 when user does not have permission7538 is expected to return an empty error7539 when sentry api returns an error7540 is expected to handle the error and return nil7541 getting an errors list7542 behaves like a working graphql query7543 returns a successful response7544 when data is loading via reactive cache7545 is expected to return nil7546 when reactive cache returns data7547 is expected to return an array of data7548 sets the pagination correctly7549 is expected to return the frequency correctly7550 behaves like setting sentry error data7551 sets the sentry error data correctly7552 when sentry api itself errors out7553 is expected to handle the error and return nil7554 getting a stack trace7555 behaves like a working graphql query7556 returns a successful response7557 when data is loading via reactive cache7558 is expected to return an empty error7559 when reactive cache returns data7560 behaves like setting stack trace error7561 sets the stack trace data correctly7562 sets the stack trace entry data correctly7563 when user does not have permission7564 is expected to return an empty error7565 when sentry api returns an error7566 is expected to handle the error and return nil7567Projects::EnvironmentsController7568 GET #show7569 avoids N+1 queries7570package details7571 has the correct metadata7572 does not have files7573 behaves like a package detail7574 behaves like a working graphql query7575 returns a successful response7576 behaves like matching the package details schema7577 matches the JSON schema7578 with pipelines7579 behaves like a working graphql query7580 returns a successful response7581 behaves like matching the package details schema7582 matches the JSON schema7583Admin::RunnersController7584 #index7585 renders index template7586 #show7587 shows a runner show page7588 #new7589 renders a :new template7590 when create_runner_workflow_for_admin is disabled7591 returns :not_found7592 #register7593 when runner can be registered after creation7594 renders a :register template7595 when runner cannot be registered after creation7596 returns :not_found7597 when create_runner_workflow_for_admin is disabled7598 returns :not_found7599 #edit7600 shows a runner edit page7601 shows 404 for unknown runner7602 avoids N+1 queries7603 #update7604 with update succeeding7605 updates the runner and ticks the queue7606 with update failing7607 does not update runner or tick the queue7608 GET #runner_setup_scripts7609 renders the setup scripts7610 renders errors if they occur7611ProjectMemberBulkUpdate7612 # order random7613 behaves like members bulk update mutation7614 when user is not logged-in7615 behaves like a mutation that returns a top-level access error7616 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"7617 when user is not an owner7618 behaves like a mutation that returns a top-level access error7619 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"7620 when user is an owner7621 behaves like updates the user access role7622 is expected to all equal 107623 when inherited members are passed7624 does not update the members7625 when members count is more than the allowed limit7626 does not update the members7627 when the update service raises access denied error7628 does not update the members7629 when the update service returns an error message7630 will pass through the error7631ControllerWithCrossProjectAccessCheck7632 When reading cross project is not allowed7633 #requires_cross_project_access7634 renders a 403 with trying to access a cross project page7635 is skipped when the `if` condition returns false7636 is skipped when the `unless` condition returns true7637 correctly renders an action that does not require cross project access7638 #skip_cross_project_access_check7639 renders a success when the check is skipped7640 is executed when the `if` condition returns false7641 is executed when the `unless` condition returns true7642 does not skip the check on an action that is not skipped7643 does not skip the check on an action that was not defined to skip7644Projects::ErrorTrackingController7645 GET #index7646 html7647 renders index with 200 status code7648 with insufficient permissions7649 returns 4047650 with an anonymous user7651 redirects to sign-in page7652 format json7653 with no data7654 returns no data7655 with extra params7656 when service result is successful7657 returns a list of errors7658 behaves like sets the polling header7659 is expected to eq "1000"7660 without extra params7661 when service result is successful7662 returns a list of errors7663 when service result is erroneous7664 without http_status7665 returns 400 with message7666 with explicit http_status7667 returns http_status with message7668 GET #issue_details7669 format json7670 with no data7671 returns no data7672 behaves like sets the polling header7673 is expected to eq "1000"7674 when service result is successful7675 returns an error7676 behaves like sets the polling header7677 is expected to eq "1000"7678 when service result is erroneous7679 without http_status7680 returns 400 with message7681 with explicit http_status7682 returns http_status with message7683 PUT #update7684 format json7685 when user is a reporter7686 returns 404 error7687 when update result is successful7688 returns a success7689 when update result is erroneous7690 returns 400 with message7691getting task completion status information7692 with description - [ ] task 1\n- [ ] task 27693 when type is issue7694 behaves like graphql task completion status provider7695 returns the expected task completion status7696 when type is merge request7697 behaves like graphql task completion status provider7698 returns the expected task completion status7699 with description - [x] task 1\n- [ ] task 27700 when type is issue7701 behaves like graphql task completion status provider7702 returns the expected task completion status7703 when type is merge request7704 behaves like graphql task completion status provider7705 returns the expected task completion status7706 with description - [x] task 1\n- [x] task 27707 when type is issue7708 behaves like graphql task completion status provider7709 returns the expected task completion status7710 when type is merge request7711 behaves like graphql task completion status provider7712 returns the expected task completion status7713Bulk update issues7714 # order random7715 when update service returns an error7716 returns an error message7717 when the `bulk_update_issues_mutation` feature flag is disabled7718 returns a resource not available error7719 when user can not update all issues7720 updates only issues that the user can update7721 when user can update all issues7722 updates all issues7723 when current user cannot read the specified project7724 returns a resource not found error7725 when setting arguments to null or none7726 updates all issues7727 when trying to update more than the max allowed7728 restricts updating more than 100 issues at the same time7729getting Alert Management Alert Assignees7730 returns the correct assignees7731 applies appropriate filters for non-visible users7732 performance7733 can limit results7734 can include all results7735 avoids N+1 queries7736API::ErrorTracking::ClientKeys7737 GET /projects/:id/error_tracking/client_keys7738 behaves like endpoint with authorization7739 when unauthenticated7740 is expected to respond with numeric status code unauthorized7741 when authenticated as non-maintainer7742 is expected to respond with numeric status code forbidden7743 when authenticated as maintainer7744 returns client keys7745 POST /projects/:id/error_tracking/client_keys7746 behaves like endpoint with authorization7747 when unauthenticated7748 is expected to respond with numeric status code unauthorized7749 when authenticated as non-maintainer7750 is expected to respond with numeric status code forbidden7751 when authenticated as maintainer7752 returns a newly created client key7753 DELETE /projects/:id/error_tracking/client_keys/:key_id7754 behaves like endpoint with authorization7755 when unauthenticated7756 is expected to respond with numeric status code unauthorized7757 when authenticated as non-maintainer7758 is expected to respond with numeric status code forbidden7759 when authenticated as maintainer7760 returns a correct status7761 returns specific fields using the entity7762User7763 when id parameter is used7764 behaves like a working user query7765 includes the user7766 returns no user when global restricted_visibility_levels includes PUBLIC7767 behaves like a working graphql query7768 returns a successful response7769 when username parameter is used7770 behaves like a working user query7771 includes the user7772 returns no user when global restricted_visibility_levels includes PUBLIC7773 behaves like a working graphql query7774 returns a successful response7775 when username and id parameter are used7776 displays an error7777 email fields7778 with permission7779 returns the relevant email details7780 without permission7781 does not return email details7782JiraConnect::SubscriptionsController7783 GET /-/jira_connect/subscriptions7784 is expected to include "http://self-managed-gitlab.com/-/jira_connect/"7785 is expected to include "http://self-managed-gitlab.com/api/"7786 is expected to include "http://self-managed-gitlab.com/oauth/"7787 is expected to include "frame-ancestors 'self' https://*.atlassian.net https://*.jira.com"7788 with additional iframe ancestors7789 is expected to include "frame-ancestors 'self' https://*.atlassian.net https://*.jira.com http://localhost:* http://dev.gitlab.com"7790 with no self-managed instance configured7791 is expected not to include "http://self-managed-gitlab.com/-/jira_connect/"7792 is expected not to include "http://self-managed-gitlab.com/api/"7793 is expected not to include "http://self-managed-gitlab.com/oauth/"7794 when json format7795 allows cross-origin requests7796 OPTIONS /-/jira_connect/subscriptions7797 allows cross-origin requests7798 OPTIONS /-/jira_connect/subscriptions/:id7799 allows cross-origin requests7800 DELETE /-/jira_connect/subscriptions/:id7801 allows cross-origin requests7802Explore::GroupsController7803 behaves like explore groups7804 renders group trees7805 includes public projects7806 restricted visibility level is public7807 redirects to login page7808 gitlab.com7809 behaves like explore groups7810 renders group trees7811 includes public projects7812 restricted visibility level is public7813 redirects to login page7814JiraConnect::EventsController7815 #installed7816 saves the jira installation data7817 saves the correct values7818 behaves like verifies asymmetric JWT token7819 when token is valid7820 renders successful7821 when token is invalid7822 renders unauthorized7823 when the shared_secret param is missing7824 returns 4227825 when an installation already exists7826 validates the JWT token in authorization header and returns 200 without creating a new installation7827 uses the JiraConnectInstallations::UpdateService7828 when parameters include a new shared secret and base_url7829 updates the installation7830 when the new base_url is invalid7831 renders 4227832 when enforce_jira_base_url_https7833 behaves like generates JWT validation claims7834 is expected to receive new(anything, {:aud=>"https://test.host/-/jira_connect", :iss=>anything, :qsh=>anything}) 1 time7835 when not enforce_jira_base_url_https7836 behaves like generates JWT validation claims7837 is expected to receive new(anything, {:aud=>"http://test.host/-/jira_connect", :iss=>anything, :qsh=>anything}) 1 time7838 #uninstalled7839 behaves like verifies asymmetric JWT token7840 when token is valid7841 renders successful7842 when token is invalid7843 renders unauthorized7844 when JWT is invalid7845 does not delete the installation7846 when JWT is valid7847 calls the DestroyService and returns ok in case of success7848 calls the DestroyService and returns unprocessable_entity in case of failure7849Dashboard::SnippetsController7850 GET #index7851 fetches snippet counts via the snippet count service7852 behaves like paginated collection7853 renders a page number that is not ouf of range7854 redirects to last_page if page number is larger than number of pages7855 does not redirect to external sites when provided a host field7856 behaves like snippets sort order7857 when no sort param is provided7858 calls SnippetsFinder with updated_at sort option7859 when sort param is provided7860 calls SnippetsFinder with the given sort param7861 behaves like snippets views7862 when rendered7863 avoids N+1 database queries7864Groups::ImportsController7865 GET #show7866 when the user has permission to view the group7867 when the import is in progress7868 renders the show template7869 sets the flash notice7870 when the import has failed7871 redirects to the new group path7872 sets a flash error7873 when the import has finished7874 redirects to the group page7875 when there is no import state7876 redirects to the group page7877 when the user does not have permission to view the group7878 returns a 4047879Creation of a new merge request7880 the user is not allowed to create a branch7881 behaves like a mutation that returns a top-level access error7882 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"7883 when user has permissions to create a merge request7884 creates a new merge request7885 when source branch is equal to the target branch7886 behaves like a mutation that returns errors in the response7887 is expected to contain exactly "Branch conflict You can't use same project/branch for source and target"7888Projects::UsageQuotasController7889 GET #index7890 when user does not have read_usage_quotas permission7891 renders not_found7892 when user has read_usage_quotas permission7893 renders index with 200 status code7894Restoring many Todos7895 restores many todos7896 when using an invalid gid7897 contains the expected error7898Admin::ImpersonationTokensController7899 when impersonation is enabled7900 responds ok7901 when impersonation is disabled7902 shows error page for index page7903 responds with 404 for create action7904 responds with 404 for revoke action7905 #create7906 behaves like #create access token7907 when POST is successful7908 renders JSON with a new token7909 when POST is unsuccessful7910 renders JSON with an error7911query a single terraform state7912 returns terraform state data7913 behaves like a working graphql query7914 returns a successful response7915 unauthorized users7916 is expected to be nil7917Getting Grafana Integration7918 with grafana integration data7919 without project admin permissions7920 is expected to equal nil7921 behaves like a working graphql query7922 returns a successful response7923 with project admin permissions7924 is expected to eql "https://grafana.example.com"7925 is expected to eql "2023-04-27T06:29:09Z"7926 is expected to eql "2023-04-27T06:29:09Z"7927 behaves like a working graphql query7928 returns a successful response7929Getting Ci Cd Setting7930 without permissions7931 is expected to equal nil7932 behaves like a working graphql query7933 returns a successful response7934 with project permissions7935 fetches the settings data7936 behaves like a working graphql query7937 returns a successful response7938Repositioning an ImageDiffNote7939 updates the note7940 when the note is not a DiffNote7941 behaves like a mutation that returns top-level errors7942 is expected to include /does not represent an instance of DiffNote/7943 when a position arg is nil7944 does not set the property to nil7945 when all position args are nil7946 behaves like a mutation that returns top-level errors7947 is expected to include /At least one property of `UpdateDiffImagePositionInput` must be set/7948Project.runners7949 # order random7950 when the user is a project developer7951 returns no runners7952 when the user is a project admin7953 returns all runners available to project7954Profiles::GpgKeysController7955 POST #create7956 creates a new key7957JwksController7958 Endpoints from the parent Doorkeeper::OpenidConnect::DiscoveryController7959 respond successfully7960 GET /-/jwks7961 returns signing keys used to sign CI_JOB_JWT7962 includes the OIDC signing key ID7963 does not leak private key data7964API::Admin::Sidekiq7965 DELETE /admin/sidekiq/queues/:queue_name7966 when the user is an admin7967 valid request7968 returns info about the deleted jobs7969 behaves like DELETE request permissions for admin mode7970 behaves like when admin7971 behaves like makes request7972 returns7973 behaves like makes request7974 returns7975 behaves like when user7976 returns7977 behaves like makes request7978 returns7979 when no required params are provided7980 returns a 4007981 when the queue does not exist7982 returns a 4047983API::Internal::Workhorse7984 /authorize_upload7985 without workhorse internal header7986 is expected to respond with numeric status code forbidden7987 with workhorse internal header7988 is expected to respond with numeric status code unauthorized7989 as a logged in user7990 is expected to respond with numeric status code success7991 returns the temp upload path7992Groups::Settings::ApplicationsController7993 sets `@created` instance variable to `true`7994 GET #show7995 renders template7996Projects::Ci::PipelineEditorController7997 GET #show7998 with enough privileges7999 is expected to respond with numeric status code ok8000 renders show page8001 without enough privileges8002 responds with 4048003Projects::ErrorTracking::ProjectsController8004 GET #index8005 with insufficient permissions8006 returns 4048007 with an anonymous user8008 redirects to sign-in page8009 with authorized user8010 when service result is successful8011 returns a list of projects8012 with service result is erroneous8013 without http_status8014 returns 400 with message8015 with explicit http_status8016 returns http_status with message8017Admin::CohortsController8018 GET #index8019 behaves like tracking unique visits8020 tracks unique visit if the format is HTML8021 tracks unique visit if DNT is not enabled8022 does not track unique visit if DNT is enabled8023 does not track unique visit if the format is JSON8024 behaves like Snowplow event tracking with RedisHLL context8025 behaves like Snowplow event tracking8026 is emitted8027Query.project(fullPath).pipelines.jobs.artifacts8028 returns the fields for the artifacts8029JobUnschedule8030 # order random8031 returns an error if the user is not allowed to unschedule the job8032 unschedules a job8033Removing an incident timeline event8034 # order random8035 removes incident timeline event8036Promote an incident timeline event from a comment8037 # order random8038 creates incident timeline event from the note8039getting project information8040 logged in8041 kas is enabled8042 returns version, revision, kas_enabled, kas_version, kas_external_url8043 kas is disabled8044 returns version and revision8045 anonymous user8046 returns nothing8047Updating an existing HTTP Integration8048 behaves like updating an existing HTTP integration8049 updates the integration8050getting Alert Management Alert Assignees8051 includes the correct metrics dashboard url8052API::APIGuard::AdminModeMiddleware8053 is loaded8054 when there is an exception in the api call8055 resets admin mode8056Admin::Topics::AvatarsController8057 removes avatar from DB by calling destroy8058Knapsack report was generated. Preview:8059{8060 "spec/requests/git_http_spec.rb": 396.26028071899964,8061 "spec/requests/api/terraform/modules/v1/packages_spec.rb": 145.36048185400068,8062 "spec/requests/api/project_packages_spec.rb": 178.77584958100124,8063 "spec/requests/lfs_http_spec.rb": 140.7599283290001,8064 "spec/requests/api/issues/issues_spec.rb": 75.8524765660004,8065 "spec/requests/api/snippets_spec.rb": 61.799854746001074,8066 "spec/requests/api/members_spec.rb": 73.08182655199926,8067 "spec/controllers/projects/pipeline_schedules_controller_spec.rb": 51.82129755300048,8068 "spec/requests/api/graphql/ci/runner_spec.rb": 47.84343073300079,8069 "spec/requests/projects/issues_controller_spec.rb": 42.47486785000001,8070 "spec/requests/projects/merge_requests_discussions_spec.rb": 66.74880493599994,8071 "spec/requests/api/terraform/state_version_spec.rb": 59.342412226000306,8072 "spec/requests/api/rpm_project_packages_spec.rb": 30.644884777999323,8073 "spec/requests/groups/email_campaigns_controller_spec.rb": 23.972451863999595,8074 "spec/controllers/admin/integrations_controller_spec.rb": 16.664366408000205,8075 "spec/requests/api/graphql/project/work_items_spec.rb": 28.93750506300057,8076 "spec/controllers/import/github_controller_spec.rb": 25.973588453000048,8077 "spec/requests/search_controller_spec.rb": 25.28532948299835,8078 "spec/controllers/import/gitlab_controller_spec.rb": 23.549873208001372,8079 "spec/controllers/projects/tags_controller_spec.rb": 23.84770331099935,8080 "spec/requests/api/protected_branches_spec.rb": 13.490767711000444,8081 "spec/requests/api/graphql/project/alert_management/alerts_spec.rb": 18.6971711770002,8082 "spec/controllers/projects/autocomplete_sources_controller_spec.rb": 12.539516063001429,8083 "spec/controllers/oauth/applications_controller_spec.rb": 11.691260352999961,8084 "spec/requests/projects/tags_controller_spec.rb": 11.692119352999725,8085 "spec/requests/api/project_repository_storage_moves_spec.rb": 8.184185638001509,8086 "spec/mailers/emails/projects_spec.rb": 9.179178528000193,8087 "spec/controllers/projects/avatars_controller_spec.rb": 9.803546929000731,8088 "spec/mailers/devise_mailer_spec.rb": 7.893189475998952,8089 "spec/controllers/concerns/routable_actions_spec.rb": 9.464683479998712,8090 "spec/requests/projects/google_cloud/deployments_controller_spec.rb": 9.921452802000204,8091 "spec/requests/api/graphql/packages/conan_spec.rb": 13.06133779999982,8092 "spec/requests/api/doorkeeper_access_spec.rb": 12.121473557001082,8093 "spec/requests/api/graphql/project/error_tracking/sentry_errors_request_spec.rb": 6.9031212869995215,8094 "spec/requests/projects/environments_controller_spec.rb": 8.727259764998962,8095 "spec/requests/api/graphql/packages/composer_spec.rb": 8.58319526500054,8096 "spec/controllers/admin/runners_controller_spec.rb": 4.851640262000728,8097 "spec/requests/api/graphql/mutations/members/projects/bulk_update_spec.rb": 5.394009288998859,8098 "spec/controllers/concerns/controller_with_cross_project_access_check_spec.rb": 4.0975481390014465,8099 "spec/controllers/projects/error_tracking_controller_spec.rb": 3.2529594210009236,8100 "spec/requests/api/graphql/tasks/task_completion_status_spec.rb": 4.096522509000351,8101 "spec/requests/api/graphql/mutations/issues/bulk_update_spec.rb": 9.740894843000206,8102 "spec/requests/api/graphql/project/alert_management/alert/assignees_spec.rb": 3.203869974000554,8103 "spec/requests/api/error_tracking/client_keys_spec.rb": 5.275131765998594,8104 "spec/requests/api/graphql/user_spec.rb": 4.651151686000958,8105 "spec/requests/jira_connect/subscriptions_controller_spec.rb": 1.9516560009997193,8106 "spec/controllers/explore/groups_controller_spec.rb": 2.4506618509985856,8107 "spec/controllers/jira_connect/events_controller_spec.rb": 2.492851208000502,8108 "spec/controllers/dashboard/snippets_controller_spec.rb": 3.6070373080001445,8109 "spec/controllers/groups/imports_controller_spec.rb": 3.6910005340014322,8110 "spec/requests/api/graphql/mutations/merge_requests/create_spec.rb": 5.72974511800021,8111 "spec/controllers/projects/usage_quotas_controller_spec.rb": 3.584580550999817,8112 "spec/requests/api/graphql/mutations/todos/restore_many_spec.rb": 3.43832933900012,8113 "spec/requests/admin/impersonation_tokens_controller_spec.rb": 3.2398618919996807,8114 "spec/requests/api/graphql/project/terraform/state_spec.rb": 2.259089581999433,8115 "spec/requests/api/graphql/project/grafana_integration_spec.rb": 3.573927661000198,8116 "spec/requests/api/graphql/ci/ci_cd_setting_spec.rb": 2.9492914590009605,8117 "spec/requests/api/graphql/mutations/notes/reposition_image_diff_note_spec.rb": 2.595785810999587,8118 "spec/requests/api/graphql/project/runners_spec.rb": 4.623774806999791,8119 "spec/controllers/profiles/gpg_keys_controller_spec.rb": 1.5806373630002781,8120 "spec/requests/jwks_controller_spec.rb": 1.118682071000876,8121 "spec/requests/api/admin/sidekiq_spec.rb": 2.3570292360000167,8122 "spec/requests/api/internal/workhorse_spec.rb": 0.8077199110011861,8123 "spec/requests/groups/settings/applications_controller_spec.rb": 2.1901619149994076,8124 "spec/controllers/projects/ci/pipeline_editor_controller_spec.rb": 2.2654714720010816,8125 "spec/controllers/projects/error_tracking/projects_controller_spec.rb": 1.8473348560000886,8126 "spec/controllers/admin/cohorts_controller_spec.rb": 1.7416510740004014,8127 "spec/requests/api/graphql/ci/job_artifacts_spec.rb": 2.149539308000385,8128 "spec/requests/api/graphql/mutations/ci/job/unschedule_spec.rb": 2.28695228000106,8129 "spec/requests/api/graphql/mutations/incident_management/timeline_event/destroy_spec.rb": 2.1049101110002084,8130 "spec/requests/api/graphql/mutations/incident_management/timeline_event/promote_from_note_spec.rb": 1.5457060749995435,8131 "spec/requests/api/graphql/metadata_query_spec.rb": 1.28087558200059,8132 "spec/requests/api/graphql/mutations/alert_management/http_integration/update_spec.rb": 1.1696434280001995,8133 "spec/requests/api/graphql/project/alert_management/alert/todos_spec.rb": 1.268520322000768,8134 "spec/requests/api/api_guard/admin_mode_middleware_spec.rb": 0.6759111390001635,8135 "spec/controllers/admin/topics/avatars_controller_spec.rb": 0.70453981700120498136}8137Knapsack global time execution for tests: 30m 28s8138Finished in 30 minutes 33 seconds (files took 49.57 seconds to load)81392775 examples, 0 failures8140Randomized with seed 207428141[TEST PROF INFO] Time spent in factories: 14:43.077 (47.99% of total time)8142RSpec exited with 0.8143No examples to retry, congrats!8145Not uploading cache ruby-gems-debian-bullseye-ruby-3.0-16 due to policy8147Uploading artifacts...8148coverage/: found 5 matching artifact files and directories 8149crystalball/: found 2 matching artifact files and directories 8150WARNING: deprecations/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 8151knapsack/: found 4 matching artifact files and directories 8152query_recorder/: found 2 matching artifact files and directories 8153rspec/: found 14 matching artifact files and directories 8154WARNING: tmp/capybara/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 8155log/*.log: found 14 matching artifact files and directories 8156WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/4187656194/artifacts?artifact_format=zip&artifact_type=archive&expire_in=31d new-url=https://gitlab.com8157WARNING: Retrying... context=artifacts-uploader error=request redirected8158Uploading artifacts as "archive" to coordinator... 201 Created id=4187656194 responseStatus=201 Created token=64_9XtyS8159Uploading artifacts...8160rspec/junit_rspec.xml: found 1 matching artifact files and directories 8161WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/4187656194/artifacts?artifact_format=gzip&artifact_type=junit&expire_in=31d new-url=https://gitlab.com8162WARNING: Retrying... context=artifacts-uploader error=request redirected8163Uploading artifacts as "junit" to coordinator... 201 Created id=4187656194 responseStatus=201 Created token=64_9XtyS8165Job succeeded