rspec integration pg12 6/12
Passed Started
by
@DylanGriffith

Dylan Griffith
1Running with gitlab-runner 15.6.0~beta.186.ga889181a (a889181a)2 on blue-3.private.runners-manager.gitlab.com/gitlab.com/gitlab-org 6io2xoDD3 feature flags: FF_USE_FASTZIP:true, FF_USE_IMPROVED_URL_MASKING:true6Using Docker executor with image registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-2.7.patched-golang-1.18-node-16.14-postgresql-12:rubygems-3.2-git-2.36-lfs-2.9-chrome-103-yarn-1.22-graphicsmagick-1.3.36 ...7Starting service postgres:12 ...8Pulling docker image postgres:12 ...9Using docker image sha256:56e1d6dc77b242b5f4f91e7319f0740f7ab8bdf41023fd5d703f412ac87976f5 for postgres:12 with digest postgres@sha256:93fd73e2322241eec204dac54b316bf429670ff6e5292e16f9e2fd3a3374a713 ...10Starting service redis:6.0-alpine ...11Pulling docker image redis:6.0-alpine ...12Using docker image sha256:83c577984741ab5b2e78640e0524852998d539ea3961e6d56680f336371f5c83 for redis:6.0-alpine with digest redis@sha256:459e91c5fe54134da1601ef85a4d9bc40c953862737fdfbe8f3c2b2a3eb6b20b ...13Waiting for services to be up and running (timeout 30 seconds)...14Authenticating with credentials from job payload (GitLab Registry)15Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-2.7.patched-golang-1.18-node-16.14-postgresql-12:rubygems-3.2-git-2.36-lfs-2.9-chrome-103-yarn-1.22-graphicsmagick-1.3.36 ...16Using docker image sha256:5c5404ecc69273636c3ef49645be715ef30ea99e51ad146a2efbeac2a1875f9c for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-2.7.patched-golang-1.18-node-16.14-postgresql-12:rubygems-3.2-git-2.36-lfs-2.9-chrome-103-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-2.7.patched-golang-1.18-node-16.14-postgresql-12@sha256:b032fe79dc0bf3ebfaeb610c82eacc500fbd0ec6e01889444011cf5a72b4135d ...18Running on runner-6io2xodd-project-278964-concurrent-0 via runner-6io2xodd-private-1667770152-1b187953...20$ eval "$CI_PRE_CLONE_SCRIPT"21Fetching changes with git depth set to 20...22Initialized empty Git repository in /builds/gitlab-org/gitlab/.git/23Created fresh repository.24remote: Enumerating objects: 119894, done. 25remote: Counting objects: 100% (119894/119894), done. 26remote: Compressing objects: 100% (78952/78952), done. 27remote: Total 119894 (delta 50153), reused 83076 (delta 36611), pack-reused 0 28Receiving objects: 100% (119894/119894), 110.17 MiB | 34.42 MiB/s, done.29Resolving deltas: 100% (50153/50153), done.31 * [new ref] refs/pipelines/687019226 -> refs/pipelines/68701922632 * [new branch] master -> origin/master33Checking out a134b2ce as master...34Skipping Git submodules setup35$ git remote set-url origin "${CI_REPOSITORY_URL}"37Checking cache for ruby-gems-debian-bullseye-ruby-2.7-16...38Downloading cache.zip from https://storage.googleapis.com/gitlab-com-runners-cache/project/278964/ruby-gems-debian-bullseye-ruby-2.7-16 39Successfully extracted cache40Checking cache for gitaly-ruby-gems-debian-bullseye-ruby-2.7-16...41Downloading cache.zip from https://storage.googleapis.com/gitlab-com-runners-cache/project/278964/gitaly-ruby-gems-debian-bullseye-ruby-2.7-16 42Successfully extracted cache44Downloading artifacts for compile-test-assets (3281613120)...45Downloading artifacts from coordinator... ok id=3281613120 responseStatus=200 OK token=8JNnh6qr46Downloading artifacts for detect-tests (3281613150)...47Downloading artifacts from coordinator... ok id=3281613150 responseStatus=200 OK token=8JNnh6qr48Downloading artifacts for retrieve-tests-metadata (3281613152)...49Downloading artifacts from coordinator... ok id=3281613152 responseStatus=200 OK token=8JNnh6qr50Downloading artifacts for setup-test-env (3281613137)...51Downloading artifacts from coordinator... ok id=3281613137 responseStatus=200 OK token=8JNnh6qr53Using docker image sha256:5c5404ecc69273636c3ef49645be715ef30ea99e51ad146a2efbeac2a1875f9c for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-2.7.patched-golang-1.18-node-16.14-postgresql-12:rubygems-3.2-git-2.36-lfs-2.9-chrome-103-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-2.7.patched-golang-1.18-node-16.14-postgresql-12@sha256:b032fe79dc0bf3ebfaeb610c82eacc500fbd0ec6e01889444011cf5a72b4135d ...54$ echo $FOSS_ONLY55$ [ "$FOSS_ONLY" = "1" ] && rm -rf ee/ qa/spec/ee/ qa/qa/specs/features/ee/ qa/qa/ee/ qa/qa/ee.rb56$ export GOPATH=$CI_PROJECT_DIR/.go57$ mkdir -p $GOPATH58$ source scripts/utils.sh59$ source scripts/prepare_build.sh676Using decomposed database config (config/database.yml.decomposed-postgresql)677$ setup_db_user_only678CREATE ROLE679GRANT680==> 'setup_db_user_only' succeeded in 0 seconds.681$ bundle exec rake db:drop db:create db:schema:load db:migrate682Dropped database 'gitlabhq_test'683Dropped database 'gitlabhq_test_ci'684Dropped database 'gitlabhq_geo_test'685Created database 'gitlabhq_test'686Created database 'gitlabhq_test_ci'687Created database 'gitlabhq_geo_test'688==> 'bundle exec rake db:drop db:create db:schema:load db:migrate' succeeded in 31 seconds.689$ setup_db_praefect690SELECT pg_catalog.set_config('search_path', '', false);691CREATE DATABASE praefect_test ENCODING 'UTF8';692==> 'setup_db_praefect' succeeded in 0 seconds.693$ source ./scripts/rspec_helpers.sh694$ run_timed_command "gem install knapsack --no-document"695$ gem install knapsack --no-document696Successfully installed knapsack-4.0.06971 gem installed698==> 'gem install knapsack --no-document' succeeded in 0 seconds.699$ echo -e "\e[0Ksection_start:`date +%s`:gitaly-test-spawn[collapsed=true]\r\e[0KStarting Gitaly"813$ rspec_paralellized_job "--tag ~quarantine --tag ~level:migration"814SKIP_FLAKY_TESTS_AUTOMATICALLY: true815RETRY_FAILED_TESTS_IN_NEW_PROCESS: true816KNAPSACK_GENERATE_REPORT: true817FLAKY_RSPEC_GENERATE_REPORT: true818KNAPSACK_TEST_FILE_PATTERN: spec/{commands,controllers,mailers,requests}{,/**/}*_spec.rb819KNAPSACK_LOG_LEVEL: debug820KNAPSACK_REPORT_PATH: knapsack/rspec_integration_pg12_6_12_report.json821FLAKY_RSPEC_SUITE_REPORT_PATH: rspec/flaky/report-suite.json822FLAKY_RSPEC_REPORT_PATH: rspec/flaky/all_rspec_integration_pg12_6_12_report.json823NEW_FLAKY_RSPEC_REPORT_PATH: rspec/flaky/new_rspec_integration_pg12_6_12_report.json824SKIPPED_FLAKY_TESTS_REPORT_PATH: rspec/flaky/skipped_flaky_tests_rspec_integration_pg12_6_12_report.txt825RETRIED_TESTS_REPORT_PATH: rspec/flaky/retried_tests_rspec_integration_pg12_6_12_report.txt826CRYSTALBALL: 827Knapsack report generator started!828WARNING: Shared example group 'rejecting the invalid regex' has been previously defined at:829 /builds/gitlab-org/gitlab/spec/requests/api/project_container_repositories_spec.rb:316830...and you are now defining it at:831 /builds/gitlab-org/gitlab/spec/requests/api/project_container_repositories_spec.rb:316832The new definition will overwrite the original one.833Run options: exclude {:quarantine=>true, :level=>"migration"}834Test environment set up in 1.248523606 seconds835Notify836 with HTML-encoded entities837 retains 7bit encoding838 for a project839 for issues840 that are new841 has the correct subject and body842 contains the description843 does not add a reason header844 contains a link to issue author845 contains a link to the issue846 behaves like an assignee email847 is sent to the assignee as the author848 behaves like an email sent to a user849 is sent to user's global notification email address850 with group notification email851 is sent to user's group notification email852 behaves like an email starting a new thread with reply-by-email enabled853 has X-GitLab-Project headers854 has X-GitLab-*-ID header855 has X-GitLab-*-IID header if model has iid defined856 has the characteristics of a threaded email857 includes "Reply to this email directly or <View it on GitLab>"858 when reply-by-email is enabled with incoming address with %{key}859 has a Reply-To header860 when reply-by-email is enabled with incoming address without %{key}861 has the characteristics of a threaded email862 has a Reply-To header863 behaves like it should show Gmail Actions View Issue link864 is expected to have body including "View Issue"865 behaves like it should have Gmail Actions links866 is expected to have body including "ViewAction"867 behaves like an unsubscribeable thread868 has a List-Unsubscribe header in the correct format, and a body link869 behaves like an unsubscribeable thread with incoming address without %{key}870 has a List-Unsubscribe header in the correct format, and a body link871 behaves like appearance header and footer enabled872 contains header and footer873 behaves like appearance header and footer not enabled874 does not contain header and footer875 when sent with a reason876 includes the reason in a header877 behaves like appearance header and footer enabled878 contains header and footer879 behaves like appearance header and footer not enabled880 does not contain header and footer881 that are reassigned882 is sent as the author883 has the correct subject and body884 behaves like a multiple recipients email885 is sent to the given recipient886 behaves like an answer to an existing thread with reply-by-email enabled887 has X-GitLab-Project headers888 has X-GitLab-*-ID header889 has X-GitLab-*-IID header if model has iid defined890 has X-GitLab-Project headers891 has X-GitLab-*-ID header892 has X-GitLab-*-IID header if model has iid defined893 has the characteristics of a threaded reply894 when reply-by-email is enabled with incoming address with %{key}895 has a Reply-To header896 when reply-by-email is enabled with incoming address without %{key}897 has X-GitLab-Project headers898 has X-GitLab-*-ID header899 has X-GitLab-*-IID header if model has iid defined900 has the characteristics of a threaded reply901 has a Reply-To header902 behaves like it should show Gmail Actions View Issue link903 is expected to have body including "View Issue"904 behaves like it should have Gmail Actions links905 is expected to have body including "ViewAction"906 behaves like an unsubscribeable thread907 has a List-Unsubscribe header in the correct format, and a body link908 behaves like an unsubscribeable thread with incoming address without %{key}909 has a List-Unsubscribe header in the correct format, and a body link910 behaves like appearance header and footer enabled911 contains header and footer912 behaves like appearance header and footer not enabled913 does not contain header and footer914 when sent with a reason915 includes the reason in a header916 behaves like appearance header and footer enabled917 contains header and footer918 behaves like appearance header and footer not enabled919 does not contain header and footer920 when sent with a non default locale921 is translated into zh_CN922 that have been relabeled923 is sent as the author924 has the correct subject and body925 behaves like a multiple recipients email926 is sent to the given recipient927 behaves like an answer to an existing thread with reply-by-email enabled928 has X-GitLab-Project headers929 has X-GitLab-*-ID header930 has X-GitLab-*-IID header if model has iid defined931 has X-GitLab-Project headers932 has X-GitLab-*-ID header933 has X-GitLab-*-IID header if model has iid defined934 has the characteristics of a threaded reply935 when reply-by-email is enabled with incoming address with %{key}936 has a Reply-To header937 when reply-by-email is enabled with incoming address without %{key}938 has X-GitLab-Project headers939 has X-GitLab-*-ID header940 has X-GitLab-*-IID header if model has iid defined941 has the characteristics of a threaded reply942 has a Reply-To header943 behaves like it should show Gmail Actions View Issue link944 is expected to have body including "View Issue"945 behaves like it should have Gmail Actions links946 is expected to have body including "ViewAction"947 behaves like a user cannot unsubscribe through footer link948 does not have a List-Unsubscribe header or a body link949 behaves like an email with a labels subscriptions link in its footer950 is expected to have body including "label subscriptions"951 behaves like appearance header and footer enabled952 contains header and footer953 behaves like appearance header and footer not enabled954 does not contain header and footer955 with a preferred language956 always generates the email using the default language957 that are due soon958 contains a link to the issue959 behaves like an answer to an existing thread with reply-by-email enabled960 has X-GitLab-Project headers961 has X-GitLab-*-ID header962 has X-GitLab-*-IID header if model has iid defined963 has X-GitLab-Project headers964 has X-GitLab-*-ID header965 has X-GitLab-*-IID header if model has iid defined966 has the characteristics of a threaded reply967 when reply-by-email is enabled with incoming address with %{key}968 has a Reply-To header969 when reply-by-email is enabled with incoming address without %{key}970 has X-GitLab-Project headers971 has X-GitLab-*-ID header972 has X-GitLab-*-IID header if model has iid defined973 has the characteristics of a threaded reply974 has a Reply-To header975 behaves like it should show Gmail Actions View Issue link976 is expected to have body including "View Issue"977 behaves like it should have Gmail Actions links978 is expected to have body including "ViewAction"979 behaves like an unsubscribeable thread980 has a List-Unsubscribe header in the correct format, and a body link981 behaves like an unsubscribeable thread with incoming address without %{key}982 has a List-Unsubscribe header in the correct format, and a body link983 behaves like appearance header and footer enabled984 contains header and footer985 behaves like appearance header and footer not enabled986 does not contain header and footer987 status changed988 is sent as the author989 has the correct subject and body990 behaves like an answer to an existing thread with reply-by-email enabled991 has X-GitLab-Project headers992 has X-GitLab-*-ID header993 has X-GitLab-*-IID header if model has iid defined994 has X-GitLab-Project headers995 has X-GitLab-*-ID header996 has X-GitLab-*-IID header if model has iid defined997 has the characteristics of a threaded reply998 when reply-by-email is enabled with incoming address with %{key}999 has a Reply-To header1000 when reply-by-email is enabled with incoming address without %{key}1001 has X-GitLab-Project headers1002 has X-GitLab-*-ID header1003 has X-GitLab-*-IID header if model has iid defined1004 has the characteristics of a threaded reply1005 has a Reply-To header1006 behaves like it should show Gmail Actions View Issue link1007 is expected to have body including "View Issue"1008 behaves like it should have Gmail Actions links1009 is expected to have body including "ViewAction"1010 behaves like an unsubscribeable thread1011 has a List-Unsubscribe header in the correct format, and a body link1012 behaves like an unsubscribeable thread with incoming address without %{key}1013 has a List-Unsubscribe header in the correct format, and a body link1014 behaves like appearance header and footer enabled1015 contains header and footer1016 behaves like appearance header and footer not enabled1017 does not contain header and footer1018 moved to another project1019 when a user has permissions to access the new issue1020 contains description about action taken1021 has the correct subject and body1022 contains the issue title1023 behaves like an answer to an existing thread with reply-by-email enabled1024 has X-GitLab-Project headers1025 has X-GitLab-*-ID header1026 has X-GitLab-*-IID header if model has iid defined1027 has X-GitLab-Project headers1028 has X-GitLab-*-ID header1029 has X-GitLab-*-IID header if model has iid defined1030 has the characteristics of a threaded reply1031 when reply-by-email is enabled with incoming address with %{key}1032 has a Reply-To header1033 when reply-by-email is enabled with incoming address without %{key}1034 has X-GitLab-Project headers1035 has X-GitLab-*-ID header1036 has X-GitLab-*-IID header if model has iid defined1037 has the characteristics of a threaded reply1038 has a Reply-To header1039 behaves like it should show Gmail Actions View Issue link1040 is expected to have body including "View Issue"1041 behaves like it should have Gmail Actions links1042 is expected to have body including "ViewAction"1043 behaves like an unsubscribeable thread1044 has a List-Unsubscribe header in the correct format, and a body link1045 behaves like an unsubscribeable thread with incoming address without %{key}1046 has a List-Unsubscribe header in the correct format, and a body link1047 when a user does not permissions to access the new issue1048 has the correct subject and body1049 does not contain the issue title1050 contains information about missing permissions1051 for merge requests1052 that are new1053 has the correct subject and body1054 contains the description1055 contains a link to merge request author1056 contains a link to the merge request url1057 behaves like an assignee email1058 is sent to the assignee as the author1059 behaves like an email sent to a user1060 is sent to user's global notification email address1061 with group notification email1062 is sent to user's group notification email1063 behaves like an email starting a new thread with reply-by-email enabled1064 has X-GitLab-Project headers1065 has X-GitLab-*-ID header1066 has X-GitLab-*-IID header if model has iid defined1067 has the characteristics of a threaded email1068 includes "Reply to this email directly or <View it on GitLab>"1069 when reply-by-email is enabled with incoming address with %{key}1070 has a Reply-To header1071 when reply-by-email is enabled with incoming address without %{key}1072 has the characteristics of a threaded email1073 has a Reply-To header1074 behaves like it should show Gmail Actions View Merge request link1075 is expected to have body including "View Merge request"1076 behaves like it should have Gmail Actions links1077 is expected to have body including "ViewAction"1078 behaves like an unsubscribeable thread1079 has a List-Unsubscribe header in the correct format, and a body link1080 behaves like an unsubscribeable thread with incoming address without %{key}1081 has a List-Unsubscribe header in the correct format, and a body link1082 behaves like appearance header and footer enabled1083 contains header and footer1084 behaves like appearance header and footer not enabled1085 does not contain header and footer1086 when sent with a reason1087 includes the reason in a header1088 behaves like appearance header and footer enabled1089 contains header and footer1090 behaves like appearance header and footer not enabled1091 does not contain header and footer1092 that are reassigned1093 is sent as the author1094 has the correct subject and body1095 behaves like a multiple recipients email1096 is sent to the given recipient1097 behaves like an answer to an existing thread with reply-by-email enabled1098 has X-GitLab-Project headers1099 has X-GitLab-*-ID header1100 has X-GitLab-*-IID header if model has iid defined1101 has X-GitLab-Project headers1102 has X-GitLab-*-ID header1103 has X-GitLab-*-IID header if model has iid defined1104 has the characteristics of a threaded reply1105 when reply-by-email is enabled with incoming address with %{key}1106 has a Reply-To header1107 when reply-by-email is enabled with incoming address without %{key}1108 has X-GitLab-Project headers1109 has X-GitLab-*-ID header1110 has X-GitLab-*-IID header if model has iid defined1111 has the characteristics of a threaded reply1112 has a Reply-To header1113 behaves like it should show Gmail Actions View Merge request link1114 is expected to have body including "View Merge request"1115 behaves like it should have Gmail Actions links1116 is expected to have body including "ViewAction"1117 behaves like an unsubscribeable thread1118 has a List-Unsubscribe header in the correct format, and a body link1119 behaves like an unsubscribeable thread with incoming address without %{key}1120 has a List-Unsubscribe header in the correct format, and a body link1121 behaves like appearance header and footer enabled1122 contains header and footer1123 behaves like appearance header and footer not enabled1124 does not contain header and footer1125 when sent with a reason1126 includes the reason in a header1127 includes the reason in the footer1128 behaves like appearance header and footer enabled1129 contains header and footer1130 behaves like appearance header and footer not enabled1131 does not contain header and footer1132 that are new with a description1133 contains the description1134 behaves like it should show Gmail Actions View Merge request link1135 is expected to have body including "View Merge request"1136 behaves like it should have Gmail Actions links1137 is expected to have body including "ViewAction"1138 behaves like an unsubscribeable thread1139 has a List-Unsubscribe header in the correct format, and a body link1140 behaves like an unsubscribeable thread with incoming address without %{key}1141 has a List-Unsubscribe header in the correct format, and a body link1142 behaves like appearance header and footer enabled1143 contains header and footer1144 behaves like appearance header and footer not enabled1145 does not contain header and footer1146 that have been relabeled1147 is sent as the author1148 has the correct subject and body1149 behaves like a multiple recipients email1150 is sent to the given recipient1151 behaves like an answer to an existing thread with reply-by-email enabled1152 has X-GitLab-Project headers1153 has X-GitLab-*-ID header1154 has X-GitLab-*-IID header if model has iid defined1155 has X-GitLab-Project headers1156 has X-GitLab-*-ID header1157 has X-GitLab-*-IID header if model has iid defined1158 has the characteristics of a threaded reply1159 when reply-by-email is enabled with incoming address with %{key}1160 has a Reply-To header1161 when reply-by-email is enabled with incoming address without %{key}1162 has X-GitLab-Project headers1163 has X-GitLab-*-ID header1164 has X-GitLab-*-IID header if model has iid defined1165 has the characteristics of a threaded reply1166 has a Reply-To header1167 behaves like it should show Gmail Actions View Merge request link1168 is expected to have body including "View Merge request"1169 behaves like it should have Gmail Actions links1170 is expected to have body including "ViewAction"1171 behaves like a user cannot unsubscribe through footer link1172 does not have a List-Unsubscribe header or a body link1173 behaves like an email with a labels subscriptions link in its footer1174 is expected to have body including "label subscriptions"1175 behaves like appearance header and footer enabled1176 contains header and footer1177 behaves like appearance header and footer not enabled1178 does not contain header and footer1179 that have no new commits1180 behaves like a push to an existing merge request1181 is sent as the push user1182 has the correct subject and body1183 behaves like a multiple recipients email1184 is sent to the given recipient1185 behaves like an answer to an existing thread with reply-by-email enabled1186 has X-GitLab-Project headers1187 has X-GitLab-*-ID header1188 has X-GitLab-*-IID header if model has iid defined1189 has X-GitLab-Project headers1190 has X-GitLab-*-ID header1191 has X-GitLab-*-IID header if model has iid defined1192 has the characteristics of a threaded reply1193 when reply-by-email is enabled with incoming address with %{key}1194 has a Reply-To header1195 when reply-by-email is enabled with incoming address without %{key}1196 has X-GitLab-Project headers1197 has X-GitLab-*-ID header1198 has X-GitLab-*-IID header if model has iid defined1199 has the characteristics of a threaded reply1200 has a Reply-To header1201 behaves like it should show Gmail Actions View Merge request link1202 is expected to have body including "View Merge request"1203 behaves like it should have Gmail Actions links1204 is expected to have body including "ViewAction"1205 behaves like an unsubscribeable thread1206 has a List-Unsubscribe header in the correct format, and a body link1207 behaves like an unsubscribeable thread with incoming address without %{key}1208 has a List-Unsubscribe header in the correct format, and a body link1209 behaves like appearance header and footer enabled1210 contains header and footer1211 behaves like appearance header and footer not enabled1212 does not contain header and footer1213 that have fewer than the commit truncation limit1214 behaves like a push to an existing merge request1215 is sent as the push user1216 has the correct subject and body1217 behaves like a multiple recipients email1218 is sent to the given recipient1219 behaves like an answer to an existing thread with reply-by-email enabled1220 has X-GitLab-Project headers1221 has X-GitLab-*-ID header1222 has X-GitLab-*-IID header if model has iid defined1223 has X-GitLab-Project headers1224 has X-GitLab-*-ID header1225 has X-GitLab-*-IID header if model has iid defined1226 has the characteristics of a threaded reply1227 when reply-by-email is enabled with incoming address with %{key}1228 has a Reply-To header1229 when reply-by-email is enabled with incoming address without %{key}1230 has X-GitLab-Project headers1231 has X-GitLab-*-ID header1232 has X-GitLab-*-IID header if model has iid defined1233 has the characteristics of a threaded reply1234 has a Reply-To header1235 behaves like it should show Gmail Actions View Merge request link1236 is expected to have body including "View Merge request"1237 behaves like it should have Gmail Actions links1238 is expected to have body including "ViewAction"1239 behaves like an unsubscribeable thread1240 has a List-Unsubscribe header in the correct format, and a body link1241 behaves like an unsubscribeable thread with incoming address without %{key}1242 has a List-Unsubscribe header in the correct format, and a body link1243 behaves like appearance header and footer enabled1244 contains header and footer1245 behaves like appearance header and footer not enabled1246 does not contain header and footer1247 behaves like shows new commit urls1248 shows new commit urls1249 does not show hidden new commit urls1250 that have more than the commit truncation limit1251 shows "and more" message1252 behaves like a push to an existing merge request1253 is sent as the push user1254 has the correct subject and body1255 behaves like a multiple recipients email1256 is sent to the given recipient1257 behaves like an answer to an existing thread with reply-by-email enabled1258 has X-GitLab-Project headers1259 has X-GitLab-*-ID header1260 has X-GitLab-*-IID header if model has iid defined1261 has X-GitLab-Project headers1262 has X-GitLab-*-ID header1263 has X-GitLab-*-IID header if model has iid defined1264 has the characteristics of a threaded reply1265 when reply-by-email is enabled with incoming address with %{key}1266 has a Reply-To header1267 when reply-by-email is enabled with incoming address without %{key}1268 has X-GitLab-Project headers1269 has X-GitLab-*-ID header1270 has X-GitLab-*-IID header if model has iid defined1271 has the characteristics of a threaded reply1272 has a Reply-To header1273 behaves like it should show Gmail Actions View Merge request link1274 is expected to have body including "View Merge request"1275 behaves like it should have Gmail Actions links1276 is expected to have body including "ViewAction"1277 behaves like an unsubscribeable thread1278 has a List-Unsubscribe header in the correct format, and a body link1279 behaves like an unsubscribeable thread with incoming address without %{key}1280 has a List-Unsubscribe header in the correct format, and a body link1281 behaves like appearance header and footer enabled1282 contains header and footer1283 behaves like appearance header and footer not enabled1284 does not contain header and footer1285 behaves like shows new commit urls1286 shows new commit urls1287 does not show hidden new commit urls1288 that have new commits on top of an existing one1289 shows the existing commit1290 behaves like a push to an existing merge request1291 is sent as the push user1292 has the correct subject and body1293 behaves like a multiple recipients email1294 is sent to the given recipient1295 behaves like an answer to an existing thread with reply-by-email enabled1296 has X-GitLab-Project headers1297 has X-GitLab-*-ID header1298 has X-GitLab-*-IID header if model has iid defined1299 has X-GitLab-Project headers1300 has X-GitLab-*-ID header1301 has X-GitLab-*-IID header if model has iid defined1302 has the characteristics of a threaded reply1303 when reply-by-email is enabled with incoming address with %{key}1304 has a Reply-To header1305 when reply-by-email is enabled with incoming address without %{key}1306 has X-GitLab-Project headers1307 has X-GitLab-*-ID header1308 has X-GitLab-*-IID header if model has iid defined1309 has the characteristics of a threaded reply1310 has a Reply-To header1311 behaves like it should show Gmail Actions View Merge request link1312 is expected to have body including "View Merge request"1313 behaves like it should have Gmail Actions links1314 is expected to have body including "ViewAction"1315 behaves like an unsubscribeable thread1316 has a List-Unsubscribe header in the correct format, and a body link1317 behaves like an unsubscribeable thread with incoming address without %{key}1318 has a List-Unsubscribe header in the correct format, and a body link1319 behaves like appearance header and footer enabled1320 contains header and footer1321 behaves like appearance header and footer not enabled1322 does not contain header and footer1323 that have new commits on top of two existing ones1324 behaves like a push to an existing merge request1325 is sent as the push user1326 has the correct subject and body1327 behaves like a multiple recipients email1328 is sent to the given recipient1329 behaves like an answer to an existing thread with reply-by-email enabled1330 has X-GitLab-Project headers1331 has X-GitLab-*-ID header1332 has X-GitLab-*-IID header if model has iid defined1333 has X-GitLab-Project headers1334 has X-GitLab-*-ID header1335 has X-GitLab-*-IID header if model has iid defined1336 has the characteristics of a threaded reply1337 when reply-by-email is enabled with incoming address with %{key}1338 has a Reply-To header1339 when reply-by-email is enabled with incoming address without %{key}1340 has X-GitLab-Project headers1341 has X-GitLab-*-ID header1342 has X-GitLab-*-IID header if model has iid defined1343 has the characteristics of a threaded reply1344 has a Reply-To header1345 behaves like it should show Gmail Actions View Merge request link1346 is expected to have body including "View Merge request"1347 behaves like it should have Gmail Actions links1348 is expected to have body including "ViewAction"1349 behaves like an unsubscribeable thread1350 has a List-Unsubscribe header in the correct format, and a body link1351 behaves like an unsubscribeable thread with incoming address without %{key}1352 has a List-Unsubscribe header in the correct format, and a body link1353 behaves like appearance header and footer enabled1354 contains header and footer1355 behaves like appearance header and footer not enabled1356 does not contain header and footer1357 behaves like shows the compare url between first and last commits1358 shows the compare url between first and last commits1359 that have new commits on top of more than two existing ones1360 behaves like a push to an existing merge request1361 is sent as the push user1362 has the correct subject and body1363 behaves like a multiple recipients email1364 is sent to the given recipient1365 behaves like an answer to an existing thread with reply-by-email enabled1366 has X-GitLab-Project headers1367 has X-GitLab-*-ID header1368 has X-GitLab-*-IID header if model has iid defined1369 has X-GitLab-Project headers1370 has X-GitLab-*-ID header1371 has X-GitLab-*-IID header if model has iid defined1372 has the characteristics of a threaded reply1373 when reply-by-email is enabled with incoming address with %{key}1374 has a Reply-To header1375 when reply-by-email is enabled with incoming address without %{key}1376 has X-GitLab-Project headers1377 has X-GitLab-*-ID header1378 has X-GitLab-*-IID header if model has iid defined1379 has the characteristics of a threaded reply1380 has a Reply-To header1381 behaves like it should show Gmail Actions View Merge request link1382 is expected to have body including "View Merge request"1383 behaves like it should have Gmail Actions links1384 is expected to have body including "ViewAction"1385 behaves like an unsubscribeable thread1386 has a List-Unsubscribe header in the correct format, and a body link1387 behaves like an unsubscribeable thread with incoming address without %{key}1388 has a List-Unsubscribe header in the correct format, and a body link1389 behaves like appearance header and footer enabled1390 contains header and footer1391 behaves like appearance header and footer not enabled1392 does not contain header and footer1393 behaves like shows the compare url between first and last commits1394 shows the compare url between first and last commits1395 #mail_thread1396 the model has no namespace1397 has X-GitLab-Namespaced-Thing-ID header1398 the model has a namespace1399 has X-GitLab-Namespaced-Thing-ID header1400 for issue notes1401 in discussion1402 has In-Reply-To header pointing to previous note in discussion1403 has References header including the notes and issue of the discussion1404 has X-GitLab-Discussion-ID header1405 behaves like an email sent to a user1406 is sent to user's global notification email address1407 with group notification email1408 is sent to user's group notification email1409 behaves like appearance header and footer enabled1410 contains header and footer1411 behaves like appearance header and footer not enabled1412 does not contain header and footer1413 individual issue comments1414 has In-Reply-To header pointing to the issue1415 has References header including the notes and issue of the discussion1416 behaves like an email sent to a user1417 is sent to user's global notification email address1418 with group notification email1419 is sent to user's group notification email1420 behaves like appearance header and footer enabled1421 contains header and footer1422 behaves like appearance header and footer not enabled1423 does not contain header and footer1424 with private references accessible to the recipient1425 does not redact the reference1426 renders expanded issue references1427 for snippet notes1428 has the correct subject1429 has the correct body1430 links to the project snippet1431 behaves like appearance header and footer enabled1432 contains header and footer1433 behaves like appearance header and footer not enabled1434 does not contain header and footer1435 behaves like an answer to an existing thread with reply-by-email enabled1436 has X-GitLab-Project headers1437 has X-GitLab-*-ID header1438 has X-GitLab-*-IID header if model has iid defined1439 has X-GitLab-Project headers1440 has X-GitLab-*-ID header1441 has X-GitLab-*-IID header if model has iid defined1442 has the characteristics of a threaded reply1443 when reply-by-email is enabled with incoming address with %{key}1444 has a Reply-To header1445 when reply-by-email is enabled with incoming address without %{key}1446 has X-GitLab-Project headers1447 has X-GitLab-*-ID header1448 has X-GitLab-*-IID header if model has iid defined1449 has the characteristics of a threaded reply1450 has a Reply-To header1451 behaves like a user cannot unsubscribe through footer link1452 does not have a List-Unsubscribe header or a body link1453 for design notes1454 is expected to have header X-Gitlab-DesignManagement-Design-ID: 11455 is expected to have body including "homescreen-1.jpg"1456 is expected to have attributes {:subject => (a string including "homescreen-1.jpg")}1457 project was moved1458 has the correct subject and body1459 behaves like an email sent to a user1460 is sent to user's global notification email address1461 with group notification email1462 is sent to user's group notification email1463 behaves like an email sent from GitLab1464 has the characteristics of an email sent from GitLab1465 behaves like it should not have Gmail Actions links1466 is expected not to have body including "ViewAction"1467 behaves like a user cannot unsubscribe through footer link1468 does not have a List-Unsubscribe header or a body link1469 behaves like appearance header and footer enabled1470 contains header and footer1471 behaves like appearance header and footer not enabled1472 does not contain header and footer1473 project access requested1474 contains all the useful information1475 behaves like an email sent from GitLab1476 has the characteristics of an email sent from GitLab1477 behaves like it should not have Gmail Actions links1478 is expected not to have body including "ViewAction"1479 behaves like a user cannot unsubscribe through footer link1480 does not have a List-Unsubscribe header or a body link1481 behaves like appearance header and footer enabled1482 contains header and footer1483 behaves like appearance header and footer not enabled1484 does not contain header and footer1485 project access denied1486 contains all the useful information1487 behaves like an email sent from GitLab1488 has the characteristics of an email sent from GitLab1489 behaves like it should not have Gmail Actions links1490 is expected not to have body including "ViewAction"1491 behaves like a user cannot unsubscribe through footer link1492 does not have a List-Unsubscribe header or a body link1493 behaves like appearance header and footer enabled1494 contains header and footer1495 behaves like appearance header and footer not enabled1496 does not contain header and footer1497 when user can not read project1498 hides project name from subject and body1499 project access changed1500 contains all the useful information1501 behaves like an email sent from GitLab1502 has the characteristics of an email sent from GitLab1503 behaves like it should not have Gmail Actions links1504 is expected not to have body including "ViewAction"1505 behaves like a user cannot unsubscribe through footer link1506 does not have a List-Unsubscribe header or a body link1507 behaves like appearance header and footer enabled1508 contains header and footer1509 behaves like appearance header and footer not enabled1510 does not contain header and footer1511 with tasks to be done present1512 contains the assigned tasks to be done1513 project invitation1514 behaves like an email sent from GitLab1515 has the characteristics of an email sent from GitLab1516 behaves like it should show Gmail Actions Join now link1517 is expected to have body including "Join now"1518 behaves like it should have Gmail Actions links1519 is expected to have body including "ViewAction"1520 behaves like a user cannot unsubscribe through footer link1521 does not have a List-Unsubscribe header or a body link1522 behaves like appearance header and footer enabled1523 contains header and footer1524 behaves like appearance header and footer not enabled1525 does not contain header and footer1526 behaves like does not render a manage notifications link1527 is expected not to have body including "http://localhost/-/profile/notifications"1528 when there is an inviter1529 contains all the useful information1530 when there is no inviter1531 contains all the useful information1532 when invite email sent is tracked1533 tracks the sent invite1534 when mailgun events are enabled1535 has custom headers1536 with tasks to be done present1537 contains the assigned tasks to be done1538 project invitation accepted1539 contains all the useful information1540 behaves like an email sent from GitLab1541 has the characteristics of an email sent from GitLab1542 behaves like an email sent to a user1543 is sent to user's global notification email address1544 with group notification email1545 is sent to user's group notification email1546 behaves like it should not have Gmail Actions links1547 is expected not to have body including "ViewAction"1548 behaves like a user cannot unsubscribe through footer link1549 does not have a List-Unsubscribe header or a body link1550 behaves like appearance header and footer enabled1551 contains header and footer1552 behaves like appearance header and footer not enabled1553 does not contain header and footer1554 project invitation declined1555 contains all the useful information1556 behaves like an email sent from GitLab1557 has the characteristics of an email sent from GitLab1558 behaves like an email sent to a user1559 is sent to user's global notification email address1560 with group notification email1561 is sent to user's group notification email1562 behaves like it should not have Gmail Actions links1563 is expected not to have body including "ViewAction"1564 behaves like a user cannot unsubscribe through footer link1565 does not have a List-Unsubscribe header or a body link1566 behaves like appearance header and footer enabled1567 contains header and footer1568 behaves like appearance header and footer not enabled1569 does not contain header and footer1570 items that are noteable, the email for a note1571 on a commit1572 has the correct subject and body1573 behaves like a note email1574 is sent to the given recipient as the author1575 contains the message from the note1576 contains a link to note author1577 behaves like it should have Gmail Actions links1578 is expected to have body including "ViewAction"1579 behaves like an answer to an existing thread with reply-by-email enabled1580 has X-GitLab-Project headers1581 has X-GitLab-*-ID header1582 has X-GitLab-*-IID header if model has iid defined1583 has X-GitLab-Project headers1584 has X-GitLab-*-ID header1585 has X-GitLab-*-IID header if model has iid defined1586 has the characteristics of a threaded reply1587 when reply-by-email is enabled with incoming address with %{key}1588 has a Reply-To header1589 when reply-by-email is enabled with incoming address without %{key}1590 has X-GitLab-Project headers1591 has X-GitLab-*-ID header1592 has X-GitLab-*-IID header if model has iid defined1593 has the characteristics of a threaded reply1594 has a Reply-To header1595 behaves like it should show Gmail Actions View Commit link1596 is expected to have body including "View Commit"1597 behaves like it should have Gmail Actions links1598 is expected to have body including "ViewAction"1599 behaves like a user cannot unsubscribe through footer link1600 does not have a List-Unsubscribe header or a body link1601 behaves like appearance header and footer enabled1602 contains header and footer1603 behaves like appearance header and footer not enabled1604 does not contain header and footer1605 on a merge request1606 has the correct subject and body1607 behaves like a note email1608 is sent to the given recipient as the author1609 contains the message from the note1610 contains a link to note author1611 behaves like it should have Gmail Actions links1612 is expected to have body including "ViewAction"1613 behaves like an answer to an existing thread with reply-by-email enabled1614 has X-GitLab-Project headers1615 has X-GitLab-*-ID header1616 has X-GitLab-*-IID header if model has iid defined1617 has X-GitLab-Project headers1618 has X-GitLab-*-ID header1619 has X-GitLab-*-IID header if model has iid defined1620 has the characteristics of a threaded reply1621 when reply-by-email is enabled with incoming address with %{key}1622 has a Reply-To header1623 when reply-by-email is enabled with incoming address without %{key}1624 has X-GitLab-Project headers1625 has X-GitLab-*-ID header1626 has X-GitLab-*-IID header if model has iid defined1627 has the characteristics of a threaded reply1628 has a Reply-To header1629 behaves like it should show Gmail Actions View Merge request link1630 is expected to have body including "View Merge request"1631 behaves like it should have Gmail Actions links1632 is expected to have body including "ViewAction"1633 behaves like an unsubscribeable thread1634 has a List-Unsubscribe header in the correct format, and a body link1635 behaves like an unsubscribeable thread with incoming address without %{key}1636 has a List-Unsubscribe header in the correct format, and a body link1637 behaves like appearance header and footer enabled1638 contains header and footer1639 behaves like appearance header and footer not enabled1640 does not contain header and footer1641 on an issue1642 has the correct subject and body1643 behaves like a note email1644 is sent to the given recipient as the author1645 contains the message from the note1646 contains a link to note author1647 behaves like it should have Gmail Actions links1648 is expected to have body including "ViewAction"1649 behaves like an answer to an existing thread with reply-by-email enabled1650 has X-GitLab-Project headers1651 has X-GitLab-*-ID header1652 has X-GitLab-*-IID header if model has iid defined1653 has X-GitLab-Project headers1654 has X-GitLab-*-ID header1655 has X-GitLab-*-IID header if model has iid defined1656 has the characteristics of a threaded reply1657 when reply-by-email is enabled with incoming address with %{key}1658 has a Reply-To header1659 when reply-by-email is enabled with incoming address without %{key}1660 has X-GitLab-Project headers1661 has X-GitLab-*-ID header1662 has X-GitLab-*-IID header if model has iid defined1663 has the characteristics of a threaded reply1664 has a Reply-To header1665 behaves like it should show Gmail Actions View Issue link1666 is expected to have body including "View Issue"1667 behaves like it should have Gmail Actions links1668 is expected to have body including "ViewAction"1669 behaves like an unsubscribeable thread1670 has a List-Unsubscribe header in the correct format, and a body link1671 behaves like an unsubscribeable thread with incoming address without %{key}1672 has a List-Unsubscribe header in the correct format, and a body link1673 behaves like appearance header and footer enabled1674 contains header and footer1675 behaves like appearance header and footer not enabled1676 does not contain header and footer1677 items that are noteable, the email for a discussion note1678 on a commit1679 has the correct subject1680 contains a link to the commit1681 behaves like a discussion note email1682 is sent to the given recipient as the author1683 contains the message from the note1684 contains an introduction1685 behaves like it should have Gmail Actions links1686 is expected to have body including "ViewAction"1687 when a comment on an existing discussion1688 contains an introduction1689 behaves like an answer to an existing thread with reply-by-email enabled1690 has X-GitLab-Project headers1691 has X-GitLab-*-ID header1692 has X-GitLab-*-IID header if model has iid defined1693 has X-GitLab-Project headers1694 has X-GitLab-*-ID header1695 has X-GitLab-*-IID header if model has iid defined1696 has the characteristics of a threaded reply1697 when reply-by-email is enabled with incoming address with %{key}1698 has a Reply-To header1699 when reply-by-email is enabled with incoming address without %{key}1700 has X-GitLab-Project headers1701 has X-GitLab-*-ID header1702 has X-GitLab-*-IID header if model has iid defined1703 has the characteristics of a threaded reply1704 has a Reply-To header1705 behaves like it should show Gmail Actions View Commit link1706 is expected to have body including "View Commit"1707 behaves like it should have Gmail Actions links1708 is expected to have body including "ViewAction"1709 behaves like a user cannot unsubscribe through footer link1710 does not have a List-Unsubscribe header or a body link1711 behaves like appearance header and footer enabled1712 contains header and footer1713 behaves like appearance header and footer not enabled1714 does not contain header and footer1715 on a merge request1716 has the correct subject1717 contains a link to the merge request note1718 behaves like a discussion note email1719 is sent to the given recipient as the author1720 contains the message from the note1721 contains an introduction1722 behaves like it should have Gmail Actions links1723 is expected to have body including "ViewAction"1724 when a comment on an existing discussion1725 contains an introduction1726 behaves like an answer to an existing thread with reply-by-email enabled1727 has X-GitLab-Project headers1728 has X-GitLab-*-ID header1729 has X-GitLab-*-IID header if model has iid defined1730 has X-GitLab-Project headers1731 has X-GitLab-*-ID header1732 has X-GitLab-*-IID header if model has iid defined1733 has the characteristics of a threaded reply1734 when reply-by-email is enabled with incoming address with %{key}1735 has a Reply-To header1736 when reply-by-email is enabled with incoming address without %{key}1737 has X-GitLab-Project headers1738 has X-GitLab-*-ID header1739 has X-GitLab-*-IID header if model has iid defined1740 has the characteristics of a threaded reply1741 has a Reply-To header1742 behaves like it should show Gmail Actions View Merge request link1743 is expected to have body including "View Merge request"1744 behaves like it should have Gmail Actions links1745 is expected to have body including "ViewAction"1746 behaves like an unsubscribeable thread1747 has a List-Unsubscribe header in the correct format, and a body link1748 behaves like an unsubscribeable thread with incoming address without %{key}1749 has a List-Unsubscribe header in the correct format, and a body link1750 behaves like appearance header and footer enabled1751 contains header and footer1752 behaves like appearance header and footer not enabled1753 does not contain header and footer1754 on an issue1755 has the correct subject1756 contains a link to the issue note1757 behaves like a discussion note email1758 is sent to the given recipient as the author1759 contains the message from the note1760 contains an introduction1761 behaves like it should have Gmail Actions links1762 is expected to have body including "ViewAction"1763 when a comment on an existing discussion1764 contains an introduction1765 behaves like an answer to an existing thread with reply-by-email enabled1766 has X-GitLab-Project headers1767 has X-GitLab-*-ID header1768 has X-GitLab-*-IID header if model has iid defined1769 has X-GitLab-Project headers1770 has X-GitLab-*-ID header1771 has X-GitLab-*-IID header if model has iid defined1772 has the characteristics of a threaded reply1773 when reply-by-email is enabled with incoming address with %{key}1774 has a Reply-To header1775 when reply-by-email is enabled with incoming address without %{key}1776 has X-GitLab-Project headers1777 has X-GitLab-*-ID header1778 has X-GitLab-*-IID header if model has iid defined1779 has the characteristics of a threaded reply1780 has a Reply-To header1781 behaves like it should show Gmail Actions View Issue link1782 is expected to have body including "View Issue"1783 behaves like it should have Gmail Actions links1784 is expected to have body including "ViewAction"1785 behaves like an unsubscribeable thread1786 has a List-Unsubscribe header in the correct format, and a body link1787 behaves like an unsubscribeable thread with incoming address without %{key}1788 has a List-Unsubscribe header in the correct format, and a body link1789 behaves like appearance header and footer enabled1790 contains header and footer1791 behaves like appearance header and footer not enabled1792 does not contain header and footer1793 items that are noteable, the email for a diff discussion note1794 on a commit1795 behaves like an email for a note on a diff discussion1796 includes diffs with character-level highlighting1797 contains a link to the diff file1798 is sent to the given recipient as the author1799 contains the message from the note1800 contains an introduction1801 when note is not on text1802 does not include diffs with character-level highlighting1803 behaves like it should have Gmail Actions links1804 is expected to have body including "ViewAction"1805 when a comment on an existing discussion1806 contains an introduction1807 behaves like it should show Gmail Actions View Commit link1808 is expected to have body including "View Commit"1809 behaves like it should have Gmail Actions links1810 is expected to have body including "ViewAction"1811 behaves like a user cannot unsubscribe through footer link1812 does not have a List-Unsubscribe header or a body link1813 behaves like appearance header and footer enabled1814 contains header and footer1815 behaves like appearance header and footer not enabled1816 does not contain header and footer1817 on a merge request1818 behaves like an email for a note on a diff discussion1819 includes diffs with character-level highlighting1820 contains a link to the diff file1821 is sent to the given recipient as the author1822 contains the message from the note1823 contains an introduction1824 when note is not on text1825 does not include diffs with character-level highlighting1826 behaves like it should have Gmail Actions links1827 is expected to have body including "ViewAction"1828 when a comment on an existing discussion1829 contains an introduction1830 behaves like it should show Gmail Actions View Merge request link1831 is expected to have body including "View Merge request"1832 behaves like it should have Gmail Actions links1833 is expected to have body including "ViewAction"1834 behaves like an unsubscribeable thread1835 has a List-Unsubscribe header in the correct format, and a body link1836 behaves like an unsubscribeable thread with incoming address without %{key}1837 has a List-Unsubscribe header in the correct format, and a body link1838 behaves like appearance header and footer enabled1839 contains header and footer1840 behaves like appearance header and footer not enabled1841 does not contain header and footer1842 for service desk issues1843 thank you email1844 has the correct recipient1845 has the correct subject and body1846 uses service bot name by default1847 behaves like an unsubscribeable thread1848 has a List-Unsubscribe header in the correct format, and a body link1849 behaves like an unsubscribeable thread with incoming address without %{key}1850 has a List-Unsubscribe header in the correct format, and a body link1851 when custom outgoing name is set1852 uses custom name in "from" header1853 when custom outgoing name is empty1854 uses service bot name1855 new note email1856 has the correct recipient1857 uses author's name in "from" header1858 has the correct subject and body1859 behaves like an unsubscribeable thread1860 has a List-Unsubscribe header in the correct format, and a body link1861 behaves like an unsubscribeable thread with incoming address without %{key}1862 has a List-Unsubscribe header in the correct format, and a body link1863 for a group1864 group access requested1865 contains all the useful information1866 behaves like an email sent from GitLab1867 has the characteristics of an email sent from GitLab1868 behaves like an email sent to a user1869 is sent to user's global notification email address1870 with group notification email1871 is sent to user's group notification email1872 behaves like it should not have Gmail Actions links1873 is expected not to have body including "ViewAction"1874 behaves like a user cannot unsubscribe through footer link1875 does not have a List-Unsubscribe header or a body link1876 behaves like appearance header and footer enabled1877 contains header and footer1878 behaves like appearance header and footer not enabled1879 does not contain header and footer1880 group access denied1881 contains all the useful information1882 behaves like an email sent from GitLab1883 has the characteristics of an email sent from GitLab1884 behaves like an email sent to a user1885 is sent to user's global notification email address1886 with group notification email1887 is sent to user's group notification email1888 behaves like it should not have Gmail Actions links1889 is expected not to have body including "ViewAction"1890 behaves like a user cannot unsubscribe through footer link1891 does not have a List-Unsubscribe header or a body link1892 behaves like appearance header and footer enabled1893 contains header and footer1894 behaves like appearance header and footer not enabled1895 does not contain header and footer1896 when user can not read group1897 hides group name from subject and body1898 group access changed1899 contains all the useful information1900 behaves like an email sent from GitLab1901 has the characteristics of an email sent from GitLab1902 behaves like an email sent to a user1903 is sent to user's global notification email address1904 with group notification email1905 is sent to user's group notification email1906 behaves like it should not have Gmail Actions links1907 is expected not to have body including "ViewAction"1908 behaves like a user cannot unsubscribe through footer link1909 does not have a List-Unsubscribe header or a body link1910 behaves like appearance header and footer enabled1911 contains header and footer1912 behaves like appearance header and footer not enabled1913 does not contain header and footer1914 behaves like it requires a group1915 when given an deleted group1916 returns NullMail type message1917 invitations1918 behaves like an email sent from GitLab1919 has the characteristics of an email sent from GitLab1920 behaves like it should show Gmail Actions Join now link1921 is expected to have body including "Join now"1922 behaves like it should have Gmail Actions links1923 is expected to have body including "ViewAction"1924 behaves like a user cannot unsubscribe through footer link1925 does not have a List-Unsubscribe header or a body link1926 behaves like appearance header and footer enabled1927 contains header and footer1928 behaves like appearance header and footer not enabled1929 does not contain header and footer1930 behaves like it requires a group1931 when given an deleted group1932 returns NullMail type message1933 behaves like does not render a manage notifications link1934 is expected not to have body including "http://localhost/-/profile/notifications"1935 when there is an inviter1936 contains all the useful information1937 when there is no inviter1938 contains all the useful information1939 with tasks to be done present1940 contains the assigned tasks to be done1941 when there is no inviter1942 does not contain the assigned tasks to be done1943 group invitation reminders1944 not sending a reminder1945 member does not exist1946 behaves like no email is sent1947 does not send an email1948 member is not created by a user1949 behaves like no email is sent1950 does not send an email1951 member is a known user1952 behaves like no email is sent1953 does not send an email1954 the first reminder1955 contains all the useful information1956 behaves like an email sent from GitLab1957 has the characteristics of an email sent from GitLab1958 behaves like it should not have Gmail Actions links1959 is expected not to have body including "ViewAction"1960 behaves like a user cannot unsubscribe through footer link1961 does not have a List-Unsubscribe header or a body link1962 the second reminder1963 contains all the useful information1964 behaves like an email sent from GitLab1965 has the characteristics of an email sent from GitLab1966 behaves like it should not have Gmail Actions links1967 is expected not to have body including "ViewAction"1968 behaves like a user cannot unsubscribe through footer link1969 does not have a List-Unsubscribe header or a body link1970 the third reminder1971 contains all the useful information1972 behaves like an email sent from GitLab1973 has the characteristics of an email sent from GitLab1974 behaves like it should not have Gmail Actions links1975 is expected not to have body including "ViewAction"1976 behaves like a user cannot unsubscribe through footer link1977 does not have a List-Unsubscribe header or a body link1978 group invitation accepted1979 contains all the useful information1980 behaves like an email sent from GitLab1981 has the characteristics of an email sent from GitLab1982 behaves like it should not have Gmail Actions links1983 is expected not to have body including "ViewAction"1984 behaves like a user cannot unsubscribe through footer link1985 does not have a List-Unsubscribe header or a body link1986 behaves like appearance header and footer enabled1987 contains header and footer1988 behaves like appearance header and footer not enabled1989 does not contain header and footer1990 behaves like it requires a group1991 when given an deleted group1992 returns NullMail type message1993 group invitation declined1994 contains all the useful information1995 behaves like an email sent from GitLab1996 has the characteristics of an email sent from GitLab1997 behaves like it should not have Gmail Actions links1998 is expected not to have body including "ViewAction"1999 behaves like a user cannot unsubscribe through footer link2000 does not have a List-Unsubscribe header or a body link2001 behaves like appearance header and footer enabled2002 contains header and footer2003 behaves like appearance header and footer not enabled2004 does not contain header and footer2005 group expiration date updated2006 when expiration date is changed2007 behaves like an email sent from GitLab2008 has the characteristics of an email sent from GitLab2009 behaves like it should not have Gmail Actions links2010 is expected not to have body including "ViewAction"2011 behaves like a user cannot unsubscribe through footer link2012 does not have a List-Unsubscribe header or a body link2013 behaves like appearance header and footer enabled2014 contains header and footer2015 behaves like appearance header and footer not enabled2016 does not contain header and footer2017 when expiration date is one day away2018 contains all the useful information2019 when expiration date is more than one day away2020 contains all the useful information2021 when a group member is newly given an expiration date2022 contains all the useful information2023 when expiration date is removed2024 contains all the useful information2025 behaves like an email sent from GitLab2026 has the characteristics of an email sent from GitLab2027 behaves like it should not have Gmail Actions links2028 is expected not to have body including "ViewAction"2029 behaves like a user cannot unsubscribe through footer link2030 does not have a List-Unsubscribe header or a body link2031 behaves like appearance header and footer enabled2032 contains header and footer2033 behaves like appearance header and footer not enabled2034 does not contain header and footer2035 admin notification2036 is sent as the author2037 is sent to recipient2038 has the correct subject2039 includes unsubscribe link2040 confirmation if email changed2041 is sent to the new user2042 has the correct subject and body2043 behaves like an email sent from GitLab2044 has the characteristics of an email sent from GitLab2045 behaves like a user cannot unsubscribe through footer link2046 does not have a List-Unsubscribe header or a body link2047 email on push for a created branch2048 is sent as the author2049 has the correct subject and body2050 behaves like it should not have Gmail Actions links2051 is expected not to have body including "ViewAction"2052 behaves like a user cannot unsubscribe through footer link2053 does not have a List-Unsubscribe header or a body link2054 behaves like an email with X-GitLab headers containing project details2055 has X-GitLab-Project headers2056 behaves like an email that contains a header with author username2057 has X-GitLab-Author header containing author's username2058 behaves like appearance header and footer enabled2059 contains header and footer2060 behaves like appearance header and footer not enabled2061 does not contain header and footer2062 email on push for a created tag2063 is sent as the author2064 has the correct subject and body2065 behaves like it should not have Gmail Actions links2066 is expected not to have body including "ViewAction"2067 behaves like a user cannot unsubscribe through footer link2068 does not have a List-Unsubscribe header or a body link2069 behaves like an email with X-GitLab headers containing project details2070 has X-GitLab-Project headers2071 behaves like an email that contains a header with author username2072 has X-GitLab-Author header containing author's username2073 behaves like appearance header and footer enabled2074 contains header and footer2075 behaves like appearance header and footer not enabled2076 does not contain header and footer2077 email on push for a deleted branch2078 is sent as the author2079 has the correct subject2080 behaves like it should not have Gmail Actions links2081 is expected not to have body including "ViewAction"2082 behaves like a user cannot unsubscribe through footer link2083 does not have a List-Unsubscribe header or a body link2084 behaves like an email with X-GitLab headers containing project details2085 has X-GitLab-Project headers2086 behaves like an email that contains a header with author username2087 has X-GitLab-Author header containing author's username2088 behaves like appearance header and footer enabled2089 contains header and footer2090 behaves like appearance header and footer not enabled2091 does not contain header and footer2092 email on push for a deleted tag2093 is sent as the author2094 has the correct subject2095 behaves like it should not have Gmail Actions links2096 is expected not to have body including "ViewAction"2097 behaves like a user cannot unsubscribe through footer link2098 does not have a List-Unsubscribe header or a body link2099 behaves like an email with X-GitLab headers containing project details2100 has X-GitLab-Project headers2101 behaves like an email that contains a header with author username2102 has X-GitLab-Author header containing author's username2103 behaves like appearance header and footer enabled2104 contains header and footer2105 behaves like appearance header and footer not enabled2106 does not contain header and footer2107 email on push with multiple commits2108 is sent as the author2109 has the correct subject and body2110 behaves like it should not have Gmail Actions links2111 is expected not to have body including "ViewAction"2112 behaves like a user cannot unsubscribe through footer link2113 does not have a List-Unsubscribe header or a body link2114 behaves like an email with X-GitLab headers containing project details2115 has X-GitLab-Project headers2116 behaves like an email that contains a header with author username2117 has X-GitLab-Author header containing author's username2118 behaves like appearance header and footer enabled2119 contains header and footer2120 behaves like appearance header and footer not enabled2121 does not contain header and footer2122 when set to send from committer email if domain matches2123 when the committer email domain is within the GitLab domain2124 is sent from the committer email2125 when the committer email domain is not completely within the GitLab domain2126 is sent from the default email2127 when the committer email domain is outside the GitLab domain2128 is sent from the default email2129 email on push with a single commit2130 is sent as the author2131 has the correct subject and body2132 behaves like it should show Gmail Actions View Commit link2133 is expected to have body including "View Commit"2134 behaves like it should have Gmail Actions links2135 is expected to have body including "ViewAction"2136 behaves like a user cannot unsubscribe through footer link2137 does not have a List-Unsubscribe header or a body link2138 behaves like an email with X-GitLab headers containing project details2139 has X-GitLab-Project headers2140 behaves like an email that contains a header with author username2141 has X-GitLab-Author header containing author's username2142 behaves like appearance header and footer enabled2143 contains header and footer2144 behaves like appearance header and footer not enabled2145 does not contain header and footer2146 HTML emails setting2147 behaves like appearance header and footer enabled2148 contains header and footer2149 behaves like appearance header and footer not enabled2150 does not contain header and footer2151 when disabled2152 only sends the text template2153 when enabled2154 sends a multipart message2155 for personal snippet notes2156 has the correct subject2157 has the correct body2158 links to the personal snippet2159 behaves like a user cannot unsubscribe through footer link2160 does not have a List-Unsubscribe header or a body link2161 behaves like appearance header and footer enabled2162 contains header and footer2163 behaves like appearance header and footer not enabled2164 does not contain header and footer2165 merge request reviews2166 is sent to the given recipient as the author2167 contains the message from the notes of the review2168 contains review author name2169 has the correct subject and body2170 behaves like an answer to an existing thread with reply-by-email enabled2171 has X-GitLab-Project headers2172 has X-GitLab-*-ID header2173 has X-GitLab-*-IID header if model has iid defined2174 has X-GitLab-Project headers2175 has X-GitLab-*-ID header2176 has X-GitLab-*-IID header if model has iid defined2177 has the characteristics of a threaded reply2178 when reply-by-email is enabled with incoming address with %{key}2179 has a Reply-To header2180 when reply-by-email is enabled with incoming address without %{key}2181 has X-GitLab-Project headers2182 has X-GitLab-*-ID header2183 has X-GitLab-*-IID header if model has iid defined2184 has the characteristics of a threaded reply2185 has a Reply-To header2186 behaves like it should show Gmail Actions View Merge request link2187 is expected to have body including "View Merge request"2188 behaves like it should have Gmail Actions links2189 is expected to have body including "ViewAction"2190 behaves like an unsubscribeable thread2191 has a List-Unsubscribe header in the correct format, and a body link2192 behaves like an unsubscribeable thread with incoming address without %{key}2193 has a List-Unsubscribe header in the correct format, and a body link2194 when diff note2195 links to notes and discussions2196 includes only one link to the highlighted_diff_email2197 avoids N+1 cached queries when rendering html2198 avoids N+1 cached queries when rendering text2199 in product marketing2200 does not raise error2201API::Discussions2202 when discussions have cross-reference system notes2203 behaves like with cross-reference system notes2204 returns only the note that the user should see2205 avoids Git calls and N+1 SQL queries2206 when noteable is an Issue2207 behaves like discussions API2208 GET /projects/:id/issues/:noteable_id/discussions2209 returns an array of discussions2210 returns a 404 error when noteable id not found2211 returns 404 when not authorized2212 GET /projects/:id/issues/:noteable_id/discussions/:discussion_id2213 returns a discussion by id2214 returns a 404 error if discussion not found2215 POST /projects/:id/issues/:noteable_id/discussions2216 creates a new note2217 returns a 400 bad request error if body not given2218 returns a 401 unauthorized error if user not authenticated2219 tracks a Notes::CreateService event2220 with notes_create_service_tracking feature flag disabled2221 does not track Notes::CreateService events2222 when an admin or owner makes the request2223 accepts the creation date to be set2224 when user does not have access to read the discussion2225 responds with 4042226 when a project is public with private repo access2227 when user is not a team member of private repo2228 creating a new note2229 raises 404 error2230 fetching a discussion2231 raises 404 error2232 POST /projects/:id/issues/:noteable_id/discussions/:discussion_id/notes2233 adds a new note to the discussion2234 returns a 400 bad request error if body not given2235 when the discussion is an individual note2236 creates a new discussion2237 PUT /projects/:id/issues/:noteable_id/discussions/:discussion_id/notes/:note_id2238 returns modified note2239 returns a 404 error when note id not found2240 returns a 400 bad request error if body not given2241 DELETE /projects/:id/issues/:noteable_id/discussions/:discussion_id/notes/:note_id2242 deletes a note2243 returns a 404 error when note id not found2244 behaves like 412 response2245 for a modified ressource2246 returns 412 with a JSON error2247 for an unmodified ressource2248 returns 204 with an empty body2249 when noteable is a Snippet2250 behaves like discussions API2251 GET /projects/:id/snippets/:noteable_id/discussions2252 returns an array of discussions2253 returns a 404 error when noteable id not found2254 returns 404 when not authorized2255 GET /projects/:id/snippets/:noteable_id/discussions/:discussion_id2256 returns a discussion by id2257 returns a 404 error if discussion not found2258 POST /projects/:id/snippets/:noteable_id/discussions2259 creates a new note2260 returns a 400 bad request error if body not given2261 returns a 401 unauthorized error if user not authenticated2262 tracks a Notes::CreateService event2263 with notes_create_service_tracking feature flag disabled2264 does not track Notes::CreateService events2265 when an admin or owner makes the request2266 accepts the creation date to be set2267 when user does not have access to read the discussion2268 responds with 4042269 when a project is public with private repo access2270 when user is not a team member of private repo2271 creating a new note2272 raises 404 error2273 fetching a discussion2274 raises 404 error2275 POST /projects/:id/snippets/:noteable_id/discussions/:discussion_id/notes2276 adds a new note to the discussion2277 returns a 400 bad request error if body not given2278 when the discussion is an individual note2279 returns 400 bad request2280 PUT /projects/:id/snippets/:noteable_id/discussions/:discussion_id/notes/:note_id2281 returns modified note2282 returns a 404 error when note id not found2283 returns a 400 bad request error if body not given2284 DELETE /projects/:id/snippets/:noteable_id/discussions/:discussion_id/notes/:note_id2285 deletes a note2286 returns a 404 error when note id not found2287 behaves like 412 response2288 for a modified ressource2289 returns 412 with a JSON error2290 for an unmodified ressource2291 returns 204 with an empty body2292 when noteable is a Merge Request2293 behaves like discussions API2294 GET /projects/:id/merge_requests/:noteable_id/discussions2295 returns an array of discussions2296 returns a 404 error when noteable id not found2297 returns 404 when not authorized2298 GET /projects/:id/merge_requests/:noteable_id/discussions/:discussion_id2299 returns a discussion by id2300 returns a 404 error if discussion not found2301 POST /projects/:id/merge_requests/:noteable_id/discussions2302 creates a new note2303 returns a 400 bad request error if body not given2304 returns a 401 unauthorized error if user not authenticated2305 tracks a Notes::CreateService event2306 with notes_create_service_tracking feature flag disabled2307 does not track Notes::CreateService events2308 when an admin or owner makes the request2309 accepts the creation date to be set2310 when user does not have access to read the discussion2311 responds with 4042312 when a project is public with private repo access2313 when user is not a team member of private repo2314 creating a new note2315 raises 404 error2316 fetching a discussion2317 raises 404 error2318 POST /projects/:id/merge_requests/:noteable_id/discussions/:discussion_id/notes2319 adds a new note to the discussion2320 returns a 400 bad request error if body not given2321 when the discussion is an individual note2322 creates a new discussion2323 PUT /projects/:id/merge_requests/:noteable_id/discussions/:discussion_id/notes/:note_id2324 returns modified note2325 returns a 404 error when note id not found2326 returns a 400 bad request error if body not given2327 DELETE /projects/:id/merge_requests/:noteable_id/discussions/:discussion_id/notes/:note_id2328 deletes a note2329 returns a 404 error when note id not found2330 behaves like 412 response2331 for a modified ressource2332 returns 412 with a JSON error2333 for an unmodified ressource2334 returns 204 with an empty body2335 behaves like diff discussions API2336 GET /projects/:id/merge_requests/:noteable_id/discussions2337 includes diff discussions2338 GET /projects/:id/merge_requests/:noteable_id/discussions/:discussion_id2339 returns a discussion by id2340 POST /projects/:id/merge_requests/:noteable_id/discussions2341 creates a new diff note2342 when position is invalid2343 returns a 400 bad request error when position is not plausible2344 returns a 400 bad request error when the position is not valid for this discussion2345 POST /projects/:id/merge_requests/:noteable_id/discussions/:discussion_id/notes2346 adds a new note to the diff discussion2347 behaves like resolvable discussions API2348 PUT /projects/:id/merge_requests/:noteable_id/discussions/:discussion_id2349 resolves discussion if resolved is true2350 unresolves discussion if resolved is false2351 returns a 400 bad request error if resolved parameter is not passed2352 returns a 401 unauthorized error if user is not authenticated2353 returns a 403 error if user resolves discussion of someone else2354 when user does not have access to read the discussion2355 responds with 4042356 PUT /projects/:id/merge_requests/:noteable_id/discussions/:discussion_id/notes/:note_id2357 returns resolved note when resolved parameter is true2358 returns a 404 error when note id not found2359 returns a 400 bad request error if neither body nor resolved parameter is given2360 returns a 403 error if user resolves note of someone else2361 when position is for a previous commit on the merge request2362 returns a 400 bad request error because the line_code is old2363 when a commit parameter is given2364 creates the discussion on that commit within the merge request2365 when noteable is a Commit2366 behaves like discussions API2367 GET /projects/:id/repository/commits/:noteable_id/discussions2368 returns an array of discussions2369 returns a 404 error when noteable id not found2370 returns 404 when not authorized2371 GET /projects/:id/repository/commits/:noteable_id/discussions/:discussion_id2372 returns a discussion by id2373 returns a 404 error if discussion not found2374 POST /projects/:id/repository/commits/:noteable_id/discussions2375 creates a new note2376 returns a 400 bad request error if body not given2377 returns a 401 unauthorized error if user not authenticated2378 tracks a Notes::CreateService event2379 with notes_create_service_tracking feature flag disabled2380 does not track Notes::CreateService events2381 when an admin or owner makes the request2382 accepts the creation date to be set2383 when user does not have access to read the discussion2384 responds with 4042385 when a project is public with private repo access2386 when user is not a team member of private repo2387 creating a new note2388 raises 404 error2389 fetching a discussion2390 raises 404 error2391 POST /projects/:id/repository/commits/:noteable_id/discussions/:discussion_id/notes2392 adds a new note to the discussion2393 returns a 400 bad request error if body not given2394 when the discussion is an individual note2395 returns 400 bad request2396 PUT /projects/:id/repository/commits/:noteable_id/discussions/:discussion_id/notes/:note_id2397 returns modified note2398 returns a 404 error when note id not found2399 returns a 400 bad request error if body not given2400 DELETE /projects/:id/repository/commits/:noteable_id/discussions/:discussion_id/notes/:note_id2401 deletes a note2402 returns a 404 error when note id not found2403 behaves like 412 response2404 for a modified ressource2405 returns 412 with a JSON error2406 for an unmodified ressource2407 returns 204 with an empty body2408 behaves like diff discussions API2409 GET /projects/:id/repository/commits/:noteable_id/discussions2410 includes diff discussions2411 GET /projects/:id/repository/commits/:noteable_id/discussions/:discussion_id2412 returns a discussion by id2413 POST /projects/:id/repository/commits/:noteable_id/discussions2414 creates a new diff note2415 when position is invalid2416 returns a 400 bad request error when position is not plausible2417 returns a 400 bad request error when the position is not valid for this discussion2418 POST /projects/:id/repository/commits/:noteable_id/discussions/:discussion_id/notes2419 adds a new note to the diff discussion2420API::Issues2421 GET /projects/:id/issues2422 avoids N+1 queries2423 returns 404 when project does not exist2424 returns 404 on private projects for other users2425 returns no issues when user has access to project but not issues2426 returns project issues without confidential issues for non project members2427 returns project issues without confidential issues for project members with guest role2428 returns project confidential issues for author2429 returns only confidential issues2430 returns only public issues2431 returns project confidential issues for assignee2432 returns project issues with confidential issues for project members2433 returns project confidential issues for admin2434 returns an array of labeled project issues2435 returns an array of labeled project issues with labels param as array2436 returns issues matching given search string for title2437 returns issues matching given search string for description2438 returns an array of issues found by iids2439 returns an empty array if iid does not exist2440 returns an empty array if not all labels matches2441 returns an array of project issues with any label2442 returns an array of project issues with any label with labels param as array2443 returns an array of project issues with no label2444 returns an array of project issues with no label with labels param as array2445 returns an empty array if no project issue matches labels2446 returns an empty array if no issue matches milestone2447 returns an empty array if milestone does not exist2448 returns an array of issues in given milestone2449 returns an array of issues matching state in milestone2450 returns an array of issues with no milestone2451 returns an array of issues with any milestone2452 sorts ascending when requested2453 sorts by updated_at descending when requested2454 sorts by updated_at ascending when requested2455 exposes known attributes2456 when unauthenticated2457 returns public project issues2458 issues_statistics2459 no state is treated as all state2460 behaves like project issues statistics2461 returns project issues statistics2462 statistics when all state is passed2463 behaves like project issues statistics2464 returns project issues statistics2465 closed state is treated as all state2466 behaves like project issues statistics2467 returns project issues statistics2468 opened state is treated as all state2469 behaves like project issues statistics2470 returns project issues statistics2471 when filtering by milestone and no state treated as all state2472 behaves like project issues statistics2473 returns project issues statistics2474 when filtering by milestone and all state2475 behaves like project issues statistics2476 returns project issues statistics2477 when filtering by milestone and closed state treated as all state2478 behaves like project issues statistics2479 returns project issues statistics2480 when filtering by milestone and opened state treated as all state2481 behaves like project issues statistics2482 returns project issues statistics2483 sort does not affect statistics2484 behaves like project issues statistics2485 returns project issues statistics2486 when user is an inherited member from the group2487 and group project is public and issues are private2488 behaves like returns project issues without confidential issues for guests2489 is expected to contain exactly 269 and 2662490 behaves like returns all project issues for reporters2491 is expected to contain exactly 273, 271, and 2702492 and group project is private2493 behaves like returns project issues without confidential issues for guests2494 is expected to contain exactly 277 and 2742495 behaves like returns all project issues for reporters2496 is expected to contain exactly 281, 279, and 2782497 behaves like accessible merge requests count2498 returns anonymous accessible merge requests count2499 returns guest accessible merge requests count2500 returns reporter accessible merge requests count2501 returns admin accessible merge requests count2502 with labeled issues2503 behaves like labeled issues with labels and label_name params2504 array of labeled issues when all labels match2505 behaves like returns label names2506 returns label names2507 array of labeled issues when all labels match with labels param as array2508 behaves like returns label names2509 returns label names2510 negation2511 array of labeled issues when all labels match with negation2512 behaves like returns negated label names2513 returns label names2514 array of labeled issues when all labels match with negation with label params as array2515 behaves like returns negated label names2516 returns label names2517 when with_labels_details provided2518 array of labeled issues when all labels match2519 behaves like returns basic label entity2520 returns basic label entity2521 array of labeled issues when all labels match with labels param as array2522 behaves like returns basic label entity2523 returns basic label entity2524 with_labels_details2525 avoids N+1 queries2526 without sort params2527 sorts by created_at descending by default2528 with 2 issues with same created_at2529 page breaks first page correctly2530 page breaks second page correctly2531 issues_statistics2532 no state is treated as all state2533 behaves like project issues statistics2534 returns project issues statistics2535 statistics when all state is passed2536 behaves like project issues statistics2537 returns project issues statistics2538 closed state is treated as all state2539 behaves like project issues statistics2540 returns project issues statistics2541 opened state is treated as all state2542 behaves like project issues statistics2543 returns project issues statistics2544 when filtering by milestone and no state treated as all state2545 behaves like project issues statistics2546 returns project issues statistics2547 when filtering by milestone and all state2548 behaves like project issues statistics2549 returns project issues statistics2550 when filtering by milestone and closed state treated as all state2551 behaves like project issues statistics2552 returns project issues statistics2553 when filtering by milestone and opened state treated as all state2554 behaves like project issues statistics2555 returns project issues statistics2556 sort does not affect statistics2557 behaves like project issues statistics2558 returns project issues statistics2559 filtering by assignee_username2560 returns issues by assignee_username2561 returns issues by assignee_username as string2562 returns error when multiple assignees are passed2563 returns error when assignee_username and assignee_id are passed together2564 GET /projects/:id/issues/:issue_iid2565 exposes known attributes2566 exposes the closed_at attribute2567 returns a project issue by internal id2568 returns 404 if issue id not found2569 returns 404 if the issue ID is used2570 when unauthenticated2571 returns public issues2572 moved_to_id2573 returns null when not moved2574 returns issue id when moved2575 links exposure2576 exposes related resources full URIs2577 confidential issues2578 returns 404 for non project members2579 returns 404 for project members with guest role2580 returns confidential issue for project members2581 returns confidential issue for author2582 returns confidential issue for assignee2583 returns confidential issue for admin2584 behaves like accessible merge requests count2585 returns anonymous accessible merge requests count2586 returns guest accessible merge requests count2587 returns reporter accessible merge requests count2588 returns admin accessible merge requests count2589 GET :id/issues/:issue_iid/closed_by2590 returns merge requests that will close issue on merge2591 returns 404 when issue doesn't exists2592 when unauthenticated2593 return public project issues2594 when no merge requests will close issue2595 returns empty array2596 GET :id/issues/:issue_iid/related_merge_requests2597 returns merge requests that mentioned a issue2598 returns merge requests cross-project wide2599 does not generate references to projects with no access2600 returns 404 when issue doesn't exists2601 when unauthenticated2602 return list of referenced merge requests from issue2603 renders 404 if project is not visible2604 no merge request mentioned a issue2605 returns empty array2606 GET /projects/:id/issues/:issue_iid/user_agent_detail2607 exposes known attributes2608 returns unauthorized for non-admin users2609 when unauthenticated2610 returns unauthorized2611 GET projects/:id/issues/:issue_iid/participants2612 returns 404 if the issue is confidential2613 behaves like issuable participants endpoint2614 returns participants2615 returns a 404 when iid does not exist2616 returns a 404 when id is used instead of iid2617 with a confidential note2618 returns a full list of participants2619 when user cannot see a confidential note2620 returns a limited list of participants2621API::DebianProjectPackages2622 with invalid parameter2623 behaves like Debian packages GET request2624 returns bad_request and expected body2625 behaves like Debian API FIPS mode2626 when FIPS mode is enabled2627 behaves like returning response status2628 returns not_found2629 GET projects/:id/packages/debian/dists/*distribution/Release.gpg2630 behaves like Debian packages read endpoint2631 with valid container2632 visibility_level: :public, user_type: :guest, auth_method: :basic, expected_status: :success, expected_body: /^-----BEGIN PGP SIGNATURE-----/2633 behaves like Debian packages GET request2634 returns success and expected body2635 behaves like Debian API FIPS mode2636 when FIPS mode is enabled2637 behaves like returning response status2638 returns not_found2639 visibility_level: :public, user_type: :not_a_member, auth_method: :basic, expected_status: :success, expected_body: /^-----BEGIN PGP SIGNATURE-----/2640 behaves like Debian packages GET request2641 returns success and expected body2642 behaves like Debian API FIPS mode2643 when FIPS mode is enabled2644 behaves like returning response status2645 returns not_found2646 visibility_level: :public, user_type: :anonymous, auth_method: :basic, expected_status: :success, expected_body: /^-----BEGIN PGP SIGNATURE-----/2647 behaves like Debian packages GET request2648 returns success and expected body2649 behaves like Debian API FIPS mode2650 when FIPS mode is enabled2651 behaves like returning response status2652 returns not_found2653 visibility_level: :public, user_type: :invalid_token, auth_method: :basic, expected_status: :unauthorized, expected_body: nil2654 behaves like Debian packages GET request2655 returns unauthorized2656 behaves like Debian API FIPS mode2657 when FIPS mode is enabled2658 behaves like returning response status2659 returns not_found2660 visibility_level: :private, user_type: :developer, auth_method: :basic, expected_status: :success, expected_body: /^-----BEGIN PGP SIGNATURE-----/2661 behaves like Debian packages GET request2662 returns success and expected body2663 behaves like Debian API FIPS mode2664 when FIPS mode is enabled2665 behaves like returning response status2666 returns not_found2667 visibility_level: :private, user_type: :developer, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil2668 behaves like Debian packages GET request2669 returns unauthorized2670 behaves like Debian API FIPS mode2671 when FIPS mode is enabled2672 behaves like returning response status2673 returns not_found2674 visibility_level: :private, user_type: :guest, auth_method: :basic, expected_status: :forbidden, expected_body: nil2675 behaves like Debian packages GET request2676 returns forbidden2677 behaves like Debian API FIPS mode2678 when FIPS mode is enabled2679 behaves like returning response status2680 returns not_found2681 visibility_level: :private, user_type: :not_a_member, auth_method: :basic, expected_status: :not_found, expected_body: nil2682 behaves like Debian packages GET request2683 returns not_found2684 behaves like Debian API FIPS mode2685 when FIPS mode is enabled2686 behaves like returning response status2687 returns not_found2688 visibility_level: :private, user_type: :anonymous, auth_method: :basic, expected_status: :unauthorized, expected_body: nil2689 behaves like Debian packages GET request2690 returns unauthorized2691 behaves like Debian API FIPS mode2692 when FIPS mode is enabled2693 behaves like returning response status2694 returns not_found2695 visibility_level: :private, user_type: :invalid_token, auth_method: :basic, expected_status: :unauthorized, expected_body: nil2696 behaves like Debian packages GET request2697 returns unauthorized2698 behaves like Debian API FIPS mode2699 when FIPS mode is enabled2700 behaves like returning response status2701 returns not_found2702 behaves like rejects Debian access with unknown container id2703 with an unknown container2704 as anonymous2705 behaves like Debian packages GET request2706 returns unauthorized2707 behaves like Debian API FIPS mode2708 when FIPS mode is enabled2709 behaves like returning response status2710 returns not_found2711 as authenticated user2712 behaves like Debian packages GET request2713 returns not_found2714 behaves like Debian API FIPS mode2715 when FIPS mode is enabled2716 behaves like returning response status2717 returns not_found2718 GET projects/:id/packages/debian/dists/*distribution/Release2719 behaves like Debian packages read endpoint2720 with valid container2721 visibility_level: :public, user_type: :guest, auth_method: :basic, expected_status: :success, expected_body: /^Codename: fixture-distribution\n$/2722 behaves like Debian packages GET request2723 returns success and expected body2724 behaves like Debian API FIPS mode2725 when FIPS mode is enabled2726 behaves like returning response status2727 returns not_found2728 visibility_level: :public, user_type: :not_a_member, auth_method: :basic, expected_status: :success, expected_body: /^Codename: fixture-distribution\n$/2729 behaves like Debian packages GET request2730 returns success and expected body2731 behaves like Debian API FIPS mode2732 when FIPS mode is enabled2733 behaves like returning response status2734 returns not_found2735 visibility_level: :public, user_type: :anonymous, auth_method: :basic, expected_status: :success, expected_body: /^Codename: fixture-distribution\n$/2736 behaves like Debian packages GET request2737 returns success and expected body2738 behaves like Debian API FIPS mode2739 when FIPS mode is enabled2740 behaves like returning response status2741 returns not_found2742 visibility_level: :public, user_type: :invalid_token, auth_method: :basic, expected_status: :unauthorized, expected_body: nil2743 behaves like Debian packages GET request2744 returns unauthorized2745 behaves like Debian API FIPS mode2746 when FIPS mode is enabled2747 behaves like returning response status2748 returns not_found2749 visibility_level: :private, user_type: :developer, auth_method: :basic, expected_status: :success, expected_body: /^Codename: fixture-distribution\n$/2750 behaves like Debian packages GET request2751 returns success and expected body2752 behaves like Debian API FIPS mode2753 when FIPS mode is enabled2754 behaves like returning response status2755 returns not_found2756 visibility_level: :private, user_type: :developer, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil2757 behaves like Debian packages GET request2758 returns unauthorized2759 behaves like Debian API FIPS mode2760 when FIPS mode is enabled2761 behaves like returning response status2762 returns not_found2763 visibility_level: :private, user_type: :guest, auth_method: :basic, expected_status: :forbidden, expected_body: nil2764 behaves like Debian packages GET request2765 returns forbidden2766 behaves like Debian API FIPS mode2767 when FIPS mode is enabled2768 behaves like returning response status2769 returns not_found2770 visibility_level: :private, user_type: :not_a_member, auth_method: :basic, expected_status: :not_found, expected_body: nil2771 behaves like Debian packages GET request2772 returns not_found2773 behaves like Debian API FIPS mode2774 when FIPS mode is enabled2775 behaves like returning response status2776 returns not_found2777 visibility_level: :private, user_type: :anonymous, auth_method: :basic, expected_status: :unauthorized, expected_body: nil2778 behaves like Debian packages GET request2779 returns unauthorized2780 behaves like Debian API FIPS mode2781 when FIPS mode is enabled2782 behaves like returning response status2783 returns not_found2784 visibility_level: :private, user_type: :invalid_token, auth_method: :basic, expected_status: :unauthorized, expected_body: nil2785 behaves like Debian packages GET request2786 returns unauthorized2787 behaves like Debian API FIPS mode2788 when FIPS mode is enabled2789 behaves like returning response status2790 returns not_found2791 behaves like rejects Debian access with unknown container id2792 with an unknown container2793 as anonymous2794 behaves like Debian packages GET request2795 returns unauthorized2796 behaves like Debian API FIPS mode2797 when FIPS mode is enabled2798 behaves like returning response status2799 returns not_found2800 as authenticated user2801 behaves like Debian packages GET request2802 returns not_found2803 behaves like Debian API FIPS mode2804 when FIPS mode is enabled2805 behaves like returning response status2806 returns not_found2807 GET projects/:id/packages/debian/dists/*distribution/InRelease2808 behaves like Debian packages read endpoint2809 with valid container2810 visibility_level: :public, user_type: :guest, auth_method: :basic, expected_status: :success, expected_body: /^-----BEGIN PGP SIGNED MESSAGE-----/2811 behaves like Debian packages GET request2812 returns success and expected body2813 behaves like Debian API FIPS mode2814 when FIPS mode is enabled2815 behaves like returning response status2816 returns not_found2817 visibility_level: :public, user_type: :not_a_member, auth_method: :basic, expected_status: :success, expected_body: /^-----BEGIN PGP SIGNED MESSAGE-----/2818 behaves like Debian packages GET request2819 returns success and expected body2820 behaves like Debian API FIPS mode2821 when FIPS mode is enabled2822 behaves like returning response status2823 returns not_found2824 visibility_level: :public, user_type: :anonymous, auth_method: :basic, expected_status: :success, expected_body: /^-----BEGIN PGP SIGNED MESSAGE-----/2825 behaves like Debian packages GET request2826 returns success and expected body2827 behaves like Debian API FIPS mode2828 when FIPS mode is enabled2829 behaves like returning response status2830 returns not_found2831 visibility_level: :public, user_type: :invalid_token, auth_method: :basic, expected_status: :unauthorized, expected_body: nil2832 behaves like Debian packages GET request2833 returns unauthorized2834 behaves like Debian API FIPS mode2835 when FIPS mode is enabled2836 behaves like returning response status2837 returns not_found2838 visibility_level: :private, user_type: :developer, auth_method: :basic, expected_status: :success, expected_body: /^-----BEGIN PGP SIGNED MESSAGE-----/2839 behaves like Debian packages GET request2840 returns success and expected body2841 behaves like Debian API FIPS mode2842 when FIPS mode is enabled2843 behaves like returning response status2844 returns not_found2845 visibility_level: :private, user_type: :developer, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil2846 behaves like Debian packages GET request2847 returns unauthorized2848 behaves like Debian API FIPS mode2849 when FIPS mode is enabled2850 behaves like returning response status2851 returns not_found2852 visibility_level: :private, user_type: :guest, auth_method: :basic, expected_status: :forbidden, expected_body: nil2853 behaves like Debian packages GET request2854 returns forbidden2855 behaves like Debian API FIPS mode2856 when FIPS mode is enabled2857 behaves like returning response status2858 returns not_found2859 visibility_level: :private, user_type: :not_a_member, auth_method: :basic, expected_status: :not_found, expected_body: nil2860 behaves like Debian packages GET request2861 returns not_found2862 behaves like Debian API FIPS mode2863 when FIPS mode is enabled2864 behaves like returning response status2865 returns not_found2866 visibility_level: :private, user_type: :anonymous, auth_method: :basic, expected_status: :unauthorized, expected_body: nil2867 behaves like Debian packages GET request2868 returns unauthorized2869 behaves like Debian API FIPS mode2870 when FIPS mode is enabled2871 behaves like returning response status2872 returns not_found2873 visibility_level: :private, user_type: :invalid_token, auth_method: :basic, expected_status: :unauthorized, expected_body: nil2874 behaves like Debian packages GET request2875 returns unauthorized2876 behaves like Debian API FIPS mode2877 when FIPS mode is enabled2878 behaves like returning response status2879 returns not_found2880 behaves like rejects Debian access with unknown container id2881 with an unknown container2882 as anonymous2883 behaves like Debian packages GET request2884 returns unauthorized2885 behaves like Debian API FIPS mode2886 when FIPS mode is enabled2887 behaves like returning response status2888 returns not_found2889 as authenticated user2890 behaves like Debian packages GET request2891 returns not_found2892 behaves like Debian API FIPS mode2893 when FIPS mode is enabled2894 behaves like returning response status2895 returns not_found2896 GET projects/:id/packages/debian/dists/*distribution/:component/binary-:architecture/Packages2897 behaves like Debian packages read endpoint2898 with valid container2899 visibility_level: :public, user_type: :guest, auth_method: :basic, expected_status: :success, expected_body: /Description: This is an incomplete Packages file/2900 behaves like Debian packages GET request2901 returns success and expected body2902 behaves like Debian API FIPS mode2903 when FIPS mode is enabled2904 behaves like returning response status2905 returns not_found2906 visibility_level: :public, user_type: :not_a_member, auth_method: :basic, expected_status: :success, expected_body: /Description: This is an incomplete Packages file/2907 behaves like Debian packages GET request2908 returns success and expected body2909 behaves like Debian API FIPS mode2910 when FIPS mode is enabled2911 behaves like returning response status2912 returns not_found2913 visibility_level: :public, user_type: :anonymous, auth_method: :basic, expected_status: :success, expected_body: /Description: This is an incomplete Packages file/2914 behaves like Debian packages GET request2915 returns success and expected body2916 behaves like Debian API FIPS mode2917 when FIPS mode is enabled2918 behaves like returning response status2919 returns not_found2920 visibility_level: :public, user_type: :invalid_token, auth_method: :basic, expected_status: :unauthorized, expected_body: nil2921 behaves like Debian packages GET request2922 returns unauthorized2923 behaves like Debian API FIPS mode2924 when FIPS mode is enabled2925 behaves like returning response status2926 returns not_found2927 visibility_level: :private, user_type: :developer, auth_method: :basic, expected_status: :success, expected_body: /Description: This is an incomplete Packages file/2928 behaves like Debian packages GET request2929 returns success and expected body2930 behaves like Debian API FIPS mode2931 when FIPS mode is enabled2932 behaves like returning response status2933 returns not_found2934 visibility_level: :private, user_type: :developer, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil2935 behaves like Debian packages GET request2936 returns unauthorized2937 behaves like Debian API FIPS mode2938 when FIPS mode is enabled2939 behaves like returning response status2940 returns not_found2941 visibility_level: :private, user_type: :guest, auth_method: :basic, expected_status: :forbidden, expected_body: nil2942 behaves like Debian packages GET request2943 returns forbidden2944 behaves like Debian API FIPS mode2945 when FIPS mode is enabled2946 behaves like returning response status2947 returns not_found2948 visibility_level: :private, user_type: :not_a_member, auth_method: :basic, expected_status: :not_found, expected_body: nil2949 behaves like Debian packages GET request2950 returns not_found2951 behaves like Debian API FIPS mode2952 when FIPS mode is enabled2953 behaves like returning response status2954 returns not_found2955 visibility_level: :private, user_type: :anonymous, auth_method: :basic, expected_status: :unauthorized, expected_body: nil2956 behaves like Debian packages GET request2957 returns unauthorized2958 behaves like Debian API FIPS mode2959 when FIPS mode is enabled2960 behaves like returning response status2961 returns not_found2962 visibility_level: :private, user_type: :invalid_token, auth_method: :basic, expected_status: :unauthorized, expected_body: nil2963 behaves like Debian packages GET request2964 returns unauthorized2965 behaves like Debian API FIPS mode2966 when FIPS mode is enabled2967 behaves like returning response status2968 returns not_found2969 behaves like rejects Debian access with unknown container id2970 with an unknown container2971 as anonymous2972 behaves like Debian packages GET request2973 returns unauthorized2974 behaves like Debian API FIPS mode2975 when FIPS mode is enabled2976 behaves like returning response status2977 returns not_found2978 as authenticated user2979 behaves like Debian packages GET request2980 returns not_found2981 behaves like Debian API FIPS mode2982 when FIPS mode is enabled2983 behaves like returning response status2984 returns not_found2985 GET projects/:id/packages/debian/dists/*distribution/:component/binary-:architecture/by-hash/SHA256/:file_sha2562986 behaves like Debian packages read endpoint2987 with valid container2988 visibility_level: :public, user_type: :guest, auth_method: :basic, expected_status: :success, expected_body: /^Other SHA256$/2989 behaves like Debian packages GET request2990 returns success and expected body2991 behaves like Debian API FIPS mode2992 when FIPS mode is enabled2993 behaves like returning response status2994 returns not_found2995 visibility_level: :public, user_type: :not_a_member, auth_method: :basic, expected_status: :success, expected_body: /^Other SHA256$/2996 behaves like Debian packages GET request2997 returns success and expected body2998 behaves like Debian API FIPS mode2999 when FIPS mode is enabled3000 behaves like returning response status3001 returns not_found3002 visibility_level: :public, user_type: :anonymous, auth_method: :basic, expected_status: :success, expected_body: /^Other SHA256$/3003 behaves like Debian packages GET request3004 returns success and expected body3005 behaves like Debian API FIPS mode3006 when FIPS mode is enabled3007 behaves like returning response status3008 returns not_found3009 visibility_level: :public, user_type: :invalid_token, auth_method: :basic, expected_status: :unauthorized, expected_body: nil3010 behaves like Debian packages GET request3011 returns unauthorized3012 behaves like Debian API FIPS mode3013 when FIPS mode is enabled3014 behaves like returning response status3015 returns not_found3016 visibility_level: :private, user_type: :developer, auth_method: :basic, expected_status: :success, expected_body: /^Other SHA256$/3017 behaves like Debian packages GET request3018 returns success and expected body3019 behaves like Debian API FIPS mode3020 when FIPS mode is enabled3021 behaves like returning response status3022 returns not_found3023 visibility_level: :private, user_type: :developer, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil3024 behaves like Debian packages GET request3025 returns unauthorized3026 behaves like Debian API FIPS mode3027 when FIPS mode is enabled3028 behaves like returning response status3029 returns not_found3030 visibility_level: :private, user_type: :guest, auth_method: :basic, expected_status: :forbidden, expected_body: nil3031 behaves like Debian packages GET request3032 returns forbidden3033 behaves like Debian API FIPS mode3034 when FIPS mode is enabled3035 behaves like returning response status3036 returns not_found3037 visibility_level: :private, user_type: :not_a_member, auth_method: :basic, expected_status: :not_found, expected_body: nil3038 behaves like Debian packages GET request3039 returns not_found3040 behaves like Debian API FIPS mode3041 when FIPS mode is enabled3042 behaves like returning response status3043 returns not_found3044 visibility_level: :private, user_type: :anonymous, auth_method: :basic, expected_status: :unauthorized, expected_body: nil3045 behaves like Debian packages GET request3046 returns unauthorized3047 behaves like Debian API FIPS mode3048 when FIPS mode is enabled3049 behaves like returning response status3050 returns not_found3051 visibility_level: :private, user_type: :invalid_token, auth_method: :basic, expected_status: :unauthorized, expected_body: nil3052 behaves like Debian packages GET request3053 returns unauthorized3054 behaves like Debian API FIPS mode3055 when FIPS mode is enabled3056 behaves like returning response status3057 returns not_found3058 behaves like rejects Debian access with unknown container id3059 with an unknown container3060 as anonymous3061 behaves like Debian packages GET request3062 returns unauthorized3063 behaves like Debian API FIPS mode3064 when FIPS mode is enabled3065 behaves like returning response status3066 returns not_found3067 as authenticated user3068 behaves like Debian packages GET request3069 returns not_found3070 behaves like Debian API FIPS mode3071 when FIPS mode is enabled3072 behaves like returning response status3073 returns not_found3074 GET projects/:id/packages/debian/dists/*distribution/source/Sources3075 behaves like Debian packages read endpoint3076 with valid container3077 visibility_level: :public, user_type: :guest, auth_method: :basic, expected_status: :success, expected_body: /Description: This is an incomplete Sources file/3078 behaves like Debian packages GET request3079 returns success and expected body3080 behaves like Debian API FIPS mode3081 when FIPS mode is enabled3082 behaves like returning response status3083 returns not_found3084 visibility_level: :public, user_type: :not_a_member, auth_method: :basic, expected_status: :success, expected_body: /Description: This is an incomplete Sources file/3085 behaves like Debian packages GET request3086 returns success and expected body3087 behaves like Debian API FIPS mode3088 when FIPS mode is enabled3089 behaves like returning response status3090 returns not_found3091 visibility_level: :public, user_type: :anonymous, auth_method: :basic, expected_status: :success, expected_body: /Description: This is an incomplete Sources file/3092 behaves like Debian packages GET request3093 returns success and expected body3094 behaves like Debian API FIPS mode3095 when FIPS mode is enabled3096 behaves like returning response status3097 returns not_found3098 visibility_level: :public, user_type: :invalid_token, auth_method: :basic, expected_status: :unauthorized, expected_body: nil3099 behaves like Debian packages GET request3100 returns unauthorized3101 behaves like Debian API FIPS mode3102 when FIPS mode is enabled3103 behaves like returning response status3104 returns not_found3105 visibility_level: :private, user_type: :developer, auth_method: :basic, expected_status: :success, expected_body: /Description: This is an incomplete Sources file/3106 behaves like Debian packages GET request3107 returns success and expected body3108 behaves like Debian API FIPS mode3109 when FIPS mode is enabled3110 behaves like returning response status3111 returns not_found3112 visibility_level: :private, user_type: :developer, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil3113 behaves like Debian packages GET request3114 returns unauthorized3115 behaves like Debian API FIPS mode3116 when FIPS mode is enabled3117 behaves like returning response status3118 returns not_found3119 visibility_level: :private, user_type: :guest, auth_method: :basic, expected_status: :forbidden, expected_body: nil3120 behaves like Debian packages GET request3121 returns forbidden3122 behaves like Debian API FIPS mode3123 when FIPS mode is enabled3124 behaves like returning response status3125 returns not_found3126 visibility_level: :private, user_type: :not_a_member, auth_method: :basic, expected_status: :not_found, expected_body: nil3127 behaves like Debian packages GET request3128 returns not_found3129 behaves like Debian API FIPS mode3130 when FIPS mode is enabled3131 behaves like returning response status3132 returns not_found3133 visibility_level: :private, user_type: :anonymous, auth_method: :basic, expected_status: :unauthorized, expected_body: nil3134 behaves like Debian packages GET request3135 returns unauthorized3136 behaves like Debian API FIPS mode3137 when FIPS mode is enabled3138 behaves like returning response status3139 returns not_found3140 visibility_level: :private, user_type: :invalid_token, auth_method: :basic, expected_status: :unauthorized, expected_body: nil3141 behaves like Debian packages GET request3142 returns unauthorized3143 behaves like Debian API FIPS mode3144 when FIPS mode is enabled3145 behaves like returning response status3146 returns not_found3147 behaves like rejects Debian access with unknown container id3148 with an unknown container3149 as anonymous3150 behaves like Debian packages GET request3151 returns unauthorized3152 behaves like Debian API FIPS mode3153 when FIPS mode is enabled3154 behaves like returning response status3155 returns not_found3156 as authenticated user3157 behaves like Debian packages GET request3158 returns not_found3159 behaves like Debian API FIPS mode3160 when FIPS mode is enabled3161 behaves like returning response status3162 returns not_found3163 GET projects/:id/packages/debian/dists/*distribution/source/by-hash/SHA256/:file_sha2563164 behaves like Debian packages read endpoint3165 with valid container3166 visibility_level: :public, user_type: :guest, auth_method: :basic, expected_status: :success, expected_body: /^Other SHA256$/3167 behaves like Debian packages GET request3168 returns success and expected body3169 behaves like Debian API FIPS mode3170 when FIPS mode is enabled3171 behaves like returning response status3172 returns not_found3173 visibility_level: :public, user_type: :not_a_member, auth_method: :basic, expected_status: :success, expected_body: /^Other SHA256$/3174 behaves like Debian packages GET request3175 returns success and expected body3176 behaves like Debian API FIPS mode3177 when FIPS mode is enabled3178 behaves like returning response status3179 returns not_found3180 visibility_level: :public, user_type: :anonymous, auth_method: :basic, expected_status: :success, expected_body: /^Other SHA256$/3181 behaves like Debian packages GET request3182 returns success and expected body3183 behaves like Debian API FIPS mode3184 when FIPS mode is enabled3185 behaves like returning response status3186 returns not_found3187 visibility_level: :public, user_type: :invalid_token, auth_method: :basic, expected_status: :unauthorized, expected_body: nil3188 behaves like Debian packages GET request3189 returns unauthorized3190 behaves like Debian API FIPS mode3191 when FIPS mode is enabled3192 behaves like returning response status3193 returns not_found3194 visibility_level: :private, user_type: :developer, auth_method: :basic, expected_status: :success, expected_body: /^Other SHA256$/3195 behaves like Debian packages GET request3196 returns success and expected body3197 behaves like Debian API FIPS mode3198 when FIPS mode is enabled3199 behaves like returning response status3200 returns not_found3201 visibility_level: :private, user_type: :developer, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil3202 behaves like Debian packages GET request3203 returns unauthorized3204 behaves like Debian API FIPS mode3205 when FIPS mode is enabled3206 behaves like returning response status3207 returns not_found3208 visibility_level: :private, user_type: :guest, auth_method: :basic, expected_status: :forbidden, expected_body: nil3209 behaves like Debian packages GET request3210 returns forbidden3211 behaves like Debian API FIPS mode3212 when FIPS mode is enabled3213 behaves like returning response status3214 returns not_found3215 visibility_level: :private, user_type: :not_a_member, auth_method: :basic, expected_status: :not_found, expected_body: nil3216 behaves like Debian packages GET request3217 returns not_found3218 behaves like Debian API FIPS mode3219 when FIPS mode is enabled3220 behaves like returning response status3221 returns not_found3222 visibility_level: :private, user_type: :anonymous, auth_method: :basic, expected_status: :unauthorized, expected_body: nil3223 behaves like Debian packages GET request3224 returns unauthorized3225 behaves like Debian API FIPS mode3226 when FIPS mode is enabled3227 behaves like returning response status3228 returns not_found3229 visibility_level: :private, user_type: :invalid_token, auth_method: :basic, expected_status: :unauthorized, expected_body: nil3230 behaves like Debian packages GET request3231 returns unauthorized3232 behaves like Debian API FIPS mode3233 when FIPS mode is enabled3234 behaves like returning response status3235 returns not_found3236 behaves like rejects Debian access with unknown container id3237 with an unknown container3238 as anonymous3239 behaves like Debian packages GET request3240 returns unauthorized3241 behaves like Debian API FIPS mode3242 when FIPS mode is enabled3243 behaves like returning response status3244 returns not_found3245 as authenticated user3246 behaves like Debian packages GET request3247 returns not_found3248 behaves like Debian API FIPS mode3249 when FIPS mode is enabled3250 behaves like returning response status3251 returns not_found3252 GET projects/:id/packages/debian/dists/*distribution/:component/debian-installer/binary-:architecture/Packages3253 behaves like Debian packages read endpoint3254 with valid container3255 visibility_level: :public, user_type: :guest, auth_method: :basic, expected_status: :success, expected_body: /Description: This is an incomplete D-I Packages file/3256 behaves like Debian packages GET request3257 returns success and expected body3258 behaves like Debian API FIPS mode3259 when FIPS mode is enabled3260 behaves like returning response status3261 returns not_found3262 visibility_level: :public, user_type: :not_a_member, auth_method: :basic, expected_status: :success, expected_body: /Description: This is an incomplete D-I Packages file/3263 behaves like Debian packages GET request3264 returns success and expected body3265 behaves like Debian API FIPS mode3266 when FIPS mode is enabled3267 behaves like returning response status3268 returns not_found3269 visibility_level: :public, user_type: :anonymous, auth_method: :basic, expected_status: :success, expected_body: /Description: This is an incomplete D-I Packages file/3270 behaves like Debian packages GET request3271 returns success and expected body3272 behaves like Debian API FIPS mode3273 when FIPS mode is enabled3274 behaves like returning response status3275 returns not_found3276 visibility_level: :public, user_type: :invalid_token, auth_method: :basic, expected_status: :unauthorized, expected_body: nil3277 behaves like Debian packages GET request3278 returns unauthorized3279 behaves like Debian API FIPS mode3280 when FIPS mode is enabled3281 behaves like returning response status3282 returns not_found3283 visibility_level: :private, user_type: :developer, auth_method: :basic, expected_status: :success, expected_body: /Description: This is an incomplete D-I Packages file/3284 behaves like Debian packages GET request3285 returns success and expected body3286 behaves like Debian API FIPS mode3287 when FIPS mode is enabled3288 behaves like returning response status3289 returns not_found3290 visibility_level: :private, user_type: :developer, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil3291 behaves like Debian packages GET request3292 returns unauthorized3293 behaves like Debian API FIPS mode3294 when FIPS mode is enabled3295 behaves like returning response status3296 returns not_found3297 visibility_level: :private, user_type: :guest, auth_method: :basic, expected_status: :forbidden, expected_body: nil3298 behaves like Debian packages GET request3299 returns forbidden3300 behaves like Debian API FIPS mode3301 when FIPS mode is enabled3302 behaves like returning response status3303 returns not_found3304 visibility_level: :private, user_type: :not_a_member, auth_method: :basic, expected_status: :not_found, expected_body: nil3305 behaves like Debian packages GET request3306 returns not_found3307 behaves like Debian API FIPS mode3308 when FIPS mode is enabled3309 behaves like returning response status3310 returns not_found3311 visibility_level: :private, user_type: :anonymous, auth_method: :basic, expected_status: :unauthorized, expected_body: nil3312 behaves like Debian packages GET request3313 returns unauthorized3314 behaves like Debian API FIPS mode3315 when FIPS mode is enabled3316 behaves like returning response status3317 returns not_found3318 visibility_level: :private, user_type: :invalid_token, auth_method: :basic, expected_status: :unauthorized, expected_body: nil3319 behaves like Debian packages GET request3320 returns unauthorized3321 behaves like Debian API FIPS mode3322 when FIPS mode is enabled3323 behaves like returning response status3324 returns not_found3325 behaves like rejects Debian access with unknown container id3326 with an unknown container3327 as anonymous3328 behaves like Debian packages GET request3329 returns unauthorized3330 behaves like Debian API FIPS mode3331 when FIPS mode is enabled3332 behaves like returning response status3333 returns not_found3334 as authenticated user3335 behaves like Debian packages GET request3336 returns not_found3337 behaves like Debian API FIPS mode3338 when FIPS mode is enabled3339 behaves like returning response status3340 returns not_found3341 GET projects/:id/packages/debian/dists/*distribution/:component/debian-installer/binary-:architecture/by-hash/SHA256/:file_sha2563342 behaves like Debian packages read endpoint3343 with valid container3344 visibility_level: :public, user_type: :guest, auth_method: :basic, expected_status: :success, expected_body: /^Other SHA256$/3345 behaves like Debian packages GET request3346 returns success and expected body3347 behaves like Debian API FIPS mode3348 when FIPS mode is enabled3349 behaves like returning response status3350 returns not_found3351 visibility_level: :public, user_type: :not_a_member, auth_method: :basic, expected_status: :success, expected_body: /^Other SHA256$/3352 behaves like Debian packages GET request3353 returns success and expected body3354 behaves like Debian API FIPS mode3355 when FIPS mode is enabled3356 behaves like returning response status3357 returns not_found3358 visibility_level: :public, user_type: :anonymous, auth_method: :basic, expected_status: :success, expected_body: /^Other SHA256$/3359 behaves like Debian packages GET request3360 returns success and expected body3361 behaves like Debian API FIPS mode3362 when FIPS mode is enabled3363 behaves like returning response status3364 returns not_found3365 visibility_level: :public, user_type: :invalid_token, auth_method: :basic, expected_status: :unauthorized, expected_body: nil3366 behaves like Debian packages GET request3367 returns unauthorized3368 behaves like Debian API FIPS mode3369 when FIPS mode is enabled3370 behaves like returning response status3371 returns not_found3372 visibility_level: :private, user_type: :developer, auth_method: :basic, expected_status: :success, expected_body: /^Other SHA256$/3373 behaves like Debian packages GET request3374 returns success and expected body3375 behaves like Debian API FIPS mode3376 when FIPS mode is enabled3377 behaves like returning response status3378 returns not_found3379 visibility_level: :private, user_type: :developer, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil3380 behaves like Debian packages GET request3381 returns unauthorized3382 behaves like Debian API FIPS mode3383 when FIPS mode is enabled3384 behaves like returning response status3385 returns not_found3386 visibility_level: :private, user_type: :guest, auth_method: :basic, expected_status: :forbidden, expected_body: nil3387 behaves like Debian packages GET request3388 returns forbidden3389 behaves like Debian API FIPS mode3390 when FIPS mode is enabled3391 behaves like returning response status3392 returns not_found3393 visibility_level: :private, user_type: :not_a_member, auth_method: :basic, expected_status: :not_found, expected_body: nil3394 behaves like Debian packages GET request3395 returns not_found3396 behaves like Debian API FIPS mode3397 when FIPS mode is enabled3398 behaves like returning response status3399 returns not_found3400 visibility_level: :private, user_type: :anonymous, auth_method: :basic, expected_status: :unauthorized, expected_body: nil3401 behaves like Debian packages GET request3402 returns unauthorized3403 behaves like Debian API FIPS mode3404 when FIPS mode is enabled3405 behaves like returning response status3406 returns not_found3407 visibility_level: :private, user_type: :invalid_token, auth_method: :basic, expected_status: :unauthorized, expected_body: nil3408 behaves like Debian packages GET request3409 returns unauthorized3410 behaves like Debian API FIPS mode3411 when FIPS mode is enabled3412 behaves like returning response status3413 returns not_found3414 behaves like rejects Debian access with unknown container id3415 with an unknown container3416 as anonymous3417 behaves like Debian packages GET request3418 returns unauthorized3419 behaves like Debian API FIPS mode3420 when FIPS mode is enabled3421 behaves like returning response status3422 returns not_found3423 as authenticated user3424 behaves like Debian packages GET request3425 returns not_found3426 behaves like Debian API FIPS mode3427 when FIPS mode is enabled3428 behaves like returning response status3429 returns not_found3430 GET projects/:id/packages/debian/pool/:codename/:letter/:package_name/:package_version/:file_name3431 file_name: "sample_1.2.3~alpha2.tar.xz", success_body: /^.7zXZ/3432 behaves like Debian packages read endpoint3433 with valid container3434 visibility_level: :public, user_type: :guest, auth_method: :basic, expected_status: :success, expected_body: /^.7zXZ/3435 behaves like Debian packages GET request3436 returns success and expected body3437 behaves like Debian API FIPS mode3438 when FIPS mode is enabled3439 behaves like returning response status3440 returns not_found3441 visibility_level: :public, user_type: :not_a_member, auth_method: :basic, expected_status: :success, expected_body: /^.7zXZ/3442 behaves like Debian packages GET request3443 returns success and expected body3444 behaves like Debian API FIPS mode3445 when FIPS mode is enabled3446 behaves like returning response status3447 returns not_found3448 visibility_level: :public, user_type: :anonymous, auth_method: :basic, expected_status: :success, expected_body: /^.7zXZ/3449 behaves like Debian packages GET request3450 returns success and expected body3451 behaves like Debian API FIPS mode3452 when FIPS mode is enabled3453 behaves like returning response status3454 returns not_found3455 visibility_level: :public, user_type: :invalid_token, auth_method: :basic, expected_status: :unauthorized, expected_body: nil3456 behaves like Debian packages GET request3457 returns unauthorized3458 behaves like Debian API FIPS mode3459 when FIPS mode is enabled3460 behaves like returning response status3461 returns not_found3462 visibility_level: :private, user_type: :developer, auth_method: :basic, expected_status: :success, expected_body: /^.7zXZ/3463 behaves like Debian packages GET request3464 returns success and expected body3465 behaves like Debian API FIPS mode3466 when FIPS mode is enabled3467 behaves like returning response status3468 returns not_found3469 visibility_level: :private, user_type: :developer, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil3470 behaves like Debian packages GET request3471 returns unauthorized3472 behaves like Debian API FIPS mode3473 when FIPS mode is enabled3474 behaves like returning response status3475 returns not_found3476 visibility_level: :private, user_type: :guest, auth_method: :basic, expected_status: :forbidden, expected_body: nil3477 behaves like Debian packages GET request3478 returns forbidden3479 behaves like Debian API FIPS mode3480 when FIPS mode is enabled3481 behaves like returning response status3482 returns not_found3483 visibility_level: :private, user_type: :not_a_member, auth_method: :basic, expected_status: :not_found, expected_body: nil3484 behaves like Debian packages GET request3485 returns not_found3486 behaves like Debian API FIPS mode3487 when FIPS mode is enabled3488 behaves like returning response status3489 returns not_found3490 visibility_level: :private, user_type: :anonymous, auth_method: :basic, expected_status: :unauthorized, expected_body: nil3491 behaves like Debian packages GET request3492 returns unauthorized3493 behaves like Debian API FIPS mode3494 when FIPS mode is enabled3495 behaves like returning response status3496 returns not_found3497 visibility_level: :private, user_type: :invalid_token, auth_method: :basic, expected_status: :unauthorized, expected_body: nil3498 behaves like Debian packages GET request3499 returns unauthorized3500 behaves like Debian API FIPS mode3501 when FIPS mode is enabled3502 behaves like returning response status3503 returns not_found3504 behaves like rejects Debian access with unknown container id3505 with an unknown container3506 as anonymous3507 behaves like Debian packages GET request3508 returns unauthorized3509 behaves like Debian API FIPS mode3510 when FIPS mode is enabled3511 behaves like returning response status3512 returns not_found3513 as authenticated user3514 behaves like Debian packages GET request3515 returns not_found3516 behaves like Debian API FIPS mode3517 when FIPS mode is enabled3518 behaves like returning response status3519 returns not_found3520 for bumping last downloaded at3521 behaves like bumping the package last downloaded at field3522 bumps last_downloaded_at3523 file_name: "sample_1.2.3~alpha2.dsc", success_body: /^Format: 3.0 \(native\)/3524 behaves like Debian packages read endpoint3525 with valid container3526 visibility_level: :public, user_type: :guest, auth_method: :basic, expected_status: :success, expected_body: /^Format: 3.0 \(native\)/3527 behaves like Debian packages GET request3528 returns success and expected body3529 behaves like Debian API FIPS mode3530 when FIPS mode is enabled3531 behaves like returning response status3532 returns not_found3533 visibility_level: :public, user_type: :not_a_member, auth_method: :basic, expected_status: :success, expected_body: /^Format: 3.0 \(native\)/3534 behaves like Debian packages GET request3535 returns success and expected body3536 behaves like Debian API FIPS mode3537 when FIPS mode is enabled3538 behaves like returning response status3539 returns not_found3540 visibility_level: :public, user_type: :anonymous, auth_method: :basic, expected_status: :success, expected_body: /^Format: 3.0 \(native\)/3541 behaves like Debian packages GET request3542 returns success and expected body3543 behaves like Debian API FIPS mode3544 when FIPS mode is enabled3545 behaves like returning response status3546 returns not_found3547 visibility_level: :public, user_type: :invalid_token, auth_method: :basic, expected_status: :unauthorized, expected_body: nil3548 behaves like Debian packages GET request3549 returns unauthorized3550 behaves like Debian API FIPS mode3551 when FIPS mode is enabled3552 behaves like returning response status3553 returns not_found3554 visibility_level: :private, user_type: :developer, auth_method: :basic, expected_status: :success, expected_body: /^Format: 3.0 \(native\)/3555 behaves like Debian packages GET request3556 returns success and expected body3557 behaves like Debian API FIPS mode3558 when FIPS mode is enabled3559 behaves like returning response status3560 returns not_found3561 visibility_level: :private, user_type: :developer, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil3562 behaves like Debian packages GET request3563 returns unauthorized3564 behaves like Debian API FIPS mode3565 when FIPS mode is enabled3566 behaves like returning response status3567 returns not_found3568 visibility_level: :private, user_type: :guest, auth_method: :basic, expected_status: :forbidden, expected_body: nil3569 behaves like Debian packages GET request3570 returns forbidden3571 behaves like Debian API FIPS mode3572 when FIPS mode is enabled3573 behaves like returning response status3574 returns not_found3575 visibility_level: :private, user_type: :not_a_member, auth_method: :basic, expected_status: :not_found, expected_body: nil3576 behaves like Debian packages GET request3577 returns not_found3578 behaves like Debian API FIPS mode3579 when FIPS mode is enabled3580 behaves like returning response status3581 returns not_found3582 visibility_level: :private, user_type: :anonymous, auth_method: :basic, expected_status: :unauthorized, expected_body: nil3583 behaves like Debian packages GET request3584 returns unauthorized3585 behaves like Debian API FIPS mode3586 when FIPS mode is enabled3587 behaves like returning response status3588 returns not_found3589 visibility_level: :private, user_type: :invalid_token, auth_method: :basic, expected_status: :unauthorized, expected_body: nil3590 behaves like Debian packages GET request3591 returns unauthorized3592 behaves like Debian API FIPS mode3593 when FIPS mode is enabled3594 behaves like returning response status3595 returns not_found3596 behaves like rejects Debian access with unknown container id3597 with an unknown container3598 as anonymous3599 behaves like Debian packages GET request3600 returns unauthorized3601 behaves like Debian API FIPS mode3602 when FIPS mode is enabled3603 behaves like returning response status3604 returns not_found3605 as authenticated user3606 behaves like Debian packages GET request3607 returns not_found3608 behaves like Debian API FIPS mode3609 when FIPS mode is enabled3610 behaves like returning response status3611 returns not_found3612 for bumping last downloaded at3613 behaves like bumping the package last downloaded at field3614 bumps last_downloaded_at3615 file_name: "libsample0_1.2.3~alpha2_amd64.deb", success_body: /^!<arch>/3616 behaves like Debian packages read endpoint3617 with valid container3618 visibility_level: :public, user_type: :guest, auth_method: :basic, expected_status: :success, expected_body: /^!<arch>/3619 behaves like Debian packages GET request3620 returns success and expected body3621 behaves like Debian API FIPS mode3622 when FIPS mode is enabled3623 behaves like returning response status3624 returns not_found3625 visibility_level: :public, user_type: :not_a_member, auth_method: :basic, expected_status: :success, expected_body: /^!<arch>/3626 behaves like Debian packages GET request3627 returns success and expected body3628 behaves like Debian API FIPS mode3629 when FIPS mode is enabled3630 behaves like returning response status3631 returns not_found3632 visibility_level: :public, user_type: :anonymous, auth_method: :basic, expected_status: :success, expected_body: /^!<arch>/3633 behaves like Debian packages GET request3634 returns success and expected body3635 behaves like Debian API FIPS mode3636 when FIPS mode is enabled3637 behaves like returning response status3638 returns not_found3639 visibility_level: :public, user_type: :invalid_token, auth_method: :basic, expected_status: :unauthorized, expected_body: nil3640 behaves like Debian packages GET request3641 returns unauthorized3642 behaves like Debian API FIPS mode3643 when FIPS mode is enabled3644 behaves like returning response status3645 returns not_found3646 visibility_level: :private, user_type: :developer, auth_method: :basic, expected_status: :success, expected_body: /^!<arch>/3647 behaves like Debian packages GET request3648 returns success and expected body3649 behaves like Debian API FIPS mode3650 when FIPS mode is enabled3651 behaves like returning response status3652 returns not_found3653 visibility_level: :private, user_type: :developer, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil3654 behaves like Debian packages GET request3655 returns unauthorized3656 behaves like Debian API FIPS mode3657 when FIPS mode is enabled3658 behaves like returning response status3659 returns not_found3660 visibility_level: :private, user_type: :guest, auth_method: :basic, expected_status: :forbidden, expected_body: nil3661 behaves like Debian packages GET request3662 returns forbidden3663 behaves like Debian API FIPS mode3664 when FIPS mode is enabled3665 behaves like returning response status3666 returns not_found3667 visibility_level: :private, user_type: :not_a_member, auth_method: :basic, expected_status: :not_found, expected_body: nil3668 behaves like Debian packages GET request3669 returns not_found3670 behaves like Debian API FIPS mode3671 when FIPS mode is enabled3672 behaves like returning response status3673 returns not_found3674 visibility_level: :private, user_type: :anonymous, auth_method: :basic, expected_status: :unauthorized, expected_body: nil3675 behaves like Debian packages GET request3676 returns unauthorized3677 behaves like Debian API FIPS mode3678 when FIPS mode is enabled3679 behaves like returning response status3680 returns not_found3681 visibility_level: :private, user_type: :invalid_token, auth_method: :basic, expected_status: :unauthorized, expected_body: nil3682 behaves like Debian packages GET request3683 returns unauthorized3684 behaves like Debian API FIPS mode3685 when FIPS mode is enabled3686 behaves like returning response status3687 returns not_found3688 behaves like rejects Debian access with unknown container id3689 with an unknown container3690 as anonymous3691 behaves like Debian packages GET request3692 returns unauthorized3693 behaves like Debian API FIPS mode3694 when FIPS mode is enabled3695 behaves like returning response status3696 returns not_found3697 as authenticated user3698 behaves like Debian packages GET request3699 returns not_found3700 behaves like Debian API FIPS mode3701 when FIPS mode is enabled3702 behaves like returning response status3703 returns not_found3704 for bumping last downloaded at3705 behaves like bumping the package last downloaded at field3706 bumps last_downloaded_at3707 file_name: "sample-udeb_1.2.3~alpha2_amd64.udeb", success_body: /^!<arch>/3708 behaves like Debian packages read endpoint3709 with valid container3710 visibility_level: :public, user_type: :guest, auth_method: :basic, expected_status: :success, expected_body: /^!<arch>/3711 behaves like Debian packages GET request3712 returns success and expected body3713 behaves like Debian API FIPS mode3714 when FIPS mode is enabled3715 behaves like returning response status3716 returns not_found3717 visibility_level: :public, user_type: :not_a_member, auth_method: :basic, expected_status: :success, expected_body: /^!<arch>/3718 behaves like Debian packages GET request3719 returns success and expected body3720 behaves like Debian API FIPS mode3721 when FIPS mode is enabled3722 behaves like returning response status3723 returns not_found3724 visibility_level: :public, user_type: :anonymous, auth_method: :basic, expected_status: :success, expected_body: /^!<arch>/3725 behaves like Debian packages GET request3726 returns success and expected body3727 behaves like Debian API FIPS mode3728 when FIPS mode is enabled3729 behaves like returning response status3730 returns not_found3731 visibility_level: :public, user_type: :invalid_token, auth_method: :basic, expected_status: :unauthorized, expected_body: nil3732 behaves like Debian packages GET request3733 returns unauthorized3734 behaves like Debian API FIPS mode3735 when FIPS mode is enabled3736 behaves like returning response status3737 returns not_found3738 visibility_level: :private, user_type: :developer, auth_method: :basic, expected_status: :success, expected_body: /^!<arch>/3739 behaves like Debian packages GET request3740 returns success and expected body3741 behaves like Debian API FIPS mode3742 when FIPS mode is enabled3743 behaves like returning response status3744 returns not_found3745 visibility_level: :private, user_type: :developer, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil3746 behaves like Debian packages GET request3747 returns unauthorized3748 behaves like Debian API FIPS mode3749 when FIPS mode is enabled3750 behaves like returning response status3751 returns not_found3752 visibility_level: :private, user_type: :guest, auth_method: :basic, expected_status: :forbidden, expected_body: nil3753 behaves like Debian packages GET request3754 returns forbidden3755 behaves like Debian API FIPS mode3756 when FIPS mode is enabled3757 behaves like returning response status3758 returns not_found3759 visibility_level: :private, user_type: :not_a_member, auth_method: :basic, expected_status: :not_found, expected_body: nil3760 behaves like Debian packages GET request3761 returns not_found3762 behaves like Debian API FIPS mode3763 when FIPS mode is enabled3764 behaves like returning response status3765 returns not_found3766 visibility_level: :private, user_type: :anonymous, auth_method: :basic, expected_status: :unauthorized, expected_body: nil3767 behaves like Debian packages GET request3768 returns unauthorized3769 behaves like Debian API FIPS mode3770 when FIPS mode is enabled3771 behaves like returning response status3772 returns not_found3773 visibility_level: :private, user_type: :invalid_token, auth_method: :basic, expected_status: :unauthorized, expected_body: nil3774 behaves like Debian packages GET request3775 returns unauthorized3776 behaves like Debian API FIPS mode3777 when FIPS mode is enabled3778 behaves like returning response status3779 returns not_found3780 behaves like rejects Debian access with unknown container id3781 with an unknown container3782 as anonymous3783 behaves like Debian packages GET request3784 returns unauthorized3785 behaves like Debian API FIPS mode3786 when FIPS mode is enabled3787 behaves like returning response status3788 returns not_found3789 as authenticated user3790 behaves like Debian packages GET request3791 returns not_found3792 behaves like Debian API FIPS mode3793 when FIPS mode is enabled3794 behaves like returning response status3795 returns not_found3796 for bumping last downloaded at3797 behaves like bumping the package last downloaded at field3798 bumps last_downloaded_at3799 file_name: "sample_1.2.3~alpha2_amd64.buildinfo", success_body: /Build-Tainted-By/3800 behaves like Debian packages read endpoint3801 with valid container3802 visibility_level: :public, user_type: :guest, auth_method: :basic, expected_status: :success, expected_body: /Build-Tainted-By/3803 behaves like Debian packages GET request3804 returns success and expected body3805 behaves like Debian API FIPS mode3806 when FIPS mode is enabled3807 behaves like returning response status3808 returns not_found3809 visibility_level: :public, user_type: :not_a_member, auth_method: :basic, expected_status: :success, expected_body: /Build-Tainted-By/3810 behaves like Debian packages GET request3811 returns success and expected body3812 behaves like Debian API FIPS mode3813 when FIPS mode is enabled3814 behaves like returning response status3815 returns not_found3816 visibility_level: :public, user_type: :anonymous, auth_method: :basic, expected_status: :success, expected_body: /Build-Tainted-By/3817 behaves like Debian packages GET request3818 returns success and expected body3819 behaves like Debian API FIPS mode3820 when FIPS mode is enabled3821 behaves like returning response status3822 returns not_found3823 visibility_level: :public, user_type: :invalid_token, auth_method: :basic, expected_status: :unauthorized, expected_body: nil3824 behaves like Debian packages GET request3825 returns unauthorized3826 behaves like Debian API FIPS mode3827 when FIPS mode is enabled3828 behaves like returning response status3829 returns not_found3830 visibility_level: :private, user_type: :developer, auth_method: :basic, expected_status: :success, expected_body: /Build-Tainted-By/3831 behaves like Debian packages GET request3832 returns success and expected body3833 behaves like Debian API FIPS mode3834 when FIPS mode is enabled3835 behaves like returning response status3836 returns not_found3837 visibility_level: :private, user_type: :developer, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil3838 behaves like Debian packages GET request3839 returns unauthorized3840 behaves like Debian API FIPS mode3841 when FIPS mode is enabled3842 behaves like returning response status3843 returns not_found3844 visibility_level: :private, user_type: :guest, auth_method: :basic, expected_status: :forbidden, expected_body: nil3845 behaves like Debian packages GET request3846 returns forbidden3847 behaves like Debian API FIPS mode3848 when FIPS mode is enabled3849 behaves like returning response status3850 returns not_found3851 visibility_level: :private, user_type: :not_a_member, auth_method: :basic, expected_status: :not_found, expected_body: nil3852 behaves like Debian packages GET request3853 returns not_found3854 behaves like Debian API FIPS mode3855 when FIPS mode is enabled3856 behaves like returning response status3857 returns not_found3858 visibility_level: :private, user_type: :anonymous, auth_method: :basic, expected_status: :unauthorized, expected_body: nil3859 behaves like Debian packages GET request3860 returns unauthorized3861 behaves like Debian API FIPS mode3862 when FIPS mode is enabled3863 behaves like returning response status3864 returns not_found3865 visibility_level: :private, user_type: :invalid_token, auth_method: :basic, expected_status: :unauthorized, expected_body: nil3866 behaves like Debian packages GET request3867 returns unauthorized3868 behaves like Debian API FIPS mode3869 when FIPS mode is enabled3870 behaves like returning response status3871 returns not_found3872 behaves like rejects Debian access with unknown container id3873 with an unknown container3874 as anonymous3875 behaves like Debian packages GET request3876 returns unauthorized3877 behaves like Debian API FIPS mode3878 when FIPS mode is enabled3879 behaves like returning response status3880 returns not_found3881 as authenticated user3882 behaves like Debian packages GET request3883 returns not_found3884 behaves like Debian API FIPS mode3885 when FIPS mode is enabled3886 behaves like returning response status3887 returns not_found3888 for bumping last downloaded at3889 behaves like bumping the package last downloaded at field3890 bumps last_downloaded_at3891 file_name: "sample_1.2.3~alpha2_amd64.changes", success_body: /urgency=medium/3892 behaves like Debian packages read endpoint3893 with valid container3894 visibility_level: :public, user_type: :guest, auth_method: :basic, expected_status: :success, expected_body: /urgency=medium/3895 behaves like Debian packages GET request3896 returns success and expected body3897 behaves like Debian API FIPS mode3898 when FIPS mode is enabled3899 behaves like returning response status3900 returns not_found3901 visibility_level: :public, user_type: :not_a_member, auth_method: :basic, expected_status: :success, expected_body: /urgency=medium/3902 behaves like Debian packages GET request3903 returns success and expected body3904 behaves like Debian API FIPS mode3905 when FIPS mode is enabled3906 behaves like returning response status3907 returns not_found3908 visibility_level: :public, user_type: :anonymous, auth_method: :basic, expected_status: :success, expected_body: /urgency=medium/3909 behaves like Debian packages GET request3910 returns success and expected body3911 behaves like Debian API FIPS mode3912 when FIPS mode is enabled3913 behaves like returning response status3914 returns not_found3915 visibility_level: :public, user_type: :invalid_token, auth_method: :basic, expected_status: :unauthorized, expected_body: nil3916 behaves like Debian packages GET request3917 returns unauthorized3918 behaves like Debian API FIPS mode3919 when FIPS mode is enabled3920 behaves like returning response status3921 returns not_found3922 visibility_level: :private, user_type: :developer, auth_method: :basic, expected_status: :success, expected_body: /urgency=medium/3923 behaves like Debian packages GET request3924 returns success and expected body3925 behaves like Debian API FIPS mode3926 when FIPS mode is enabled3927 behaves like returning response status3928 returns not_found3929 visibility_level: :private, user_type: :developer, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil3930 behaves like Debian packages GET request3931 returns unauthorized3932 behaves like Debian API FIPS mode3933 when FIPS mode is enabled3934 behaves like returning response status3935 returns not_found3936 visibility_level: :private, user_type: :guest, auth_method: :basic, expected_status: :forbidden, expected_body: nil3937 behaves like Debian packages GET request3938 returns forbidden3939 behaves like Debian API FIPS mode3940 when FIPS mode is enabled3941 behaves like returning response status3942 returns not_found3943 visibility_level: :private, user_type: :not_a_member, auth_method: :basic, expected_status: :not_found, expected_body: nil3944 behaves like Debian packages GET request3945 returns not_found3946 behaves like Debian API FIPS mode3947 when FIPS mode is enabled3948 behaves like returning response status3949 returns not_found3950 visibility_level: :private, user_type: :anonymous, auth_method: :basic, expected_status: :unauthorized, expected_body: nil3951 behaves like Debian packages GET request3952 returns unauthorized3953 behaves like Debian API FIPS mode3954 when FIPS mode is enabled3955 behaves like returning response status3956 returns not_found3957 visibility_level: :private, user_type: :invalid_token, auth_method: :basic, expected_status: :unauthorized, expected_body: nil3958 behaves like Debian packages GET request3959 returns unauthorized3960 behaves like Debian API FIPS mode3961 when FIPS mode is enabled3962 behaves like returning response status3963 returns not_found3964 behaves like rejects Debian access with unknown container id3965 with an unknown container3966 as anonymous3967 behaves like Debian packages GET request3968 returns unauthorized3969 behaves like Debian API FIPS mode3970 when FIPS mode is enabled3971 behaves like returning response status3972 returns not_found3973 as authenticated user3974 behaves like Debian packages GET request3975 returns not_found3976 behaves like Debian API FIPS mode3977 when FIPS mode is enabled3978 behaves like returning response status3979 returns not_found3980 for bumping last downloaded at3981 behaves like bumping the package last downloaded at field3982 bumps last_downloaded_at3983 PUT projects/:id/packages/debian/:file_name3984 with a deb3985 behaves like Debian packages write endpoint3986 with valid container3987 visibility_level: :public, user_type: :developer, auth_method: :basic, expected_status: :created, expected_body: nil3988 behaves like Debian packages upload request3989 creates package files3990 behaves like Debian API FIPS mode3991 when FIPS mode is enabled3992 behaves like returning response status3993 returns not_found3994 visibility_level: :public, user_type: :developer, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil3995 behaves like Debian packages upload request3996 returns unauthorized3997 behaves like Debian API FIPS mode3998 when FIPS mode is enabled3999 behaves like returning response status4000 returns not_found4001 visibility_level: :public, user_type: :guest, auth_method: :basic, expected_status: :forbidden, expected_body: nil4002 behaves like Debian packages upload request4003 returns forbidden4004 behaves like Debian API FIPS mode4005 when FIPS mode is enabled4006 behaves like returning response status4007 returns not_found4008 visibility_level: :public, user_type: :not_a_member, auth_method: :basic, expected_status: :forbidden, expected_body: nil4009 behaves like Debian packages upload request4010 returns forbidden4011 behaves like Debian API FIPS mode4012 when FIPS mode is enabled4013 behaves like returning response status4014 returns not_found4015 visibility_level: :public, user_type: :anonymous, auth_method: :basic, expected_status: :unauthorized, expected_body: nil4016 behaves like Debian packages upload request4017 returns unauthorized4018 behaves like Debian API FIPS mode4019 when FIPS mode is enabled4020 behaves like returning response status4021 returns not_found4022 visibility_level: :public, user_type: :invalid_token, auth_method: :basic, expected_status: :unauthorized, expected_body: nil4023 behaves like Debian packages upload request4024 returns unauthorized4025 behaves like Debian API FIPS mode4026 when FIPS mode is enabled4027 behaves like returning response status4028 returns not_found4029 visibility_level: :private, user_type: :developer, auth_method: :basic, expected_status: :created, expected_body: nil4030 behaves like Debian packages upload request4031 creates package files4032 behaves like Debian API FIPS mode4033 when FIPS mode is enabled4034 behaves like returning response status4035 returns not_found4036 visibility_level: :private, user_type: :guest, auth_method: :basic, expected_status: :forbidden, expected_body: nil4037 behaves like Debian packages upload request4038 returns forbidden4039 behaves like Debian API FIPS mode4040 when FIPS mode is enabled4041 behaves like returning response status4042 returns not_found4043 visibility_level: :private, user_type: :not_a_member, auth_method: :basic, expected_status: :not_found, expected_body: nil4044 behaves like Debian packages upload request4045 returns not_found4046 behaves like Debian API FIPS mode4047 when FIPS mode is enabled4048 behaves like returning response status4049 returns not_found4050 visibility_level: :private, user_type: :anonymous, auth_method: :basic, expected_status: :unauthorized, expected_body: nil4051 behaves like Debian packages upload request4052 returns unauthorized4053 behaves like Debian API FIPS mode4054 when FIPS mode is enabled4055 behaves like returning response status4056 returns not_found4057 visibility_level: :private, user_type: :invalid_token, auth_method: :basic, expected_status: :unauthorized, expected_body: nil4058 behaves like Debian packages upload request4059 returns unauthorized4060 behaves like Debian API FIPS mode4061 when FIPS mode is enabled4062 behaves like returning response status4063 returns not_found4064 behaves like rejects Debian access with unknown container id4065 with an unknown container4066 as anonymous4067 behaves like Debian packages GET request4068 returns unauthorized4069 behaves like Debian API FIPS mode4070 when FIPS mode is enabled4071 behaves like returning response status4072 returns not_found4073 as authenticated user4074 behaves like Debian packages GET request4075 returns not_found4076 behaves like Debian API FIPS mode4077 when FIPS mode is enabled4078 behaves like returning response status4079 returns not_found4080 with a changes file4081 behaves like Debian packages write endpoint4082 with valid container4083 visibility_level: :public, user_type: :developer, auth_method: :basic, expected_status: :created, expected_body: nil4084 behaves like Debian packages upload request4085 creates package files4086 behaves like Debian API FIPS mode4087 when FIPS mode is enabled4088 behaves like returning response status4089 returns not_found4090 visibility_level: :public, user_type: :developer, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil4091 behaves like Debian packages upload request4092 returns unauthorized4093 behaves like Debian API FIPS mode4094 when FIPS mode is enabled4095 behaves like returning response status4096 returns not_found4097 visibility_level: :public, user_type: :guest, auth_method: :basic, expected_status: :forbidden, expected_body: nil4098 behaves like Debian packages upload request4099 returns forbidden4100 behaves like Debian API FIPS mode4101 when FIPS mode is enabled4102 behaves like returning response status4103 returns not_found4104 visibility_level: :public, user_type: :not_a_member, auth_method: :basic, expected_status: :forbidden, expected_body: nil4105 behaves like Debian packages upload request4106 returns forbidden4107 behaves like Debian API FIPS mode4108 when FIPS mode is enabled4109 behaves like returning response status4110 returns not_found4111 visibility_level: :public, user_type: :anonymous, auth_method: :basic, expected_status: :unauthorized, expected_body: nil4112 behaves like Debian packages upload request4113 returns unauthorized4114 behaves like Debian API FIPS mode4115 when FIPS mode is enabled4116 behaves like returning response status4117 returns not_found4118 visibility_level: :public, user_type: :invalid_token, auth_method: :basic, expected_status: :unauthorized, expected_body: nil4119 behaves like Debian packages upload request4120 returns unauthorized4121 behaves like Debian API FIPS mode4122 when FIPS mode is enabled4123 behaves like returning response status4124 returns not_found4125 visibility_level: :private, user_type: :developer, auth_method: :basic, expected_status: :created, expected_body: nil4126 behaves like Debian packages upload request4127 creates package files4128 behaves like Debian API FIPS mode4129 when FIPS mode is enabled4130 behaves like returning response status4131 returns not_found4132 visibility_level: :private, user_type: :guest, auth_method: :basic, expected_status: :forbidden, expected_body: nil4133 behaves like Debian packages upload request4134 returns forbidden4135 behaves like Debian API FIPS mode4136 when FIPS mode is enabled4137 behaves like returning response status4138 returns not_found4139 visibility_level: :private, user_type: :not_a_member, auth_method: :basic, expected_status: :not_found, expected_body: nil4140 behaves like Debian packages upload request4141 returns not_found4142 behaves like Debian API FIPS mode4143 when FIPS mode is enabled4144 behaves like returning response status4145 returns not_found4146 visibility_level: :private, user_type: :anonymous, auth_method: :basic, expected_status: :unauthorized, expected_body: nil4147 behaves like Debian packages upload request4148 returns unauthorized4149 behaves like Debian API FIPS mode4150 when FIPS mode is enabled4151 behaves like returning response status4152 returns not_found4153 visibility_level: :private, user_type: :invalid_token, auth_method: :basic, expected_status: :unauthorized, expected_body: nil4154 behaves like Debian packages upload request4155 returns unauthorized4156 behaves like Debian API FIPS mode4157 when FIPS mode is enabled4158 behaves like returning response status4159 returns not_found4160 behaves like rejects Debian access with unknown container id4161 with an unknown container4162 as anonymous4163 behaves like Debian packages GET request4164 returns unauthorized4165 behaves like Debian API FIPS mode4166 when FIPS mode is enabled4167 behaves like returning response status4168 returns not_found4169 as authenticated user4170 behaves like Debian packages GET request4171 returns not_found4172 behaves like Debian API FIPS mode4173 when FIPS mode is enabled4174 behaves like returning response status4175 returns not_found4176 PUT projects/:id/packages/debian/:file_name/authorize4177 behaves like Debian packages write endpoint4178 with valid container4179 visibility_level: :public, user_type: :developer, auth_method: :basic, expected_status: :created, expected_body: nil4180 behaves like Debian packages upload authorize request4181 authorizes package file upload4182 without a valid token4183 rejects request4184 bypassing gitlab-workhorse4185 rejects request4186 visibility_level: :public, user_type: :developer, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil4187 behaves like Debian packages upload authorize request4188 returns unauthorized4189 visibility_level: :public, user_type: :guest, auth_method: :basic, expected_status: :forbidden, expected_body: nil4190 behaves like Debian packages upload authorize request4191 returns forbidden4192 visibility_level: :public, user_type: :not_a_member, auth_method: :basic, expected_status: :forbidden, expected_body: nil4193 behaves like Debian packages upload authorize request4194 returns forbidden4195 visibility_level: :public, user_type: :anonymous, auth_method: :basic, expected_status: :unauthorized, expected_body: nil4196 behaves like Debian packages upload authorize request4197 returns unauthorized4198 visibility_level: :public, user_type: :invalid_token, auth_method: :basic, expected_status: :unauthorized, expected_body: nil4199 behaves like Debian packages upload authorize request4200 returns unauthorized4201 visibility_level: :private, user_type: :developer, auth_method: :basic, expected_status: :created, expected_body: nil4202 behaves like Debian packages upload authorize request4203 authorizes package file upload4204 without a valid token4205 rejects request4206 bypassing gitlab-workhorse4207 rejects request4208 visibility_level: :private, user_type: :guest, auth_method: :basic, expected_status: :forbidden, expected_body: nil4209 behaves like Debian packages upload authorize request4210 returns forbidden4211 visibility_level: :private, user_type: :not_a_member, auth_method: :basic, expected_status: :not_found, expected_body: nil4212 behaves like Debian packages upload authorize request4213 returns not_found4214 visibility_level: :private, user_type: :anonymous, auth_method: :basic, expected_status: :unauthorized, expected_body: nil4215 behaves like Debian packages upload authorize request4216 returns unauthorized4217 visibility_level: :private, user_type: :invalid_token, auth_method: :basic, expected_status: :unauthorized, expected_body: nil4218 behaves like Debian packages upload authorize request4219 returns unauthorized4220 behaves like rejects Debian access with unknown container id4221 with an unknown container4222 as anonymous4223 behaves like Debian packages GET request4224 returns unauthorized4225 behaves like Debian API FIPS mode4226 when FIPS mode is enabled4227 behaves like returning response status4228 returns not_found4229 as authenticated user4230 behaves like Debian packages GET request4231 returns not_found4232 behaves like Debian API FIPS mode4233 when FIPS mode is enabled4234 behaves like returning response status4235 returns not_found4236API::GenericPackages4237 PUT /api/v4/projects/:id/packages/generic/:package_name/:package_version/:file_name/authorize4238 with valid project4239 project_visibility: "PUBLIC", user_role: :developer, member?: true, authenticate_with: :personal_access_token, expected_status: :success4240 responds with success4241 project_visibility: "PUBLIC", user_role: :guest, member?: true, authenticate_with: :personal_access_token, expected_status: :forbidden4242 responds with forbidden4243 project_visibility: "PUBLIC", user_role: :developer, member?: true, authenticate_with: :invalid_personal_access_token, expected_status: :unauthorized4244 responds with unauthorized4245 project_visibility: "PUBLIC", user_role: :guest, member?: true, authenticate_with: :invalid_personal_access_token, expected_status: :unauthorized4246 responds with unauthorized4247 project_visibility: "PUBLIC", user_role: :developer, member?: true, authenticate_with: :user_basic_auth, expected_status: :success4248 responds with success4249 project_visibility: "PUBLIC", user_role: :guest, member?: true, authenticate_with: :user_basic_auth, expected_status: :forbidden4250 responds with forbidden4251 project_visibility: "PUBLIC", user_role: :developer, member?: true, authenticate_with: :invalid_user_basic_auth, expected_status: :unauthorized4252 responds with unauthorized4253 project_visibility: "PUBLIC", user_role: :guest, member?: true, authenticate_with: :invalid_user_basic_auth, expected_status: :unauthorized4254 responds with unauthorized4255 project_visibility: "PUBLIC", user_role: :developer, member?: false, authenticate_with: :personal_access_token, expected_status: :forbidden4256 responds with forbidden4257 project_visibility: "PUBLIC", user_role: :guest, member?: false, authenticate_with: :personal_access_token, expected_status: :forbidden4258 responds with forbidden4259 project_visibility: "PUBLIC", user_role: :developer, member?: false, authenticate_with: :invalid_personal_access_token, expected_status: :unauthorized4260 responds with unauthorized4261 project_visibility: "PUBLIC", user_role: :guest, member?: false, authenticate_with: :invalid_personal_access_token, expected_status: :unauthorized4262 responds with unauthorized4263 project_visibility: "PUBLIC", user_role: :developer, member?: false, authenticate_with: :user_basic_auth, expected_status: :forbidden4264 responds with forbidden4265 project_visibility: "PUBLIC", user_role: :guest, member?: false, authenticate_with: :user_basic_auth, expected_status: :forbidden4266 responds with forbidden4267 project_visibility: "PUBLIC", user_role: :developer, member?: false, authenticate_with: :invalid_user_basic_auth, expected_status: :unauthorized4268 responds with unauthorized4269 project_visibility: "PUBLIC", user_role: :guest, member?: false, authenticate_with: :invalid_user_basic_auth, expected_status: :unauthorized4270 responds with unauthorized4271 project_visibility: "PUBLIC", user_role: :anonymous, member?: false, authenticate_with: :none, expected_status: :unauthorized4272 responds with unauthorized4273 project_visibility: "PRIVATE", user_role: :developer, member?: true, authenticate_with: :personal_access_token, expected_status: :success4274 responds with success4275 project_visibility: "PRIVATE", user_role: :guest, member?: true, authenticate_with: :personal_access_token, expected_status: :forbidden4276 responds with forbidden4277 project_visibility: "PRIVATE", user_role: :developer, member?: true, authenticate_with: :invalid_personal_access_token, expected_status: :unauthorized4278 responds with unauthorized4279 project_visibility: "PRIVATE", user_role: :guest, member?: true, authenticate_with: :invalid_personal_access_token, expected_status: :unauthorized4280 responds with unauthorized4281 project_visibility: "PRIVATE", user_role: :developer, member?: true, authenticate_with: :user_basic_auth, expected_status: :success4282 responds with success4283 project_visibility: "PRIVATE", user_role: :guest, member?: true, authenticate_with: :user_basic_auth, expected_status: :forbidden4284 responds with forbidden4285 project_visibility: "PRIVATE", user_role: :developer, member?: true, authenticate_with: :invalid_user_basic_auth, expected_status: :unauthorized4286 responds with unauthorized4287 project_visibility: "PRIVATE", user_role: :guest, member?: true, authenticate_with: :invalid_user_basic_auth, expected_status: :unauthorized4288 responds with unauthorized4289 project_visibility: "PRIVATE", user_role: :developer, member?: false, authenticate_with: :personal_access_token, expected_status: :not_found4290 responds with not_found4291 project_visibility: "PRIVATE", user_role: :guest, member?: false, authenticate_with: :personal_access_token, expected_status: :not_found4292 responds with not_found4293 project_visibility: "PRIVATE", user_role: :developer, member?: false, authenticate_with: :invalid_personal_access_token, expected_status: :unauthorized4294 responds with unauthorized4295 project_visibility: "PRIVATE", user_role: :guest, member?: false, authenticate_with: :invalid_personal_access_token, expected_status: :unauthorized4296 responds with unauthorized4297 project_visibility: "PRIVATE", user_role: :developer, member?: false, authenticate_with: :user_basic_auth, expected_status: :not_found4298 responds with not_found4299 project_visibility: "PRIVATE", user_role: :guest, member?: false, authenticate_with: :user_basic_auth, expected_status: :not_found4300 responds with not_found4301 project_visibility: "PRIVATE", user_role: :developer, member?: false, authenticate_with: :invalid_user_basic_auth, expected_status: :unauthorized4302 responds with unauthorized4303 project_visibility: "PRIVATE", user_role: :guest, member?: false, authenticate_with: :invalid_user_basic_auth, expected_status: :unauthorized4304 responds with unauthorized4305 project_visibility: "PRIVATE", user_role: :anonymous, member?: false, authenticate_with: :none, expected_status: :unauthorized4306 responds with unauthorized4307 project_visibility: "PUBLIC", user_role: :developer, member?: true, authenticate_with: :job_token, expected_status: :success4308 responds with success4309 project_visibility: "PUBLIC", user_role: :developer, member?: true, authenticate_with: :invalid_job_token, expected_status: :unauthorized4310 responds with unauthorized4311 project_visibility: "PUBLIC", user_role: :developer, member?: false, authenticate_with: :job_token, expected_status: :forbidden4312 responds with forbidden4313 project_visibility: "PUBLIC", user_role: :developer, member?: false, authenticate_with: :invalid_job_token, expected_status: :unauthorized4314 responds with unauthorized4315 project_visibility: "PRIVATE", user_role: :developer, member?: true, authenticate_with: :job_token, expected_status: :success4316 responds with success4317 project_visibility: "PRIVATE", user_role: :developer, member?: true, authenticate_with: :invalid_job_token, expected_status: :unauthorized4318 responds with unauthorized4319 project_visibility: "PRIVATE", user_role: :developer, member?: false, authenticate_with: :job_token, expected_status: :not_found4320 responds with not_found4321 project_visibility: "PRIVATE", user_role: :developer, member?: false, authenticate_with: :invalid_job_token, expected_status: :unauthorized4322 responds with unauthorized4323 authenticate_with: :deploy_token_rw, expected_status: :success4324 responds with success4325 authenticate_with: :deploy_token_wo, expected_status: :success4326 responds with success4327 authenticate_with: :deploy_token_ro, expected_status: :forbidden4328 responds with forbidden4329 authenticate_with: :invalid_deploy_token, expected_status: :unauthorized4330 responds with unauthorized4331 application security4332 param_name: :package_name, param_value: "my-package/../"4333 behaves like secure endpoint4334 rejects malicious request4335 param_name: :package_name, param_value: "my-package%2f%2e%2e%2f"4336 behaves like secure endpoint4337 rejects malicious request4338 param_name: :file_name, param_value: "../.ssh%2fauthorized_keys"4339 behaves like secure endpoint4340 rejects malicious request4341 param_name: :file_name, param_value: "%2e%2e%2f.ssh%2fauthorized_keys"4342 behaves like secure endpoint4343 rejects malicious request4344 PUT /api/v4/projects/:id/packages/generic/:package_name/:package_version/:file_name4345 authentication4346 project_visibility: "PUBLIC", user_role: :guest, member?: true, authenticate_with: :personal_access_token, expected_status: :forbidden4347 responds with forbidden4348 project_visibility: "PUBLIC", user_role: :guest, member?: true, authenticate_with: :user_basic_auth, expected_status: :forbidden4349 responds with forbidden4350 project_visibility: "PUBLIC", user_role: :developer, member?: true, authenticate_with: :invalid_personal_access_token, expected_status: :unauthorized4351 responds with unauthorized4352 project_visibility: "PUBLIC", user_role: :guest, member?: true, authenticate_with: :invalid_personal_access_token, expected_status: :unauthorized4353 responds with unauthorized4354 project_visibility: "PUBLIC", user_role: :developer, member?: true, authenticate_with: :invalid_user_basic_auth, expected_status: :unauthorized4355 responds with unauthorized4356 project_visibility: "PUBLIC", user_role: :guest, member?: true, authenticate_with: :invalid_user_basic_auth, expected_status: :unauthorized4357 responds with unauthorized4358 project_visibility: "PUBLIC", user_role: :developer, member?: false, authenticate_with: :personal_access_token, expected_status: :forbidden4359 responds with forbidden4360 project_visibility: "PUBLIC", user_role: :guest, member?: false, authenticate_with: :personal_access_token, expected_status: :forbidden4361 responds with forbidden4362 project_visibility: "PUBLIC", user_role: :developer, member?: false, authenticate_with: :user_basic_auth, expected_status: :forbidden4363 responds with forbidden4364 project_visibility: "PUBLIC", user_role: :guest, member?: false, authenticate_with: :user_basic_auth, expected_status: :forbidden4365 responds with forbidden4366 project_visibility: "PUBLIC", user_role: :developer, member?: false, authenticate_with: :invalid_personal_access_token, expected_status: :unauthorized4367 responds with unauthorized4368 project_visibility: "PUBLIC", user_role: :guest, member?: false, authenticate_with: :invalid_personal_access_token, expected_status: :unauthorized4369 responds with unauthorized4370 project_visibility: "PUBLIC", user_role: :developer, member?: false, authenticate_with: :invalid_user_basic_auth, expected_status: :unauthorized4371 responds with unauthorized4372 project_visibility: "PUBLIC", user_role: :guest, member?: false, authenticate_with: :invalid_user_basic_auth, expected_status: :unauthorized4373 responds with unauthorized4374 project_visibility: "PUBLIC", user_role: :anonymous, member?: false, authenticate_with: :none, expected_status: :unauthorized4375 responds with unauthorized4376 project_visibility: "PRIVATE", user_role: :guest, member?: true, authenticate_with: :personal_access_token, expected_status: :forbidden4377 responds with forbidden4378 project_visibility: "PRIVATE", user_role: :guest, member?: true, authenticate_with: :user_basic_auth, expected_status: :forbidden4379 responds with forbidden4380 project_visibility: "PRIVATE", user_role: :developer, member?: true, authenticate_with: :invalid_personal_access_token, expected_status: :unauthorized4381 responds with unauthorized4382 project_visibility: "PRIVATE", user_role: :guest, member?: true, authenticate_with: :invalid_personal_access_token, expected_status: :unauthorized4383 responds with unauthorized4384 project_visibility: "PRIVATE", user_role: :developer, member?: true, authenticate_with: :invalid_user_basic_auth, expected_status: :unauthorized4385 responds with unauthorized4386 project_visibility: "PRIVATE", user_role: :guest, member?: true, authenticate_with: :invalid_user_basic_auth, expected_status: :unauthorized4387 responds with unauthorized4388 project_visibility: "PRIVATE", user_role: :developer, member?: false, authenticate_with: :personal_access_token, expected_status: :not_found4389 responds with not_found4390 project_visibility: "PRIVATE", user_role: :guest, member?: false, authenticate_with: :personal_access_token, expected_status: :not_found4391 responds with not_found4392 project_visibility: "PRIVATE", user_role: :developer, member?: false, authenticate_with: :user_basic_auth, expected_status: :not_found4393 responds with not_found4394 project_visibility: "PRIVATE", user_role: :guest, member?: false, authenticate_with: :user_basic_auth, expected_status: :not_found4395 responds with not_found4396 project_visibility: "PRIVATE", user_role: :developer, member?: false, authenticate_with: :invalid_personal_access_token, expected_status: :unauthorized4397 responds with unauthorized4398 project_visibility: "PRIVATE", user_role: :guest, member?: false, authenticate_with: :invalid_personal_access_token, expected_status: :unauthorized4399 responds with unauthorized4400 project_visibility: "PRIVATE", user_role: :developer, member?: false, authenticate_with: :invalid_user_basic_auth, expected_status: :unauthorized4401 responds with unauthorized4402 project_visibility: "PRIVATE", user_role: :guest, member?: false, authenticate_with: :invalid_user_basic_auth, expected_status: :unauthorized4403 responds with unauthorized4404 project_visibility: "PRIVATE", user_role: :anonymous, member?: false, authenticate_with: :none, expected_status: :unauthorized4405 responds with unauthorized4406 project_visibility: "PUBLIC", user_role: :developer, member?: true, authenticate_with: :invalid_job_token, expected_status: :unauthorized4407 responds with unauthorized4408 project_visibility: "PUBLIC", user_role: :developer, member?: false, authenticate_with: :job_token, expected_status: :forbidden4409 responds with forbidden4410 project_visibility: "PUBLIC", user_role: :developer, member?: false, authenticate_with: :invalid_job_token, expected_status: :unauthorized4411 responds with unauthorized4412 project_visibility: "PRIVATE", user_role: :developer, member?: true, authenticate_with: :invalid_job_token, expected_status: :unauthorized4413 responds with unauthorized4414 project_visibility: "PRIVATE", user_role: :developer, member?: false, authenticate_with: :job_token, expected_status: :not_found4415 responds with not_found4416 project_visibility: "PRIVATE", user_role: :developer, member?: false, authenticate_with: :invalid_job_token, expected_status: :unauthorized4417 responds with unauthorized4418 authenticate_with: :deploy_token_ro, expected_status: :forbidden4419 responds with forbidden4420 authenticate_with: :invalid_deploy_token, expected_status: :unauthorized4421 responds with unauthorized4422 when user can upload packages and has valid credentials4423 rejects request without a file from workhorse4424 rejects request without an auth token4425 rejects request without workhorse rewritten fields4426 rejects request if file size is too large4427 rejects request without workhorse header4428 when valid personal access token is used4429 behaves like creates a package and package file4430 creates a package and package file4431 with select4432 with a valid value4433 package_file4434 returns a package file4435 with an invalid value4436 returns a package file4437 with a status4438 valid status4439 assigns the status to the package4440 invalid status4441 rejects the package4442 different versions4443 version: "1.3.350-20201230123456", expected_status: :created4444 returns the created4445 version: "1.2.3", expected_status: :created4446 returns the created4447 version: "1.2.3g", expected_status: :created4448 returns the created4449 version: "1.2", expected_status: :created4450 returns the created4451 version: "1.2.bananas", expected_status: :created4452 returns the created4453 version: "v1.2.4-build", expected_status: :created4454 returns the created4455 version: "d50d836eb3de6177ce6c7a5482f27f9c2c84b672", expected_status: :created4456 returns the created4457 version: "..1.2.3", expected_status: :bad_request4458 returns the bad_request4459 version: "1.2.3-4/../../", expected_status: :bad_request4460 returns the bad_request4461 version: "%2e%2e%2f1.2.3", expected_status: :bad_request4462 returns the bad_request4463 when valid basic auth is used4464 behaves like creates a package and package file4465 creates a package and package file4466 with select4467 with a valid value4468 package_file4469 returns a package file4470 with an invalid value4471 returns a package file4472 with a status4473 valid status4474 assigns the status to the package4475 invalid status4476 rejects the package4477 different versions4478 version: "1.3.350-20201230123456", expected_status: :created4479 returns the created4480 version: "1.2.3", expected_status: :created4481 returns the created4482 version: "1.2.3g", expected_status: :created4483 returns the created4484 version: "1.2", expected_status: :created4485 returns the created4486 version: "1.2.bananas", expected_status: :created4487 returns the created4488 version: "v1.2.4-build", expected_status: :created4489 returns the created4490 version: "d50d836eb3de6177ce6c7a5482f27f9c2c84b672", expected_status: :created4491 returns the created4492 version: "..1.2.3", expected_status: :bad_request4493 returns the bad_request4494 version: "1.2.3-4/../../", expected_status: :bad_request4495 returns the bad_request4496 version: "%2e%2e%2f1.2.3", expected_status: :bad_request4497 returns the bad_request4498 when valid deploy token is used4499 behaves like creates a package and package file4500 creates a package and package file4501 with select4502 with a valid value4503 package_file4504 returns a package file4505 with an invalid value4506 returns a package file4507 with a status4508 valid status4509 assigns the status to the package4510 invalid status4511 rejects the package4512 different versions4513 version: "1.3.350-20201230123456", expected_status: :created4514 returns the created4515 version: "1.2.3", expected_status: :created4516 returns the created4517 version: "1.2.3g", expected_status: :created4518 returns the created4519 version: "1.2", expected_status: :created4520 returns the created4521 version: "1.2.bananas", expected_status: :created4522 returns the created4523 version: "v1.2.4-build", expected_status: :created4524 returns the created4525 version: "d50d836eb3de6177ce6c7a5482f27f9c2c84b672", expected_status: :created4526 returns the created4527 version: "..1.2.3", expected_status: :bad_request4528 returns the bad_request4529 version: "1.2.3-4/../../", expected_status: :bad_request4530 returns the bad_request4531 version: "%2e%2e%2f1.2.3", expected_status: :bad_request4532 returns the bad_request4533 when valid job token is used4534 behaves like creates a package and package file4535 creates a package and package file4536 with select4537 with a valid value4538 package_file4539 returns a package file4540 with an invalid value4541 returns a package file4542 with a status4543 valid status4544 assigns the status to the package4545 invalid status4546 rejects the package4547 different versions4548 version: "1.3.350-20201230123456", expected_status: :created4549 returns the created4550 version: "1.2.3", expected_status: :created4551 returns the created4552 version: "1.2.3g", expected_status: :created4553 returns the created4554 version: "1.2", expected_status: :created4555 returns the created4556 version: "1.2.bananas", expected_status: :created4557 returns the created4558 version: "v1.2.4-build", expected_status: :created4559 returns the created4560 version: "d50d836eb3de6177ce6c7a5482f27f9c2c84b672", expected_status: :created4561 returns the created4562 version: "..1.2.3", expected_status: :bad_request4563 returns the bad_request4564 version: "1.2.3-4/../../", expected_status: :bad_request4565 returns the bad_request4566 version: "%2e%2e%2f1.2.3", expected_status: :bad_request4567 returns the bad_request4568 event tracking4569 behaves like a package tracking event4570 creates a gitlab tracking event push_package4571 with existing package4572 does not create a new package4573 marked as pending_destruction4574 does create a new package4575 application security4576 param_name: :package_name, param_value: "my-package/../"4577 behaves like secure endpoint4578 rejects malicious request4579 param_name: :package_name, param_value: "my-package%2f%2e%2e%2f"4580 behaves like secure endpoint4581 rejects malicious request4582 param_name: :file_name, param_value: "../.ssh%2fauthorized_keys"4583 behaves like secure endpoint4584 rejects malicious request4585 param_name: :file_name, param_value: "%2e%2e%2f.ssh%2fauthorized_keys"4586 behaves like secure endpoint4587 rejects malicious request4588 GET /api/v4/projects/:id/packages/generic/:package_name/:package_version/:file_name4589 rejects a malicious file name request4590 rejects a malicious file name request4591 rejects a malicious package name request4592 rejects a malicious package name request4593 responds with 404 Not Found for non existing package4594 responds with 404 Not Found for non existing package file4595 authentication4596 project_visibility: "PUBLIC", user_role: :developer, member?: true, authenticate_with: :personal_access_token, expected_status: :success4597 responds with success4598 behaves like bumping the package last downloaded at field4599 bumps last_downloaded_at4600 project_visibility: "PUBLIC", user_role: :guest, member?: true, authenticate_with: :personal_access_token, expected_status: :success4601 responds with success4602 behaves like bumping the package last downloaded at field4603 bumps last_downloaded_at4604 project_visibility: "PUBLIC", user_role: :developer, member?: true, authenticate_with: :user_basic_auth, expected_status: :success4605 responds with success4606 behaves like bumping the package last downloaded at field4607 bumps last_downloaded_at4608 project_visibility: "PUBLIC", user_role: :guest, member?: true, authenticate_with: :user_basic_auth, expected_status: :success4609 responds with success4610 behaves like bumping the package last downloaded at field4611 bumps last_downloaded_at4612 project_visibility: "PUBLIC", user_role: :developer, member?: true, authenticate_with: :invalid_personal_access_token, expected_status: :unauthorized4613 responds with unauthorized4614 project_visibility: "PUBLIC", user_role: :guest, member?: true, authenticate_with: :invalid_personal_access_token, expected_status: :unauthorized4615 responds with unauthorized4616 project_visibility: "PUBLIC", user_role: :developer, member?: true, authenticate_with: :invalid_user_basic_auth, expected_status: :success4617 responds with success4618 behaves like bumping the package last downloaded at field4619 bumps last_downloaded_at4620 project_visibility: "PUBLIC", user_role: :guest, member?: true, authenticate_with: :invalid_user_basic_auth, expected_status: :success4621 responds with success4622 behaves like bumping the package last downloaded at field4623 bumps last_downloaded_at4624 project_visibility: "PUBLIC", user_role: :developer, member?: false, authenticate_with: :personal_access_token, expected_status: :success4625 responds with success4626 behaves like bumping the package last downloaded at field4627 bumps last_downloaded_at4628 project_visibility: "PUBLIC", user_role: :guest, member?: false, authenticate_with: :personal_access_token, expected_status: :success4629 responds with success4630 behaves like bumping the package last downloaded at field4631 bumps last_downloaded_at4632 project_visibility: "PUBLIC", user_role: :developer, member?: false, authenticate_with: :user_basic_auth, expected_status: :success4633 responds with success4634 behaves like bumping the package last downloaded at field4635 bumps last_downloaded_at4636 project_visibility: "PUBLIC", user_role: :guest, member?: false, authenticate_with: :user_basic_auth, expected_status: :success4637 responds with success4638 behaves like bumping the package last downloaded at field4639 bumps last_downloaded_at4640 project_visibility: "PUBLIC", user_role: :developer, member?: false, authenticate_with: :invalid_personal_access_token, expected_status: :unauthorized4641 responds with unauthorized4642 project_visibility: "PUBLIC", user_role: :guest, member?: false, authenticate_with: :invalid_personal_access_token, expected_status: :unauthorized4643 responds with unauthorized4644 project_visibility: "PUBLIC", user_role: :developer, member?: false, authenticate_with: :invalid_user_basic_auth, expected_status: :success4645 responds with success4646 behaves like bumping the package last downloaded at field4647 bumps last_downloaded_at4648 project_visibility: "PUBLIC", user_role: :guest, member?: false, authenticate_with: :invalid_user_basic_auth, expected_status: :success4649 responds with success4650 behaves like bumping the package last downloaded at field4651 bumps last_downloaded_at4652 project_visibility: "PUBLIC", user_role: :anonymous, member?: false, authenticate_with: :none, expected_status: :success4653 responds with success4654 behaves like bumping the package last downloaded at field4655 bumps last_downloaded_at4656 project_visibility: "PRIVATE", user_role: :developer, member?: true, authenticate_with: :personal_access_token, expected_status: :success4657 responds with success4658 behaves like bumping the package last downloaded at field4659 bumps last_downloaded_at4660 project_visibility: "PRIVATE", user_role: :guest, member?: true, authenticate_with: :personal_access_token, expected_status: :forbidden4661 responds with forbidden4662 project_visibility: "PRIVATE", user_role: :developer, member?: true, authenticate_with: :user_basic_auth, expected_status: :success4663 responds with success4664 behaves like bumping the package last downloaded at field4665 bumps last_downloaded_at4666 project_visibility: "PRIVATE", user_role: :guest, member?: true, authenticate_with: :user_basic_auth, expected_status: :forbidden4667 responds with forbidden4668 project_visibility: "PRIVATE", user_role: :developer, member?: true, authenticate_with: :invalid_personal_access_token, expected_status: :unauthorized4669 responds with unauthorized4670 project_visibility: "PRIVATE", user_role: :guest, member?: true, authenticate_with: :invalid_personal_access_token, expected_status: :unauthorized4671 responds with unauthorized4672 project_visibility: "PRIVATE", user_role: :developer, member?: true, authenticate_with: :invalid_user_basic_auth, expected_status: :unauthorized4673 responds with unauthorized4674 project_visibility: "PRIVATE", user_role: :guest, member?: true, authenticate_with: :invalid_user_basic_auth, expected_status: :unauthorized4675 responds with unauthorized4676 project_visibility: "PRIVATE", user_role: :developer, member?: false, authenticate_with: :personal_access_token, expected_status: :not_found4677 responds with not_found4678 project_visibility: "PRIVATE", user_role: :guest, member?: false, authenticate_with: :personal_access_token, expected_status: :not_found4679 responds with not_found4680 project_visibility: "PRIVATE", user_role: :developer, member?: false, authenticate_with: :user_basic_auth, expected_status: :not_found4681 responds with not_found4682 project_visibility: "PRIVATE", user_role: :guest, member?: false, authenticate_with: :user_basic_auth, expected_status: :not_found4683 responds with not_found4684 project_visibility: "PRIVATE", user_role: :developer, member?: false, authenticate_with: :invalid_personal_access_token, expected_status: :unauthorized4685 responds with unauthorized4686 project_visibility: "PRIVATE", user_role: :guest, member?: false, authenticate_with: :invalid_personal_access_token, expected_status: :unauthorized4687 responds with unauthorized4688 project_visibility: "PRIVATE", user_role: :developer, member?: false, authenticate_with: :invalid_user_basic_auth, expected_status: :unauthorized4689 responds with unauthorized4690 project_visibility: "PRIVATE", user_role: :guest, member?: false, authenticate_with: :invalid_user_basic_auth, expected_status: :unauthorized4691 responds with unauthorized4692 project_visibility: "PRIVATE", user_role: :anonymous, member?: false, authenticate_with: :none, expected_status: :unauthorized4693 responds with unauthorized4694 project_visibility: "PUBLIC", user_role: :developer, member?: true, authenticate_with: :job_token, expected_status: :success4695 responds with success4696 behaves like bumping the package last downloaded at field4697 bumps last_downloaded_at4698 project_visibility: "PUBLIC", user_role: :developer, member?: true, authenticate_with: :invalid_job_token, expected_status: :unauthorized4699 responds with unauthorized4700 project_visibility: "PUBLIC", user_role: :developer, member?: false, authenticate_with: :job_token, expected_status: :success4701 responds with success4702 behaves like bumping the package last downloaded at field4703 bumps last_downloaded_at4704 project_visibility: "PUBLIC", user_role: :developer, member?: false, authenticate_with: :invalid_job_token, expected_status: :unauthorized4705 responds with unauthorized4706 project_visibility: "PRIVATE", user_role: :developer, member?: true, authenticate_with: :job_token, expected_status: :success4707 responds with success4708 behaves like bumping the package last downloaded at field4709 bumps last_downloaded_at4710 project_visibility: "PRIVATE", user_role: :developer, member?: true, authenticate_with: :invalid_job_token, expected_status: :unauthorized4711 responds with unauthorized4712 project_visibility: "PRIVATE", user_role: :developer, member?: false, authenticate_with: :job_token, expected_status: :not_found4713 responds with not_found4714 project_visibility: "PRIVATE", user_role: :developer, member?: false, authenticate_with: :invalid_job_token, expected_status: :unauthorized4715 responds with unauthorized4716 authenticate_with: :deploy_token_rw, expected_status: :success4717 responds with success4718 behaves like bumping the package last downloaded at field4719 bumps last_downloaded_at4720 authenticate_with: :deploy_token_wo, expected_status: :success4721 responds with success4722 behaves like bumping the package last downloaded at field4723 bumps last_downloaded_at4724 authenticate_with: :deploy_token_ro, expected_status: :success4725 responds with success4726 behaves like bumping the package last downloaded at field4727 bumps last_downloaded_at4728 authenticate_with: :invalid_deploy_token, expected_status: :unauthorized4729 responds with unauthorized4730 with access to package registry for everyone4731 responds with success4732 with package status4733 package_status: :default, expected_status: :success4734 responds with success4735 behaves like bumping the package last downloaded at field4736 bumps last_downloaded_at4737 package_status: :hidden, expected_status: :success4738 responds with success4739 behaves like bumping the package last downloaded at field4740 bumps last_downloaded_at4741 package_status: :error, expected_status: :not_found4742 responds with not_found4743 event tracking4744 behaves like a package tracking event4745 creates a gitlab tracking event pull_package4746 application security4747 param_name: :package_name, param_value: "my-package/../"4748 behaves like secure endpoint4749 rejects malicious request4750 param_name: :package_name, param_value: "my-package%2f%2e%2e%2f"4751 behaves like secure endpoint4752 rejects malicious request4753 param_name: :file_name, param_value: "../.ssh%2fauthorized_keys"4754 behaves like secure endpoint4755 rejects malicious request4756 param_name: :file_name, param_value: "%2e%2e%2f.ssh%2fauthorized_keys"4757 behaves like secure endpoint4758 rejects malicious request4759UsersController4760 GET #show4761 when the user exists and has public visibility4762 when logged in4763 behaves like renders the show template4764 renders the show template4765 when logged out4766 behaves like renders the show template4767 renders the show template4768 when public visibility level is restricted4769 when logged out4770 redirects to login page4771 when logged in4772 behaves like renders the show template4773 renders the show template4774 when a user by that username does not exist4775 when logged out4776 redirects to login page4777 when logged in4778 renders 4044779 requested in json format4780 returns 404 with deprecation message4781 GET /users/:username (deprecated user top)4782 redirects to /user14783 GET #activity4784 when the user exists and has public visibility4785 when logged in4786 behaves like renders the show template4787 renders the show template4788 when logged out4789 behaves like renders the show template4790 renders the show template4791 when public visibility level is restricted4792 when logged out4793 redirects to login page4794 when logged in4795 behaves like renders the show template4796 renders the show template4797 when a user by that username does not exist4798 when logged out4799 redirects to login page4800 when logged in4801 renders 4044802 requested in json format4803 loads events4804 hides events if the user cannot read cross project4805 hides events if the user has a private profile4806 GET #ssh_keys4807 non existent user4808 does not generally work4809 user with no keys4810 responds the empty body with text/plain content type4811 user with keys4812 while signed in4813 behaves like renders all public keys4814 renders all non-deploy keys terminated with a new line with text/plain content type without the comment key4815 when logged out4816 behaves like renders all public keys4817 renders all non-deploy keys terminated with a new line with text/plain content type without the comment key4818 when public visibility is restricted4819 redirects to sign in4820 GET #gpg_keys4821 non existent user4822 does not generally work4823 user with no keys4824 responds the empty body with text/plain content type4825 user with keys4826 while signed in4827 behaves like renders all verified GPG keys4828 renders all verified keys terminated with a new line with text/plain content type4829 when logged out4830 behaves like renders all verified GPG keys4831 renders all verified keys terminated with a new line with text/plain content type4832 when revoked4833 while signed in4834 behaves like doesn't render revoked keys4835 doesn't render revoked keys4836 when logged out4837 behaves like doesn't render revoked keys4838 doesn't render revoked keys4839 GET #calendar4840 for user4841 with public profile4842 renders calendar4843 with private profile4844 does not render calendar4845 forked project4846 includes forked projects4847 GET #calendar_activities4848 renders activities on the specified day4849 for user4850 with public profile4851 renders calendar_activities4852 avoids N+1 queries4853 with private profile4854 does not render calendar_activities4855 external authorization4856 behaves like disabled when using an external authorization service4857 works when the feature is not enabled4858 renders a 404 with a message when the feature is enabled4859 GET #contributed4860 format: html4861 with public profile4862 behaves like renders contributed projects4863 renders contributed projects4864 does not list projects aimed for deletion4865 with private profile4866 returns 4044867 with a user that has the ability to read private profiles4868 behaves like renders contributed projects4869 renders contributed projects4870 does not list projects aimed for deletion4871 format: json4872 with public profile4873 behaves like renders contributed projects4874 renders contributed projects4875 does not list projects aimed for deletion4876 with private profile4877 returns 4044878 with a user that has the ability to read private profiles4879 behaves like renders contributed projects4880 renders contributed projects4881 does not list projects aimed for deletion4882 GET #starred4883 format: html4884 with public profile4885 behaves like renders starred projects4886 renders starred projects4887 does not list projects aimed for deletion4888 with private profile4889 returns 4044890 with a user that has the ability to read private profiles4891 behaves like renders starred projects4892 renders starred projects4893 does not list projects aimed for deletion4894 format: json4895 with public profile4896 behaves like renders starred projects4897 renders starred projects4898 does not list projects aimed for deletion4899 with private profile4900 returns 4044901 with a user that has the ability to read private profiles4902 behaves like renders starred projects4903 renders starred projects4904 does not list projects aimed for deletion4905 GET #snippets4906 format html4907 renders snippets page4908 format json4909 response with snippets json data4910 external authorization4911 behaves like disabled when using an external authorization service4912 works when the feature is not enabled4913 renders a 404 with a message when the feature is enabled4914 GET #exists4915 when user exists4916 returns JSON indicating the user exists4917 when the casing is different4918 returns JSON indicating the user exists4919 when the user does not exist4920 will not show a signup page if registration is disabled4921 returns JSON indicating the user does not exist4922 when a user changed their username4923 returns JSON indicating a user by that username does not exist4924 when the rate limit has been reached4925 returns status 429 Too Many Requests4926 #ensure_canonical_path4927 for a GET request4928 when requesting users at the root path4929 when requesting the canonical path4930 with exactly matching casing4931 responds with success4932 with different casing4933 redirects to the correct casing4934 when requesting a redirected path4935 behaves like redirects to the canonical path4936 redirects to the canonical path4937 when the old path is a substring of the scheme or host4938 behaves like redirects to the canonical path4939 redirects to the canonical path4940 when the old path is substring of users4941 behaves like redirects to the canonical path4942 redirects to the canonical path4943 when requesting users under the /users path4944 when requesting the canonical path4945 with exactly matching casing4946 responds with success4947 with different casing4948 redirects to the correct casing4949 when requesting a redirected path4950 behaves like redirects to the canonical path4951 redirects to the canonical path4952 when the old path is a substring of the scheme or host4953 behaves like redirects to the canonical path4954 redirects to the canonical path4955 when the old path is substring of users4956 behaves like redirects to the canonical path4957 redirects to the canonical path4958 POST #follow4959 when over followee limit4960WARNING: Active Record does not support composite primary key.4961user_follow_users has composite primary key. Composite primary key is ignored.4962 alerts and not follow4963 token authentication4964 behaves like authenticates sessionless user for the request spec4965 show atom4966 when the 'private_token' param is populated with the personal access token4967 when valid token4968 when resource is public4969 authenticates user and returns response with ok status4970 when user with expired password4971 does not authenticate user and returns response with ok status4972 when the personal access token has no api scope4973 when resource is public4974 does not authenticate user and returns response with ok status4975 when invalid token4976 when resource is public4977 does not authenticate user and returns response with ok status4978 when the 'PRIVATE-TOKEN' header is populated with the personal access token4979 when valid token4980 when resource is public4981 authenticates user and returns response with ok status4982 when user with expired password4983 does not authenticate user and returns response with ok status4984 when the personal access token has no api scope4985 when resource is public4986 does not authenticate user and returns response with ok status4987 when invalid token4988 when resource is public4989 does not authenticate user and returns response with ok status4990 when the 'feed_token' param is populated with the feed token4991 when valid token4992 when resource is public4993 authenticates user and returns response with ok status4994 when user with expired password4995 does not authenticate user and returns response with ok status4996 when invalid token4997 when resource is public4998 does not authenticate user and returns response with ok status4999API::Internal::Base5000 GET /internal/check5001 is expected to equal true5002 returns false for field `redis` when redis is unavailable5003 authenticating5004 authenticates using a jwt token in a header5005 returns 401 when jwt token is expired5006 returns 401 when jwt issuer is not Gitlab-Shell5007 returns 401 when jwt token is not provided, even if plain secret is provided5008 GET /internal/two_factor_recovery_codes5009 behaves like actor key validations5010 key does not exist5011 returns an error message5012 key without user5013 returns an error message5014 key is a deploy key5015 returns an error message5016 when two-factor is enabled5017 returns new recovery codes when the user exists5018 when two-factor is not enabled5019 returns an error message5020 POST /internal/personal_access_token5021 returns an error message when given an non existent user5022 returns an error message when no name parameter is received5023 returns an error message when no scopes parameter is received5024 returns an error message when expires_at contains an invalid date5025 returns an error message when it receives an invalid scope5026 returns a token without expiry when the expires_at parameter is missing5027 returns a token with expiry when it receives a valid expires_at parameter5028 behaves like actor key validations5029 key does not exist5030 returns an error message5031 key without user5032 returns an error message5033 key is a deploy key5034 returns an error message5035 POST /internal/lfs_authenticate5036 user key5037 returns the correct information about the key5038 returns the correct information about the user5039 returns a 404 when no key or user is provided5040 returns a 404 when the wrong key is provided5041 returns a 404 when the wrong user is provided5042 returns a 404 when LFS is disabled on the project5043 other repository types5044 returns the correct information for a project wiki5045 returns a 404 when the container does not support LFS5046 deploy key5047 returns the correct information about the key5048 GET /internal/discover5049 finds a user by key id5050 finds a user by username5051 responds successfully when a user is not found5052 response successfully when passing invalid params5053 GET /internal/authorized_keys5054 returns 404 with a partial key5055 returns 404 with an not valid base64 string5056 using an existing key5057 finds the key5058 exposes the comment of the key as a simple identifier of username + hostname5059 POST /internal/allowed5060 access granted5061 git push with project.wiki5062 responds with success5063 behaves like sets hook env5064 with env passed as a JSON5065 sets env in RequestStore5066 git pull with project.wiki5067 responds with success5068 git push with personal snippet5069 responds with success5070 behaves like sets hook env5071 with env passed as a JSON5072 sets env in RequestStore5073 git pull with personal snippet5074 responds with success5075 git push with project snippet5076 responds with success5077 behaves like sets hook env5078 with env passed as a JSON5079 sets env in RequestStore5080 git pull with project snippet5081 responds with success5082 git pull5083 with a feature flag enabled globally5084 has the correct payload5085 behaves like rate limited request5086 is throttled by rate limiter5087 when rate_limit_gitlab_shell feature flag is disabled5088 is not throttled by rate limiter5089 when rate_limit_gitlab_shell_by_ip feature flag is disabled5090 is not throttled by rate limiter5091 when the IP is in a trusted range5092 is not throttled by rate limiter5093 when user_id is passed5094 behaves like rate limited request5095 is throttled by rate limiter5096 when rate_limit_gitlab_shell feature flag is disabled5097 is not throttled by rate limiter5098 when rate_limit_gitlab_shell_by_ip feature flag is disabled5099 is not throttled by rate limiter5100 when the IP is in a trusted range5101 is not throttled by rate limiter5102 with a feature flag enabled for a project5103 has the flag set to true for that project5104 has the flag set to false for other projects5105 git push5106 project as namespace/project5107 is expected to be nil5108 behaves like rate limited request5109 is throttled by rate limiter5110 when rate_limit_gitlab_shell feature flag is disabled5111 is not throttled by rate limiter5112 when rate_limit_gitlab_shell_by_ip feature flag is disabled5113 is not throttled by rate limiter5114 when the IP is in a trusted range5115 is not throttled by rate limiter5116 when receive_max_input_size has been updated5117 returns maxInputSize and partial clone git config5118 when receive_max_input_size is empty5119 returns partial clone git config5120 with Project5121 behaves like storing arguments in the application context for the API5122 places the expected params in the application context5123 with PersonalSnippet5124 behaves like storing arguments in the application context for the API5125 places the expected params in the application context5126 with ProjectSnippet5127 behaves like storing arguments in the application context for the API5128 places the expected params in the application context5129 access denied5130 git pull5131 is expected to be nil5132 git push5133 is expected to be nil5134 with a pending membership5135 returns not found for git pull5136 returns not found for git push5137 custom action5138 git push5139 is expected to be nil5140 console message5141 git pull5142 with a key that has expired5143 includes the `key expired` message in the response and fails5144 with a key that will expire in the next 7 days5145 includes the `key expiring soon` message in the response5146 with a key that has no expiry5147 does not include any message in the response5148 blocked user5149 git pull5150 is expected to be nil5151 git push5152 is expected to be nil5153 request times out5154 git push5155 responds with a gateway timeout5156 archived project5157 git pull5158 is expected to be truthy5159 git push5160 is expected to be falsey5161 deploy key5162 added to project5163 is expected to eq "secret"5164 behaves like rate limited request5165 is throttled by rate limiter5166 when rate_limit_gitlab_shell feature flag is disabled5167 is not throttled by rate limiter5168 when rate_limit_gitlab_shell_by_ip feature flag is disabled5169 is not throttled by rate limiter5170 when the IP is in a trusted range5171 is not throttled by rate limiter5172 not added to project5173 is expected to be falsey5174 project does not exist5175 git pull5176 returns a 200 response with status: false5177 returns a 200 response when using a project path that does not exist5178 git push5179 from a user/group namespace5180 creates the project5181 from the personal snippet path5182 does not create snippet5183 from a project path5184 from an non existent project path5185 does not create project5186 does not create snippet5187 from an existent project path5188 does not create snippet5189 user does not exist5190 is expected to be falsey5191 ssh access has been disabled5192 rejects the SSH push5193 rejects the SSH pull5194 http access has been disabled5195 rejects the HTTP push5196 rejects the HTTP pull5197 web actions are always allowed5198 allows WEB push5199 the project path was changed5200 rejects the push5201 rejects the SSH pull5202 for design repositories5203 does not allow access5204 admin mode5205 application setting :admin_mode is enabled5206 with an admin user5207 is member of the project5208 behaves like pushes succeed for ssh and http5209 accepts the SSH push5210 accepts the HTTP push5211 is not member of the project5212 behaves like pushes succeed for ssh and http5213 accepts the SSH push5214 accepts the HTTP push5215 with a regular user5216 is member of the project5217 behaves like pushes succeed for ssh and http5218 accepts the SSH push5219 accepts the HTTP push5220 is not member of the project5221 behaves like pushes fail for ssh and http5222 rejects the SSH push5223 rejects the HTTP push5224 application setting :admin_mode is disabled5225 with an admin user5226 is member of the project5227 behaves like pushes succeed for ssh and http5228 accepts the SSH push5229 accepts the HTTP push5230 is not member of the project5231 behaves like pushes succeed for ssh and http5232 accepts the SSH push5233 accepts the HTTP push5234 with a regular user5235 is member of the project5236 behaves like pushes succeed for ssh and http5237 accepts the SSH push5238 accepts the HTTP push5239 is not member of the project5240 behaves like pushes fail for ssh and http5241 rejects the SSH push5242 rejects the HTTP push5243 POST /internal/post_receive5244 with Project5245 behaves like runs post-receive hooks5246 executes PostReceiveService5247 tries to notify that the container has moved5248 behaves like storing arguments in the application context for the API5249 places the expected params in the application context5250 with PersonalSnippet5251 behaves like runs post-receive hooks5252 executes PostReceiveService5253 tries to notify that the container has moved5254 behaves like storing arguments in the application context for the API5255 places the expected params in the application context5256 with ProjectSnippet5257 behaves like runs post-receive hooks5258 executes PostReceiveService5259 tries to notify that the container has moved5260 behaves like storing arguments in the application context for the API5261 places the expected params in the application context5262 with ProjectWiki5263 behaves like runs post-receive hooks5264 executes PostReceiveService5265 tries to notify that the container has moved5266 behaves like storing arguments in the application context for the API5267 places the expected params in the application context5268 with an orphaned write deploy key5269 does not try to notify that project moved5270 when container is nil5271 does not try to notify that project moved5272 POST /internal/pre_receive5273 decreases the reference counter and returns the result5274 POST /internal/two_factor_config5275 behaves like actor key validations5276 key does not exist5277 returns an error message5278 key without user5279 returns an error message5280 when the key is a deploy key5281 does not required two factor5282 when two-factor is enabled5283 returns user two factor config5284 when two-factor is not enabled5285 returns an error message5286 two_factor_for_cli feature is disabled5287 when two-factor is enabled for the user5288 returns user two factor config5289 POST /internal/two_factor_manual_otp_check5290 is not available5291 POST /internal/two_factor_push_otp_check5292 is not available5293 POST /internal/two_factor_manual_otp_check5294 is not available5295 POST /internal/two_factor_push_otp_check5296 is not available5297GroupsController5298 GET #show5299 when the group is not importing5300 tracks page views5301 behaves like details view5302 is expected to render template groups/show5303 as atom5304 is expected to render template groups/show5305 assigns events for all the projects in the group5306 when the group is importing5307 redirects to the import status page5308 does not track page views5309 GET #details5310 behaves like details view5311 is expected to render template groups/show5312 as atom5313 is expected to render template groups/show5314 assigns events for all the projects in the group5315 GET edit5316 sets the badge API endpoint5317 GET #new5318 when creating subgroups5319 and can_create_group is true5320 and logged in as Admin_with_admin_mode5321 behaves like member with ability to create subgroups5322 renders the new page5323 and logged in as Owner5324 behaves like member with ability to create subgroups5325 renders the new page5326 and logged in as Maintainer5327 behaves like member with ability to create subgroups5328 renders the new page5329 and logged in as Guest5330 behaves like member without ability to create subgroups5331 renders the 404 page5332 and logged in as Developer5333 behaves like member without ability to create subgroups5334 renders the 404 page5335 and logged in as Admin_without_admin_mode5336 behaves like member without ability to create subgroups5337 renders the 404 page5338 and can_create_group is false5339 and logged in as Admin_with_admin_mode5340 behaves like member with ability to create subgroups5341 renders the new page5342 and logged in as Owner5343 behaves like member with ability to create subgroups5344 renders the new page5345 and logged in as Maintainer5346 behaves like member with ability to create subgroups5347 renders the new page5348 and logged in as Guest5349 behaves like member without ability to create subgroups5350 renders the 404 page5351 and logged in as Developer5352 behaves like member without ability to create subgroups5353 renders the 404 page5354 and logged in as Admin_without_admin_mode5355 behaves like member without ability to create subgroups5356 renders the 404 page5357 require_verification_for_namespace_creation experiment5358 tracks a "start_create_group" event5359 when creating a sub-group5360 does not track a "start_create_group" event5361 GET #activity5362 as json5363 includes events from all projects in group and subgroups5364 when user has no permission to see the event5365 filters out invisible event5366 POST #create5367 allows creating a group5368 authorization5369 allows an admin to create a group5370 when creating chat team5371 triggers Mattermost::CreateTeamService5372 when creating subgroups5373 and can_create_group is true5374 and logged in as Owner5375 creates the subgroup5376 and logged in as Developer5377 renders the new template5378 and can_create_group is false5379 and logged in as Owner5380 creates the subgroup5381 and logged in as Developer5382 renders the new template5383 when creating a top level group5384 and can_create_group is enabled5385 creates the Group5386 and can_create_group is disabled5387 does not create the Group5388 malicious group name5389 is expected not to change `Group.count`5390 is expected to render template new5391 when creating a group with `default_branch_protection` attribute5392 for users who have the ability to create a group with `default_branch_protection`5393 creates group with the specified branch protection level5394 for users who do not have the ability to create a group with `default_branch_protection`5395 does not create the group with the specified branch protection level5396 when creating a group with captcha protection5397 allows creating a group when the reCAPTCHA is solved5398 allows creating a sub-group without checking the captcha5399 when the reCAPTCHA is not solved5400 displays an error5401 sets gon variables5402 with feature flag switched off5403 allows creating a group without the reCAPTCHA5404 when creating a group with the `role` attribute present5405 changes the users role5406 when creating a group with the `setup_for_company` attribute present5407 sets the groups `setup_for_company` value5408 when the user already has a value for `setup_for_company`5409 does not change the users `setup_for_company` value5410 when the user has no value for `setup_for_company`5411 changes the users `setup_for_company` value5412 when creating a group with the `jobs_to_be_done` attribute present5413 sets the groups `jobs_to_be_done` value5414 GET #index5415 as a user5416 redirects to Groups Dashboard5417 as a guest5418 redirects to Explore Groups5419 GET #issues5420 saves the sort order to user preferences5421 GET #merge_requests5422 sorting by votes5423 sorts most popular merge requests5424 sorts least popular merge requests5425 DELETE #destroy5426 as another user5427 returns 4045428 as the group owner5429 schedules a group destroy5430 redirects to the root path5431 PUT update5432 updates the path successfully5433 does not update the path on error5434 updates the project_creation_level successfully5435 updating default_branch_protection5436 for users who have the ability to update default_branch_protection5437 updates the attribute5438 for users who do not have the ability to update default_branch_protection5439 does not update the attribute5440 updating default_branch_name5441 updates the attribute5442 to empty string5443 does not update the attribute5444 when there is a conflicting group path5445 does not render references to the conflicting group5446 when a project inside the group has container repositories5447 does allow the group to be renamed5448 does not allow to path of the group to be changed5449 updating :resource_access_token_creation_allowed5450 when user is a group owner5451 updates the attribute5452 when not a group owner5453 does not update the attribute5454 updating :prevent_sharing_groups_outside_hierarchy5455 when user is a group owner5456 updates the attribute5457 when not a group owner5458 does not update the attribute5459 #ensure_canonical_path5460 for a GET request5461 when requesting groups at the root path5462 when requesting the canonical path with different casing5463 redirects to the correct casing5464 when requesting a redirected path5465 redirects to the canonical path5466 when the old group path is a substring of the scheme or host5467 does not modify the requested host5468 when the old group path is substring of groups5469 does not modify the /groups part of the path5470 when requesting groups under the /groups path5471 when requesting the canonical path5472 non-show path5473 with exactly matching casing5474 does not redirect5475 with different casing5476 redirects to the correct casing5477 show path5478 with exactly matching casing5479 does not redirect5480 with different casing5481 redirects to the correct casing at the root path5482 when requesting a redirected path5483 redirects to the canonical path5484 when the old group path is a substring of the scheme or host5485 does not modify the requested host5486 when the old group path is substring of groups5487 does not modify the /groups part of the path5488 when the old group path is substring of groups plus the new path5489 does not modify the /groups part of the path5490 for a POST request5491 when requesting the canonical path with different casing5492 does not 4045493 does not redirect to the correct casing5494 when requesting a redirected path5495 returns not found5496 for a DELETE request5497 when requesting the canonical path with different casing5498 does not 4045499 does not redirect to the correct casing5500 when requesting a redirected path5501 returns not found5502 PUT transfer5503 when transferring to a subgroup goes right5504 returns a notice and redirects to the new path5505 when converting to a root group goes right5506 returns a notice and redirects to the new path5507 When the transfer goes wrong5508 returns an alert and redirects to the current path5509 when the user is not allowed to transfer the group5510 is denied5511 transferring when a project has container images5512 does not allow the group to be transferred5513 POST #export5514 when the user does not have permission to export the group5515 returns an error5516 when supplied valid params5517 triggers the export job5518 redirects to the edit page5519 when the endpoint receives requests above the rate limit5520 throttles the endpoint5521 GET #download_export5522 when there is a file available to download5523 sends the file5524 when the file is no longer present on disk5525 returns not found5526 when there is no file available to download5527 returns not found5528 when the user does not have the required permissions5529 returns not_found5530 when the endpoint receives requests above the rate limit5531 throttles the endpoint5532 external authorization5533 with external authorization service enabled5534 GET #show5535 is successful5536 does not allow other formats5537 GET #edit5538 is successful5539 GET #new5540 is successful5541 GET #index5542 is successful5543 POST #create5544 creates a group5545 PUT #update5546 updates a group5547 malicious group name5548 is expected to render template edit5549 does not update name5550 DELETE #destroy5551 deletes the group5552 GET #activity5553 behaves like disabled when using an external authorization service5554 works when the feature is not enabled5555 renders a 404 with a message when the feature is enabled5556 GET #activity as JSON5557 returns count5558 GET #issues5559 behaves like disabled when using an external authorization service5560 works when the feature is not enabled5561 renders a 404 with a message when the feature is enabled5562 GET #merge_requests5563 behaves like disabled when using an external authorization service5564 works when the feature is not enabled5565 renders a 404 with a message when the feature is enabled5566 GET #unfoldered_environment_names5567 shows the environment names of a public project to an anonymous user5568 does not show environment names of private projects to anonymous users5569 shows environment names of a private project to a group member5570 does not show environment names of private projects to a logged-in non-member5571API::ProjectContainerRepositories5572 GET /projects/:id/registry/repositories5573 using API user5574 behaves like rejected container repository access5575 for guest5576 returns forbidden5577 behaves like rejected container repository access5578 for anonymous5579 returns not_found5580 behaves like a package tracking event5581 creates a gitlab tracking event list_repositories5582 behaves like handling network errors with the container registry5583caught error of type Faraday::Error in after callback inside Grape::Middleware::Formatter : 5584 returns a connection error5585 behaves like returns repositories for allowed users5586 for reporter5587 returns a list of repositories5588 returns a matching schema5589 behaves like returns tags for allowed users5590 for reporter5591 with tags param5592 returns a list of repositories and their tags5593 returns a matching schema5594 with tags_count param5595 returns a list of repositories and their tags_count5596 returns a matching schema5597 using job token5598 behaves like rejected container repository access5599 for anonymous5600 returns not_found5601 behaves like a package tracking event5602 creates a gitlab tracking event list_repositories5603 behaves like handling network errors with the container registry5604caught error of type Faraday::Error in after callback inside Grape::Middleware::Formatter : 5605 returns a connection error5606 behaves like returns repositories for allowed users5607 for reporter5608 returns a list of repositories5609 returns a matching schema5610 behaves like returns tags for allowed users5611 for reporter5612 with tags param5613 returns a list of repositories and their tags5614 returns a matching schema5615 with tags_count param5616 returns a list of repositories and their tags_count5617 returns a matching schema5618 behaves like rejected container repository access5619 for maintainer5620 returns forbidden5621 behaves like rejected container repository access5622 for maintainer5623 returns forbidden5624 DELETE /projects/:id/registry/repositories/:repository_id5625 using API user5626 behaves like rejected container repository access5627 for developer5628 returns forbidden5629 behaves like rejected container repository access5630 for anonymous5631 returns not_found5632 behaves like a package tracking event5633 creates a gitlab tracking event delete_repository5634 for maintainer5635 schedules removal of repository5636 using job token5637 behaves like rejected container repository access5638 for developer5639 returns forbidden5640 behaves like rejected container repository access5641 for anonymous5642 returns not_found5643 behaves like a package tracking event5644 creates a gitlab tracking event delete_repository5645 for maintainer5646 schedules removal of repository5647 behaves like rejected container repository access5648 for maintainer5649 returns forbidden5650 behaves like rejected container repository access5651 for maintainer5652 returns forbidden5653 GET /projects/:id/registry/repositories/:repository_id/tags5654 using API user5655 behaves like rejected container repository access5656 for guest5657 returns forbidden5658 behaves like rejected container repository access5659 for anonymous5660 returns not_found5661 behaves like handling network errors with the container registry5662 returns a connection error5663 for reporter5664 returns a list of tags5665 returns a matching schema5666 behaves like a package tracking event5667 creates a gitlab tracking event list_tags5668 using job token5669 behaves like rejected container repository access5670 for anonymous5671 returns not_found5672 behaves like handling network errors with the container registry5673 returns a connection error5674 for reporter5675 returns a list of tags5676 returns a matching schema5677 behaves like a package tracking event5678 creates a gitlab tracking event list_tags5679 behaves like rejected container repository access5680 for maintainer5681 returns forbidden5682 behaves like rejected container repository access5683 for maintainer5684 returns forbidden5685 DELETE /projects/:id/registry/repositories/:repository_id/tags5686 using API user5687 disallowed5688 behaves like rejected container repository access5689 for developer5690 returns forbidden5691 behaves like rejected container repository access5692 for anonymous5693 returns not_found5694 behaves like a package tracking event5695 creates a gitlab tracking event delete_tag_bulk5696 for maintainer5697 without required parameters5698 returns bad request5699 without name_regex5700 returns bad request5701 passes all declared parameters5702 schedules cleanup of tags repository5703 called multiple times in one hour5704 returns 400 with an error message5705 executes service only for the first time5706 with deprecated name_regex param5707 schedules cleanup of tags repository5708 with invalid regex5709 for name_regex_delete5710 behaves like rejecting the invalid regex5711 does not enqueue a job5712 returns an error message5713 behaves like returning response status5714 returns bad_request5715 for name_regex5716 behaves like rejecting the invalid regex5717 does not enqueue a job5718 returns an error message5719 behaves like returning response status5720 returns bad_request5721 for name_regex_keep5722 behaves like rejecting the invalid regex5723 does not enqueue a job5724 returns an error message5725 behaves like returning response status5726 returns bad_request5727 using job token5728 disallowed5729 behaves like rejected container repository access5730 for developer5731 returns forbidden5732 behaves like rejected container repository access5733 for anonymous5734 returns not_found5735 behaves like a package tracking event5736 creates a gitlab tracking event delete_tag_bulk5737 for maintainer5738 without required parameters5739 returns bad request5740 without name_regex5741 returns bad request5742 passes all declared parameters5743 schedules cleanup of tags repository5744 called multiple times in one hour5745 returns 400 with an error message5746 executes service only for the first time5747 with deprecated name_regex param5748 schedules cleanup of tags repository5749 with invalid regex5750 for name_regex_delete5751 behaves like rejecting the invalid regex5752 does not enqueue a job5753 returns an error message5754 behaves like returning response status5755 returns bad_request5756 for name_regex5757 behaves like rejecting the invalid regex5758 does not enqueue a job5759 returns an error message5760 behaves like returning response status5761 returns bad_request5762 for name_regex_keep5763 behaves like rejecting the invalid regex5764 does not enqueue a job5765 returns an error message5766 behaves like returning response status5767 returns bad_request5768 behaves like rejected container repository access5769 for maintainer5770 returns forbidden5771 behaves like rejected container repository access5772 for maintainer5773 returns forbidden5774 GET /projects/:id/registry/repositories/:repository_id/tags/:tag_name5775 using API user5776 behaves like rejected container repository access5777 for guest5778 returns forbidden5779 behaves like rejected container repository access5780 for anonymous5781 returns not_found5782 for reporter5783 returns a details of tag5784 returns a matching schema5785 using job token5786 behaves like rejected container repository access5787 for anonymous5788 returns not_found5789 for reporter5790 returns a details of tag5791 returns a matching schema5792 behaves like rejected container repository access5793 for maintainer5794 returns forbidden5795 behaves like rejected container repository access5796 for maintainer5797 returns forbidden5798 DELETE /projects/:id/registry/repositories/:repository_id/tags/:tag_name5799 using API user5800 behaves like rejected container repository access5801 for reporter5802 returns forbidden5803 behaves like rejected container repository access5804 for anonymous5805 returns not_found5806 for developer5807 when there are multiple tags5808 properly removes tag5809 when there's only one tag5810 properly removes tag5811 using job token5812 behaves like rejected container repository access5813 for reporter5814 returns forbidden5815 behaves like rejected container repository access5816 for anonymous5817 returns not_found5818 for developer5819 when there are multiple tags5820 properly removes tag5821 when there's only one tag5822 properly removes tag5823 behaves like rejected container repository access5824 for maintainer5825 returns forbidden5826 behaves like rejected container repository access5827 for maintainer5828 returns forbidden5829API::RpmProjectPackages5830 # order random5831 POST /api/v4/projects/:project_id/packages/rpm5832 with user token5833 with valid project5834 visibility_level: "PUBLIC", user_role: :developer, member: true, user_token: true, shared_examples_name: "process rpm packages upload/download", expected_status: :not_found, tracked: true5835 behaves like a package tracking event5836 creates a gitlab tracking event push_package5837 behaves like process rpm packages upload/download5838 behaves like returning response status5839 returns not_found5840 visibility_level: "PUBLIC", user_role: :guest, member: true, user_token: true, shared_examples_name: "rejects rpm packages access", expected_status: :forbidden, tracked: false5841 behaves like not a package tracking event5842 does not create a gitlab tracking event5843 behaves like rejects rpm packages access5844 behaves like returning response status5845 returns forbidden5846 visibility_level: "PUBLIC", user_role: :developer, member: true, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized, tracked: false5847 behaves like not a package tracking event5848 does not create a gitlab tracking event5849 behaves like rejects rpm packages access5850 has the correct response header5851 behaves like returning response status5852 returns unauthorized5853 visibility_level: "PUBLIC", user_role: :guest, member: true, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized, tracked: false5854 behaves like not a package tracking event5855 does not create a gitlab tracking event5856 behaves like rejects rpm packages access5857 has the correct response header5858 behaves like returning response status5859 returns unauthorized5860 visibility_level: "PUBLIC", user_role: :developer, member: false, user_token: true, shared_examples_name: "rejects rpm packages access", expected_status: :not_found, tracked: false5861 behaves like not a package tracking event5862 does not create a gitlab tracking event5863 behaves like rejects rpm packages access5864 behaves like returning response status5865 returns not_found5866 visibility_level: "PUBLIC", user_role: :guest, member: false, user_token: true, shared_examples_name: "rejects rpm packages access", expected_status: :not_found, tracked: false5867 behaves like not a package tracking event5868 does not create a gitlab tracking event5869 behaves like rejects rpm packages access5870 behaves like returning response status5871 returns not_found5872 visibility_level: "PUBLIC", user_role: :developer, member: false, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized, tracked: false5873 behaves like not a package tracking event5874 does not create a gitlab tracking event5875 behaves like rejects rpm packages access5876 has the correct response header5877 behaves like returning response status5878 returns unauthorized5879 visibility_level: "PUBLIC", user_role: :guest, member: false, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized, tracked: false5880 behaves like not a package tracking event5881 does not create a gitlab tracking event5882 behaves like rejects rpm packages access5883 has the correct response header5884 behaves like returning response status5885 returns unauthorized5886 visibility_level: "PUBLIC", user_role: :anonymous, member: false, user_token: true, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized, tracked: false5887 behaves like not a package tracking event5888 does not create a gitlab tracking event5889 behaves like rejects rpm packages access5890 has the correct response header5891 behaves like returning response status5892 returns unauthorized5893 visibility_level: "PRIVATE", user_role: :developer, member: true, user_token: true, shared_examples_name: "process rpm packages upload/download", expected_status: :not_found, tracked: true5894 behaves like a package tracking event5895 creates a gitlab tracking event push_package5896 behaves like process rpm packages upload/download5897 behaves like returning response status5898 returns not_found5899 visibility_level: "PRIVATE", user_role: :guest, member: true, user_token: true, shared_examples_name: "rejects rpm packages access", expected_status: :forbidden, tracked: false5900 behaves like not a package tracking event5901 does not create a gitlab tracking event5902 behaves like rejects rpm packages access5903 behaves like returning response status5904 returns forbidden5905 visibility_level: "PRIVATE", user_role: :developer, member: true, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized, tracked: false5906 behaves like not a package tracking event5907 does not create a gitlab tracking event5908 behaves like rejects rpm packages access5909 has the correct response header5910 behaves like returning response status5911 returns unauthorized5912 visibility_level: "PRIVATE", user_role: :guest, member: true, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized, tracked: false5913 behaves like not a package tracking event5914 does not create a gitlab tracking event5915 behaves like rejects rpm packages access5916 has the correct response header5917 behaves like returning response status5918 returns unauthorized5919 visibility_level: "PRIVATE", user_role: :developer, member: false, user_token: true, shared_examples_name: "rejects rpm packages access", expected_status: :not_found, tracked: false5920 behaves like not a package tracking event5921 does not create a gitlab tracking event5922 behaves like rejects rpm packages access5923 behaves like returning response status5924 returns not_found5925 visibility_level: "PRIVATE", user_role: :guest, member: false, user_token: true, shared_examples_name: "rejects rpm packages access", expected_status: :not_found, tracked: false5926 behaves like not a package tracking event5927 does not create a gitlab tracking event5928 behaves like rejects rpm packages access5929 behaves like returning response status5930 returns not_found5931 visibility_level: "PRIVATE", user_role: :developer, member: false, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized, tracked: false5932 behaves like not a package tracking event5933 does not create a gitlab tracking event5934 behaves like rejects rpm packages access5935 has the correct response header5936 behaves like returning response status5937 returns unauthorized5938 visibility_level: "PRIVATE", user_role: :guest, member: false, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized, tracked: false5939 behaves like not a package tracking event5940 does not create a gitlab tracking event5941 behaves like rejects rpm packages access5942 has the correct response header5943 behaves like returning response status5944 returns unauthorized5945 visibility_level: "PRIVATE", user_role: :anonymous, member: false, user_token: true, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized, tracked: false5946 behaves like not a package tracking event5947 does not create a gitlab tracking event5948 behaves like rejects rpm packages access5949 has the correct response header5950 behaves like returning response status5951 returns unauthorized5952 when user can upload file5953 when file size too large5954 returns an error5955 behaves like a deploy token for RPM requests5956 with deploy token headers5957 when token is valid5958 behaves like returning response status5959 returns not_found5960 when token is invalid5961 behaves like returning response status5962 returns unauthorized5963 behaves like a job token for RPM requests5964 with job token headers5965 with valid token5966 behaves like returning response status5967 returns not_found5968 with invalid token5969 behaves like returning response status5970 returns unauthorized5971 with invalid user5972 behaves like returning response status5973 returns unauthorized5974 POST /api/v4/projects/:project_id/packages/rpm/authorize5975 behaves like returning response status5976 returns not_found5977 when feature flag is disabled5978 behaves like returning response status5979 returns not_found5980 when package feature is disabled5981 behaves like returning response status5982 returns not_found5983 GET /api/v4/projects/:project_id/packages/rpm/repodata/:filename5984 behaves like a job token for RPM requests5985 with job token headers5986 with valid token5987 behaves like returning response status5988 returns success5989 with invalid token5990 behaves like returning response status5991 returns unauthorized5992 with invalid user5993 behaves like returning response status5994 returns unauthorized5995 behaves like a deploy token for RPM requests5996 with deploy token headers5997 when token is valid5998 behaves like returning response status5999 returns success6000 when token is invalid6001 behaves like returning response status6002 returns unauthorized6003 behaves like a user token for RPM requests6004 with valid project6005 visibility_level: "PUBLIC", user_role: :developer, member: true, user_token: true, shared_examples_name: "process rpm packages upload/download", expected_status: :success6006 behaves like process rpm packages upload/download6007 behaves like returning response status6008 returns success6009 visibility_level: "PUBLIC", user_role: :guest, member: true, user_token: true, shared_examples_name: "process rpm packages upload/download", expected_status: :forbidden6010 behaves like process rpm packages upload/download6011 behaves like returning response status6012 returns forbidden6013 visibility_level: "PUBLIC", user_role: :developer, member: true, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized6014 behaves like rejects rpm packages access6015 has the correct response header6016 behaves like returning response status6017 returns unauthorized6018 visibility_level: "PUBLIC", user_role: :guest, member: true, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized6019 behaves like rejects rpm packages access6020 has the correct response header6021 behaves like returning response status6022 returns unauthorized6023 visibility_level: "PUBLIC", user_role: :developer, member: false, user_token: true, shared_examples_name: "process rpm packages upload/download", expected_status: :not_found6024 behaves like process rpm packages upload/download6025 behaves like returning response status6026 returns not_found6027 visibility_level: "PUBLIC", user_role: :guest, member: false, user_token: true, shared_examples_name: "process rpm packages upload/download", expected_status: :not_found6028 behaves like process rpm packages upload/download6029 behaves like returning response status6030 returns not_found6031 visibility_level: "PUBLIC", user_role: :developer, member: false, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized6032 behaves like rejects rpm packages access6033 has the correct response header6034 behaves like returning response status6035 returns unauthorized6036 visibility_level: "PUBLIC", user_role: :guest, member: false, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized6037 behaves like rejects rpm packages access6038 has the correct response header6039 behaves like returning response status6040 returns unauthorized6041 visibility_level: "PUBLIC", user_role: :anonymous, member: false, user_token: true, shared_examples_name: "process rpm packages upload/download", expected_status: :unauthorized6042 behaves like process rpm packages upload/download6043 behaves like returning response status6044 returns unauthorized6045 visibility_level: "PRIVATE", user_role: :developer, member: true, user_token: true, shared_examples_name: "process rpm packages upload/download", expected_status: :success6046 behaves like process rpm packages upload/download6047 behaves like returning response status6048 returns success6049 visibility_level: "PRIVATE", user_role: :guest, member: true, user_token: true, shared_examples_name: "rejects rpm packages access", expected_status: :forbidden6050 behaves like rejects rpm packages access6051 behaves like returning response status6052 returns forbidden6053 visibility_level: "PRIVATE", user_role: :developer, member: true, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized6054 behaves like rejects rpm packages access6055 has the correct response header6056 behaves like returning response status6057 returns unauthorized6058 visibility_level: "PRIVATE", user_role: :guest, member: true, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized6059 behaves like rejects rpm packages access6060 has the correct response header6061 behaves like returning response status6062 returns unauthorized6063 visibility_level: "PRIVATE", user_role: :developer, member: false, user_token: true, shared_examples_name: "rejects rpm packages access", expected_status: :not_found6064 behaves like rejects rpm packages access6065 behaves like returning response status6066 returns not_found6067 visibility_level: "PRIVATE", user_role: :guest, member: false, user_token: true, shared_examples_name: "rejects rpm packages access", expected_status: :not_found6068 behaves like rejects rpm packages access6069 behaves like returning response status6070 returns not_found6071 visibility_level: "PRIVATE", user_role: :developer, member: false, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized6072 behaves like rejects rpm packages access6073 has the correct response header6074 behaves like returning response status6075 returns unauthorized6076 visibility_level: "PRIVATE", user_role: :guest, member: false, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized6077 behaves like rejects rpm packages access6078 has the correct response header6079 behaves like returning response status6080 returns unauthorized6081 visibility_level: "PRIVATE", user_role: :anonymous, member: false, user_token: true, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized6082 behaves like rejects rpm packages access6083 has the correct response header6084 behaves like returning response status6085 returns unauthorized6086 GET /api/v4/projects/:id/packages/rpm/:package_file_id/:filename6087 behaves like a package tracking event6088 creates a gitlab tracking event pull_package6089 behaves like a job token for RPM requests6090 with job token headers6091 with valid token6092 behaves like returning response status6093 returns not_found6094 with invalid token6095 behaves like returning response status6096 returns unauthorized6097 with invalid user6098 behaves like returning response status6099 returns unauthorized6100 behaves like a deploy token for RPM requests6101 with deploy token headers6102 when token is valid6103 behaves like returning response status6104 returns not_found6105 when token is invalid6106 behaves like returning response status6107 returns unauthorized6108 behaves like a user token for RPM requests6109 with valid project6110 visibility_level: "PUBLIC", user_role: :developer, member: true, user_token: true, shared_examples_name: "process rpm packages upload/download", expected_status: :not_found6111 behaves like process rpm packages upload/download6112 behaves like returning response status6113 returns not_found6114 visibility_level: "PUBLIC", user_role: :guest, member: true, user_token: true, shared_examples_name: "process rpm packages upload/download", expected_status: :forbidden6115 behaves like process rpm packages upload/download6116 behaves like returning response status6117 returns forbidden6118 visibility_level: "PUBLIC", user_role: :developer, member: true, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized6119 behaves like rejects rpm packages access6120 has the correct response header6121 behaves like returning response status6122 returns unauthorized6123 visibility_level: "PUBLIC", user_role: :guest, member: true, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized6124 behaves like rejects rpm packages access6125 has the correct response header6126 behaves like returning response status6127 returns unauthorized6128 visibility_level: "PUBLIC", user_role: :developer, member: false, user_token: true, shared_examples_name: "process rpm packages upload/download", expected_status: :not_found6129 behaves like process rpm packages upload/download6130 behaves like returning response status6131 returns not_found6132 visibility_level: "PUBLIC", user_role: :guest, member: false, user_token: true, shared_examples_name: "process rpm packages upload/download", expected_status: :not_found6133 behaves like process rpm packages upload/download6134 behaves like returning response status6135 returns not_found6136 visibility_level: "PUBLIC", user_role: :developer, member: false, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized6137 behaves like rejects rpm packages access6138 has the correct response header6139 behaves like returning response status6140 returns unauthorized6141 visibility_level: "PUBLIC", user_role: :guest, member: false, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized6142 behaves like rejects rpm packages access6143 has the correct response header6144 behaves like returning response status6145 returns unauthorized6146 visibility_level: "PUBLIC", user_role: :anonymous, member: false, user_token: true, shared_examples_name: "process rpm packages upload/download", expected_status: :unauthorized6147 behaves like process rpm packages upload/download6148 behaves like returning response status6149 returns unauthorized6150 visibility_level: "PRIVATE", user_role: :developer, member: true, user_token: true, shared_examples_name: "process rpm packages upload/download", expected_status: :not_found6151 behaves like process rpm packages upload/download6152 behaves like returning response status6153 returns not_found6154 visibility_level: "PRIVATE", user_role: :guest, member: true, user_token: true, shared_examples_name: "rejects rpm packages access", expected_status: :forbidden6155 behaves like rejects rpm packages access6156 behaves like returning response status6157 returns forbidden6158 visibility_level: "PRIVATE", user_role: :developer, member: true, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized6159 behaves like rejects rpm packages access6160 has the correct response header6161 behaves like returning response status6162 returns unauthorized6163 visibility_level: "PRIVATE", user_role: :guest, member: true, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized6164 behaves like rejects rpm packages access6165 has the correct response header6166 behaves like returning response status6167 returns unauthorized6168 visibility_level: "PRIVATE", user_role: :developer, member: false, user_token: true, shared_examples_name: "rejects rpm packages access", expected_status: :not_found6169 behaves like rejects rpm packages access6170 behaves like returning response status6171 returns not_found6172 visibility_level: "PRIVATE", user_role: :guest, member: false, user_token: true, shared_examples_name: "rejects rpm packages access", expected_status: :not_found6173 behaves like rejects rpm packages access6174 behaves like returning response status6175 returns not_found6176 visibility_level: "PRIVATE", user_role: :developer, member: false, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized6177 behaves like rejects rpm packages access6178 has the correct response header6179 behaves like returning response status6180 returns unauthorized6181 visibility_level: "PRIVATE", user_role: :guest, member: false, user_token: false, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized6182 behaves like rejects rpm packages access6183 has the correct response header6184 behaves like returning response status6185 returns unauthorized6186 visibility_level: "PRIVATE", user_role: :anonymous, member: false, user_token: true, shared_examples_name: "rejects rpm packages access", expected_status: :unauthorized6187 behaves like rejects rpm packages access6188 has the correct response header6189 behaves like returning response status6190 returns unauthorized6191Emails::Profile6192 for new users, the email6193 contains the password text6194 includes a link for user to set password6195 explains the reset link expiration6196 behaves like an email sent from GitLab6197 has the characteristics of an email sent from GitLab6198 behaves like a new user email6199 is sent to the new user with the correct subject and body6200 behaves like it should not have Gmail Actions links6201 is expected not to have body including "ViewAction"6202 behaves like a user cannot unsubscribe through footer link6203 does not have a List-Unsubscribe header or a body link6204 for users that signed up, the email6205 does not contain the new user's password6206 behaves like an email sent from GitLab6207 has the characteristics of an email sent from GitLab6208 behaves like a new user email6209 is sent to the new user with the correct subject and body6210 behaves like it should not have Gmail Actions links6211 is expected not to have body including "ViewAction"6212 behaves like a user cannot unsubscribe through footer link6213 does not have a List-Unsubscribe header or a body link6214 user added ssh key6215 is sent to the new user6216 has the correct subject6217 contains the new ssh key title6218 includes a link to ssh keys page6219 behaves like an email sent from GitLab6220 has the characteristics of an email sent from GitLab6221 behaves like it should not have Gmail Actions links6222 is expected not to have body including "ViewAction"6223 behaves like a user cannot unsubscribe through footer link6224 does not have a List-Unsubscribe header or a body link6225 with SSH key that does not exist6226 is expected not to raise Exception6227 user added gpg key6228 is sent to the new user6229 has the correct subject6230 contains the new gpg key title6231 includes a link to gpg keys page6232 behaves like an email sent from GitLab6233 has the characteristics of an email sent from GitLab6234 behaves like it should not have Gmail Actions links6235 is expected not to have body including "ViewAction"6236 behaves like a user cannot unsubscribe through footer link6237 does not have a List-Unsubscribe header or a body link6238 with GPG key that does not exist6239 is expected not to raise Exception6240 user personal access token has been created6241 when valid6242 is sent to the user6243 has the correct subject6244 provides the names of the token6245 includes a link to personal access tokens page6246 includes the email reason6247 behaves like an email sent from GitLab6248 has the characteristics of an email sent from GitLab6249 behaves like it should not have Gmail Actions links6250 is expected not to have body including "ViewAction"6251 behaves like a user cannot unsubscribe through footer link6252 does not have a List-Unsubscribe header or a body link6253 user personal access token is about to expire6254 is sent to the user6255 has the correct subject6256 mentions the access tokens will expire6257 provides the names of expiring tokens6258 includes a link to personal access tokens page6259 includes the email reason6260 behaves like an email sent from GitLab6261 has the characteristics of an email sent from GitLab6262 behaves like it should not have Gmail Actions links6263 is expected not to have body including "ViewAction"6264 behaves like a user cannot unsubscribe through footer link6265 does not have a List-Unsubscribe header or a body link6266 with User does not exist6267 is expected not to raise Exception6268 user personal access token has expired6269 when valid6270 is sent to the user6271 has the correct subject6272 mentions the access token has expired6273 includes a link to personal access tokens page6274 includes the email reason6275 behaves like an email sent from GitLab6276 has the characteristics of an email sent from GitLab6277 behaves like it should not have Gmail Actions links6278 is expected not to have body including "ViewAction"6279 behaves like a user cannot unsubscribe through footer link6280 does not have a List-Unsubscribe header or a body link6281 when invalid6282 when user does not exist6283 is expected not to change `ActionMailer::Base.deliveries.count`6284 when user is not active6285 is expected not to change `ActionMailer::Base.deliveries.count`6286 user personal access token has been revoked6287 when valid6288 is sent to the user6289 has the correct subject6290 provides the names of the token6291 includes the email reason6292 behaves like an email sent from GitLab6293 has the characteristics of an email sent from GitLab6294 behaves like it should not have Gmail Actions links6295 is expected not to have body including "ViewAction"6296 behaves like a user cannot unsubscribe through footer link6297 does not have a List-Unsubscribe header or a body link6298 SSH key notification6299 notification email for expired ssh key6300 when valid6301 behaves like an email sent from GitLab6302 has the characteristics of an email sent from GitLab6303 behaves like it should not have Gmail Actions links6304 is expected not to have body including "ViewAction"6305 behaves like a user cannot unsubscribe through footer link6306 does not have a List-Unsubscribe header or a body link6307 behaves like is sent to the user6308 is expected to be delivered to ["user1085@example.org"]6309 behaves like includes a link to ssh key page6310 is expected to have body matching /http:\/\/localhost\/-\/profile\/keys/6311 behaves like includes the email reason6312 is expected to have body matching /You're receiving this email because of your account on <a .*>localhost<\/a>/6313 behaves like has the correct subject6314 is expected to have subject matching /Your SSH key has expired/6315 behaves like has the correct body text6316 is expected to have body matching /SSH keys with the following fingerprints have expired/6317 when invalid6318 when user does not exist6319 behaves like does not send email6320 is expected not to change `ActionMailer::Base.deliveries.count`6321 when user is not active6322 behaves like does not send email6323 is expected not to change `ActionMailer::Base.deliveries.count`6324 notification email for expiring ssh key6325 when valid6326 behaves like an email sent from GitLab6327 has the characteristics of an email sent from GitLab6328 behaves like it should not have Gmail Actions links6329 is expected not to have body including "ViewAction"6330 behaves like a user cannot unsubscribe through footer link6331 does not have a List-Unsubscribe header or a body link6332 behaves like is sent to the user6333 is expected to be delivered to ["user1085@example.org"]6334 behaves like includes a link to ssh key page6335 is expected to have body matching /http:\/\/localhost\/-\/profile\/keys/6336 behaves like includes the email reason6337 is expected to have body matching /You're receiving this email because of your account on <a .*>localhost<\/a>/6338 behaves like has the correct subject6339 is expected to have subject matching /Your SSH key is expiring soon/6340 behaves like has the correct body text6341 is expected to have body matching /SSH keys with the following fingerprints are scheduled to expire soon/6342 when invalid6343 when user does not exist6344 behaves like does not send email6345 is expected not to change `ActionMailer::Base.deliveries.count`6346 when user is not active6347 behaves like does not send email6348 is expected not to change `ActionMailer::Base.deliveries.count`6349 user unknown sign in email6350 is sent to the user6351 has the correct subject6352 mentions the new sign-in IP6353 mentioned the time6354 includes a link to the change password documentation6355 mentions two factor authentication when two factor is not enabled6356 includes a link to two-factor authentication documentation6357 behaves like an email sent from GitLab6358 has the characteristics of an email sent from GitLab6359 behaves like it should not have Gmail Actions links6360 is expected not to have body including "ViewAction"6361 behaves like a user cannot unsubscribe through footer link6362 does not have a List-Unsubscribe header or a body link6363 when two factor authentication is enabled6364 does not mention two factor authentication6365 user attempted sign in with wrong 2FA OTP email6366 is sent to the user6367 has the correct subject6368 mentions the IP address6369 mentioned the time6370 includes a link to the change password documentation6371 behaves like an email sent from GitLab6372 has the characteristics of an email sent from GitLab6373 behaves like it should not have Gmail Actions links6374 is expected not to have body including "ViewAction"6375 behaves like a user cannot unsubscribe through footer link6376 does not have a List-Unsubscribe header or a body link6377 disabled two-factor authentication email6378 is sent to the user6379 has the correct subject6380 includes a link to two-factor authentication settings page6381 behaves like an email sent from GitLab6382 has the characteristics of an email sent from GitLab6383 behaves like it should not have Gmail Actions links6384 is expected not to have body including "ViewAction"6385 behaves like a user cannot unsubscribe through footer link6386 does not have a List-Unsubscribe header or a body link6387 added a new email address6388 is sent to the user6389 has the correct subject6390 includes a link to the email address page6391 behaves like an email sent from GitLab6392 has the characteristics of an email sent from GitLab6393 behaves like it should not have Gmail Actions links6394 is expected not to have body including "ViewAction"6395 behaves like a user cannot unsubscribe through footer link6396 does not have a List-Unsubscribe header or a body link6397API::Features6398 GET /features6399 returns a 401 for anonymous users6400 returns a 403 for users6401 returns the feature list for admins6402 POST /feature6403 behaves like sets the feature flag status6404 when the feature does not exist6405 returns a 401 for anonymous users6406 returns a 403 for users6407 creates a feature with the given percentage of time if passed an integer6408 creates a feature with the given percentage of time if passed a float6409 creates a feature with the given percentage of actors if passed an integer6410 creates a feature with the given percentage of actors if passed a float6411 when passed value=true6412 creates an enabled feature6413 logs the event6414 creates an enabled feature for the given Flipper group when passed feature_group=perf_team6415 creates an enabled feature for the given user when passed user=username6416 creates an enabled feature for the given user and feature group when passed user=username and feature_group=perf_team6417 when enabling for a project by path6418 when the project exists6419 behaves like enables the flag for the actor6420 sets the feature gate6421 when the project does not exist6422 behaves like does not enable the flag6423 returns the current state of the flag without changes6424 when enabling for a group by path6425 when the group exists6426 behaves like enables the flag for the actor6427 sets the feature gate6428 when the group does not exist6429 behaves like does not enable the flag6430 returns the current state of the flag without changes6431 when enabling for a namespace by path6432 when the user namespace exists6433 behaves like enables the flag for the actor6434 sets the feature gate6435 when the group namespace exists6436 behaves like enables the flag for the actor6437 sets the feature gate6438 when the user namespace does not exist6439 behaves like does not enable the flag6440 returns the current state of the flag without changes6441 when a project namespace exists6442 behaves like does not enable the flag6443 returns the current state of the flag without changes6444 with multiple users6445 behaves like creates an enabled feature for the specified entries6446 is expected to contain exactly {"key"=>"boolean", "value"=>false} and {"key"=>"actors", "value"=>array_including(User:1202, User:1203, User:1204)}6447 when empty value exists between comma6448 behaves like creates an enabled feature for the specified entries6449 is expected to contain exactly {"key"=>"boolean", "value"=>false} and {"key"=>"actors", "value"=>array_including(User:1202)}6450 when one of the users does not exist6451 behaves like does not enable the flag6452 returns the current state of the flag without changes6453 with multiple projects6454 behaves like creates an enabled feature for the specified entries6455 is expected to contain exactly {"key"=>"boolean", "value"=>false} and {"key"=>"actors", "value"=>array_including(Project:415, Project:416, Project:417)}6456 when empty value exists between comma6457 behaves like creates an enabled feature for the specified entries6458 is expected to contain exactly {"key"=>"boolean", "value"=>false} and {"key"=>"actors", "value"=>array_including(Project:415)}6459 when one of the projects does not exist6460 behaves like does not enable the flag6461 returns the current state of the flag without changes6462 with multiple groups6463 behaves like creates an enabled feature for the specified entries6464 is expected to contain exactly {"key"=>"boolean", "value"=>false} and {"key"=>"actors", "value"=>array_including(Group:1722, Group:1723, Group:1724)}6465 when empty value exists between comma6466 behaves like creates an enabled feature for the specified entries6467 is expected to contain exactly {"key"=>"boolean", "value"=>false} and {"key"=>"actors", "value"=>array_including(Group:1722)}6468 when one of the groups does not exist6469 behaves like does not enable the flag6470 returns the current state of the flag without changes6471 with multiple namespaces6472 behaves like creates an enabled feature for the specified entries6473 is expected to contain exactly {"key"=>"boolean", "value"=>false} and {"key"=>"actors", "value"=>array_including(Namespaces::UserNamespace:1725, Namespaces::UserNamespace:1726, Namespaces::UserNamespace:1727)}6474 when empty value exists between comma6475 behaves like creates an enabled feature for the specified entries6476 is expected to contain exactly {"key"=>"boolean", "value"=>false} and {"key"=>"actors", "value"=>array_including(Namespaces::UserNamespace:1725)}6477 when one of the namespaces does not exist6478 behaves like does not enable the flag6479 returns the current state of the flag without changes6480 mutually exclusive parameters6481 when key and feature_group are provided6482 behaves like fails to set the feature flag6483 returns an error6484 when key and user are provided6485 behaves like fails to set the feature flag6486 returns an error6487 when key and group are provided6488 behaves like fails to set the feature flag6489 returns an error6490 when key and namespace are provided6491 behaves like fails to set the feature flag6492 returns an error6493 when key and project are provided6494 behaves like fails to set the feature flag6495 returns an error6496 when the feature exists6497 when passed value=true6498 enables the feature6499 enables the feature for the given Flipper group when passed feature_group=perf_team6500 enables the feature for the given user when passed user=username6501 when feature is enabled and value=false is passed6502 disables the feature6503 disables the feature for the given Flipper group when passed feature_group=perf_team6504 disables the feature for the given user when passed user=username6505 with a pre-existing percentage of time value6506 updates the percentage of time if passed an integer6507 with a pre-existing percentage of actors value6508 updates the percentage of actors if passed an integer6509 when feature flag set_feature_flag_service is disabled6510 behaves like sets the feature flag status6511 when the feature does not exist6512 returns a 401 for anonymous users6513 returns a 403 for users6514 creates a feature with the given percentage of time if passed an integer6515 creates a feature with the given percentage of time if passed a float6516 creates a feature with the given percentage of actors if passed an integer6517 creates a feature with the given percentage of actors if passed a float6518 when passed value=true6519 creates an enabled feature6520 logs the event6521 creates an enabled feature for the given Flipper group when passed feature_group=perf_team6522 creates an enabled feature for the given user when passed user=username6523 creates an enabled feature for the given user and feature group when passed user=username and feature_group=perf_team6524 when enabling for a project by path6525 when the project exists6526 behaves like enables the flag for the actor6527 sets the feature gate6528 when the project does not exist6529 behaves like does not enable the flag6530 returns the current state of the flag without changes6531 when enabling for a group by path6532 when the group exists6533 behaves like enables the flag for the actor6534 sets the feature gate6535 when the group does not exist6536 behaves like does not enable the flag6537 returns the current state of the flag without changes6538 when enabling for a namespace by path6539 when the user namespace exists6540 behaves like enables the flag for the actor6541 sets the feature gate6542 when the group namespace exists6543 behaves like enables the flag for the actor6544 sets the feature gate6545 when the user namespace does not exist6546 behaves like does not enable the flag6547 returns the current state of the flag without changes6548 when a project namespace exists6549 behaves like does not enable the flag6550 returns the current state of the flag without changes6551 with multiple users6552 behaves like creates an enabled feature for the specified entries6553 is expected to contain exactly {"key"=>"boolean", "value"=>false} and {"key"=>"actors", "value"=>array_including(User:1214, User:1215, User:1216)}6554 when empty value exists between comma6555 behaves like creates an enabled feature for the specified entries6556 is expected to contain exactly {"key"=>"boolean", "value"=>false} and {"key"=>"actors", "value"=>array_including(User:1214)}6557 when one of the users does not exist6558 behaves like does not enable the flag6559 returns the current state of the flag without changes6560 with multiple projects6561 behaves like creates an enabled feature for the specified entries6562 is expected to contain exactly {"key"=>"boolean", "value"=>false} and {"key"=>"actors", "value"=>array_including(Project:420, Project:421, Project:422)}6563 when empty value exists between comma6564 behaves like creates an enabled feature for the specified entries6565 is expected to contain exactly {"key"=>"boolean", "value"=>false} and {"key"=>"actors", "value"=>array_including(Project:420)}6566 when one of the projects does not exist6567 behaves like does not enable the flag6568 returns the current state of the flag without changes6569 with multiple groups6570 behaves like creates an enabled feature for the specified entries6571 is expected to contain exactly {"key"=>"boolean", "value"=>false} and {"key"=>"actors", "value"=>array_including(Group:1744, Group:1745, Group:1746)}6572 when empty value exists between comma6573 behaves like creates an enabled feature for the specified entries6574 is expected to contain exactly {"key"=>"boolean", "value"=>false} and {"key"=>"actors", "value"=>array_including(Group:1744)}6575 when one of the groups does not exist6576 behaves like does not enable the flag6577 returns the current state of the flag without changes6578 with multiple namespaces6579 behaves like creates an enabled feature for the specified entries6580 is expected to contain exactly {"key"=>"boolean", "value"=>false} and {"key"=>"actors", "value"=>array_including(Namespaces::UserNamespace:1747, Namespaces::UserNamespace:1748, Namespaces::UserNamespace:1749)}6581 when empty value exists between comma6582 behaves like creates an enabled feature for the specified entries6583 is expected to contain exactly {"key"=>"boolean", "value"=>false} and {"key"=>"actors", "value"=>array_including(Namespaces::UserNamespace:1747)}6584 when one of the namespaces does not exist6585 behaves like does not enable the flag6586 returns the current state of the flag without changes6587 mutually exclusive parameters6588 when key and feature_group are provided6589 behaves like fails to set the feature flag6590 returns an error6591 when key and user are provided6592 behaves like fails to set the feature flag6593 returns an error6594 when key and group are provided6595 behaves like fails to set the feature flag6596 returns an error6597 when key and namespace are provided6598 behaves like fails to set the feature flag6599 returns an error6600 when key and project are provided6601 behaves like fails to set the feature flag6602 returns an error6603 when the feature exists6604 when passed value=true6605 enables the feature6606 enables the feature for the given Flipper group when passed feature_group=perf_team6607 enables the feature for the given user when passed user=username6608 when feature is enabled and value=false is passed6609 disables the feature6610 disables the feature for the given Flipper group when passed feature_group=perf_team6611 disables the feature for the given user when passed user=username6612 with a pre-existing percentage of time value6613 updates the percentage of time if passed an integer6614 with a pre-existing percentage of actors value6615 updates the percentage of actors if passed an integer6616 DELETE /feature/:name6617 when the user has no access6618 returns a 401 for anonymous users6619 returns a 403 for users6620 when the user has access6621 returns 204 when the value is not set6622 when the gate value was set6623 deletes an enabled feature6624 logs the event6625API::DeployTokens6626 GET /deploy_tokens6627 when unauthenticated6628 is expected to respond with numeric status code unauthorized6629 when authenticated as non-admin user6630 is expected to respond with numeric status code forbidden6631 when authenticated as admin6632 is expected to respond with numeric status code ok6633 returns all deploy tokens6634 and active=true6635 only returns active deploy tokens6636 GET /projects/:id/deploy_tokens6637 when unauthenticated6638 is expected to respond with numeric status code not_found6639 when authenticated as non-admin user6640 is expected to respond with numeric status code forbidden6641 when authenticated as maintainer6642 is expected to respond with numeric status code ok6643 returns all deploy tokens for the project6644 does not return deploy tokens for other projects6645 and active=true6646 only returns active deploy tokens for the project6647 GET /projects/:id/deploy_tokens/:token_id6648 when unauthenticated6649 is expected to respond with numeric status code not_found6650 when authenticated as non-admin user6651 is expected to respond with numeric status code forbidden6652 when authenticated as maintainer6653 is expected to respond with numeric status code ok6654 returns specific deploy token for the project6655 invalid request6656 returns not found with invalid project id6657 returns not found with invalid token id6658 GET /groups/:id/deploy_tokens6659 when unauthenticated6660 is expected to respond with numeric status code forbidden6661 when authenticated as non-admin user6662 is expected to respond with numeric status code forbidden6663 when authenticated as maintainer6664 is expected to respond with numeric status code ok6665 returns all deploy tokens for the group6666 does not return deploy tokens for other groups6667 and active=true6668 only returns active deploy tokens for the group6669 GET /groups/:id/deploy_tokens/:token_id6670 when unauthenticated6671 is expected to respond with numeric status code forbidden6672 when authenticated as non-admin user6673 is expected to respond with numeric status code forbidden6674 when authenticated as maintainer6675 is expected to respond with numeric status code ok6676 returns specific deploy token for the group6677 invalid request6678 returns not found with invalid group id6679 returns not found with invalid token id6680 DELETE /projects/:id/deploy_tokens/:token_id6681 when unauthenticated6682 is expected to respond with numeric status code not_found6683 when authenticated as non-admin user6684 is expected to respond with numeric status code forbidden6685 when authenticated as maintainer6686 is expected to respond with numeric status code no_content6687 calls the deploy token destroy service6688 invalid request6689 returns not found with invalid group id6690 returns bad_request with invalid token id6691 deploy token creation6692 POST /projects/:id/deploy_tokens6693 behaves like creating a deploy token6694 when unauthenticated6695 is expected to respond with numeric status code not_found6696 when authenticated as non-admin user6697 is expected to respond with numeric status code forbidden6698 when authenticated as maintainer6699 creates the deploy token6700 with no optional params given6701 creates the deploy token with default values6702 with an invalid scope6703 is expected to respond with numeric status code bad_request6704 POST /groups/:id/deploy_tokens6705 behaves like creating a deploy token6706 when unauthenticated6707 is expected to respond with numeric status code forbidden6708 when authenticated as non-admin user6709 is expected to respond with numeric status code forbidden6710 when authenticated as owner6711 creates the deploy token6712 with no optional params given6713 creates the deploy token with default values6714 with an invalid scope6715 is expected to respond with numeric status code bad_request6716 when authenticated as maintainer6717 is expected to respond with numeric status code forbidden6718 DELETE /groups/:id/deploy_tokens/:token_id6719 when unauthenticated6720 is expected to respond with numeric status code forbidden6721 when authenticated as non-admin user6722 is expected to respond with numeric status code forbidden6723 when authenticated as maintainer6724 is expected to respond with numeric status code forbidden6725 when authenticated as owner6726 calls the deploy token destroy service6727 invalid request6728 returns bad request with invalid group id6729 returns not found with invalid deploy token id6730Projects::Settings::CiCdController6731 as a maintainer6732 GET show6733 renders show with 200 status code6734 with CI/CD disabled6735 renders show with 404 status code6736 with group runners6737 sets assignable project runners only6738 prevents N+1 queries for tags6739 has the same number of queries with one tag or with many tags6740 #reset_cache6741 calls reset project cache service6742 when service returns successfully6743 returns a success header6744 when service does not return successfully6745 returns an error header6746 PUT #reset_registration_token6747 resets runner registration token6748 redirects the user to admin runners page6749 PATCH update6750 redirects to the settings page6751 when updating the auto_devops settings6752 following the instance default6753 allows enabled to be set to nil6754 when run_auto_devops_pipeline is true6755 when the project repository is empty6756 sets a notice flash6757 does not queue a CreatePipelineWorker6758 when the project repository is not empty6759 displays a toast message6760 queues a CreatePipelineWorker6761 creates a pipeline6762 when run_auto_devops_pipeline is not true6763 does not queue a CreatePipelineWorker6764 when updating general settings6765 when build_timeout_human_readable is not specified6766 set default timeout6767 when build_timeout_human_readable is specified6768 set specified timeout6769 when build_timeout_human_readable is invalid6770 set specified timeout6771 when default_git_depth is not specified6772 set specified git depth6773 when forward_deployment_enabled is not specified6774 sets forward deployment enabled6775 when max_artifacts_size is specified6776 and user is not an admin6777 does not set max_artifacts_size6778 and user is an admin6779 with admin mode disabled6780 does not set max_artifacts_size6781 with admin mode enabled6782 sets max_artifacts_size6783 GET #runner_setup_scripts6784 renders the setup scripts6785 renders errors if they occur6786 as a developer6787 responds with 4046788 as a reporter6789 responds with 4046790 as an unauthenticated user6791 redirects to sign in6792API::GroupMilestones6793 behaves like group and project milestones6794 GET /groups/:id/milestones6795 returns milestones list6796 returns a 401 error if user not authenticated6797 returns an array of active milestones6798 returns an array of closed milestones6799 returns an array of milestones specified by iids6800 does not return any milestone if none found6801 returns a milestone by iids array6802 returns a milestone by title6803 returns a milestone by searching for title6804 returns a milestones by searching for description6805 GET /groups/:id/milestones/:milestone_id6806 returns a milestone by id6807 returns 401 error if user not authenticated6808 returns a 404 error if milestone id not found6809 POST /groups/:id/milestones6810 creates a new milestone6811 creates a new milestone with description and dates6812 returns a 400 error if title is missing6813 returns a 400 error if params are invalid (duplicate title)6814 creates a new milestone with reserved html characters6815 PUT /groups/:id/milestones/:milestone_id6816 updates a milestone6817 removes a due date if nil is passed6818 returns a 404 error if milestone id not found6819 closes milestone6820 updates milestone with only start date6821 DELETE /groups/:id/milestones/:milestone_id6822 rejects a member with guest access from deleting a milestone6823 deletes the milestone when the user has reporter access to the project6824 GET /groups/:id/milestones/:milestone_id/issues6825 returns issues for a particular milestone6826 returns issues sorted by label priority6827 matches V4 response schema for a list of issues6828 returns a 401 error if user not authenticated6829 confidential issues6830 returns confidential issues to team members6831 does not return confidential issues to team members with guest role6832 does not return confidential issues to regular users6833 returns issues ordered by label priority6834 GET /groups/:id/milestones/:milestone_id/merge_requests6835 returns merge_requests for a particular milestone6836 returns merge_requests sorted by label priority6837 returns a 404 error if milestone id not found6838 returns a 404 if the user has no access to the milestone6839 returns a 401 error if user not authenticated6840 returns merge_requests ordered by position asc6841 GET /groups/:id/milestones6842 when include_parent_milestones is true6843 when user has access to ancestor groups6844 behaves like listing all milestones6845 returns correct list of milestones6846 when iids param is present6847 behaves like listing all milestones6848 returns correct list of milestones6849 when user has no access to ancestor groups6850 behaves like listing all milestones6851 returns correct list of milestones6852 GET /groups/:id/milestones/:milestone_id/issues6853 returns multiple issues without performing N + 16854API::IssueLinks6855 GET /links6856 when unauthenticated6857 returns 4016858 when authenticated6859 returns related issues6860 returns multiple links without N + 16861 POST /links6862 when unauthenticated6863 returns 4016864 when authenticated6865 given target project not found6866 returns 4046867 given target issue not found6868 returns 4046869 when user does not have write access to given issue6870 returns 4046871 when trying to relate to a confidential issue6872 returns 4046873 when trying to relate to a private project issue6874 returns 4046875 when user has ability to create an issue link6876 returns 201 status and contains the expected link response6877 returns 201 when sending full path of target project6878 GET /links/:issue_link_id6879 when unauthenticated6880 when accessing an issue of a private project6881 returns 4016882 when accessing an issue of a public project6883 returns 4016884 when authenticated6885 when issue link does not exist6886 returns 4046887 when issue link does not belong to the specified issue6888 returns 4046889 when user has ability to read the issue link6890 returns 2006891 when user cannot read issue link6892 when the issue link targets an issue in a non-accessible project6893 returns 4046894 when issue link targets a non-accessible issue6895 returns 4046896 DELETE /links/:issue_link_id6897 when unauthenticated6898 returns 4016899 when authenticated6900 when user does not have write access to given issue link6901 returns 4046902 issue link not found6903 returns 4046904 when trying to delete a link with a private project issue6905 returns 4046906 when user has ability to delete the issue link6907 returns 2006908 returns 404 when the issue link does not belong to the specified issue6909Import::GitlabController6910 GET callback6911 updates access token6912 importable_repos should return an array6913 passes namespace_id query param to status if provided6914 GET status6915 redirects to auth if session does not contain access token6916 when session contains access token6917 behaves like import controller status6918 returns variables for json request6919 POST create6920 returns 200 response when the project is imported successfully6921 returns 422 response when the project could not be imported6922 when the repository owner is the GitLab.com user6923 when the GitLab.com user and GitLab server user's usernames match6924 takes the current user's namespace6925 when the GitLab.com user and GitLab server user's usernames don't match6926 takes the current user's namespace6927 when the repository owner is not the GitLab.com user6928 when a namespace with the GitLab.com user's username already exists6929 when the namespace is owned by the GitLab server user6930 takes the existing namespace6931 when the namespace is not owned by the GitLab server user6932 doesn't create a project6933 when a namespace with the GitLab.com user's username doesn't exist6934 when current user can create namespaces6935 creates the namespace6936 takes the new namespace6937 when current user can't create namespaces6938 doesn't create the namespace6939 takes the current user's namespace6940 user has chosen an existing nested namespace for the project6941 takes the selected namespace and name6942 user has chosen a non-existent nested namespaces for the project6943 takes the selected namespace and name6944 creates the namespaces6945 new namespace has the right parent6946 user has chosen existent and non-existent nested namespaces and name for the project6947 takes the selected namespace and name6948 creates the namespaces6949 when user can not create projects in the chosen namespace6950 returns 422 response6951 behaves like project import rate limiter6952 when limit exceeds6953 notifies and redirects user6954Updating the package settings6955 post graphql mutation6956 with existing package settings6957 user_role: :maintainer, shared_examples_name: "accepting the mutation request updating the package settings"6958 behaves like accepting the mutation request updating the package settings6959 behaves like updating the namespace package setting attributes6960 updates the namespace package setting6961 behaves like not creating the namespace package setting6962 doesn't create the namespace package setting6963 behaves like returning a success6964 returns the updated package settings6965 behaves like returning response status6966 returns success6967 behaves like rejecting invalid regex6968 for field mavenDuplicateExceptionRegex6969 returns an error6970 behaves like returning response status6971 returns success6972 behaves like not creating the namespace package setting6973 doesn't create the namespace package setting6974 user_role: :developer, shared_examples_name: "denying the mutation request"6975 behaves like denying the mutation request6976 returns no response6977 behaves like not creating the namespace package setting6978 doesn't create the namespace package setting6979 behaves like returning response status6980 returns success6981 user_role: :reporter, shared_examples_name: "denying the mutation request"6982 behaves like denying the mutation request6983 returns no response6984 behaves like not creating the namespace package setting6985 doesn't create the namespace package setting6986 behaves like returning response status6987 returns success6988 user_role: :guest, shared_examples_name: "denying the mutation request"6989 behaves like denying the mutation request6990 returns no response6991 behaves like not creating the namespace package setting6992 doesn't create the namespace package setting6993 behaves like returning response status6994 returns success6995 user_role: :anonymous, shared_examples_name: "denying the mutation request"6996 behaves like denying the mutation request6997 returns no response6998 behaves like not creating the namespace package setting6999 doesn't create the namespace package setting7000 behaves like returning response status7001 returns success7002 without existing package settings7003 user_role: :maintainer, shared_examples_name: "accepting the mutation request creating the package settings"7004 behaves like accepting the mutation request creating the package settings7005 behaves like creating the namespace package setting7006 creates a new package setting7007 saves the settings7008 behaves like returning a success7009 returns the updated package settings7010 behaves like returning response status7011 returns success7012 behaves like returning a success7013 returns the updated package settings7014 behaves like returning response status7015 returns success7016 behaves like rejecting invalid regex7017 for field mavenDuplicateExceptionRegex7018 returns an error7019 behaves like returning response status7020 returns success7021 behaves like not creating the namespace package setting7022 doesn't create the namespace package setting7023 user_role: :developer, shared_examples_name: "denying the mutation request"7024 behaves like denying the mutation request7025 returns no response7026 behaves like not creating the namespace package setting7027 doesn't create the namespace package setting7028 behaves like returning response status7029 returns success7030 user_role: :reporter, shared_examples_name: "denying the mutation request"7031 behaves like denying the mutation request7032 returns no response7033 behaves like not creating the namespace package setting7034 doesn't create the namespace package setting7035 behaves like returning response status7036 returns success7037 user_role: :guest, shared_examples_name: "denying the mutation request"7038 behaves like denying the mutation request7039 returns no response7040 behaves like not creating the namespace package setting7041 doesn't create the namespace package setting7042 behaves like returning response status7043 returns success7044 user_role: :anonymous, shared_examples_name: "denying the mutation request"7045 behaves like denying the mutation request7046 returns no response7047 behaves like not creating the namespace package setting7048 doesn't create the namespace package setting7049 behaves like returning response status7050 returns success7051Creating a Snippet7052 when the user does not have permission7053 does not create the Snippet7054 behaves like a mutation that returns top-level errors7055 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"7056 when user is not authorized in the project7057 does not create the snippet when the user is not authorized7058 when the user has permission7059 with PersonalSnippet7060 behaves like creates snippet7061 returns the created Snippet7062 when action is invalid7063 behaves like a mutation that returns errors in the response7064 is expected to contain exactly "Snippet actions have invalid data"7065 behaves like does not create snippet7066 does not create the Snippet7067 does not return Snippet7068 behaves like snippet edit usage data counters7069 when user is sessionless7070 does not track usage data actions7071 when user is not sessionless7072 tracks usage data actions7073 when mutation result raises an error7074 does not track usage data actions7075 behaves like a mutation which can mutate a spammable7076 #spam_params7077 passes spam params to the service constructor7078 with ProjectSnippet7079 behaves like creates snippet7080DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.7081DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.7082 returns the created Snippet7083 when action is invalid7084 behaves like a mutation that returns errors in the response7085 is expected to contain exactly "Snippet actions have invalid data"7086 behaves like does not create snippet7087 does not create the Snippet7088 does not return Snippet7089 behaves like snippet edit usage data counters7090 when user is sessionless7091DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.7092DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.7093 does not track usage data actions7094 when user is not sessionless7095DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.7096DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.7097 tracks usage data actions7098 when mutation result raises an error7099 does not track usage data actions7100 behaves like a mutation which can mutate a spammable7101 #spam_params7102DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.7103DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.7104 passes spam params to the service constructor7105 when the project path is invalid7106 behaves like a mutation that returns top-level errors7107 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"7108 when the feature is disabled7109 behaves like a mutation that returns top-level errors7110 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"7111 behaves like snippet edit usage data counters7112 when user is sessionless7113DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.7114DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.7115 does not track usage data actions7116 when user is not sessionless7117DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.7118DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.7119 tracks usage data actions7120 when mutation result raises an error7121 does not track usage data actions7122 when there are ActiveRecord validation errors7123 behaves like a mutation that returns errors in the response7124 is expected to contain exactly "Title can't be blank"7125 behaves like does not create snippet7126 does not create the Snippet7127 does not return Snippet7128 when there non ActiveRecord errors7129 behaves like a mutation that returns errors in the response7130 is expected to contain exactly "Repository Error creating the snippet - Invalid file name"7131 behaves like does not create snippet7132 does not create the Snippet7133 does not return Snippet7134 when there are uploaded files7135 behaves like expected files argument7136 is expected to receive new({:current_user=>#<User id:1306 @user924>, :params=>hash_including(:files=>nil), :project=>nil, :spam_params=>an_instance_of(Spam::SpamParams)}) 1 time7137 behaves like expected files argument7138 is expected to receive new({:current_user=>#<User id:1306 @user924>, :params=>hash_including(:files=>["foo", "bar"]), :project=>nil, :spam_params=>an_instance_of(Spam::SpamParams)}) 1 time7139 behaves like expected files argument7140 is expected to receive new({:current_user=>#<User id:1306 @user924>, :params=>hash_including(:files=>["foo"]), :project=>nil, :spam_params=>an_instance_of(Spam::SpamParams)}) 1 time7141 when files has an invalid value7142 returns an error7143 behaves like has spam protection7144 #check_spam_action_response!7145 when the object is spam (DISALLOW)7146 and no CAPTCHA is available7147 behaves like disallow response7148 informs the client that the request was denied as spam7149 and a CAPTCHA is required7150 behaves like disallow response7151 informs the client that the request was denied as spam7152 when the object is not spam (CONDITIONAL ALLOW)7153 and no CAPTCHA is required7154 does not return a top-level error7155 and a CAPTCHA is required7156 informs the client that the request may be retried after solving the CAPTCHA7157API::Namespaces7158 GET /namespaces7159 when unauthenticated7160 returns authentication error7161 when authenticated as admin7162 returns correct attributes7163 admin: returns an array of all namespaces7164 admin: returns an array of matched namespaces7165 when authenticated as a regular user7166 returns correct attributes when user can admin group7167 returns correct attributes when user cannot admin group7168 user: returns an array of namespaces7169 admin: returns an array of matched namespaces7170 with owned_only param7171 returns only owned groups7172 GET /namespaces/:id7173 when unauthenticated7174 returns authentication error7175 returns authentication error7176 when authenticated as regular user7177 when requested namespace is not owned by user7178 when requesting group7179 returns not-found7180 when requesting personal namespace7181 returns not-found7182 when requested namespace is owned by user7183 behaves like namespace reader7184 when namespace exists7185 when requested by ID7186 when requesting group7187 behaves like can access namespace7188 returns namespace details7189 when requesting personal namespace7190 behaves like can access namespace7191 returns namespace details7192 when requesting project_namespace7193 returns not-found7194 when requested by path7195 when requesting group7196 behaves like can access namespace7197 returns namespace details7198 when requesting personal namespace7199 behaves like can access namespace7200 returns namespace details7201 when requesting project_namespace7202 returns not-found7203 when namespace doesn't exist7204 returns not-found7205 when authenticated as admin7206 when requested namespace is not owned by user7207 when requesting group7208 behaves like can access namespace7209 returns namespace details7210 when requesting personal namespace7211 behaves like can access namespace7212 returns namespace details7213 when requested namespace is owned by user7214 behaves like namespace reader7215 when namespace exists7216 when requested by ID7217 when requesting group7218 behaves like can access namespace7219 returns namespace details7220 when requesting personal namespace7221 behaves like can access namespace7222 returns namespace details7223 when requesting project_namespace7224 returns not-found7225 when requested by path7226 when requesting group7227 behaves like can access namespace7228 returns namespace details7229 when requesting personal namespace7230 behaves like can access namespace7231 returns namespace details7232 when requesting project_namespace7233 returns not-found7234 when namespace doesn't exist7235 returns not-found7236 GET /namespaces/:namespace/exists7237 when unauthenticated7238 returns authentication error7239 when requesting project_namespace7240 returns authentication error7241 when authenticated7242 returns JSON indicating the namespace exists and a suggestion7243 returns JSON indicating the namespace does not exist without a suggestion7244 checks the existence of a namespace in case-insensitive manner7245 checks the existence within the parent namespace only7246 ignores nested namespaces when checking for top-level namespace7247 ignores paths of groups present in other hierarchies when making suggestions7248 ignores top-level namespaces when checking with parent_id7249 ignores namespaces of other parent namespaces when checking with parent_id7250 behaves like rate limited endpoint7251 when rate limiter enabled7252 logs request and declines it when endpoint called more than the threshold7253 when rate limiter is disabled7254 does not log request and does not block the request7255 when requesting project_namespace7256 returns JSON indicating the namespace does not exist without a suggestion7257get list of boards7258 for a project7259 behaves like group and project boards query7260 behaves like a working graphql query7261 returns a successful response7262 when the user does not have access to the board parent7263 returns nil7264 when no permission to read board7265 does not return any boards7266 when user can read the board parent7267 does not create a default board7268 sorting and pagination7269 when using default sorting7270 when ascending7271 behaves like sorted paginated query7272 behaves like requires variables7273 shared example requires variables to be set7275 when sorting7276 sorts correctly7277 when paginating7278 paginates correctly7279 when querying for a single board7280 finds the correct board7281 behaves like a working graphql query7282 returns a successful response7283 for a group7284 behaves like group and project boards query7285 behaves like a working graphql query7286 returns a successful response7287 when the user does not have access to the board parent7288 returns nil7289 when no permission to read board7290 does not return any boards7291 when user can read the board parent7292 does not create a default board7293 sorting and pagination7294 when using default sorting7295 when ascending7296 behaves like sorted paginated query7297 behaves like requires variables7298 shared example requires variables to be set7300 when sorting7301 sorts correctly7302 when paginating7303 paginates correctly7304 when querying for a single board7305 finds the correct board7306 behaves like a working graphql query7307 returns a successful response7308API::Admin::InstanceClusters7309 GET /admin/clusters7310 feature flag is disabled7311 responds with :not_found7312 when authenticated as a non-admin user7313 returns 4037314 when authenticated as admin7315 returns 2007316 includes pagination headers7317 only returns the instance clusters7318 GET /admin/clusters/:cluster_id7319 feature flag is disabled7320 responds with :not_found7321 when authenticated as admin7322 when no cluster associated to the ID7323 returns 4047324 when cluster with cluster_id exists7325 returns 2007326 returns the cluster with cluster_id7327 returns the cluster information7328 returns kubernetes platform information7329 returns user information7330 returns GCP provider information7331 when cluster has no provider7332 does not include GCP provider info7333 when trying to get a project cluster via the instance cluster endpoint7334 returns 4047335 when authenticated as a non-admin user7336 returns 4037337 POST /admin/clusters/add7338 feature flag is disabled7339 responds with :not_found7340 authorized user7341 with valid params7342 responds with 2017343 creates a new Clusters::Cluster7344 when user does not indicate authorization type7345 defaults to RBAC7346 when user sets authorization type as ABAC7347 creates an ABAC cluster7348 when namespace_per_environment is not set7349 defaults to true7350 when an instance cluster already exists7351 allows user to add multiple clusters7352 with invalid params7353 when missing a required parameter7354 responds with 4007355 with a malformed api url7356 responds with 4007357 returns validation errors7358 non-authorized user7359 responds with 4037360 PUT /admin/clusters/:cluster_id7361 feature flag is disabled7362 responds with :not_found7363 authorized user7364 with valid params7365 responds with 2007366 updates cluster attributes7367 with invalid params7368 responds with 4007369 does not update cluster attributes7370 returns validation errors7371 with a GCP cluster7372 when user tries to change GCP specific fields7373 responds with 4007374 returns validation error7375 when user tries to change domain7376 responds with 2007377 with an user cluster7378 responds with 2007379 updates platform kubernetes attributes7380 with a cluster that does not exist7381 returns 4047382 when trying to update a project cluster via the instance cluster endpoint7383 returns 4047384 non-authorized user7385 responds with 4037386 DELETE /admin/clusters/:cluster_id7387 feature flag is disabled7388 responds with :not_found7389 authorized user7390 responds with 2047391 deletes the cluster7392 with a cluster that does not exist7393 returns 4047394 when trying to update a project cluster via the instance cluster endpoint7395 returns 4047396 non-authorized user7397 responds with 4037398GraphQL7399 logging7400 with no variables7401 behaves like logging a graphql query7402 logs a query with the expected params7403 does not instantiate any query analyzers7404 with variables7405 behaves like logging a graphql query7406 logs a query with the expected params7407 does not instantiate any query analyzers7408 when there is an error in the logger7409 logs the exception in Sentry and continues with the request7410 when executing mutations7411 with POST7412 succeeds7413 with variables7414 succeeds7415 with GET7416 fails7417 with variables7418 fails7419 when executing queries7420 with POST7421 succeeds7422 with GET7423 succeeds7424 when selecting a query by operation name7425 with POST7426 succeeds when selecting the query7427 succeeds when selecting the mutation7428 with GET7429 succeeds when selecting the query7430 fails when selecting the mutation7431 when batching mutations and queries7432 with POST7433 succeeds7434 with GET7435 fails with a helpful error message7436 with invalid variables7437 returns an error7438 authentication7439 allows access to public data without authentication7440 does not authenticate a user with an invalid CSRF7441 authenticates a user with a valid session token7442 with token authentication7443 authenticates users with a PAT7444 prevents access by deactived users7445 when user with expired password7446 does not authenticate user7447 when password expiration is not applicable7448 when ldap user7449 authenticates user7450 when the personal access token has no api scope7451 does not log the user in7452 testing for Gitaly calls7453 behaves like a working graphql query7454 returns a successful response7455 when Gitaly is called7456 logs a warning that the 'calls_gitaly' field declaration is missing7457 resolver complexity7458 when fetching single resource7459 processes the query7460 when fetching too many resources7461 returns an error7462 complexity limits7463 unauthenticated user7464 raises a complexity error7465 authenticated user7466 does not raise an error as it uses the `AUTHENTICATED_MAX_COMPLEXITY`7467 keyset pagination7468 paginates datetimes correctly when they have millisecond data7469task completion status response7470 task list completion status for issues7471 behaves like taskable completion status provider7472 with a description of ""7473 is expected to respond with numeric status code ok7474 returns the expected results7475 with a description of "Lorem ipsum"7476 is expected to respond with numeric status code ok7477 returns the expected results7478 with a description of "- [ ] task 1\n - [x] task 2 "7479 is expected to respond with numeric status code ok7480 returns the expected results7481 with a description of "- [ ] task 1\n - [ ] task 2 "7482 is expected to respond with numeric status code ok7483 returns the expected results7484 with a description of "- [x] task 1\n - [x] task 2 "7485 is expected to respond with numeric status code ok7486 returns the expected results7487 with a description of "- [ ] task 1"7488 is expected to respond with numeric status code ok7489 returns the expected results7490 with a description of "- [x] task 1"7491 is expected to respond with numeric status code ok7492 returns the expected results7493 task list completion status for merge_requests7494 behaves like taskable completion status provider7495 with a description of ""7496 is expected to respond with numeric status code ok7497 returns the expected results7498 with a description of "Lorem ipsum"7499 is expected to respond with numeric status code ok7500 returns the expected results7501 with a description of "- [ ] task 1\n - [x] task 2 "7502 is expected to respond with numeric status code ok7503 returns the expected results7504 with a description of "- [ ] task 1\n - [ ] task 2 "7505 is expected to respond with numeric status code ok7506 returns the expected results7507 with a description of "- [x] task 1\n - [x] task 2 "7508 is expected to respond with numeric status code ok7509 returns the expected results7510 with a description of "- [ ] task 1"7511 is expected to respond with numeric status code ok7512 returns the expected results7513 with a description of "- [x] task 1"7514 is expected to respond with numeric status code ok7515 returns the expected results7516conan package details7517DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.7518DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.7519 has the correct metadata7520DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.7521DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.7522 has the correct file metadata7523 behaves like a package detail7524 behaves like a working graphql query7525DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.7526DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.7527 returns a successful response7528 behaves like matching the package details schema7529DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.7530DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.7531 matches the JSON schema7532 with pipelines7533 behaves like a working graphql query7534DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.7535DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.7536 returns a successful response7537 behaves like matching the package details schema7538DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.7539DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.7540 matches the JSON schema7541 behaves like a package with files7542DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.7543DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.7544 has the right amount of files7545DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.7546DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.7547 has the basic package files data7548 with package files pending destruction7549DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.7550DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.7551 does not return them7552Emails::PagesDomains7553 #pages_domain_enabled_email7554 is expected to have body including "has been enabled"7555 behaves like a pages domain verification email7556 has the expected content7557 behaves like a pages domain email7558 has the expected content7559 behaves like an email sent to a user7560 is sent to user's global notification email address7561 with group notification email7562 is sent to user's group notification email7563 behaves like an email sent from GitLab7564 has the characteristics of an email sent from GitLab7565 behaves like it should not have Gmail Actions links7566 is expected not to have body including "ViewAction"7567 behaves like a user cannot unsubscribe through footer link7568 does not have a List-Unsubscribe header or a body link7569 #pages_domain_disabled_email7570 is expected to have body including "has been disabled"7571 behaves like a pages domain verification email7572 has the expected content7573 behaves like a pages domain email7574 has the expected content7575 behaves like an email sent to a user7576 is sent to user's global notification email address7577 with group notification email7578 is sent to user's group notification email7579 behaves like an email sent from GitLab7580 has the characteristics of an email sent from GitLab7581 behaves like it should not have Gmail Actions links7582 is expected not to have body including "ViewAction"7583 behaves like a user cannot unsubscribe through footer link7584 does not have a List-Unsubscribe header or a body link7585 behaves like notification about upcoming domain removal7586 when domain is not scheduled for removal7587 asks user to remove it7588 when domain is scheduled for removal7589 notifies user that domain will be removed automatically7590 #pages_domain_verification_succeeded_email7591 is expected to have body including "successfully verified"7592 behaves like a pages domain verification email7593 has the expected content7594 behaves like a pages domain email7595 has the expected content7596 behaves like an email sent to a user7597 is sent to user's global notification email address7598 with group notification email7599 is sent to user's group notification email7600 behaves like an email sent from GitLab7601 has the characteristics of an email sent from GitLab7602 behaves like it should not have Gmail Actions links7603 is expected not to have body including "ViewAction"7604 behaves like a user cannot unsubscribe through footer link7605 does not have a List-Unsubscribe header or a body link7606 #pages_domain_verification_failed_email7607 behaves like a pages domain email7608 has the expected content7609 behaves like an email sent to a user7610 is sent to user's global notification email address7611 with group notification email7612 is sent to user's group notification email7613 behaves like an email sent from GitLab7614 has the characteristics of an email sent from GitLab7615 behaves like it should not have Gmail Actions links7616 is expected not to have body including "ViewAction"7617 behaves like a user cannot unsubscribe through footer link7618 does not have a List-Unsubscribe header or a body link7619 behaves like notification about upcoming domain removal7620 when domain is not scheduled for removal7621 asks user to remove it7622 when domain is scheduled for removal7623 notifies user that domain will be removed automatically7624 #pages_domain_auto_ssl_failed_email7625 says that we failed to obtain certificate7626 behaves like a pages domain email7627 has the expected content7628 behaves like an email sent to a user7629 is sent to user's global notification email address7630 with group notification email7631 is sent to user's group notification email7632 behaves like an email sent from GitLab7633 has the characteristics of an email sent from GitLab7634 behaves like it should not have Gmail Actions links7635 is expected not to have body including "ViewAction"7636 behaves like a user cannot unsubscribe through footer link7637 does not have a List-Unsubscribe header or a body link7638JwtController7639 authenticating against container registry7640 existing service7641 is expected to respond with numeric status code ok7642 returning custom http code7643 is expected to respond with numeric status code http_version_not_supported7644 when using authenticated request7645 using CI token7646 project with enabled CI7647 is expected to have received new(#<Project id:490 namespace356/project485>>, #<User id:1371 @user970>, #<ActionController::Parameters {"service"=>"container_registry", "auth_type"=>:build} permitted: true>) 1 time7648 behaves like user logging7649 logs username and ID7650 project with disabled CI7651 is expected to respond with numeric status code unauthorized7652 using deploy tokens7653 authenticates correctly7654 does not log a user7655 using personal access tokens7656 authenticates correctly7657 behaves like rejecting a blocked user7658 with blocked user7659 behaves like with invalid credentials7660 returns a generic error message7661 behaves like user logging7662 logs username and ID7663 behaves like a token that expires today7664 fails authentication7665 using User login7666 is expected to have received new(nil, #<User id:1385 @user979>, #<ActionController::Parameters {"service"=>"container_registry", "auth_type"=>:gitlab_or_ldap} permitted: true>) 1 time7667 does not cause session based checks to be activated7668 behaves like rejecting a blocked user7669 with blocked user7670 behaves like with invalid credentials7671 returns a generic error message7672 when passing a flat array of scopes7673 is expected to have received new(nil, #<User id:1388 @user982>, #<ActionController::Parameters {"service"=>"container_registry", "scopes"=>["scope1", "scope2"], "auth_type"=>:gitlab_or_ldap} permitted: true>) 1 time7674 behaves like user logging7675 logs username and ID7676 when user has 2FA enabled7677 without personal token7678 behaves like with invalid credentials7679 returns a generic error message7680 with personal token7681 accepts the authorization attempt7682 using invalid login7683 when internal auth is enabled7684 behaves like with invalid credentials7685 returns a generic error message7686 when internal auth is disabled7687 behaves like with invalid credentials7688 returns a generic error message7689 when using unauthenticated request7690 accepts the authorization attempt7691 allows read access7692 unknown service7693 is expected to respond with numeric status code not_found7694 authenticating against dependency proxy7695 with personal access token7696 behaves like with valid credentials7697 returns token successfully7698 behaves like a token that expires today7699 fails authentication7700 with user credentials token7701 behaves like with valid credentials7702 returns token successfully7703 with group deploy token7704 behaves like with valid credentials7705 returns token successfully7706 with project deploy token7707 behaves like returning response status7708 returns forbidden7709 with revoked group deploy token7710 behaves like returning response status7711 returns unauthorized7712 with group deploy token with insufficient scopes7713 behaves like returning response status7714 returns unauthorized7715 with invalid credentials7716 behaves like returning response status7717 returns unauthorized7718Projects::AutocompleteSourcesController7719 GET commands7720 with a public project7721 with an issue7722 behaves like issuable commands7723 returns empty array when no user logged in7724 raises an error when no target type specified7725 returns an array of commands7726 with merge request7727 behaves like issuable commands7728 returns empty array when no user logged in7729 raises an error when no target type specified7730 returns an array of commands7731 GET labels7732 raises an error when no target type specified7733 returns an array of labels7734 GET members7735 when logged in7736 returns 400 when no target type specified7737 returns an array of member object7738 when anonymous7739 redirects to login page7740 with public project7741 returns no members7742 GET milestones7743 lists milestones7744 when user cannot read project issues and merge requests7745 renders 4047746 GET contacts7747 when feature flag is enabled7748 when a group has contact relations enabled7749 when a user can read contacts7750 lists contacts7751 when a user can not read contacts7752 renders 4047753 when a group has contact relations disabled7754 renders 4047755Groups::Crm::OrganizationsController7756 GET #index7757 behaves like ok response with index template if authorized7758 private group7759 with authorized user7760 when crm_enabled is true7761 behaves like ok response with index template7762 renders the index template7763 when crm_enabled is false7764 behaves like response with 404 status7765 returns 4047766 when subgroup7767 behaves like response with 404 status7768 returns 4047769 with unauthorized user7770 behaves like response with 404 status7771 returns 4047772 with anonymous user7773 blah7774 public group7775 with anonymous user7776 behaves like response with 404 status7777 returns 4047778 GET #new7779 behaves like ok response with index template if authorized7780 private group7781 with authorized user7782 when crm_enabled is true7783 behaves like ok response with index template7784 renders the index template7785 when crm_enabled is false7786 behaves like response with 404 status7787 returns 4047788 when subgroup7789 behaves like response with 404 status7790 returns 4047791 with unauthorized user7792 behaves like response with 404 status7793 returns 4047794 with anonymous user7795 blah7796 public group7797 with anonymous user7798 behaves like response with 404 status7799 returns 4047800 GET #edit7801 behaves like ok response with index template if authorized7802 private group7803 with authorized user7804 when crm_enabled is true7805 behaves like ok response with index template7806 renders the index template7807 when crm_enabled is false7808 behaves like response with 404 status7809 returns 4047810 when subgroup7811 behaves like response with 404 status7812 returns 4047813 with unauthorized user7814 behaves like response with 404 status7815 returns 4047816 with anonymous user7817 blah7818 public group7819 with anonymous user7820 behaves like response with 404 status7821 returns 4047822Removing an AwardEmoji7823 when the current_user does not own the award emoji7824 behaves like a mutation that does not authorize the user7825 behaves like a mutation that does not destroy an AwardEmoji7826 is expected not to change `AwardEmoji.count`7827 behaves like a mutation that returns a top-level access error7828 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"7829 when the current_user owns the award emoji7830 when the given awardable is not an Awardable7831 behaves like a mutation that does not destroy an AwardEmoji7832 is expected not to change `AwardEmoji.count`7833 behaves like a mutation that returns top-level errors7834 is expected to include /was provided invalid value for awardableId/7835 when the given awardable is an Awardable7836 removes the emoji7837 returns no errors7838 returns an empty awardEmoji7839Update of an existing issue7840 the user is not allowed to update issue7841 behaves like a mutation that returns a top-level access error7842 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"7843 when user has permissions to update issue7844 updates the issue7845 when issue_type is updated7846 updates issue_type and work_item_type7847 setting labels7848 reset labels7849 resets labels7850 reset labels and add labels7851 returns error for mutually exclusive arguments7852 reset labels and remove labels7853 returns error for mutually exclusive arguments7854 with global label ids7855 resets labels7856 add and remove labels7857 returns correct labels7858 add labels7859 adds labels and keeps the title ordering7860API::Admin::BatchedBackgroundMigrations7861 GET /admin/batched_background_migrations/:id7862 fetches the batched background migration7863 when the batched background migration does not exist7864 returns 4047865 when multiple database is enabled7866 uses the correct connection7867 when authenticated as a non-admin user7868 returns 4037869 when the database name does not exist7870 returns bad request7871 GET /admin/batched_background_migrations7872 when is an admin user7873 returns batched background migrations7874 when multiple database is enabled7875 when CI database is provided7876 uses CI database connection7877 returns CI database records7878 when the database name does not exist7879 returns bad request7880 when authenticated as a non-admin user7881 returns 4037882 PUT /admin/batched_background_migrations/:id/resume7883 pauses the batched background migration7884 when the batched background migration does not exist7885 returns 4047886 when the migration is not paused7887 returns 4227888 when multiple database is enabled7889 uses the correct connection7890 when the database name does not exist7891 returns bad request7892 when authenticated as a non-admin user7893 returns 4037894 PUT /admin/batched_background_migrations/:id/pause7895 pauses the batched background migration7896 when the batched background migration does not exist7897 returns 4047898 when the migration is not active7899 returns 4227900 when multiple database is enabled7901 uses the correct connection7902 when the database name does not exist7903 returns bad request7904 when authenticated as a non-admin user7905 returns 4037906Querying a Milestone7907 when we post the query7908 and the project is private7909 when the user is a direct project member7910 and the user is a guest7911 behaves like returns the milestone successfully7912 is expected to include {"title" => "My title 1702"}7913 contains release information7914 behaves like a working graphql query7915 returns a successful response7916 when there are two milestones7917 returns the correct releases associated with each milestone7918 does not suffer from N+1 performance issues7919 when the user is an inherited member from the group7920 user: inherited_guest7921 behaves like returns the milestone successfully7922 is expected to include {"title" => "My title 1702"}7923 contains release information7924 behaves like a working graphql query7925 returns a successful response7926 user: inherited_reporter7927 behaves like returns the milestone successfully7928 is expected to include {"title" => "My title 1702"}7929 contains release information7930 behaves like a working graphql query7931 returns a successful response7932 user: inherited_developer7933 behaves like returns the milestone successfully7934 is expected to include {"title" => "My title 1702"}7935 contains release information7936 behaves like a working graphql query7937 returns a successful response7938 when unauthenticated7939 is expected to be nil7940 behaves like a working graphql query7941 returns a successful response7942 when ID argument is missing7943 raises an exception7944Groups::Settings::CiCdController7945 GET #show7946 when user is owner7947 renders show with 200 status code7948 when user is not owner7949 renders a 4047950 external authorization7951 renders show with 200 status code7952 PATCH #update_auto_devops7953 when user does not have enough permission7954 is expected to respond with numeric status code not_found7955 when user has enough privileges7956 is expected to redirect to "/groups/group140/-/settings/ci_cd"7957 when service execution went wrong7958 returns a flash alert7959 when service execution was successful7960 returns a flash notice7961 when changing auto devops value7962 when explicitly enabling auto devops7963 updates group attribute7964 when explicitly disabling auto devops7965 updates group attribute7966 PATCH #update7967 when user is not an admin7968 is expected to respond with numeric status code not_found7969 when user is an admin7970 when admin mode is disabled7971 is expected to respond with numeric status code not_found7972 when admin mode is enabled7973 is expected to redirect to "/groups/group140/-/settings/ci_cd"7974 when service execution went wrong7975 returns a flash alert7976 when service execution was successful7977 returns a flash notice7978API::PersonalAccessTokens::SelfInformation7979 # order random7980 GET /personal_access_tokens/self7981 with a 'api' scoped token7982 shows token info7983 with a 'read_api' scoped token7984 shows token info7985 with a 'read_user' scoped token7986 shows token info7987 with a 'read_repository' scoped token7988 shows token info7989 with a 'write_repository' scoped token7990 shows token info7991 with a 'sudo' scoped token7992 shows token info7993 when token is invalid7994 returns 4017995 when token is expired7996 returns 4017997 DELETE /personal_access_tokens/self7998 when current_user is an administrator7999 behaves like revoking token succeeds8000 revokes token8001 with impersonated token8002 behaves like revoking token succeeds8003 revokes token8004 when current_user is not an administrator8005 behaves like revoking token succeeds8006 revokes token8007 with impersonated token8008 behaves like revoking token denied8009 cannot revoke token8010 with already revoked token8011 behaves like revoking token denied8012 cannot revoke token8013 with a 'api' scoped token8014 behaves like revoking token succeeds8015 revokes token8016 with a 'read_api' scoped token8017 behaves like revoking token succeeds8018 revokes token8019 with a 'read_user' scoped token8020 behaves like revoking token succeeds8021 revokes token8022 with a 'read_repository' scoped token8023 behaves like revoking token succeeds8024 revokes token8025 with a 'write_repository' scoped token8026 behaves like revoking token succeeds8027 revokes token8028 with a 'sudo' scoped token8029 behaves like revoking token succeeds8030 revokes token8031API::RemoteMirrors8032 GET /projects/:id/remote_mirrors8033 requires `admin_remote_mirror` permission8034 returns a list of remote mirrors8035 GET /projects/:id/remote_mirrors/:mirror_id8036 requires `admin_remote_mirror` permission8037 returns at remote mirror8038 POST /projects/:id/remote_mirrors8039 requires `admin_remote_mirror` permission8040 returns error if url is invalid8041 creates a remote mirror8042 disabled by default8043 behaves like creates a remote mirror8044 creates a remote mirror and returns reponse8045 enabled8046 behaves like creates a remote mirror8047 creates a remote mirror and returns reponse8048 PUT /projects/:id/remote_mirrors/:mirror_id8049 requires `admin_remote_mirror` permission8050 updates a remote mirror8051 DELETE /projects/:id/remote_mirrors/:mirror_id8052 requires `admin_remote_mirror` permission8053 when the user is a maintainer8054 returns 404 for non existing id8055 returns bad request if the update service fails8056 deletes a remote mirror8057RunnersRegistrationTokenReset8058 applied to project8059 resets runner registration token8060 when unauthorized8061 when not a project member8062 behaves like unauthorized8063 returns an error8064 with a non-admin project member8065 behaves like unauthorized8066 returns an error8067 when malformed id is provided8068 returns errors8069 applied to group8070 resets runner registration token8071 when unauthorized8072 when not a group member8073 behaves like unauthorized8074 returns an error8075 with a non-admin group member8076 behaves like unauthorized8077 returns an error8078 when malformed id is provided8079 returns errors8080 applied to instance8081 resets runner registration token8082 when unauthorized8083 behaves like unauthorized8084 returns an error8085 when malformed id is provided8086 returns errors8087Projects::BoardsController8088 GET index8089 creates a new project board when project does not have one8090 renders template8091 when there are recently visited boards8092 redirects to latest visited board8093 with unauthorized user8094 returns a not found 404 response8095 when user is signed out8096 renders template8097 issues are disabled8098 returns a not found 404 response8099 behaves like unauthorized when external service denies access8100 allows access when the authorization service allows it8101 allows access when the authorization service denies it8102 GET show8103 when format is HTML8104 renders template8105 with unauthorized user8106 returns a not found 404 response8107 when user is signed out8108 does not save visit8109 when board does not belong to project8110 returns a not found 404 response8111Creation of a new merge request8112 the user is not allowed to create a branch8113 behaves like a mutation that returns a top-level access error8114 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"8115 when user has permissions to create a merge request8116DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.8117DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.8118DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.8119DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.8120DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.8121DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.8122 creates a new merge request8123 when source branch is equal to the target branch8124 behaves like a mutation that returns errors in the response8125 is expected to contain exactly "Branch conflict You can't use same project/branch for source and target"8126Admin::RunnersController8127 #index8128 renders index template8129 #show8130 shows a runner show page8131 #edit8132 shows a runner edit page8133 shows 404 for unknown runner8134 avoids N+1 queries8135 #update8136 with update succeeding8137 updates the runner and ticks the queue8138 with update failing8139 does not update runner or tick the queue8140 #destroy8141 destroys the runner8142 #resume8143 marks the runner as active and ticks the queue8144 #pause8145 marks the runner as inactive and ticks the queue8146 GET #runner_setup_scripts8147 renders the setup scripts8148 renders errors if they occur8149Project.cluster_agents8150DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.8151DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.8152DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.8153DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.8154DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.8155DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.8156 can retrieve cluster agents8157 selecting page info8158 can paginate cluster agents8159 selecting tokens8160 can select tokens in last_used_at order8161 does not suffer from N+1 performance issues8162 selecting connections8163 can retrieve connections and agent metadata8164 selecting activity events8165 retrieves activity event details8166Requests on a read-only node8167 when db is read-only8168 behaves like graphql on a read-only GitLab instance8169 mutations8170 disallows the query8171 does not destroy the Note8172 read-only queries8173DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.8174DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.8175 allows the query8176Groups::BoardsController8177 GET index8178 creates a new board when group does not have one8179 when format is HTML8180 renders template8181 with unauthorized user8182 returns a not found 404 response8183 when user is signed out8184 renders template8185 behaves like disabled when using an external authorization service8186 works when the feature is not enabled8187 renders a 404 with a message when the feature is enabled8188 GET show8189 when format is HTML8190 renders template8191 with unauthorized user8192 returns a not found 404 response8193 when user is signed out8194 does not save visit8195 when board does not belong to group8196 returns a not found 404 response8197 behaves like disabled when using an external authorization service8198 works when the feature is not enabled8199 renders a 404 with a message when the feature is enabled8200Query current user groups8201 avoids N+1 queries8202 returns all groups where the user is a direct member8203 behaves like a working graphql query8204 returns a successful response8205 when permission_scope is CREATE_PROJECTS8206 is expected to match [{"id"=>"gid://gitlab/Group/2214", "name"=>"a public maintainer", "path"=>"a-public-maintainer", "fullPath"=>"root-group/a-public-maintainer"}, {"id"=>"gid://gitlab/Group/2215", "name"=>"a public owner", "path"=>"a-public-owner", "fullPath"=>"a-public-owner"}, {"id"=>"gid://gitlab/Group/2212", "name"=>"b private maintainer", "path"=>"b-private-maintainer", "fullPath"=>"root-group/b-private-maintainer"}, {"id"=>"gid://gitlab/Group/2213", "name"=>"c public developer", "path"=>"c-public-developer", "fullPath"=>"c-public-developer"}]8207 when search is provided8208 is expected to match [{"id"=>"gid://gitlab/Group/2214", "name"=>"a public maintainer", "path"=>"a-public-maintainer", "fullPath"=>"root-group/a-public-maintainer"}, {"id"=>"gid://gitlab/Group/2212", "name"=>"b private maintainer", "path"=>"b-private-maintainer", "fullPath"=>"root-group/b-private-maintainer"}]8209 when permission_scope is TRANSFER_PROJECTS8210 is expected to match [{"id"=>"gid://gitlab/Group/2214", "name"=>"a public maintainer", "path"=>"a-public-maintainer", "fullPath"=>"root-group/a-public-maintainer"}, {"id"=>"gid://gitlab/Group/2215", "name"=>"a public owner", "path"=>"a-public-owner", "fullPath"=>"a-public-owner"}, {"id"=>"gid://gitlab/Group/2212", "name"=>"b private maintainer", "path"=>"b-private-maintainer", "fullPath"=>"root-group/b-private-maintainer"}]8211 when search is provided8212 is expected to match [{"id"=>"gid://gitlab/Group/2215", "name"=>"a public owner", "path"=>"a-public-owner", "fullPath"=>"a-public-owner"}]8213 when search is provided8214 is expected to match [{"id"=>"gid://gitlab/Group/2214", "name"=>"a public maintainer", "path"=>"a-public-maintainer", "fullPath"=>"root-group/a-public-maintainer"}, {"id"=>"gid://gitlab/Group/2212", "name"=>"b private maintainer", "path"=>"b-private-maintainer", "fullPath"=>"root-group/b-private-maintainer"}]8215 when searching for a full path (including parent)8216 is expected to match [{"id"=>"gid://gitlab/Group/2212", "name"=>"b private maintainer", "path"=>"b-private-maintainer", "fullPath"=>"root-group/b-private-maintainer"}]8217rendering project pipeline statistics8218 contains two arrays of 8 elements each for the week pipelines8219 contains two arrays of 13 elements each for the year pipelines8220 behaves like a working graphql query8221 returns a successful response8222 behaves like monthly statistics8223 contains two arrays of 32 elements each for the month pipelines8224 behaves like monthly statistics8225 contains two arrays of 31 elements each for the month pipelines8226 behaves like monthly statistics8227 contains two arrays of 32 elements each for the month pipelines8228Reposition and move issue within board lists8229 when the board_id is not a board8230 behaves like returns an error8231 fails with error8232 when the user cannot read the issue board8233 behaves like returns an error8234 fails with error8235 when user has access to resources8236 when repositioning an issue8237 repositions an issue8238 when moving an issue to a different list8239 moves issue to a different list8240 when moving an issue using position_in_list8241 repositions an issue8242 when user has no access to resources8243 the user is not allowed to update the issue8244 behaves like returns an error8245 fails with error8246 when the user can not read board8247 behaves like returns an error8248 fails with error8249Getting Metrics Dashboard Annotations8250 returns annotations8251 behaves like a working graphql query8252 returns a successful response8253 arguments8254 from is missing8255 returns error8256 to is missing8257 behaves like a working graphql query8258 returns a successful response8259API::Integrations::JiraConnect::Subscriptions8260 POST /integrations/jira_connect/subscriptions8261 returns 4018262 with user token8263 with feature flag disabled8264 returns 4048265 with invalid JWT8266 returns 4018267 with valid JWT8268 returns 401 if the user does not have access to the group8269 user has access to the group8270 creates a subscription8271 returns 2018272getting job information8273 # order random8274 if the user is not an admin8275 has no access to the jobs8276 when user is admin8277 has full access to all jobs8278 when filtered by status8279 gets pending jobs8280 gets pending and failed jobs8281Getting designs related to an issue8282 is not too deep for anonymous users8283 behaves like a working graphql query8284 returns a successful response8285 behaves like a noteable graphql type we can query8286 .discussions8287 can fetch discussions8288 can fetch discussion noteable8289 .notes8290DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.8291DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.8292DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.8293DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.8294 can fetch notes8295API::Admin::PlanLimits PlanLimits8296 GET /application/plan_limits8297 as a non-admin user8298 returns 4038299 as an admin user8300 no params8301 returns plan limits8302 correct plan name in params8303 returns plan limits8304 invalid plan name in params8305 returns validation error8306 PUT /application/plan_limits8307 as a non-admin user8308 returns 4038309 as an admin user8310 correct params8311 updates multiple plan limits8312 updates single plan limits8313 empty params8314 fails to update plan limits8315 params with wrong type8316 fails to update plan limits8317 missing plan_name in params8318 fails to update plan limits8319 additional undeclared params8320 updates only declared plan limits8321GroupUpdate8322 when unauthorized8323 when not a group member8324 behaves like unauthorized8325 returns an error8326 when a non-admin group member8327 behaves like unauthorized8328 returns an error8329 when authorized8330 updates shared runners settings8331 when bad arguments are provided8332 returns the errors8333JobArtifactsDestroy8334 # order random8335 when the user is not allowed to destroy the job artifacts8336 returns an error8337 when the user is allowed to destroy the job artifacts8338 destroys the job artifacts and returns the expected data8339 when the the project this job belongs to is undergoing stats refresh8340 destroys no artifacts and returns the correct error8341Admin::DevOpsReportController8342 show_adoption?8343 is always false8344 GET #show8345 as admin8346 responds with success8347 behaves like tracking unique visits8348 tracks unique visit if the format is HTML8349 tracks unique visit if DNT is not enabled8350 does not track unique visit if DNT is enabled8351 does not track unique visit if the format is JSON8352 behaves like Snowplow event tracking with RedisHLL context8353 behaves like Snowplow event tracking8354 is not emitted if FF is disabled8355 is emitted8356 as normal user8357 responds with 4048358API::Avatar8359 GET /avatar8360 avatar uploaded to GitLab8361 user with matching public email address8362 returns the avatar url8363 no user with matching public email address8364 returns the avatar url from Gravatar8365 avatar uploaded to Gravatar8366 user with matching public email address8367 returns the avatar url from Gravatar8368 no user with matching public email address8369 returns the avatar url from Gravatar8370 public visibility level restricted8371 when authenticated8372 returns the avatar url8373 when unauthenticated8374 behaves like 403 response8375 returns 4038376Restoring many Todos8377 restores many todos8378 when using an invalid gid8379 contains the expected error8380Creating a new Prometheus Integration8381 creates a new integration8382 without required argument project_path8383 behaves like an invalid argument to the mutation8384 behaves like a mutation that returns top-level errors8385 is expected to contain exactly (include "invalid value for projectPath")8386 without required argument active8387 behaves like an invalid argument to the mutation8388 behaves like a mutation that returns top-level errors8389 is expected to contain exactly (include "invalid value for active")8390 without required argument api_url8391 behaves like an invalid argument to the mutation8392 behaves like a mutation that returns top-level errors8393 is expected to contain exactly (include "invalid value for apiUrl")8394getting a list of work item types for a project8395 when user has access to the project8396 returns all default work item types8397 behaves like a working graphql query8398 returns a successful response8399 when user doesn't have access to the project8400 does not return the project8401GroupMember8402 behaves like a working graphql query8403 returns a successful response8404 behaves like a working membership object query8405 contains edge to expected project8406 contains correct access level8407Update Environment Canary Ingress8408 when kubernetes accepted the patch request8409 updates successfully8410getting project recent issue boards8411 behaves like querying a GraphQL type recent boards8412 Get list of recently visited boards8413 when the request is correct8414 returns recent boards for user successfully8415 behaves like a working graphql query8416 returns a successful response8417 when requests has errors8418 when there are no recently visited boards8419 returns empty result8420API::SidekiqMetrics8421 GET sidekiq/*8422 defines the `queue_metrics` endpoint8423 defines the `process_metrics` endpoint8424 defines the `job_stats` endpoint8425 defines the `compound_metrics` endpoint8426PipelineDestroy8427 returns an error if the user is not allowed to destroy the pipeline8428 destroys a pipeline8429 when project is undergoing stats refresh8430 returns an error and does not destroy the pipeline8431getting Application Settings8432 without admin permissions8433 is expected to equal nil8434 behaves like a working graphql query8435 returns a successful response8436 with admin permissions8437 fetches the settings data8438 behaves like a working graphql query8439 returns a successful response8440Setting assignees of an alert8441 updates the assignee of the alert8442 with operation_mode specified8443 updates the assignee of the alert8444Oauth::TokensController8445 POST /oauth/token8446 behaves like cross-origin POST request8447 allows cross-origin requests8448 OPTIONS /oauth/token8449 behaves like CORS preflight OPTIONS request8450 returns 2008451 allows cross-origin requests8452 POST /oauth/revoke8453 returns 2008454 behaves like cross-origin POST request8455 allows cross-origin requests8456 OPTIONS /oauth/revoke8457 behaves like CORS preflight OPTIONS request8458 returns 2008459 allows cross-origin requests8460Oauth::JiraDvcs::AuthorizationsController8461 GET new8462 redirects to OAuth authorization with correct params8463 replaces the GitHub "repo" scope with "api"8464 GET callback8465 redirects to redirect_uri on session with code param8466 redirects to redirect_uri on session with code param preserving existing query8467 POST access_token8468 returns oauth params in a format Jira expects8469JiraConnect::OauthApplicationIdsController8470 GET /-/jira_connect/oauth_application_id8471 renders the jira connect application id8472 allows cross-origin requests8473 application ID is empty8474 renders not found8475 when jira_connect_oauth_self_managed disabled8476 renders not found8477 on GitLab.com8478 renders not found8479CheckRateLimit8480 #check_rate_limit!8481 calls ApplicationRateLimiter#throttled? with the right arguments8482 renders error and logs request if throttled8483 redirects back if throttled and redirect_back option is set to true8484 when the bypass header is set8485 skips rate limit if set to "1"8486 does not skip rate limit if set to something else than "1"8487Removing an HTTP Integration8488 removes the integration8489Profiles::AvatarsController8490/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/carrierwave-1.3.2/lib/carrierwave/mounter.rb:113: warning: deprecated Object#=~ is called on TrueClass; it always returns nil8491 removes avatar from DB by calling destroy8492IssuableActions8493 #discussions8494 instantiates and calls NotesFinder as expected8495Knapsack report was generated. Preview:8496{8497 "spec/mailers/notify_spec.rb": 279.16032277199884,8498 "spec/requests/api/discussions_spec.rb": 171.3100683190005,8499 "spec/requests/api/issues/get_project_issues_spec.rb": 139.10002978800003,8500 "spec/requests/api/debian_project_packages_spec.rb": 66.05682371900002,8501 "spec/requests/api/generic_packages_spec.rb": 76.9158932040009,8502 "spec/requests/users_controller_spec.rb": 60.39743249099956,8503 "spec/requests/api/internal/base_spec.rb": 35.027027558000555,8504 "spec/controllers/groups_controller_spec.rb": 35.98021094900105,8505 "spec/requests/api/project_container_repositories_spec.rb": 35.9425907420009,8506 "spec/requests/api/rpm_project_packages_spec.rb": 18.444373890999486,8507 "spec/mailers/emails/profile_spec.rb": 18.11307161900004,8508 "spec/requests/api/features_spec.rb": 18.16392395299954,8509 "spec/requests/api/deploy_tokens_spec.rb": 19.39971687599973,8510 "spec/controllers/projects/settings/ci_cd_controller_spec.rb": 18.073270666998724,8511 "spec/requests/api/group_milestones_spec.rb": 15.370584113001314,8512 "spec/requests/api/issue_links_spec.rb": 14.177434143999562,8513 "spec/controllers/import/gitlab_controller_spec.rb": 15.06593078900005,8514 "spec/requests/api/graphql/mutations/namespace/package_settings/update_spec.rb": 11.635315886000171,8515 "spec/requests/api/graphql/mutations/snippets/create_spec.rb": 11.834296109998832,8516 "spec/requests/api/namespaces_spec.rb": 8.370475230000011,8517 "spec/requests/api/graphql/boards/boards_query_spec.rb": 13.791885475000527,8518 "spec/requests/api/admin/instance_clusters_spec.rb": 8.92963973299993,8519 "spec/requests/api/graphql_spec.rb": 7.3756626619997405,8520 "spec/requests/api/task_completion_status_spec.rb": 8.833342650999839,8521 "spec/requests/api/graphql/packages/conan_spec.rb": 7.989666372001011,8522 "spec/mailers/emails/pages_domains_spec.rb": 5.59515520199966,8523 "spec/requests/jwt_controller_spec.rb": 7.660101719000522,8524 "spec/controllers/projects/autocomplete_sources_controller_spec.rb": 6.454233880000174,8525 "spec/requests/groups/crm/organizations_controller_spec.rb": 6.814176199999565,8526 "spec/requests/api/graphql/mutations/award_emojis/remove_spec.rb": 6.626753455000653,8527 "spec/requests/api/graphql/mutations/issues/update_spec.rb": 5.8914287659990805,8528 "spec/requests/api/admin/batched_background_migrations_spec.rb": 4.543890658998862,8529 "spec/requests/api/graphql/milestone_spec.rb": 4.965278174000559,8530 "spec/controllers/groups/settings/ci_cd_controller_spec.rb": 4.014180784999553,8531 "spec/requests/api/personal_access_tokens/self_information_spec.rb": 2.474753893000525,8532 "spec/requests/api/remote_mirrors_spec.rb": 3.5350935940005,8533 "spec/requests/api/graphql/mutations/ci/runners_registration_token/reset_spec.rb": 3.7204335290007293,8534 "spec/controllers/projects/boards_controller_spec.rb": 3.375308597000185,8535 "spec/requests/api/graphql/mutations/merge_requests/create_spec.rb": 3.9729110279986344,8536 "spec/controllers/admin/runners_controller_spec.rb": 3.048645574999682,8537 "spec/requests/api/graphql/project/cluster_agents_spec.rb": 4.1106670560002385,8538 "spec/requests/api/graphql/read_only_spec.rb": 3.7189621789984812,8539 "spec/controllers/groups/boards_controller_spec.rb": 2.377165560999856,8540 "spec/requests/api/graphql/current_user/groups_query_spec.rb": 3.1039921100000356,8541 "spec/requests/api/graphql/project/project_pipeline_statistics_spec.rb": 3.123020159000589,8542 "spec/requests/api/graphql/mutations/boards/issues/issue_move_list_spec.rb": 3.0327403859992046,8543 "spec/requests/api/graphql/metrics/dashboard/annotations_spec.rb": 2.6602856869994866,8544 "spec/requests/api/integrations/jira_connect/subscriptions_spec.rb": 2.0836453459996847,8545 "spec/requests/api/graphql/jobs_query_spec.rb": 2.54546580799979,8546 "spec/requests/api/graphql/project/issue/designs/notes_spec.rb": 2.362151012999675,8547 "spec/requests/api/admin/plan_limits_spec.rb": 1.6601733909992618,8548 "spec/requests/api/graphql/mutations/groups/update_spec.rb": 1.766894622000109,8549 "spec/requests/api/graphql/mutations/ci/job/artifacts_destroy_spec.rb": 1.7028125369997724,8550 "spec/controllers/admin/dev_ops_report_controller_spec.rb": 1.7175594360014657,8551 "spec/requests/api/avatar_spec.rb": 1.1553364640003565,8552 "spec/requests/api/graphql/mutations/todos/restore_many_spec.rb": 2.21765802399932,8553 "spec/requests/api/graphql/mutations/alert_management/prometheus_integration/create_spec.rb": 1.4499289390005288,8554 "spec/requests/api/graphql/project/work_item_types_spec.rb": 1.7369388439983595,8555 "spec/requests/api/graphql/user/group_member_query_spec.rb": 0.7546631170007458,8556 "spec/requests/api/graphql/mutations/environments/canary_ingress/update_spec.rb": 1.679462019001221,8557 "spec/requests/api/graphql/project/recent_issue_boards_query_spec.rb": 1.4288029100007407,8558 "spec/requests/api/sidekiq_metrics_spec.rb": 1.0145339649989182,8559 "spec/requests/api/graphql/mutations/ci/pipeline_destroy_spec.rb": 1.1789419109991286,8560 "spec/requests/api/graphql/ci/application_setting_spec.rb": 1.2425532959987322,8561 "spec/requests/api/graphql/mutations/alert_management/alerts/set_assignees_spec.rb": 0.9853317570014042,8562 "spec/requests/oauth/tokens_controller_spec.rb": 0.5022979879995546,8563 "spec/controllers/oauth/jira_dvcs/authorizations_controller_spec.rb": 0.5607237530002749,8564 "spec/requests/jira_connect/oauth_application_ids_controller_spec.rb": 0.5368279249996704,8565 "spec/controllers/concerns/check_rate_limit_spec.rb": 0.4114892460002011,8566 "spec/requests/api/graphql/mutations/alert_management/http_integration/destroy_spec.rb": 1.0550461419989006,8567 "spec/controllers/profiles/avatars_controller_spec.rb": 0.5438445050003793,8568 "spec/controllers/concerns/issuable_actions_spec.rb": 0.225547431000450168569}8570Knapsack global time execution for tests: 20m 42s8571Finished in 20 minutes 46 seconds (files took 36.21 seconds to load)85723346 examples, 0 failures8573Randomized with seed 548878574[TEST PROF INFO] Time spent in factories: 09:49.099 (47.11% of total time)8575RSpec exited with 0.8576No examples to retry, congrats!8578Not uploading cache ruby-gems-debian-bullseye-ruby-2.7-16 due to policy8579Not uploading cache gitaly-ruby-gems-debian-bullseye-ruby-2.7-16 due to policy8581Uploading artifacts...8582coverage/: found 5 matching files and directories 8583crystalball/: found 2 matching files and directories 8584WARNING: deprecations/: no matching files. Ensure that the artifact path is relative to the working directory 8585knapsack/: found 3 matching files and directories 8586rspec/: found 9 matching files and directories 8587WARNING: tmp/capybara/: no matching files. Ensure that the artifact path is relative to the working directory 8588log/*.log: found 20 matching files and directories 8589WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/3281613482/artifacts?artifact_format=zip&artifact_type=archive&expire_in=31d new-url=https://gitlab.com8590WARNING: Retrying... context=artifacts-uploader error=request redirected8591Uploading artifacts as "archive" to coordinator... 201 Created id=3281613482 responseStatus=201 Created token=8JNnh6qr8592Uploading artifacts...8593rspec/junit_rspec.xml: found 1 matching files and directories 8594WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/3281613482/artifacts?artifact_format=gzip&artifact_type=junit&expire_in=31d new-url=https://gitlab.com8595WARNING: Retrying... context=artifacts-uploader error=request redirected8596Uploading artifacts as "junit" to coordinator... 201 Created id=3281613482 responseStatus=201 Created token=8JNnh6qr8598Job succeeded