rspec integration pg13-as-if-foss single-db-ci-connection 6/12
Passed Started
by
@fabiopitino
Fabio Pitino
1Running with gitlab-runner 16.1.0~beta.5.gf131a6a2 (f131a6a2)2 on blue-6.private.runners-manager.gitlab.com/gitlab.com/gitlab-org mKJTFBei, system ID: s_90a66139ec063 feature flags: FF_NETWORK_PER_BUILD:true, FF_USE_FASTZIP:true, FF_USE_IMPROVED_URL_MASKING:true6Using Docker executor with image registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-18.16-postgresql-13:rubygems-3.4-git-2.36-lfs-2.9-chrome-113-yarn-1.22-graphicsmagick-1.3.36 ...7Starting service registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-13-pgvector-0.4.1 ...8Authenticating with credentials from job payload (GitLab Registry)9Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-13-pgvector-0.4.1 ...10Using docker image sha256:73740c557807c4bc5d692f263c0e35454270600da4b22bbe952331411426c8b5 for registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-13-pgvector-0.4.1 with digest registry.gitlab.com/gitlab-org/gitlab-build-images@sha256:3174001f839c42e299ac06a42f8ded446edfcb33b0eb820874749a3f53eb799c ...11WARNING: Service registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 is already created. Ignoring.12WARNING: Service registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 is already created. Ignoring.13Starting service registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 ...14Authenticating with credentials from job payload (GitLab Registry)15Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 ...16Using docker image sha256:a9a90ece30d9630d694ab1997cd103ea8ec729789451b983a75c7b58b0062d45 for registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 with digest registry.gitlab.com/gitlab-org/gitlab-build-images@sha256:7ef36177d5d0bc554fbb63d8210ae751bcc538bea7905b51d078d9ab90a755fa ...17Starting service redis:6.2-alpine ...18Pulling docker image redis:6.2-alpine ...19Using docker image sha256:85fd7bd884b6493c8eb6f4dffbe5406d97cce56aff84f1580a5eb5b9d841f158 for redis:6.2-alpine with digest redis@sha256:87c44d5d9f472e767c8737f4130c765d77bdc95c7472d6427cfc9d4632f12da6 ...20Waiting for services to be up and running (timeout 30 seconds)...21Authenticating with credentials from job payload (GitLab Registry)22Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-18.16-postgresql-13:rubygems-3.4-git-2.36-lfs-2.9-chrome-113-yarn-1.22-graphicsmagick-1.3.36 ...23Using docker image sha256:61b59025d0d646cd177f654d8f81df859675be528f37dcc2ce6f39a49c7a5dd9 for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-18.16-postgresql-13:rubygems-3.4-git-2.36-lfs-2.9-chrome-113-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-18.16-postgresql-13@sha256:25367d41b1034f1ecacfc9cb8eebc70cb30c6fdade3781cf295488255bf61614 ...25Running on runner-mkjtfbei-project-278964-concurrent-0 via runner-mkjtfbei-private-1685682425-98e294d2...27Fetching changes with git depth set to 20...28Initialized empty Git repository in /builds/gitlab-org/gitlab/.git/29Created fresh repository.30remote: Enumerating objects: 139970, done. 31remote: Counting objects: 100% (139970/139970), done. 32remote: Compressing objects: 100% (94736/94736), done. 33remote: Total 139970 (delta 61223), reused 92025 (delta 39894), pack-reused 0 34Receiving objects: 100% (139970/139970), 123.36 MiB | 31.45 MiB/s, done.35Resolving deltas: 100% (61223/61223), done.37 * [new ref] refs/pipelines/887306308 -> refs/pipelines/88730630838Checking out 95754c79 as detached HEAD (ref is refs/merge-requests/122015/merge)...39Skipping Git submodules setup40$ git remote set-url origin "${CI_REPOSITORY_URL}"42Checking cache for ruby-gems-debian-bullseye-ruby-3.0-16...43cache.zip is up to date 44Successfully extracted cache46Downloading artifacts for compile-test-assets as-if-foss (4400964017)...47Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4400964017 responseStatus=200 OK token=64_UmC6x48Downloading artifacts for detect-tests (4400964025)...49Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4400964025 responseStatus=200 OK token=64_UmC6x50Downloading artifacts for retrieve-tests-metadata (4400964028)...51Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4400964028 responseStatus=200 OK token=64_UmC6x52Downloading artifacts for setup-test-env (4400964019)...53Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4400964019 responseStatus=200 OK token=64_UmC6x55Using docker image sha256:61b59025d0d646cd177f654d8f81df859675be528f37dcc2ce6f39a49c7a5dd9 for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-18.16-postgresql-13:rubygems-3.4-git-2.36-lfs-2.9-chrome-113-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-18.16-postgresql-13@sha256:25367d41b1034f1ecacfc9cb8eebc70cb30c6fdade3781cf295488255bf61614 ...56$ echo $FOSS_ONLY57158$ [ "$FOSS_ONLY" = "1" ] && rm -rf ee/ qa/spec/ee/ qa/qa/specs/features/ee/ qa/qa/ee/ qa/qa/ee.rb59$ export GOPATH=$CI_PROJECT_DIR/.go60$ mkdir -p $GOPATH61$ source scripts/utils.sh62$ source scripts/prepare_build.sh720Using decomposed database config (config/database.yml.postgresql)721Geo DB won't be set up.722Embedding DB won't be set up.734$ source ./scripts/rspec_helpers.sh735$ run_timed_command "gem install knapsack --no-document"736$ gem install knapsack --no-document737Successfully installed knapsack-4.0.07381 gem installed739==> 'gem install knapsack --no-document' succeeded in 0 seconds.740$ echo -e "\e[0Ksection_start:`date +%s`:gitaly-test-spawn[collapsed=true]\r\e[0KStarting Gitaly"742$ section_start "gitaly-test-spawn" "Spawning Gitaly"; scripts/gitaly-test-spawn; section_end "gitaly-test-spawn"747$ echo -e "\e[0Ksection_end:`date +%s`:gitaly-test-spawn\r\e[0K"748$ rspec_paralellized_job "--tag ~quarantine --tag ~level:background_migration"749SKIP_FLAKY_TESTS_AUTOMATICALLY: 750RETRY_FAILED_TESTS_IN_NEW_PROCESS: true751KNAPSACK_GENERATE_REPORT: 752FLAKY_RSPEC_GENERATE_REPORT: 753KNAPSACK_TEST_FILE_PATTERN: spec/{commands,controllers,mailers,requests}{,/**/}*_spec.rb754KNAPSACK_LOG_LEVEL: debug755KNAPSACK_REPORT_PATH: knapsack/rspec_integration_pg13-as-if-foss_single-db-ci-connection_6_12_report.json756FLAKY_RSPEC_SUITE_REPORT_PATH: rspec/flaky/report-suite.json757FLAKY_RSPEC_REPORT_PATH: rspec/flaky/all_rspec_integration_pg13-as-if-foss_single-db-ci-connection_6_12_report.json758NEW_FLAKY_RSPEC_REPORT_PATH: rspec/flaky/new_rspec_integration_pg13-as-if-foss_single-db-ci-connection_6_12_report.json759SKIPPED_TESTS_REPORT_PATH: rspec/skipped_tests_rspec_integration_pg13-as-if-foss_single-db-ci-connection_6_12.txt760CRYSTALBALL: 761RSPEC_TESTS_MAPPING_ENABLED: 762RSPEC_TESTS_FILTER_FILE: 763warning: parser/current is loading parser/ruby30, which recognizes 3.0.5-compliant syntax, but you are running 3.0.6.765Run options: exclude {:quarantine=>true, :level=>"background_migration"}766Test environment set up in 0.733916589 seconds767API::MergeRequests768 route shadowing769 does not occur770 GET /merge_requests771 when unauthenticated772 returns an array of all merge requests773 returns authentication error without any scope774 returns authentication error when scope is assigned-to-me775 returns authentication error when scope is assigned_to_me776 returns authentication error when scope is created-by-me777 behaves like issuable API rate-limited search778 behaves like rate limited endpoint779 when rate limiter enabled780 logs request and declines it when endpoint called more than the threshold781 when rate limiter is disabled782 does not log request and does not block the request783 behaves like rate limited endpoint784 when rate limiter enabled785 logs request and declines it when endpoint called more than the threshold786 when rate limiter is disabled787 does not log request and does not block the request788 when authenticated789 returns an array of all merge requests except unauthorized ones790 returns an array of no merge_requests when wip=yes791 returns an array of no merge_requests when wip=no792 does not return unauthorized merge requests793 returns an array of merge requests created by current user if no scope is given794 returns an array of merge requests assigned to the given user795 returns an array of merge requests with no assignee796 returns an array of merge requests with any assignee797 returns an array of merge requests assigned to me798 returns an array of merge requests assigned to me (kebab-case)799 returns an array of merge requests created by me800 returns an array of merge requests created by me (kebab-case)801 returns merge requests reacted by the authenticated user by the given emoji802 returns merge requests created before a specific date803 returns merge requests created after a specific date804 returns merge requests updated before a specific date805 returns merge requests updated after a specific date806 filter by author807 when only `author_id` is passed808 returns an array of merge requests authored by the given user809 when only `author_username` is passed810 returns an array of merge requests authored by the given user(by `author_username`)811 when both `author_id` and `author_username` are passed812 returns a 400813 filter by reviewer814 with reviewer_id815 with an id816 returns review requested merge requests for the given user817 with Any818 returns review requested merge requests for any user819 with None820 returns merge requests that has no assigned reviewers821 with reviewer_username822 returns review requested merge requests for the given user823 with both reviewer_id and reviewer_username824 returns a 400825 source_branch param826 returns merge requests with the given source branch827 target_branch param828 returns merge requests with the given target branch829 search params830 returns merge requests matching given search string for title831 returns merge requests matching given search string for title and scoped in title832 returns an empty array if no merge request matches given search string for description and scoped in title833 returns merge requests for project matching given search string for description834 state param835 returns merge requests with the given state836 GET /projects/:id/merge_requests837 returns 404 for non public projects838 returns an array of no merge_requests when wip=yes839 returns merge_request by "iids" array840 behaves like merge requests list841 when unauthenticated842 returns merge requests for public projects843 when merge request is unchecked844 with merge status recheck projection845 does not enqueue a merge status recheck846 behaves like issuable API rate-limited search847 behaves like rate limited endpoint848 when rate limiter enabled849 logs request and declines it when endpoint called more than the threshold850 when rate limiter is disabled851 does not log request and does not block the request852 behaves like rate limited endpoint853 when rate limiter enabled854 logs request and declines it when endpoint called more than the threshold855 when rate limiter is disabled856 does not log request and does not block the request857 when authenticated858 returns an array of all merge_requests using simple mode859 returns an array of all merge_requests860 returns an array of open merge_requests861 returns an array of closed merge_requests862 returns an array of merged merge_requests863 matches V4 response schema864 returns an empty array if no issue matches milestone865 returns an empty array if milestone does not exist866 returns an array of merge requests in given milestone867 returns an array of merge requests matching state in milestone868 returns an array of labeled merge requests that are merged for a milestone869 when merge request is unchecked870 with a developer+ role871 with merge status recheck projection872 checks mergeability asynchronously873 without merge status recheck projection874 does not enqueue a merge status recheck875 with a reporter role876 with merge status recheck projection877 does not enqueue a merge status recheck878 when restrict_merge_status_recheck FF is disabled879 with merge status recheck projection880 does enqueue a merge status recheck881 with labels882 returns an array of all merge_requests883 with labels_details884 returns labels with details885 when DB timeouts occur886 returns a :request_timeout status887 with approved param888 returns only approved merge requests889 returns only non-approved merge requests890 with labels891 returns an array of labeled merge requests892 returns an array of labeled merge requests where all labels match893 returns an empty array if no merge request matches labels894 returns an array of labeled merge requests where all labels match895 returns an array of merge requests with any label when filtering by any label896 returns an array of merge requests with any label when filtering by any label897 returns an array of merge requests with any label when filtering by any label898 returns an array of merge requests without a label when filtering by no label899 with ordering900 returns an array of merge_requests in ascending order901 returns an array of merge_requests in descending order902 returns an array of merge_requests ordered by updated_at903 returns an array of merge_requests ordered by created_at904 2 merge requests with equal created_at905 page breaks first page correctly906 page breaks second page correctly907 returns an array of merge_requests ordered by title908 asc when requested909 desc when requested910 NOT params911 returns merge requests without any of the labels given912 returns merge requests without any of the milestones given913 returns merge requests without the author given914 returns merge requests without the assignee given915 filter by reviewer916 with reviewer_id917 with an id918 returns merge requests that do not have the given reviewer919 with Any920 returns a 400921 with None922 returns a 400923 with reviewer_username924 returns merge requests that do not have the given reviewer925 when both reviewer_id and reviewer_username926 returns a 400927 source_branch param928 returns merge requests with the given source branch929 target_branch param930 returns merge requests with the given target branch931 caching932 when it is cached933 behaves like a cached MergeRequest api request934 serializes merge request935 when it is not cached936 when the status changes937 behaves like a non-cached MergeRequest api request938 serializes merge request939 when the label changes940 behaves like a non-cached MergeRequest api request941 serializes merge request942 when the assignees change943 behaves like a non-cached MergeRequest api request944 serializes merge request945 when the reviewers change946 behaves like a non-cached MergeRequest api request947 serializes merge request948 when another user requests949 behaves like a non-cached MergeRequest api request950 serializes merge request951 when filtering by deployments952 supports getting merge requests deployed to an environment953 does not return merge requests for an environment without deployments954 supports getting merge requests deployed after a date955 does not return merge requests not deployed after a given date956 supports getting merge requests deployed before a date957 does not return merge requests not deployed before a given date958 when user is an inherited member from the group959 and user is a guest960 when project is public with private merge requests961 behaves like user cannot view merge requests962 returns 403 forbidden963 when project is private964 behaves like user cannot view merge requests965 returns 403 forbidden966 GET /groups/:id/merge_requests967 behaves like merge requests list968 when unauthenticated969 returns merge requests for public projects970 when merge request is unchecked971 with merge status recheck projection972 does not enqueue a merge status recheck973 behaves like issuable API rate-limited search974 behaves like rate limited endpoint975 when rate limiter enabled976 logs request and declines it when endpoint called more than the threshold977 when rate limiter is disabled978 does not log request and does not block the request979 behaves like rate limited endpoint980 when rate limiter enabled981 logs request and declines it when endpoint called more than the threshold982 when rate limiter is disabled983 does not log request and does not block the request984 when authenticated985 returns an array of all merge_requests using simple mode986 returns an array of all merge_requests987 returns an array of open merge_requests988 returns an array of closed merge_requests989 returns an array of merged merge_requests990 matches V4 response schema991 returns an empty array if no issue matches milestone992 returns an empty array if milestone does not exist993 returns an array of merge requests in given milestone994 returns an array of merge requests matching state in milestone995 returns an array of labeled merge requests that are merged for a milestone996 when merge request is unchecked997 with a developer+ role998 with merge status recheck projection999 checks mergeability asynchronously1000 without merge status recheck projection1001 does not enqueue a merge status recheck1002 with a reporter role1003 with merge status recheck projection1004 does not enqueue a merge status recheck1005 when restrict_merge_status_recheck FF is disabled1006 with merge status recheck projection1007 does enqueue a merge status recheck1008 with labels1009 returns an array of all merge_requests1010 with labels_details1011 returns labels with details1012 when DB timeouts occur1013 returns a :request_timeout status1014 with approved param1015 returns only approved merge requests1016 returns only non-approved merge requests1017 with labels1018 returns an array of labeled merge requests1019 returns an array of labeled merge requests where all labels match1020 returns an empty array if no merge request matches labels1021 returns an array of labeled merge requests where all labels match1022 returns an array of merge requests with any label when filtering by any label1023 returns an array of merge requests with any label when filtering by any label1024 returns an array of merge requests with any label when filtering by any label1025 returns an array of merge requests without a label when filtering by no label1026 with ordering1027 returns an array of merge_requests in ascending order1028 returns an array of merge_requests in descending order1029 returns an array of merge_requests ordered by updated_at1030 returns an array of merge_requests ordered by created_at1031 2 merge requests with equal created_at1032 page breaks first page correctly1033 page breaks second page correctly1034 returns an array of merge_requests ordered by title1035 asc when requested1036 desc when requested1037 NOT params1038 returns merge requests without any of the labels given1039 returns merge requests without any of the milestones given1040 returns merge requests without the author given1041 returns merge requests without the assignee given1042 filter by reviewer1043 with reviewer_id1044 with an id1045 returns merge requests that do not have the given reviewer1046 with Any1047 returns a 4001048 with None1049 returns a 4001050 with reviewer_username1051 returns merge requests that do not have the given reviewer1052 when both reviewer_id and reviewer_username1053 returns a 4001054 source_branch param1055 returns merge requests with the given source branch1056 target_branch param1057 returns merge requests with the given target branch1058 when have subgroups1059 behaves like merge requests list1060 when unauthenticated1061 returns merge requests for public projects1062 when merge request is unchecked1063 with merge status recheck projection1064 does not enqueue a merge status recheck1065 behaves like issuable API rate-limited search1066 behaves like rate limited endpoint1067 when rate limiter enabled1068 logs request and declines it when endpoint called more than the threshold1069 when rate limiter is disabled1070 does not log request and does not block the request1071 behaves like rate limited endpoint1072 when rate limiter enabled1073 logs request and declines it when endpoint called more than the threshold1074 when rate limiter is disabled1075 does not log request and does not block the request1076 when authenticated1077 returns an array of all merge_requests using simple mode1078 returns an array of all merge_requests1079 returns an array of open merge_requests1080 returns an array of closed merge_requests1081 returns an array of merged merge_requests1082 matches V4 response schema1083 returns an empty array if no issue matches milestone1084 returns an empty array if milestone does not exist1085 returns an array of merge requests in given milestone1086 returns an array of merge requests matching state in milestone1087 returns an array of labeled merge requests that are merged for a milestone1088 when merge request is unchecked1089 with a developer+ role1090 with merge status recheck projection1091 checks mergeability asynchronously1092 without merge status recheck projection1093 does not enqueue a merge status recheck1094 with a reporter role1095 with merge status recheck projection1096 does not enqueue a merge status recheck1097 when restrict_merge_status_recheck FF is disabled1098 with merge status recheck projection1099 does enqueue a merge status recheck1100 with labels1101 returns an array of all merge_requests1102 with labels_details1103 returns labels with details1104 when DB timeouts occur1105 returns a :request_timeout status1106 with approved param1107 returns only approved merge requests1108 returns only non-approved merge requests1109 with labels1110 returns an array of labeled merge requests1111 returns an array of labeled merge requests where all labels match1112 returns an empty array if no merge request matches labels1113 returns an array of labeled merge requests where all labels match1114 returns an array of merge requests with any label when filtering by any label1115 returns an array of merge requests with any label when filtering by any label1116 returns an array of merge requests with any label when filtering by any label1117 returns an array of merge requests without a label when filtering by no label1118 with ordering1119 returns an array of merge_requests in ascending order1120 returns an array of merge_requests in descending order1121 returns an array of merge_requests ordered by updated_at1122 returns an array of merge_requests ordered by created_at1123 2 merge requests with equal created_at1124 page breaks first page correctly1125 page breaks second page correctly1126 returns an array of merge_requests ordered by title1127 asc when requested1128 desc when requested1129 NOT params1130 returns merge requests without any of the labels given1131 returns merge requests without any of the milestones given1132 returns merge requests without the author given1133 returns merge requests without the assignee given1134 filter by reviewer1135 with reviewer_id1136 with an id1137 returns merge requests that do not have the given reviewer1138 with Any1139 returns a 4001140 with None1141 returns a 4001142 with reviewer_username1143 returns merge requests that do not have the given reviewer1144 when both reviewer_id and reviewer_username1145 returns a 4001146 source_branch param1147 returns merge requests with the given source branch1148 target_branch param1149 returns merge requests with the given target branch1150 #to_reference1151 exposes reference path in context of group1152 referencing from parent group1153 exposes reference path in context of parent group1154 with archived projects1155 returns an array excluding merge_requests from archived projects1156 with non_archived param set as false1157 returns an array including merge_requests from archived projects1158 GET /projects/:id/merge_requests/:merge_request_iid1159 matches json schema1160 exposes known attributes1161 exposes description and title html when render_html is true1162 exposes rebase_in_progress when include_rebase_in_progress is true1163 returns the commits behind the target branch when include_diverged_commits_count is present1164 returns a 404 error if merge_request_iid not found1165 returns a 404 error if merge_request `id` is used instead of iid1166 indicates if a user cannot merge the MR1167 returns `checking` as its merge_status instead of `cannot_be_merged_rechecking`1168 when author is not a member without any merged merge requests1169 exposes first_contribution as true1170 when merge request author has only guest access1171 behaves like rejects user from accessing merge request info1172 returns a 403 error1173 merge_request_metrics1174 has fields from merge request metrics1175 returns correct values1176 merge_user1177 when MR is set to MWPS1178 returns user who set MWPS1179 when MR is already merged1180 returns user who actually merged1181 head_pipeline1182 when user can read the pipeline1183 exposes pipeline information1184 when user can not read the pipeline1185 does not expose pipeline information1186 Draft1187 returns merge request1188 when a merge request has more than the changes limit1189 returns a string indicating that more changes were made1190 for forked projects1191 includes the `allow_collaboration` field1192 when merge request is unchecked1193 checks mergeability asynchronously1194 GET /projects/:id/merge_requests/:merge_request_iid/participants1195 behaves like issuable participants endpoint1196 returns participants1197 returns a 404 when iid does not exist1198 returns a 404 when id is used instead of iid1199 when merge request author has only guest access1200 behaves like rejects user from accessing merge request info1201 returns a 403 error1202 GET /projects/:id/merge_requests/:merge_request_iid/reviewers1203 returns reviewers1204 returns a 404 when iid does not exist1205 returns a 404 when id is used instead of iid1206 when merge request author has only guest access1207 behaves like rejects user from accessing merge request info1208 returns a 403 error1209 GET /projects/:id/merge_requests/:merge_request_iid/commits1210 returns a 200 when merge request is valid1211 returns a 404 when merge_request_iid not found1212 returns a 404 when merge_request id is used instead of iid1213 when merge request author has only guest access1214 behaves like rejects user from accessing merge request info1215 returns a 403 error1216 GET /projects/:id/merge_requests/:merge_request_iid/:context_commits1217 returns a 200 when merge request is valid1218 returns a 404 when merge_request_iid not found1219 GET /projects/:id/merge_requests/:merge_request_iid/changes1220 returns a 404 when merge_request_iid not found1221 returns a 404 when merge_request id is used instead of iid1222 returns the overflow status as false1223 when merge request author has only guest access1224 behaves like rejects user from accessing merge request info1225 returns a 403 error1226 behaves like find an existing merge request1227 returns the change information of the merge_request1228 behaves like accesses diffs via raw_diffs1229 as expected1230 when using DB-backed diffs1231 accesses diffs via DB-backed diffs.diffs1232 behaves like find an existing merge request1233 returns the change information of the merge_request1234 when the diff_collection has overflowed its size limits1235 returns the overflow status as true1236 when access_raw_diffs is true1237 behaves like accesses diffs via raw_diffs1238 as expected1239 GET /projects/:id/merge_requests/:merge_request_iid/diffs1240 returns a 404 when merge_request_iid not found1241 returns a 404 when merge_request id is used instead of iid1242 returns the diffs of the merge_request1243 when merge request author has only guest access1244 behaves like rejects user from accessing merge request info1245 returns a 403 error1246 when pagination params are present1247 returns limited diffs1248 GET /projects/:id/merge_requests/:merge_request_iid/pipelines1249 when authorized1250 returns a paginated array of corresponding pipelines1251 exposes basic attributes1252 returns 404 if MR does not exist1253 when unauthorized1254 returns 4031255 when merge request author has only guest access1256 behaves like rejects user from accessing merge request info1257 returns a 403 error1258 POST /projects/:id/merge_requests/:merge_request_iid/pipelines1259 when authorized1260 creates and returns the new Pipeline1261 when unauthorized1262 responds with a blank 4041263 when the merge request does not exist1264 responds with a blank 4041265 when the .gitlab-ci.yml file is invalid1266 creates a failed pipeline1267 POST /projects/:id/merge_requests1268 support for deprecated assignee_id1269 creates a new merge request1270 creates a new merge request when assignee_id is empty1271 filters assignee_id of unauthorized user1272 single assignee restrictions1273 creates a new project merge request with no more than one assignee1274 accepts reviewer_ids1275 creates a new merge request with a reviewer1276 creates a new merge request with no reviewer1277 between branches projects1278 returns 422 when source_branch equals target_branch1279 returns 400 when source_branch is missing1280 returns 400 when target_branch is missing1281 returns 400 when title is missing1282 different labels1283 creates merge request with special label names1284 creates merge request with special label names as array1285 empty label param does not add any labels1286 empty label param as array does not add any labels, but only explicitly as json1287 empty label param as array, does not add any labels1288 array with one empty string element does not add labels1289 array with multiple empty string elements, does not add labels1290 behaves like creates merge request with labels1291 returns merge_request1292 behaves like creates merge request with labels1293 returns merge_request1294 behaves like creates merge request with labels1295 returns merge_request1296 with existing MR1297 returns 409 when MR already exists for source/target1298 accepts remove_source_branch parameter1299 sets force_remove_source_branch to false1300 sets force_remove_source_branch to true1301 forked projects1302 returns merge_request1303 does not return 422 when source_branch equals target_branch1304 returns 403 when target project has disabled merge requests1305 returns 400 when source_branch is missing1306 returns 400 when target_branch is missing1307 returns 400 when title is missing1308 allows setting `allow_collaboration`1309 returns 201 when target_branch is specified and for the same project1310 when target_branch and target_project_id is specified1311 returns 422 if targeting a different fork1312 returns 403 if targeting a different fork which user can not access1313 when user is an inherited member from the group1314 and user is a guest1315 when project is public with private merge requests1316 behaves like user cannot create merge requests1317 returns 403 forbidden1318 when project is private1319 behaves like user cannot create merge requests1320 returns 403 forbidden1321 PUT /projects/:id/merge_requests/:merge_request_iid1322 behaves like issuable update endpoint1323 PUT /projects/:id/issues/:issue_iid1324 clears labels when labels param is nil1325 updates the issuable with labels param as array1326 clears milestone when milestone_id=01327 when only assignee_ids are provided1328 sets the assignees1329 creates appropriate system notes1330 triggers webhooks1331 when assignee_id=user2.id1332 sets the assignees1333 when assignee_id=01334 clears the assignees1335 creates appropriate system notes1336 when only assignee_ids are provided, and the list is empty1337 clears the assignees1338 when only assignee_ids are provided, and the list contains the sentinel value1339 clears the assignees1340 when only assignee_id=01341 clears the assignees1342 accepts reviewer_ids1343 adds a reviewer to the existing merge request1344 removes a reviewer from the existing merge request1345 POST /projects/:id/merge_requests/:merge_request_iid/context_commits1346 when authenticated1347 creates and returns the new context commit1348 returns 400 when one or more shas are invalid1349 returns 400 when the commits are empty1350 returns 400 when params is empty1351 returns 403 when creating new context commit for guest role1352 returns 403 when creating new context commit for reporter role1353 doesnt create when its already created1354 returns 400 when the context commit is already created1355 when unauthenticated1356 returns 401 if user tries to create context commits1357 DELETE /projects/:id/merge_requests/:merge_request_iid1358 when the user is developer1359 denies the deletion of the merge request1360 when the user is project owner1361 destroys the merge request owners can destroy1362 returns 404 for an invalid merge request IID1363 returns 404 if the merge request id is used instead of iid1364 behaves like 412 response1365 for a modified resource1366 returns 412 with a JSON error1367 for an unmodified resource1368 returns 204 with an empty body1369 DELETE /projects/:id/merge_requests/:merge_request_iid/context_commits1370 when authenticated1371 deletes context commit1372 returns 400 when invalid commit sha is passed1373 returns 400 when commits is empty1374 returns 400 when no params is passed1375 returns 403 when deleting existing context commit for guest role1376 returns 403 when deleting existing context commit for reporter role1377 when unauthenticated1378 returns 401, unauthorised error1379 PUT /projects/:id/merge_requests/:merge_request_iid/merge1380 returns merge_request in case of success1381 returns 422 if branch can't be merged1382 returns 405 if merge_request is not open1383 returns 405 if merge_request is a draft1384 returns 405 if the build failed for a merge request that requires success1385 returns 401 if user has no permissions to merge1386 returns 409 if the SHA parameter doesn't match1387 succeeds if the SHA parameter matches1388 updates the MR's squash attribute1389 does not merge if merge_when_pipeline_succeeds is passed and the pipeline has failed1390 merges if the head pipeline already succeeded and `merge_when_pipeline_succeeds` is passed1391 enables merge when pipeline succeeds if the pipeline is active1392 enables merge when pipeline succeeds if the pipeline is active and only_allow_merge_if_pipeline_succeeds is true1393 returns 404 for an invalid merge request IID1394 returns 404 if the merge request id is used instead of iid1395 when the merge request fails to merge1396 returns 4221397 the squash_commit_message param1398 results in a specific squash commit message when set1399 results in a default squash commit message when not set1400 the should_remove_source_branch param1401 removes the source branch when set1402 with a merge request that has force_remove_source_branch enabled1403 removes the source branch1404 does not remove the source branch1405 performing a ff-merge with squash1406 records the squash commit SHA and returns it in the response1407 GET /projects/:id/merge_requests/:merge_request_iid/merge_ref1408 returns the generated ID from the merge service in case of success1409 when merge-ref is not synced with merge status1410 returns 200 if MR can be merged1411 returns 400 if MR cannot be merged1412 when user has no access to the MR1413 returns 4041414 when invalid merge request IID1415 returns 4041416 when merge request ID is used instead IID1417 returns 4041418 PUT /projects/:id/merge_requests/:merge_request_iid1419 updates title and returns merge_request1420 updates description and returns merge_request1421 updates milestone_id and returns merge_request1422 updates squash and returns merge_request1423 updates target_branch and returns merge_request1424 returns merge_request that removes the source branch1425 filters assignee_id of unauthorized user1426 does not update state when title is empty1427 does not update state when target_branch is empty1428 returns 404 for an invalid merge request IID1429 returns 404 if the merge request id is used instead of iid1430 updates force_remove_source_branch properly1431 sets to false1432 sets to true1433 with a merge request across forks1434 is true for an authorized user1435 is false for an unauthorized user1436 to close a MR1437 returns merge_request1438 forked projects1439 when source project is public (i.e. MergeRequest#collaborative_push_possible? == true)1440 behaves like update of allow_collaboration and allow_maintainer_to_push1441 attempts to update allow_collaboration to true and returns true for `allow_collaboration`1442 attempts to update allow_maintainer_to_push to true and returns true for `allow_collaboration`1443 when source project is private (i.e. MergeRequest#collaborative_push_possible? == false)1444 behaves like update of allow_collaboration and allow_maintainer_to_push1445 attempts to update allow_collaboration to true and returns false for `allow_collaboration`1446 attempts to update allow_maintainer_to_push to true and returns false for `allow_collaboration`1447 when updating labels1448 allows special label names1449 also accepts labels as an array1450 empty label param removes labels1451 label param as empty array, but only explicitly as json, removes labels1452 empty label as array, removes labels1453 array with one empty string element removes labels1454 array with multiple empty string elements, removes labels1455 with labels1456 when adding labels, keeps existing labels and adds new1457 when removing labels, only removes those specified1458 when removing all labels, keeps no labels1459 GET :id/merge_requests/:merge_request_iid/closes_issues1460 returns the issue that will be closed on merge1461 returns an empty array when there are no issues to be closed1462 handles external issues1463 returns 403 if the user has no access to the merge request1464 returns 404 for an invalid merge request IID1465 returns 404 if the merge request id is used instead of iid1466 POST :id/merge_requests/:merge_request_iid/subscribe1467 subscribes to a merge request1468 returns 304 if already subscribed1469 returns 404 if the merge request is not found1470 returns 404 if the merge request id is used instead of iid1471 returns 403 if user has no access to read code1472 behaves like POST request permissions for admin mode1473 behaves like when admin1474 behaves like makes request1475 returns1476 behaves like makes request1477 returns1478 behaves like when user1479 returns1480 behaves like makes request1481 returns1482 POST :id/merge_requests/:merge_request_iid/unsubscribe1483 unsubscribes from a merge request1484 returns 304 if not subscribed1485 returns 404 if the merge request is not found1486 returns 404 if the merge request id is used instead of iid1487 returns 403 if user has no access to read code1488 POST :id/merge_requests/:merge_request_iid/cancel_merge_when_pipeline_succeeds1489 removes the merge_when_pipeline_succeeds status1490 returns 404 if the merge request is not found1491 returns 404 if the merge request id is used instead of iid1492 PUT :id/merge_requests/:merge_request_iid/rebase1493 returns 403 if the user cannot push to the branch1494 returns 409 if a rebase is already in progress1495 returns 409 if rebase can't lock the row1496 when rebase can be performed1497 enqueues a rebase of the merge request against the target branch1498 when skip_ci parameter is set1499 enqueues a rebase of the merge request with skip_ci flag set1500 when merge request branch does not allow force push1501 returns 4031502 Time tracking1503 POST /projects/:id/merge_requests/:merge_request_id/time_estimate1504 sets the time estimate for merge_request1505 with an unauthorized user1506 behaves like an unauthorized API user1507 is expected to eq 4031508 behaves like API user with insufficient permissions1509 with non member that is the author1510 behaves like an unauthorized API user1511 is expected to eq 4031512 updating the current estimate1513 when duration has a bad format1514 does not modify the original estimate1515 with a valid duration1516 updates the estimate1517 POST /projects/:id/merge_requests/:merge_request_id/reset_time_estimate1518 resets the time estimate for merge_request1519 with an unauthorized user1520 behaves like an unauthorized API user1521 is expected to eq 4031522 behaves like API user with insufficient permissions1523 with non member that is the author1524 behaves like an unauthorized API user1525 is expected to eq 4031526 POST /projects/:id/merge_requests/:merge_request_id/add_spent_time1527 add spent time for merge_request1528 calls update service with :use_specialized_service param1529 with an unauthorized user1530 behaves like an unauthorized API user1531 is expected to eq 4031532 behaves like API user with insufficient permissions1533 with non member that is the author1534 behaves like an unauthorized API user1535 is expected to eq 4031536 when subtracting time1537 subtracts time of the total spent time1538 when time to subtract is greater than the total spent time1539 does not modify the total time spent1540 POST /projects/:id/merge_requests/:merge_request_id/reset_spent_time1541 resets spent time for merge_request1542 with an unauthorized user1543 behaves like an unauthorized API user1544 is expected to eq 4031545 behaves like API user with insufficient permissions1546 with non member that is the author1547 behaves like an unauthorized API user1548 is expected to eq 4031549 GET /projects/:id/merge_requests/:merge_request_id/time_stats1550 returns the time stats for merge_request1551Admin::ApplicationSettingsController1552 GET #integrations1553 when GitLab.com1554 returns 4041555 when not GitLab.com1556 renders correct template1557 GET #usage_data with no access1558 returns 4041559 GET #usage_data1560 returns HTML data1561/builds/gitlab-org/gitlab/vendor/ruby/3.0.0/gems/ohai-17.9.0/lib/ohai/plugins/rpm.rb:25: warning: already initialized constant MACROS_MARKER1562/builds/gitlab-org/gitlab/vendor/ruby/3.0.0/gems/ohai-17.9.0/lib/ohai/plugins/rpm.rb:25: warning: previous definition of MACROS_MARKER was here1563/builds/gitlab-org/gitlab/vendor/ruby/3.0.0/gems/ohai-17.9.0/lib/ohai/plugins/rpm.rb:27: warning: already initialized constant DO_NOT_SPLIT1564/builds/gitlab-org/gitlab/vendor/ruby/3.0.0/gems/ohai-17.9.0/lib/ohai/plugins/rpm.rb:27: warning: previous definition of DO_NOT_SPLIT was here1565 returns JSON data1566 when there are recent ServicePing reports1567 attempts to use prerecorded data1568 when there are NO recent ServicePing reports1569/builds/gitlab-org/gitlab/vendor/ruby/3.0.0/gems/ohai-17.9.0/lib/ohai/plugins/rpm.rb:25: warning: already initialized constant MACROS_MARKER1570/builds/gitlab-org/gitlab/vendor/ruby/3.0.0/gems/ohai-17.9.0/lib/ohai/plugins/rpm.rb:25: warning: previous definition of MACROS_MARKER was here1571/builds/gitlab-org/gitlab/vendor/ruby/3.0.0/gems/ohai-17.9.0/lib/ohai/plugins/rpm.rb:27: warning: already initialized constant DO_NOT_SPLIT1572/builds/gitlab-org/gitlab/vendor/ruby/3.0.0/gems/ohai-17.9.0/lib/ohai/plugins/rpm.rb:27: warning: previous definition of DO_NOT_SPLIT was here1573 calculates data on the fly1574 usage data counter1575/builds/gitlab-org/gitlab/vendor/ruby/3.0.0/gems/ohai-17.9.0/lib/ohai/plugins/rpm.rb:25: warning: already initialized constant MACROS_MARKER1576/builds/gitlab-org/gitlab/vendor/ruby/3.0.0/gems/ohai-17.9.0/lib/ohai/plugins/rpm.rb:25: warning: previous definition of MACROS_MARKER was here1577/builds/gitlab-org/gitlab/vendor/ruby/3.0.0/gems/ohai-17.9.0/lib/ohai/plugins/rpm.rb:27: warning: already initialized constant DO_NOT_SPLIT1578/builds/gitlab-org/gitlab/vendor/ruby/3.0.0/gems/ohai-17.9.0/lib/ohai/plugins/rpm.rb:27: warning: previous definition of DO_NOT_SPLIT was here1579 incremented when json generated1580/builds/gitlab-org/gitlab/vendor/ruby/3.0.0/gems/ohai-17.9.0/lib/ohai/plugins/rpm.rb:25: warning: already initialized constant MACROS_MARKER1581/builds/gitlab-org/gitlab/vendor/ruby/3.0.0/gems/ohai-17.9.0/lib/ohai/plugins/rpm.rb:25: warning: previous definition of MACROS_MARKER was here1582/builds/gitlab-org/gitlab/vendor/ruby/3.0.0/gems/ohai-17.9.0/lib/ohai/plugins/rpm.rb:27: warning: already initialized constant DO_NOT_SPLIT1583/builds/gitlab-org/gitlab/vendor/ruby/3.0.0/gems/ohai-17.9.0/lib/ohai/plugins/rpm.rb:27: warning: previous definition of DO_NOT_SPLIT was here1584 not incremented when html format requested1585 PUT #update1586 updates the password_authentication_enabled_for_git setting1587 updates the default_project_visibility for string value1588 update the restricted levels for string values1589 updates the restricted_visibility_levels when empty array is passed1590 updates the receive_max_input_size setting1591 updates the default_preferred_language for string value1592 updates the default_project_creation for string value1593 updates minimum_password_length setting1594 updates repository_storages_weighted setting1595 updates kroki_formats setting1596 updates default_branch_name setting1597 updates valid_runner_registrars setting1598 updates GitLab for Slack app settings1599 boolean attributes1600 behaves like updates boolean attribute1601 is expected to eq true1602 behaves like updates boolean attribute1603 is expected to eq false1604 behaves like updates boolean attribute1605 is expected to eq true1606 behaves like updates boolean attribute1607 is expected to eq false1608 behaves like updates boolean attribute1609 is expected to eq false1610 personal access token prefix settings1611 with valid prefix1612 updates personal_access_token_prefix setting1613 with blank prefix1614 updates personal_access_token_prefix setting1615 with too long prefix1616 does not update personal_access_token_prefix setting1617 with invalid characters prefix1618 does not update personal_access_token_prefix setting1619 external policy classification settings1620 updates settings when the feature is available1621 verify panel actions1622 behaves like renders correct panels1623 renders correct action on error1624 redirects to same panel on success1625 behaves like renders correct panels1626 renders correct action on error1627 redirects to same panel on success1628 behaves like renders correct panels1629 renders correct action on error1630 redirects to same panel on success1631 behaves like renders correct panels1632 renders correct action on error1633 redirects to same panel on success1634 behaves like renders correct panels1635 renders correct action on error1636 redirects to same panel on success1637 behaves like renders correct panels1638 renders correct action on error1639 redirects to same panel on success1640 behaves like renders correct panels1641 renders correct action on error1642 redirects to same panel on success1643 EKS integration1644 updates EKS settings1645 secret access key is blank1646 does not update the secret key1647 Terraform settings1648 max_terraform_state_size_bytes1649 updates the receive_max_input_size setting1650 user_email_lookup_limit aliasing1651 when search_rate_limit is specified1652 updates search_rate_limit with correct value1653 when search_rate_limit is not specified1654 applies user_email_lookup_limit value to search_rate_limit1655 pipeline creation rate limiting1656 updates pipeline_limit_per_project_user_sha setting1657 invitation flow enforcement setting1658 updates invitation_flow_enforcement setting1659 maximum includes1660 updates ci_max_includes setting1661 PUT #reset_registration_token1662 resets runner registration token1663 redirects the user to admin runners page1664 PUT #reset_error_tracking_access_token1665 resets error_tracking_access_token1666 redirects the user to application settings page1667 GET #lets_encrypt_terms_of_service1668 redirects the user to the terms of service page1669 GET #service_usage_data1670 assigns truthy value if there are recent ServicePing reports in database1671 assigns truthy value if there are recent ServicePing reports in cache1672 assigns falsey value if there are NO recent ServicePing reports1673Rack Attack global throttles1674 unauthenticated API requests1675 behaves like rate-limited unauthenticated requests1676 when the throttle is enabled1677 rejects requests over the rate limit1678 allows requests after throttling and then waiting for the next period1679 counts requests from different IPs separately1680 logs RackAttack info into structured logs1681 with custom response text1682 rejects requests over the rate limit1683 when the request is not matched by the throttle1684 does not throttle the requests1685 when the request is to the api internal endpoints1686 allows requests over the rate limit1687 when the request is authenticated by a runner token1688 does not count as unauthenticated1689 when the request is to a health endpoint1690 does not throttle the requests1691 when the request is to a container registry notification endpoint1692 does not throttle the requests1693 behaves like tracking when dry-run mode is set1694 does not throttle the requests when `*` is configured1695 logs RackAttack info into structured logs1696 when configured with the the throttled name in a list1697 does not throttle1698 when the throttle is disabled1699 allows requests over the rate limit1700 unauthenticated web requests1701 behaves like rate-limited unauthenticated requests1702 when the throttle is enabled1703 rejects requests over the rate limit1704 allows requests after throttling and then waiting for the next period1705 counts requests from different IPs separately1706 logs RackAttack info into structured logs1707 with custom response text1708 rejects requests over the rate limit1709 when the request is not matched by the throttle1710 does not throttle the requests1711 when the request is to the api internal endpoints1712 allows requests over the rate limit1713 when the request is authenticated by a runner token1714 does not count as unauthenticated1715 when the request is to a health endpoint1716 does not throttle the requests1717 when the request is to a container registry notification endpoint1718 does not throttle the requests1719 behaves like tracking when dry-run mode is set1720 does not throttle the requests when `*` is configured1721 logs RackAttack info into structured logs1722 when configured with the the throttled name in a list1723 does not throttle1724 when the throttle is disabled1725 allows requests over the rate limit1726 API requests from the frontend1727 when unauthenticated1728 behaves like rate-limited frontend API requests1729 with a CSRF token1730 uses the rate limit for web requests1731 without a CSRF session1732 always uses the rate limit for API requests1733 without a CSRF token1734 uses the rate limit for API requests1735 when authenticated1736 behaves like rate-limited frontend API requests1737 with a CSRF token1738 uses the rate limit for web requests1739 without a CSRF session1740 always uses the rate limit for API requests1741 without a CSRF token1742 uses the rate limit for API requests1743 API requests authenticated with personal access token1744 with the token in the query string1745 behaves like rate-limited user based token-authenticated requests1746 when the throttle is enabled1747 does not reject requests if the user is in the allowlist1748 when the throttle is enabled1749 rejects requests over the rate limit1750 allows requests after throttling and then waiting for the next period1751 counts requests from different requesters separately, even from the same IP1752 counts all requests from the same requesters, even via different IPs1753 logs RackAttack info into structured logs1754 behaves like tracking when dry-run mode is set1755 does not throttle the requests when `*` is configured1756 logs RackAttack info into structured logs1757 when configured with the the throttled name in a list1758 does not throttle1759 when the throttle is disabled1760 allows requests over the rate limit1761 with the token in the headers1762 behaves like rate-limited user based token-authenticated requests1763 when the throttle is enabled1764 does not reject requests if the user is in the allowlist1765 when the throttle is enabled1766 rejects requests over the rate limit1767 allows requests after throttling and then waiting for the next period1768 counts requests from different requesters separately, even from the same IP1769 counts all requests from the same requesters, even via different IPs1770 logs RackAttack info into structured logs1771 behaves like tracking when dry-run mode is set1772 does not throttle the requests when `*` is configured1773 logs RackAttack info into structured logs1774 when configured with the the throttled name in a list1775 does not throttle1776 when the throttle is disabled1777 allows requests over the rate limit1778 with the token in the OAuth headers1779 behaves like rate-limited user based token-authenticated requests1780 when the throttle is enabled1781 does not reject requests if the user is in the allowlist1782 when the throttle is enabled1783 rejects requests over the rate limit1784 allows requests after throttling and then waiting for the next period1785 counts requests from different requesters separately, even from the same IP1786 counts all requests from the same requesters, even via different IPs1787 logs RackAttack info into structured logs1788 behaves like tracking when dry-run mode is set1789 does not throttle the requests when `*` is configured1790 logs RackAttack info into structured logs1791 when configured with the the throttled name in a list1792 does not throttle1793 when the throttle is disabled1794 allows requests over the rate limit1795 with the token in basic auth1796 behaves like rate-limited user based token-authenticated requests1797 when the throttle is enabled1798 does not reject requests if the user is in the allowlist1799 when the throttle is enabled1800 rejects requests over the rate limit1801 allows requests after throttling and then waiting for the next period1802 counts requests from different requesters separately, even from the same IP1803 counts all requests from the same requesters, even via different IPs1804 logs RackAttack info into structured logs1805 behaves like tracking when dry-run mode is set1806 does not throttle the requests when `*` is configured1807 logs RackAttack info into structured logs1808 when configured with the the throttled name in a list1809 does not throttle1810 when the throttle is disabled1811 allows requests over the rate limit1812 with a read_api scope1813 with the token in the headers1814 behaves like rate-limited user based token-authenticated requests1815 when the throttle is enabled1816 does not reject requests if the user is in the allowlist1817 when the throttle is enabled1818 rejects requests over the rate limit1819 allows requests after throttling and then waiting for the next period1820 counts requests from different requesters separately, even from the same IP1821 counts all requests from the same requesters, even via different IPs1822 logs RackAttack info into structured logs1823 behaves like tracking when dry-run mode is set1824 does not throttle the requests when `*` is configured1825 logs RackAttack info into structured logs1826 when configured with the the throttled name in a list1827 does not throttle1828 when the throttle is disabled1829 allows requests over the rate limit1830 with the token in the OAuth headers1831 behaves like rate-limited user based token-authenticated requests1832 when the throttle is enabled1833 does not reject requests if the user is in the allowlist1834 when the throttle is enabled1835 rejects requests over the rate limit1836 allows requests after throttling and then waiting for the next period1837 counts requests from different requesters separately, even from the same IP1838 counts all requests from the same requesters, even via different IPs1839 logs RackAttack info into structured logs1840 behaves like tracking when dry-run mode is set1841 does not throttle the requests when `*` is configured1842 logs RackAttack info into structured logs1843 when configured with the the throttled name in a list1844 does not throttle1845 when the throttle is disabled1846 allows requests over the rate limit1847 API requests authenticated with OAuth token1848 with the token in the query string1849 behaves like rate-limited user based token-authenticated requests1850 when the throttle is enabled1851 does not reject requests if the user is in the allowlist1852 when the throttle is enabled1853 rejects requests over the rate limit1854 allows requests after throttling and then waiting for the next period1855 counts requests from different requesters separately, even from the same IP1856 counts all requests from the same requesters, even via different IPs1857 logs RackAttack info into structured logs1858 behaves like tracking when dry-run mode is set1859 does not throttle the requests when `*` is configured1860 logs RackAttack info into structured logs1861 when configured with the the throttled name in a list1862 does not throttle1863 when the throttle is disabled1864 allows requests over the rate limit1865 with the token in the headers1866 behaves like rate-limited user based token-authenticated requests1867 when the throttle is enabled1868 does not reject requests if the user is in the allowlist1869 when the throttle is enabled1870 rejects requests over the rate limit1871 allows requests after throttling and then waiting for the next period1872 counts requests from different requesters separately, even from the same IP1873 counts all requests from the same requesters, even via different IPs1874 logs RackAttack info into structured logs1875 behaves like tracking when dry-run mode is set1876 does not throttle the requests when `*` is configured1877 logs RackAttack info into structured logs1878 when configured with the the throttled name in a list1879 does not throttle1880 when the throttle is disabled1881 allows requests over the rate limit1882 with a read_api scope1883 behaves like rate-limited user based token-authenticated requests1884 when the throttle is enabled1885 does not reject requests if the user is in the allowlist1886 when the throttle is enabled1887 rejects requests over the rate limit1888 allows requests after throttling and then waiting for the next period1889 counts requests from different requesters separately, even from the same IP1890 counts all requests from the same requesters, even via different IPs1891 logs RackAttack info into structured logs1892 behaves like tracking when dry-run mode is set1893 does not throttle the requests when `*` is configured1894 logs RackAttack info into structured logs1895 when configured with the the throttled name in a list1896 does not throttle1897 when the throttle is disabled1898 allows requests over the rate limit1899 "web" (non-API) requests authenticated with RSS token1900 with the token in the query string1901 behaves like rate-limited user based token-authenticated requests1902 when the throttle is enabled1903 does not reject requests if the user is in the allowlist1904 when the throttle is enabled1905 rejects requests over the rate limit1906 allows requests after throttling and then waiting for the next period1907 counts requests from different requesters separately, even from the same IP1908 counts all requests from the same requesters, even via different IPs1909 logs RackAttack info into structured logs1910 behaves like tracking when dry-run mode is set1911 does not throttle the requests when `*` is configured1912 logs RackAttack info into structured logs1913 when configured with the the throttled name in a list1914 does not throttle1915 when the throttle is disabled1916 allows requests over the rate limit1917 web requests authenticated with regular login1918 behaves like rate-limited web authenticated requests1919 when the throttle is enabled1920 rejects requests over the rate limit1921 does not reject requests if the user is in the allowlist1922 allows requests after throttling and then waiting for the next period1923 counts requests from different users separately, even from the same IP1924 counts all requests from the same user, even via different IPs1925 logs RackAttack info into structured logs1926 behaves like tracking when dry-run mode is set1927 does not throttle the requests when `*` is configured1928 logs RackAttack info into structured logs1929 when configured with the the throttled name in a list1930 does not throttle1931 when the throttle is disabled1932 allows requests over the rate limit1933 protected paths1934 unauthenticated requests1935 when protected paths throttle is disabled1936 allows requests over the rate limit1937 when protected paths throttle is enabled1938 rejects requests over the rate limit1939 allows non-POST requests to protected paths over the rate limit1940 allows POST requests to unprotected paths over the rate limit1941 behaves like tracking when dry-run mode is set1942 does not throttle the requests when `*` is configured1943 logs RackAttack info into structured logs1944 when configured with the the throttled name in a list1945 does not throttle1946 API requests authenticated with personal access token1947 with the token in the query string1948 behaves like rate-limited user based token-authenticated requests1949 when the throttle is enabled1950 does not reject requests if the user is in the allowlist1951 when the throttle is enabled1952 rejects requests over the rate limit1953 allows requests after throttling and then waiting for the next period1954 counts requests from different requesters separately, even from the same IP1955 counts all requests from the same requesters, even via different IPs1956 logs RackAttack info into structured logs1957 behaves like tracking when dry-run mode is set1958 does not throttle the requests when `*` is configured1959 logs RackAttack info into structured logs1960 when configured with the the throttled name in a list1961 does not throttle1962 when the throttle is disabled1963 allows requests over the rate limit1964 with the token in the headers1965 behaves like rate-limited user based token-authenticated requests1966 when the throttle is enabled1967 does not reject requests if the user is in the allowlist1968 when the throttle is enabled1969 rejects requests over the rate limit1970 allows requests after throttling and then waiting for the next period1971 counts requests from different requesters separately, even from the same IP1972 counts all requests from the same requesters, even via different IPs1973 logs RackAttack info into structured logs1974 behaves like tracking when dry-run mode is set1975 does not throttle the requests when `*` is configured1976 logs RackAttack info into structured logs1977 when configured with the the throttled name in a list1978 does not throttle1979 when the throttle is disabled1980 allows requests over the rate limit1981 web requests authenticated with regular login1982 behaves like rate-limited web authenticated requests1983 when the throttle is enabled1984 rejects requests over the rate limit1985 does not reject requests if the user is in the allowlist1986 allows requests after throttling and then waiting for the next period1987 counts requests from different users separately, even from the same IP1988 counts all requests from the same user, even via different IPs1989 logs RackAttack info into structured logs1990 behaves like tracking when dry-run mode is set1991 does not throttle the requests when `*` is configured1992 logs RackAttack info into structured logs1993 when configured with the the throttled name in a list1994 does not throttle1995 when the throttle is disabled1996 allows requests over the rate limit1997 Packages API1998 unauthenticated1999 when unauthenticated packages api throttle is disabled2000 allows requests over the rate limit2001 when unauthenticated api throttle is enabled2002 rejects requests over the unauthenticated api rate limit2003 when unauthenticated web throttle is enabled2004 ignores unauthenticated web throttle2005 when unauthenticated packages api throttle is enabled2006 rejects requests over the rate limit2007 when unauthenticated api throttle is lower2008 ignores unauthenticated api throttle2009 behaves like tracking when dry-run mode is set2010 does not throttle the requests when `*` is configured2011 logs RackAttack info into structured logs2012 when configured with the the throttled name in a list2013 does not throttle2014 authenticated2015 with the token in the query string2016 behaves like rate-limited user based token-authenticated requests2017 when the throttle is enabled2018 does not reject requests if the user is in the allowlist2019 when the throttle is enabled2020 rejects requests over the rate limit2021 allows requests after throttling and then waiting for the next period2022 counts requests from different requesters separately, even from the same IP2023 counts all requests from the same requesters, even via different IPs2024 logs RackAttack info into structured logs2025 behaves like tracking when dry-run mode is set2026 does not throttle the requests when `*` is configured2027 logs RackAttack info into structured logs2028 when configured with the the throttled name in a list2029 does not throttle2030 when the throttle is disabled2031 allows requests over the rate limit2032 with the token in the headers2033 behaves like rate-limited user based token-authenticated requests2034 when the throttle is enabled2035 does not reject requests if the user is in the allowlist2036 when the throttle is enabled2037 rejects requests over the rate limit2038 allows requests after throttling and then waiting for the next period2039 counts requests from different requesters separately, even from the same IP2040 counts all requests from the same requesters, even via different IPs2041 logs RackAttack info into structured logs2042 behaves like tracking when dry-run mode is set2043 does not throttle the requests when `*` is configured2044 logs RackAttack info into structured logs2045 when configured with the the throttled name in a list2046 does not throttle2047 when the throttle is disabled2048 allows requests over the rate limit2049 precedence over authenticated api throttle2050 when authenticated packages api throttle is enabled2051 when authenticated api throttle is lower2052 ignores authenticated api throttle2053 when authenticated packages api throttle is disabled2054 when authenticated api throttle is enabled2055 rejects requests over the authenticated api rate limit2056 authenticated via deploy token headers2057 behaves like rate-limited deploy-token-authenticated requests2058 when the throttle is enabled2059 rejects requests over the rate limit2060 allows requests after throttling and then waiting for the next period2061 counts requests from different requesters separately, even from the same IP2062 counts all requests from the same requesters, even via different IPs2063 logs RackAttack info into structured logs2064 behaves like tracking when dry-run mode is set2065 does not throttle the requests when `*` is configured2066 logs RackAttack info into structured logs2067 when configured with the the throttled name in a list2068 does not throttle2069 when the throttle is disabled2070 allows requests over the rate limit2071 dependency proxy2072 getting a manifest2073 behaves like rate-limited user based token-authenticated requests2074 when the throttle is enabled2075 does not reject requests if the user is in the allowlist2076 when the throttle is enabled2077 rejects requests over the rate limit2078 allows requests after throttling and then waiting for the next period2079 counts requests from different requesters separately, even from the same IP2080 counts all requests from the same requesters, even via different IPs2081 logs RackAttack info into structured logs2082 behaves like tracking when dry-run mode is set2083 does not throttle the requests when `*` is configured2084 logs RackAttack info into structured logs2085 when configured with the the throttled name in a list2086 does not throttle2087 when the throttle is disabled2088 allows requests over the rate limit2089 getting a blob2090 behaves like rate-limited user based token-authenticated requests2091 when the throttle is enabled2092 does not reject requests if the user is in the allowlist2093 when the throttle is enabled2094 rejects requests over the rate limit2095 allows requests after throttling and then waiting for the next period2096 counts requests from different requesters separately, even from the same IP2097 counts all requests from the same requesters, even via different IPs2098 logs RackAttack info into structured logs2099 behaves like tracking when dry-run mode is set2100 does not throttle the requests when `*` is configured2101 logs RackAttack info into structured logs2102 when configured with the the throttled name in a list2103 does not throttle2104 when the throttle is disabled2105 allows requests over the rate limit2106 authenticated git lfs requests2107 with regular login2108 behaves like rate-limited web authenticated requests2109 when the throttle is enabled2110 rejects requests over the rate limit2111 does not reject requests if the user is in the allowlist2112 allows requests after throttling and then waiting for the next period2113 counts requests from different users separately, even from the same IP2114 counts all requests from the same user, even via different IPs2115 logs RackAttack info into structured logs2116 behaves like tracking when dry-run mode is set2117 does not throttle the requests when `*` is configured2118 logs RackAttack info into structured logs2119 when configured with the the throttled name in a list2120 does not throttle2121 when the throttle is disabled2122 allows requests over the rate limit2123 with the token in the headers2124 behaves like rate-limited user based token-authenticated requests2125 when the throttle is enabled2126 does not reject requests if the user is in the allowlist2127 when the throttle is enabled2128 rejects requests over the rate limit2129 allows requests after throttling and then waiting for the next period2130 counts requests from different requesters separately, even from the same IP2131 counts all requests from the same requesters, even via different IPs2132 logs RackAttack info into structured logs2133 behaves like tracking when dry-run mode is set2134 does not throttle the requests when `*` is configured2135 logs RackAttack info into structured logs2136 when configured with the the throttled name in a list2137 does not throttle2138 when the throttle is disabled2139 allows requests over the rate limit2140 precedence over authenticated web throttle2141 when authenticated git lfs throttle is enabled2142 when authenticated web throttle is lower2143 ignores authenticated web throttle2144 when authenticated git lfs throttle is disabled2145 when authenticated web throttle is enabled2146 rejects requests over the authenticated web rate limit2147 Files API2148 unauthenticated2149 when unauthenticated files api throttle is disabled2150 allows requests over the rate limit2151 when unauthenticated api throttle is enabled2152 rejects requests over the unauthenticated api rate limit2153 when unauthenticated web throttle is enabled2154 ignores unauthenticated web throttle2155 when unauthenticated files api throttle is enabled2156 rejects requests over the rate limit2157 when unauthenticated api throttle is lower2158 ignores unauthenticated api throttle2159 behaves like tracking when dry-run mode is set2160 does not throttle the requests when `*` is configured2161 logs RackAttack info into structured logs2162 when configured with the the throttled name in a list2163 does not throttle2164 authenticated2165 with the token in the query string2166 behaves like rate-limited user based token-authenticated requests2167 when the throttle is enabled2168 does not reject requests if the user is in the allowlist2169 when the throttle is enabled2170 rejects requests over the rate limit2171 allows requests after throttling and then waiting for the next period2172 counts requests from different requesters separately, even from the same IP2173 counts all requests from the same requesters, even via different IPs2174 logs RackAttack info into structured logs2175 behaves like tracking when dry-run mode is set2176 does not throttle the requests when `*` is configured2177 logs RackAttack info into structured logs2178 when configured with the the throttled name in a list2179 does not throttle2180 when the throttle is disabled2181 allows requests over the rate limit2182 with the token in the headers2183 behaves like rate-limited user based token-authenticated requests2184 when the throttle is enabled2185 does not reject requests if the user is in the allowlist2186 when the throttle is enabled2187 rejects requests over the rate limit2188 allows requests after throttling and then waiting for the next period2189 counts requests from different requesters separately, even from the same IP2190 counts all requests from the same requesters, even via different IPs2191 logs RackAttack info into structured logs2192 behaves like tracking when dry-run mode is set2193 does not throttle the requests when `*` is configured2194 logs RackAttack info into structured logs2195 when configured with the the throttled name in a list2196 does not throttle2197 when the throttle is disabled2198 allows requests over the rate limit2199 precedence over authenticated api throttle2200 when authenticated files api throttle is enabled2201 when authenticated api throttle is lower2202 ignores authenticated api throttle2203 when authenticated files api throttle is disabled2204 when authenticated api throttle is enabled2205 rejects requests over the authenticated api rate limit2206 Deprecated API2207 unauthenticated2208 when unauthenticated deprecated api throttle is disabled2209 allows requests over the rate limit2210 when unauthenticated api throttle is enabled2211 rejects requests over the unauthenticated api rate limit2212 when unauthenticated web throttle is enabled2213 ignores unauthenticated web throttle2214 when unauthenticated deprecated api throttle is enabled2215 rejects requests over the rate limit2216 when group endpoint is given with_project=false2217 permits requests over the rate limit2218 when unauthenticated api throttle is lower2219 ignores unauthenticated api throttle2220 behaves like tracking when dry-run mode is set2221 does not throttle the requests when `*` is configured2222 logs RackAttack info into structured logs2223 when configured with the the throttled name in a list2224 does not throttle2225 authenticated2226 with the token in the query string2227 behaves like rate-limited user based token-authenticated requests2228 when the throttle is enabled2229 does not reject requests if the user is in the allowlist2230 when the throttle is enabled2231 rejects requests over the rate limit2232 allows requests after throttling and then waiting for the next period2233 counts requests from different requesters separately, even from the same IP2234 counts all requests from the same requesters, even via different IPs2235 logs RackAttack info into structured logs2236 behaves like tracking when dry-run mode is set2237 does not throttle the requests when `*` is configured2238 logs RackAttack info into structured logs2239 when configured with the the throttled name in a list2240 does not throttle2241 when the throttle is disabled2242 allows requests over the rate limit2243 with the token in the headers2244 behaves like rate-limited user based token-authenticated requests2245 when the throttle is enabled2246 does not reject requests if the user is in the allowlist2247 when the throttle is enabled2248 rejects requests over the rate limit2249 allows requests after throttling and then waiting for the next period2250 counts requests from different requesters separately, even from the same IP2251 counts all requests from the same requesters, even via different IPs2252 logs RackAttack info into structured logs2253 behaves like tracking when dry-run mode is set2254 does not throttle the requests when `*` is configured2255 logs RackAttack info into structured logs2256 when configured with the the throttled name in a list2257 does not throttle2258 when the throttle is disabled2259 allows requests over the rate limit2260 precedence over authenticated api throttle2261 when authenticated deprecated api throttle is enabled2262 when authenticated api throttle is lower2263 ignores authenticated api throttle2264 when authenticated deprecated api throttle is disabled2265 when authenticated api throttle is enabled2266 rejects requests over the authenticated api rate limit2267 throttle bypass header2268 without the bypass header set2269 behaves like reject requests over the rate limit2270 rejects requests over the rate limit2271 with bypass header set to 12272 does not throttle2273 with bypass header set to some other value2274 behaves like reject requests over the rate limit2275 rejects requests over the rate limit2276 Gitlab::RackAttack::Request#unauthenticated?2277 without authentication2278 request is unauthenticated2279 authenticated by a runner token2280 request is authenticated2281 authenticated with personal access token2282 request is authenticated by token in query string2283 request is authenticated by token in the headers2284 request is authenticated by token in the OAuth headers2285 request is authenticated by token in basic auth2286 authenticated with OAuth token2287 request is authenticated by token in query string2288 request is authenticated by token in the headers2289 authenticated with lfs token2290 request is authenticated by token in basic auth2291 request is not authenticated with API URL2292 authenticated with regular login2293 request is authenticated after login2294 request is not authenticated by credentials in basic auth2295 with POST git-upload-pack2296 request is authenticated by credentials in basic auth2297 with GET info/refs2298 request is authenticated by credentials in basic auth2299Groups::ClustersController2300 GET index2301 functionality2302 when group has one or more clusters2303 lists available clusters and renders html2304 lists available clusters with json serializer2305 sets the polling interval header for json requests2306 feature flag is disabled2307 responds with :not_found2308 when page is specified2309 redirects to the page2310 displays cluster list for associated page2311 when group does not have a cluster2312 returns an empty state page2313 security2314 is allowed for admin when admin mode is enabled2315 is denied for admin when admin mode is disabled2316 is expected to be allowed for owner. Expected: 200,201,204,302 Got: 2002317 is expected to be allowed for maintainer. Expected: 200,201,204,302 Got: 2002318 is expected to be allowed for developer. Expected: 200,201,204,302 Got: 2002319 is expected to be denied for reporter. Expected: 401,404 Got: 4042320 is expected to be denied for guest. Expected: 401,404 Got: 4042321 is expected to be denied for user. Expected: 401,404 Got: 4042322 is expected to be denied for external. Expected: 401,404 Got: 4042323 behaves like GET #metrics_dashboard for dashboard2324 returns correct dashboard2325 behaves like GET #metrics_dashboard correctly formatted response2326 returns a json object with the correct keys2327 when metrics dashboard feature is unavailable2328 returns 404 not found2329 GET #prometheus_proxy2330 behaves like metrics dashboard prometheus api proxy2331 with valid requests2332 with success result2333 returns prometheus response2334 with nil query2335 does not raise error2336 with nil result2337 returns 204 no_content2338 with 404 result2339 returns body2340 with error result2341 with http_status2342 sets the http response status code2343 without http_status2344 returns bad_request2345 when metrics dashboard feature is unavailable2346 returns 404 not found2347 with inappropriate requests2348 without correct permissions2349 returns 4042350 with invalid proxyable id2351 returns 4042352 with anonymous user2353 returns 4042354 POST create for existing cluster2355 feature flag is disabled2356 responds with :not_found2357 functionality2358 when creates a cluster2359 creates a new cluster2360 when creates a RBAC-enabled cluster2361 creates a new cluster2362 when creates a user-managed cluster2363 creates a new user-managed cluster2364 security2365 is allowed for admin when admin mode is enabled2366 is denied for admin when admin mode is disabled2367 is expected to be allowed for owner. Expected: 200,201,204,302 Got: 3022368 is expected to be allowed for maintainer. Expected: 200,201,204,302 Got: 3022369 is expected to be denied for developer. Expected: 401,404 Got: 4042370 is expected to be denied for reporter. Expected: 401,404 Got: 4042371 is expected to be denied for guest. Expected: 401,404 Got: 4042372 is expected to be denied for user. Expected: 401,404 Got: 4042373 is expected to be denied for external. Expected: 401,404 Got: 4042374 DELETE clear cluster cache2375 deletes the namespaces associated with the cluster2376 feature flag is disabled2377 responds with :not_found2378 security2379 is allowed for admin when admin mode is enabled2380 is denied for admin when admin mode is disabled2381 is expected to be allowed for owner. Expected: 200,201,204,302 Got: 3022382 is expected to be allowed for maintainer. Expected: 200,201,204,302 Got: 3022383 is expected to be denied for developer. Expected: 401,404 Got: 4042384 is expected to be denied for reporter. Expected: 401,404 Got: 4042385 is expected to be denied for guest. Expected: 401,404 Got: 4042386 is expected to be denied for user. Expected: 401,404 Got: 4042387 is expected to be denied for external. Expected: 401,404 Got: 4042388 GET cluster_status2389 feature flag is disabled2390 responds with :not_found2391 functionality2392 responds with matching schema2393 security2394 is allowed for admin when admin mode is enabled2395 is denied for admin when admin mode is disabled2396 is expected to be allowed for owner. Expected: 200,201,204,302 Got: 2002397 is expected to be allowed for maintainer. Expected: 200,201,204,302 Got: 2002398 is expected to be denied for developer. Expected: 401,404 Got: 4042399 is expected to be denied for reporter. Expected: 401,404 Got: 4042400 is expected to be denied for guest. Expected: 401,404 Got: 4042401 is expected to be denied for user. Expected: 401,404 Got: 4042402 is expected to be denied for external. Expected: 401,404 Got: 4042403 GET show2404 feature flag is disabled2405 responds with :not_found2406 functionality2407 when remove_monitor_metrics FF is disabled2408 renders view2409 renders integration tab view2410 when remove_monitor_metrics FF is enabled2411 renders details tab view2412 security2413 is allowed for admin when admin mode is enabled2414 is denied for admin when admin mode is disabled2415 is expected to be allowed for owner. Expected: 200,201,204,302 Got: 2002416 is expected to be allowed for maintainer. Expected: 200,201,204,302 Got: 2002417 is expected to be allowed for developer. Expected: 200,201,204,302 Got: 2002418 is expected to be denied for reporter. Expected: 401,404 Got: 4042419 is expected to be denied for guest. Expected: 401,404 Got: 4042420 is expected to be denied for user. Expected: 401,404 Got: 4042421 is expected to be denied for external. Expected: 401,404 Got: 4042422 PUT update2423 updates and redirects back to show page2424 feature flag is disabled2425 responds with :not_found2426 when domain is invalid2427 does not update cluster attributes2428 when format is json2429 when changing parameters2430 when valid parameters are used2431 updates and redirects back to show page2432 when invalid parameters are used2433 rejects changes2434 security2435 is allowed for admin when admin mode is enabled2436 is denied for admin when admin mode is disabled2437 is expected to be allowed for owner. Expected: 200,201,204,302 Got: 3022438 is expected to be allowed for maintainer. Expected: 200,201,204,302 Got: 3022439 is expected to be denied for developer. Expected: 401,404 Got: 4042440 is expected to be denied for reporter. Expected: 401,404 Got: 4042441 is expected to be denied for guest. Expected: 401,404 Got: 4042442 is expected to be denied for user. Expected: 401,404 Got: 4042443 is expected to be denied for external. Expected: 401,404 Got: 4042444 DELETE destroy2445 feature flag is disabled2446 responds with :not_found2447 functionality2448 when cluster is provided by GCP2449 when cluster is created2450 destroys and redirects back to clusters list2451 when cluster is being created2452 destroys and redirects back to clusters list2453 when cluster is provided by user2454 destroys and redirects back to clusters list2455 security2456 is allowed for admin when admin mode is enabled2457 is denied for admin when admin mode is disabled2458 is expected to be allowed for owner. Expected: 200,201,204,302 Got: 3022459 is expected to be allowed for maintainer. Expected: 200,201,204,302 Got: 3022460 is expected to be denied for developer. Expected: 401,404 Got: 4042461 is expected to be denied for reporter. Expected: 401,404 Got: 4042462 is expected to be denied for guest. Expected: 401,404 Got: 4042463 is expected to be denied for user. Expected: 401,404 Got: 4042464 is expected to be denied for external. Expected: 401,404 Got: 4042465 no group_id param2466 does not respond to any action without group_id param2467ProjectsController2468 updates Service Desk attributes2469 GET new2470 with an authenticated user2471 when namespace_id param is present2472 when user has access to the namespace2473 renders the template2474 when user does not have access to the namespace2475 responds with status 4042476 GET index2477 as a user2478 redirects to root page2479 as a guest2480 redirects to Explore page2481 GET #activity as JSON2482 when user has permission to see the event2483 returns count2484 design events are visible2485 returns correct count2486 when user has no permission to see the event2487 filters out invisible event2488 GET show2489 user not project member2490 user does not have access to project2491 does not initialize notification setting2492 user has access to project2493 and does not have notification setting2494 initializes notification as disabled2495 and has notification setting2496 shows current notification setting2497 when there is a tag with the same name as the default branch2498 redirects to tree view for the default branch2499 when the default branch name can resolve to another ref2500 but there is no other ref2501 responds with ok2502 and that other ref exists2503 redirects to tree view for the default branch2504 when project repository is disabled2505 shows wiki homepage2506 shows issues list page if wiki is disabled2507 shows activity page if wiki and issues are disabled2508 shows activity if enabled by user2509 project with empty repo2510 with readme view set2511 renders the empty project view2512 with activity view set2513 renders the empty project view2514 with files view set2515 renders the empty project view2516 with wiki view set2517 renders the empty project view2518 project with broken repo2519 with readme view set2520 renders the empty project view2521 with activity view set2522 renders the empty project view2523 with files view set2524 renders the empty project view2525 with wiki view set2526 renders the empty project view2527 rendering default project view2528 renders the activity view2529 renders the files view2530 renders the readme view2531 does not make Gitaly requests2532 renders files even with invalid license2533 tracking events2534 tracks page views2535 when the project is importing2536 does not track page views2537 PUC highlighting2538 option is enabled2539 adds the highlighting class2540 option is disabled2541 doesn't add the highlighting class2542 when the url contains .atom2543 expects an error creating the project2544 when the project is pending deletions2545 renders a 404 error2546 redirection from http://someproject.git2547 user_type: :anonymous, project_visibility: :public, expected_redirect: :redirect_to_project2548 returns the expected status2549 user_type: :anonymous, project_visibility: :internal, expected_redirect: :redirect_to_signup2550 returns the expected status2551 user_type: :anonymous, project_visibility: :private, expected_redirect: :redirect_to_signup2552 returns the expected status2553 user_type: :signed_in, project_visibility: :public, expected_redirect: :redirect_to_project2554 returns the expected status2555 user_type: :signed_in, project_visibility: :internal, expected_redirect: :redirect_to_project2556 returns the expected status2557 user_type: :signed_in, project_visibility: :private, expected_redirect: nil2558 returns the expected status2559 user_type: :member, project_visibility: :public, expected_redirect: :redirect_to_project2560 returns the expected status2561 user_type: :member, project_visibility: :internal, expected_redirect: :redirect_to_project2562 returns the expected status2563 user_type: :member, project_visibility: :private, expected_redirect: :redirect_to_project2564 returns the expected status2565 when project is moved and git format is requested2566 redirects to new project path2567 when the project is forked and has a repository2568 does not increase the number of queries when the project is forked2569 POST create2570 on import2571 when import by url is disabled2572 does not create project and reports an error2573 when import by url is enabled2574 creates project2575 GET edit2576 allows an admin user to access the page2577 sets the badge API endpoint2578 POST #archive2579 for a user with the ability to archive a project2580 archives the project2581 redirects to projects path2582 for a user that does not have the ability to archive a project2583 does not archive the project2584 returns 4042585 POST #unarchive2586 for a user with the ability to unarchive a project2587 unarchives the project2588 redirects to projects path2589 for a user that does not have the ability to unarchive a project2590 does not unarchive the project2591 returns 4042592 #housekeeping2593 when authenticated as owner2594 forces a full garbage collection2595 logs an audit event2596 and requesting prune2597 enqueues pruning2598 when authenticated as developer2599 does not execute housekeeping2600 #update2601 hashed storage2602 behaves like updating a project2603 updates Fast Forward Merge attributes2604 does not update namespace2605 when there is a conflicting project path2606 does not show any references to the conflicting path2607 when only renaming a project path2608 doesnt change the disk_path when using hashed storage2609 upgrades and move project to hashed storage when project was originally legacy (PENDING: No reason given)2610 when project has container repositories with tags2611 does not allow to rename the project2612 legacy storage2613 behaves like updating a project2614 updates Fast Forward Merge attributes2615 does not update namespace2616 when there is a conflicting project path2617 does not show any references to the conflicting path2618 when only renaming a project path2619 doesnt change the disk_path when using hashed storage (PENDING: No reason given)2620 upgrades and move project to hashed storage when project was originally legacy2621 when project has container repositories with tags2622 does not allow to rename the project2623 as maintainer2624 behaves like unauthorized when external service denies access2625 allows access when the authorization service allows it2626 allows access when the authorization service denies it2627 updates when the service allows access2628 does not update when the service rejects access2629 when updating boolean values on project_settings2630 boolean_value: "1", result: true2631 updates project settings attributes accordingly2632 boolean_value: "0", result: false2633 updates project settings attributes accordingly2634 boolean_value: 1, result: true2635 updates project settings attributes accordingly2636 boolean_value: 0, result: false2637 updates project settings attributes accordingly2638 boolean_value: true, result: true2639 updates project settings attributes accordingly2640 boolean_value: false, result: false2641 updates project settings attributes accordingly2642 with project feature attributes2643 feature_access_level: :metrics_dashboard_access_level2644 behaves like feature update success2645 updates access level successfully2646 feature_access_level: :container_registry_access_level2647 behaves like feature update success2648 updates access level successfully2649 feature_access_level: :environments_access_level2650 behaves like feature update success2651 updates access level successfully2652 feature_access_level: :feature_flags_access_level2653 behaves like feature update success2654 updates access level successfully2655 feature_access_level: :releases_access_level2656 behaves like feature update success2657 updates access level successfully2658 feature_access_level: :monitor_access_level2659 behaves like feature update success2660 updates access level successfully2661 feature_access_level: :infrastructure_access_level2662 behaves like feature update success2663 updates access level successfully2664 #transfer2665 updates namespace2666 when new namespace is empty2667 behaves like project namespace is not changed2668 project namespace is not changed2669 when new namespace is the same as the current namespace2670 behaves like project namespace is not changed2671 project namespace is not changed2672 #destroy2673 redirects to the dashboard2674 when the project is forked2675 closes all related merge requests2676 PUT #new_issuable_address for issue2677 has http status 2002678 changes the user incoming email token2679 changes projects new issue address2680 PUT #new_issuable_address for merge request2681 has http status 2002682 changes the user incoming email token2683 changes projects new merge request address2684 POST #toggle_star2685 toggles star if user is signed in2686 does nothing if user is not signed in2687 DELETE remove_fork2688 does nothing if user is not signed in2689 when signed in2690 with forked project2691 removes fork from project2692 when project not forked2693 does nothing if project was not forked2694 GET refs2695 gets a list of branches and tags2696 gets a list of branches, tags and commits2697 uses gitaly pagination2698 when gitaly is unavailable2699 responds with 503 error2700 when preferred language is Japanese2701 gets a list of branches, tags and commits2702 when private project2703 as a guest2704 renders forbidden2705 when input params are invalid2706 does not break2707 when sort param is invalid2708 uses default sort by name2709 POST #preview_markdown2710 renders json in a correct format2711 when not authorized2712 returns 4042713 state filter on references2714 renders JSON body with state filter for issues2715 renders JSON body with state filter for MRs2716 when path parameter is provided2717 renders JSON body with image links expanded2718 when path and ref parameters are provided2719 renders JSON body with image links expanded2720 #ensure_canonical_path2721 for a GET request2722 when requesting the canonical path2723 with exactly matching casing2724 loads the project2725 with different casing2726 redirects to the normalized path2727 when requesting a redirected path2728 redirects to the canonical path2729 redirects to the canonical path (testing non-show action)2730 for a POST request2731 when requesting the canonical path with different casing2732 does not 4042733 does not redirect to the correct casing2734 when requesting a redirected path2735 returns not found2736 for a DELETE request2737 when requesting the canonical path with different casing2738 does not 4042739 does not redirect to the correct casing2740 when requesting a redirected path2741 returns not found2742 project export2743 #export2744 when project export is enabled2745 returns 3022746 when the project storage_size exceeds the application setting max_export_size2747 returns 302 with alert2748 when the project storage_size does not exceed the application setting max_export_size2749 returns 302 without alert2750 when application setting max_export_size is not set2751 returns 302 without alert2752 when project export is disabled2753 returns 4042754 when the endpoint receives requests above the limit2755 prevents requesting project export2756 #download_export2757 object storage enabled2758 when project export is enabled2759 returns 2002760 when project export file is absent2761 alerts the user and returns 3022762 when project export is disabled2763 returns 4042764 when the endpoint receives requests above the limit2765 prevents requesting project export2766 applies correct scope when throttling2767 applies throttle per namespace2768 throttles downloads within same namespaces2769 allows downloads from different namespaces2770 #remove_export2771 when project export is enabled2772 returns 3022773 when project export is disabled2774 returns 4042775 #generate_new_export2776 when project export is enabled2777 returns 3022778 when project export is disabled2779 returns 4042780 when the endpoint receives requests above the limit2781 prevents requesting project export2782 GET show.atom2783 filters by calling event.visible_to_user?2784 filters by calling event.visible_to_user?2785 GET #unfoldered_environment_names2786 shows the environment names of a public project to an anonymous user2787 does not show environment names of a private project to anonymous users2788 shows environment names of a private project to a project member2789 does not show environment names of a private project to a logged-in non-member2790getting an issue list at root level2791 # order random2792 excludes issues from archived projects2793 with rate limiting2794 behaves like rate limited endpoint2795 when rate limiter enabled2796 logs request and declines it when endpoint called more than the threshold2797 when rate limiter is disabled2798 does not log request and does not block the request2799 behaves like rate limited endpoint2800 when rate limiter enabled2801 logs request and declines it when endpoint called more than the threshold2802 when rate limiter is disabled2803 does not log request and does not block the request2804 behaves like graphql issue list request spec2805 includes a web_url2806 includes discussion locked2807 behaves like a working graphql query2808 returns a successful response2809 filters2810 when filtering by assignees2811 when both assignee_username filters are provided2812 returns a mutually exclusive param error2813 when filtering by a negated argument2814 returns correctly filtered issues2815 when filtering by unioned arguments2816 when filtering by assignees2817 returns correctly filtered issues2818 when filtering by labels2819 returns correctly filtered issues2820 when argument is blank2821 does not raise an error2822 when feature flag is disabled2823 returns an error2824 when filtering by a blank negated argument2825 does not raise an error2826 when filtering by reaction emoji2827 value: "thumbsup", issue_list: lazy { voted_issues }2828 returns correctly filtered issues2829 value: "ANY", issue_list: lazy { voted_issues }2830 returns correctly filtered issues2831 value: "any", issue_list: lazy { voted_issues }2832 returns correctly filtered issues2833 value: "AnY", issue_list: lazy { voted_issues }2834 returns correctly filtered issues2835 value: "NONE", issue_list: lazy { no_award_issues }2836 returns correctly filtered issues2837 value: "thumbsdown", issue_list: lazy { [] }2838 returns correctly filtered issues2839 when filtering by search2840 behaves like query with a search term2841 returns only matching issuables2842 when filtering by confidentiality2843 when fetching confidential issues2844 returns only confidential issues2845 when user cannot see confidential issues2846 returns an empty list2847 when fetching non-confidential issues2848 returns only non-confidential issues2849 when user cannot see confidential issues2850 returns an empty list2851 sorting and pagination2852 when sorting by severity2853 when ascending2854 behaves like sorted paginated query2855 behaves like requires variables2856 shared example requires variables to be set2858 when sorting2859 sorts correctly2860 when paginating2861 paginates correctly2862 when descending2863 behaves like sorted paginated query2864 behaves like requires variables2865 shared example requires variables to be set2867 when sorting2868 sorts correctly2869 when paginating2870 paginates correctly2871 when sorting by priority2872 when ascending2873 behaves like sorted paginated query2874 behaves like requires variables2875 shared example requires variables to be set2877 when sorting2878 sorts correctly2879 when paginating2880 paginates correctly2881 when descending2882 behaves like sorted paginated query2883 behaves like requires variables2884 shared example requires variables to be set2886 when sorting2887 sorts correctly2888 when paginating2889 paginates correctly2890 when sorting by due date2891 when ascending2892 behaves like sorted paginated query2893 behaves like requires variables2894 shared example requires variables to be set2896 when sorting2897 sorts correctly2898 when paginating2899 paginates correctly2900 when descending2901 behaves like sorted paginated query2902 behaves like requires variables2903 shared example requires variables to be set2905 when sorting2906 sorts correctly2907 when paginating2908 paginates correctly2909 when sorting by relative position2910 when ascending2911 behaves like sorted paginated query2912 behaves like requires variables2913 shared example requires variables to be set2915 when sorting2916 sorts correctly2917 when paginating2918 paginates correctly2919 when last and sort params are present2920 fetches last elements without error2921 when sorting by label priority2922 when ascending2923 behaves like sorted paginated query2924 behaves like requires variables2925 shared example requires variables to be set2927 when sorting2928 sorts correctly2929 when paginating2930 paginates correctly2931 when descending2932 behaves like sorted paginated query2933 behaves like requires variables2934 shared example requires variables to be set2936 when sorting2937 sorts correctly2938 when paginating2939 paginates correctly2940 when sorting by milestone due date2941 when ascending2942 behaves like sorted paginated query2943 behaves like requires variables2944 shared example requires variables to be set2946 when sorting2947 sorts correctly2948 when paginating2949 paginates correctly2950 when descending2951 behaves like sorted paginated query2952 behaves like requires variables2953 shared example requires variables to be set2955 when sorting2956 sorts correctly2957 when paginating2958 paginates correctly2959 N+1 query checks2960 when requesting `user_notes_count` and `user_discussions_count`2961 prevents N+1 queries2962 when requesting `merge_requests_count`2963 prevents N+1 queries2964 when requesting `timelogs`2965 prevents N+1 queries2966 when requesting `closed_as_duplicate_of`2967 prevents N+1 queries2968 when award emoji votes2969 prevents N+1 queries2970 when requesting participants2971 prevents N+1 queries2972 when requesting labels2973 prevents N+1 queries2974 when confidential issues exist2975 when user can see confidential issues2976 includes confidential issues2977 when user cannot see confidential issues2978 does not include confidential issues2979 when limiting the number of results2980 is expected to check permissions on the first issue only2981 behaves like a working graphql query2982 returns a successful response2983 only returns N issues2984 when no limit is provided2985 returns all issues2986 when the user does not have access to the issue2987 returns no issues2988 when fetching escalation status2989 returns the escalation status values2990 avoids N+1 queries2991 when fetching alert management alert2992 avoids N+1 queries2993 returns the alert data2994 returns the alerts data2995 when fetching customer_relations_contacts2996 avoids N+1 queries2997 when fetching labels2998 avoids N+1 queries2999 when fetching assignees3000 avoids N+1 queries3001 when selecting `related_merge_requests`3002 limits the field to 1 execution3003 when only non filter arguments are provided3004 behaves like query that requires at least one filter3005 requires at least one filter to be provided to the query3006 when no filters are provided3007 behaves like query that requires at least one filter3008 requires at least one filter to be provided to the query3009 when fetching issues from multiple projects3010 avoids N+1 queries3011 includeArchived filter3012 excludes issues from archived projects3013 when includeArchived is true3014 includes issues from archived projects3015DashboardController3016 signed in3017 GET issues3018 includes tasks in issue list3019 when issues_full_text_search is disabled3020 behaves like issuables list meta-data3021 creates indexed meta-data object for issuable notes and votes count3022 avoids N+1 queries3023 searching3024 works when sorting by created_asc3025 works when sorting by created_at_asc3026 works when sorting by created_date3027 works when sorting by created_desc3028 works when sorting by created_at_desc3029 works when sorting by id_asc3030 works when sorting by id_desc3031 works when sorting by updated_asc3032 works when sorting by updated_at_asc3033 works when sorting by updated_desc3034 works when sorting by updated_at_desc3035 works when sorting by title_asc3036 works when sorting by title_desc3037 works when sorting by closest_future_date3038 works when sorting by closest_future_date_asc3039 works when sorting by due_date3040 works when sorting by due_date_asc3041 works when sorting by due_date_desc3042 works when sorting by relative_position3043 works when sorting by relative_position_asc3044 works when sorting by popularity3045 works when sorting by priority3046 works when sorting by label_priority3047 when given empty collection3048 doesn't execute any queries with false conditions3049 when issues_full_text_search is enabled3050 behaves like issuables list meta-data3051 creates indexed meta-data object for issuable notes and votes count3052 avoids N+1 queries3053 searching3054 works when sorting by created_asc3055 works when sorting by created_at_asc3056 works when sorting by created_date3057 works when sorting by created_desc3058 works when sorting by created_at_desc3059 works when sorting by id_asc3060 works when sorting by id_desc3061 works when sorting by updated_asc3062 works when sorting by updated_at_asc3063 works when sorting by updated_desc3064 works when sorting by updated_at_desc3065 works when sorting by title_asc3066 works when sorting by title_desc3067 works when sorting by closest_future_date3068 works when sorting by closest_future_date_asc3069 works when sorting by due_date3070 works when sorting by due_date_asc3071 works when sorting by due_date_desc3072 works when sorting by relative_position3073 works when sorting by relative_position_asc3074 works when sorting by popularity3075 works when sorting by priority3076 works when sorting by label_priority3077 when given empty collection3078 doesn't execute any queries with false conditions3079 behaves like issuables requiring filter3080 doesn't load any issuables if no filter is set3081 loads issuables if at least one filter is set3082 GET merge requests3083 behaves like issuables list meta-data3084 creates indexed meta-data object for issuable notes and votes count3085 avoids N+1 queries3086 searching3087 works when sorting by created_asc3088 works when sorting by created_at_asc3089 works when sorting by created_date3090 works when sorting by created_desc3091 works when sorting by created_at_desc3092 works when sorting by id_asc3093 works when sorting by id_desc3094 works when sorting by updated_asc3095 works when sorting by updated_at_asc3096 works when sorting by updated_desc3097 works when sorting by updated_at_desc3098 works when sorting by title_asc3099 works when sorting by title_desc3100 works when sorting by closest_future_date3101 works when sorting by closest_future_date_asc3102 works when sorting by due_date3103 works when sorting by due_date_asc3104 works when sorting by due_date_desc3105 works when sorting by relative_position3106 works when sorting by relative_position_asc3107 works when sorting by popularity3108 works when sorting by priority3109 works when sorting by label_priority3110 when given empty collection3111 doesn't execute any queries with false conditions3112 behaves like issuables requiring filter3113 doesn't load any issuables if no filter is set3114 loads issuables if at least one filter is set3115 when an ActiveRecord::QueryCanceled is raised3116 sets :search_timeout_occurred3117 logs the exception3118 rendering views3119 shows error message3120 does not display MR counts in nav3121 when an ActiveRecord::QueryCanceled is not raised3122 does not set :search_timeout_occurred3123 rendering views3124 displays MR counts in nav3125 GET activity as JSON3126 when user has permission to see the event3127 without filter param3128 returns only events of the user3129 with "projects" filter3130 returns events of the user's projects3131 with "followed" filter3132WARNING: Active Record does not support composite primary key.3133user_follow_users has composite primary key. Composite primary key is ignored.3134 returns public events of the user's followed users3135 when user has no permission to see the event3136 filters out invisible event3137 filters out invisible event when calculating the count3138 #check_filters_presence!3139 no filters3140 behaves like no filters are set3141 sets @no_filters_set to true3142 when key is present but value is not3143 behaves like no filters are set3144 sets @no_filters_set to true3145 when in param is set but no search3146 behaves like no filters are set3147 sets @no_filters_set to true3148 scalar filters3149 behaves like filters are set3150 sets @no_filters_set to false3151 array filters3152 behaves like filters are set3153 sets @no_filters_set to false3154 search3155 behaves like filters are set3156 sets @no_filters_set to false3157Query.issue(id)3158 behaves like a working graphql query3159 returns a successful response3160 behaves like a noteable graphql type we can query3161 .discussions3162 can fetch discussions3163 can fetch discussion noteable3164 .notes3165 can fetch notes3166 when the user does not have access to the issue3167 returns nil3168 when the user does have access3169 returns the issue3170 when selecting any single field3171 field: "description"3172 behaves like a working graphql query3173 returns a successful response3174 returns the issue and field3175 field: "id"3176 behaves like a working graphql query3177 returns a successful response3178 returns the issue and field3179 field: "iid"3180 behaves like a working graphql query3181 returns a successful response3182 returns the issue and field3183 field: "state"3184 behaves like a working graphql query3185 returns a successful response3186 returns the issue and field3187 field: "title"3188 behaves like a working graphql query3189 returns a successful response3190 returns the issue and field3191 field: "reference"3192 behaves like a working graphql query3193 returns a successful response3194 returns the issue and field3195 field: "confidential"3196 behaves like a working graphql query3197 returns a successful response3198 returns the issue and field3199 field: "discussionLocked"3200 behaves like a working graphql query3201 returns a successful response3202 returns the issue and field3203 field: "downvotes"3204 behaves like a working graphql query3205 returns a successful response3206 returns the issue and field3207 field: "dueDate"3208 behaves like a working graphql query3209 returns a successful response3210 returns the issue and field3211 field: "hidden"3212 behaves like a working graphql query3213 returns a successful response3214 returns the issue and field3215 field: "mergeRequestsCount"3216 behaves like a working graphql query3217 returns a successful response3218 returns the issue and field3219 field: "relativePosition"3220 behaves like a working graphql query3221 returns a successful response3222 returns the issue and field3223 field: "upvotes"3224 behaves like a working graphql query3225 returns a successful response3226 returns the issue and field3227 field: "userDiscussionsCount"3228 behaves like a working graphql query3229 returns a successful response3230 returns the issue and field3231 field: "userNotesCount"3232 behaves like a working graphql query3233 returns a successful response3234 returns the issue and field3235 field: "webPath"3236 behaves like a working graphql query3237 returns a successful response3238 returns the issue and field3239 field: "webUrl"3240 behaves like a working graphql query3241 returns a successful response3242 returns the issue and field3243 field: "emailsDisabled"3244 behaves like a working graphql query3245 returns a successful response3246 returns the issue and field3247 field: "humanTimeEstimate"3248 behaves like a working graphql query3249 returns a successful response3250 returns the issue and field3251 field: "humanTotalTimeSpent"3252 behaves like a working graphql query3253 returns a successful response3254 returns the issue and field3255 field: "subscribed"3256 behaves like a working graphql query3257 returns a successful response3258 returns the issue and field3259 field: "timeEstimate"3260 behaves like a working graphql query3261 returns a successful response3262 returns the issue and field3263 field: "totalTimeSpent"3264 behaves like a working graphql query3265 returns a successful response3266 returns the issue and field3267 field: "closedAt"3268 behaves like a working graphql query3269 returns a successful response3270 returns the issue and field3271 field: "createdAt"3272 behaves like a working graphql query3273 returns a successful response3274 returns the issue and field3275 field: "updatedAt"3276 behaves like a working graphql query3277 returns a successful response3278 returns the issue and field3279 field: "type"3280 behaves like a working graphql query3281 returns a successful response3282 returns the issue and field3283 field: "severity"3284 behaves like a working graphql query3285 returns a successful response3286 returns the issue and field3287 field: "moved"3288 behaves like a working graphql query3289 returns a successful response3290 returns the issue and field3291 field: "createNoteEmail"3292 behaves like a working graphql query3293 returns a successful response3294 returns the issue and field3295 field: "projectId"3296 behaves like a working graphql query3297 returns a successful response3298 returns the issue and field3299 field: "escalationStatus"3300 behaves like a working graphql query3301 returns a successful response3302 returns the issue and field3303 field: "titleHtml"3304 behaves like a working graphql query3305 returns a successful response3306 returns the issue and field3307 field: "descriptionHtml"3308 behaves like a working graphql query3309 returns a successful response3310 returns the issue and field3311 when selecting multiple fields3312 returns the issue with the specified fields3313 when issue got moved3314 returns correct attributes3315 when passed a non-issue gid3316 returns an error3317 when selecting `closed_as_duplicate_of`3318 returns the related issue3319 no permission to related issue3320 does not return the related issue3321 when selecting `related_merge_requests`3322 returns the related merge request3323 no permission to related merge request3324 does not return the related merge request3325 when there is a confidential issue3326 when the user cannot see confidential issues3327 returns nil3328 when the user can see confidential issues3329 returns the confidential issue3330UploadsController3331 POST #authorize3332 behaves like handle uploads authorize3333 POST #authorize3334 when a user is not authorized to upload a file3335 returns 404 status3336 when id is not passed as a param3337 returns 404 status3338 when a user can upload a file3339 and the request bypassed workhorse3340 raises an exception3341 and request is sent by gitlab-workhorse to authorize the request3342 when using local storage3343 behaves like a local file3344 behaves like a valid response3345 responds with status 2003346 uses the gitlab-workhorse content type3347 responds with status 200, location of uploads store and object details3348 when using remote storage3349 when direct upload is enabled3350 behaves like a valid response3351 responds with status 2003352 uses the gitlab-workhorse content type3353 responds with status 200, location of uploads remote store and object details3354 when direct upload is disabled3355 behaves like a local file3356 behaves like a valid response3357 responds with status 2003358 uses the gitlab-workhorse content type3359 responds with status 200, location of uploads store and object details3360 POST create3361 snippet uploads3362 when a user does not have permissions to upload a file3363 returns 401 when the user is not logged in3364 returns 404 when user can't comment on a snippet3365 when a user is logged in3366 returns an error without file3367 returns an error with invalid model3368 returns 404 status when object not found3369 with valid image3370 returns a content with original filename, new link, and correct type.3371 creates a corresponding Upload record3372 with valid non-image file3373 returns a content with original filename, new link, and correct type.3374 creates a corresponding Upload record3375 user uploads3376 returns 401 when the user has no access3377 when user is logged in3378 returns a content with original filename, new link, and correct type.3379 creates a corresponding Upload record3380 returns 404 when given user is not the logged in one3381 with valid non-image file3382 returns a content with original filename, new link, and correct type.3383 creates a corresponding Upload record3384 GET show3385 Content-Disposition security measures3386 for PNG files3387 behaves like uploaded file with disposition3388 returns correct Content-Disposition3389 for PDF files3390 behaves like uploaded file with disposition3391 returns correct Content-Disposition3392 for SVG files3393 behaves like uploaded file with disposition3394 returns correct Content-Disposition3395 when viewing a user avatar3396 when signed in3397 when the user is blocked3398 responds with status 4013399 when the user isn't blocked3400 responds with status 2003401 behaves like content publicly cached3402 ensures content is publicly cached3403 when not signed in3404 when restricted visibility level is not set to public3405 responds with status 2003406 behaves like content publicly cached3407 ensures content is publicly cached3408 when restricted visibility level is set to public3409 responds with status 4013410 when viewing a project avatar3411 when the project is public3412 when not signed in3413 responds with status 2003414 behaves like content 5 min private cached with revalidation3415 ensures content will not be cached without revalidation3416 when signed in3417 responds with status 2003418 behaves like content 5 min private cached with revalidation3419 ensures content will not be cached without revalidation3420 when the project is private3421 when not signed in3422 responds with status 4013423 when signed in3424 when the user has access to the project3425 when the user is blocked3426 responds with status 4013427 when the user isn't blocked3428 responds with status 2003429 behaves like content 5 min private cached with revalidation3430 ensures content will not be cached without revalidation3431 when the user doesn't have access to the project3432 responds with status 4043433 when viewing a group avatar3434 when the group is public3435 when not signed in3436 responds with status 2003437 behaves like content 5 min private cached with revalidation3438 ensures content will not be cached without revalidation3439 when signed in3440 responds with status 2003441 behaves like content 5 min private cached with revalidation3442 ensures content will not be cached without revalidation3443 when the group is private3444 when signed in3445 when the user has access to the project3446 when the user is blocked3447 responds with status 4013448 when the user isn't blocked3449 responds with status 2003450 behaves like content 5 min private cached with revalidation3451 ensures content will not be cached without revalidation3452 when the user doesn't have access to the project3453 responds with status 4043454 when viewing a note attachment3455 when the project is public3456 when not signed in3457 responds with status 2003458 behaves like content not cached3459 ensures content will not be cached without revalidation3460 when signed in3461 responds with status 2003462 behaves like content not cached3463 ensures content will not be cached without revalidation3464 when the project is private3465 when not signed in3466 responds with status 4013467 when signed in3468 when the user has access to the project3469 when the user is blocked3470 responds with status 4013471 when the user isn't blocked3472 responds with status 2003473 behaves like content not cached3474 ensures content will not be cached without revalidation3475 when the user doesn't have access to the project3476 responds with status 4043477 when viewing a topic avatar3478 when signed in3479 responds with status 2003480 behaves like content publicly cached3481 ensures content is publicly cached3482 when not signed in3483 responds with status 2003484 behaves like content publicly cached3485 ensures content is publicly cached3486 Appearance3487 when viewing a custom pwa icon3488 behaves like view custom logo3489 when not signed in3490 responds with status 2003491 behaves like content publicly cached3492 ensures content is publicly cached3493 when viewing a custom header logo3494 behaves like view custom logo3495 when not signed in3496 responds with status 2003497 behaves like content publicly cached3498 ensures content is publicly cached3499 when viewing a custom logo3500 behaves like view custom logo3501 when not signed in3502 responds with status 2003503 behaves like content publicly cached3504 ensures content is publicly cached3505 original filename or a version filename must match3506 has a valid filename on the original file3507 successfully returns the file3508 has an invalid filename on the original file3509 returns a 4043510 when viewing alert metric images3511 responds with status 2003512 when viewing an achievement3513 when signed in3514 responds with status 2003515 behaves like content publicly cached3516 ensures content is publicly cached3517 when not signed in3518 responds with status 2003519 behaves like content publicly cached3520 ensures content is publicly cached3521API::ProjectClusters3522 GET /projects/:id/clusters3523 feature flag is disabled3524 responds with :not_found3525 non-authorized user3526 responds with 4033527 authorized user3528 includes pagination headers3529 only includes authorized clusters3530 GET /projects/:id/clusters/:cluster_id3531 feature flag is disabled3532 responds with :not_found3533 non-authorized user3534 responds with 4033535 authorized user3536 returns specific cluster3537 returns cluster information3538 returns project information3539 returns kubernetes platform information3540 returns user information3541 returns GCP provider information3542 when cluster has no provider3543 does not include GCP provider info3544 with non-existing cluster3545 returns 4043546 POST /projects/:id/clusters/user3547 feature flag is disabled3548 responds with :not_found3549 non-authorized user3550 responds with 4033551 authorized user3552 with valid params3553 creates a new Cluster::Cluster3554 when user does not indicate authorization type3555 defaults to RBAC3556 when user sets authorization type as ABAC3557 creates an ABAC cluster3558 when namespace_per_environment is not set3559 defaults to true3560 current user does not have access to management_project_id3561 responds with 4003562 returns validation errors3563 with invalid params3564 does not create a new Clusters::Cluster3565 non-authorized user3566 responds with 4033567 POST /projects/:id/clusters/user with multiple clusters3568 when another cluster exists3569 responds with 2013570 allows multiple clusters to be associated to project3571 PUT /projects/:id/clusters/:cluster_id3572 feature flag is disabled3573 responds with :not_found3574 non-authorized user3575 responds with 4033576 authorized user3577 with valid params3578 updates cluster attributes3579 with invalid params3580 does not update cluster attributes3581 returns validation errors3582 current user does not have access to management_project_id3583 returns validation errors3584 with a GCP cluster3585 when user tries to change GCP specific fields3586 returns validation error3587 when user tries to change namespace3588 responds with 2003589 with an user cluster3590 updates platform kubernetes attributes3591 with a cluster that does not belong to user3592 responds with 4043593 DELETE /projects/:id/clusters/:cluster_id3594 feature flag is disabled3595 responds with :not_found3596 non-authorized user3597 responds with 4033598 authorized user3599 deletes the cluster3600 with a cluster that does not belong to user3601 responds with 4043602AutocompleteController3603 GET users3604 project members3605 GET #users with project ID3606 returns the project members3607 GET #users with unknown project3608 is expected to respond with numeric status code not_found3609 group members3610 GET #users with group ID3611 returns the group members3612 GET #users with unknown group ID3613 is expected to respond with numeric status code not_found3614 non-member login for public project3615 GET #users with project ID3616 returns the project members and non-members3617 all users3618 is expected to be a kind of Array3619 is expected to eq 33620 limited users per page3621 is expected to be a kind of Array3622 is expected to eq 203623 unauthenticated user3624 GET #users with public project3625 is expected to be a kind of Array3626 is expected to eq 23627 GET #users with project3628 is expected to respond with numeric status code not_found3629 GET #users with unknown project3630 is expected to respond with numeric status code not_found3631 GET #users with inaccessible group3632 is expected to respond with numeric status code not_found3633 GET #users with no project3634 is expected to be a kind of Array3635 is expected to be empty3636 GET #users with todo filter3637 gives an array of users3638 author of issuable included3639 authenticated3640 includes the author3641 rejects non existent user ids3642 without authenticating3643 returns empty result3644 skip_users parameter included3645 skips the user IDs passed3646 merge_request_iid parameter included3647 includes can_merge option to users3648 behaves like rate limited endpoint3649 when rate limiter enabled3650 logs request and declines it when endpoint called more than the threshold3651 when rate limiter is disabled3652 does not log request and does not block the request3653 GET projects3654 authorized projects3655 GET #projects with project ID3656 returns projects3657 authorized projects and search3658 GET #projects with project ID and search3659 returns projects3660 authorized projects apply limit3661 GET #projects with project ID3662 returns projects3663 authorized projects without admin_issue ability3664 GET #projects with project ID3665 returns no projects3666 GET award_emojis3667 unauthorized user3668 returns empty json3669 sign in as user without award emoji3670 returns empty json3671 sign in as user with award emoji3672 returns json sorted by name count3673 GET deploy_keys_with_owners3674 unauthorized user3675 returns a not found response3676 when the user is logged in3677 with a non-existing project3678 returns a not found response3679 with an existing project3680 when user cannot admin project3681 returns a forbidden response3682 when user can admin project3683 and user can read owner of key3684 renders the deploy keys in a json payload, with owner3685 and user cannot read owner of key3686 returns a payload without owner3687 Get merge_request_target_branches3688 anonymous user3689 returns empty json3690 user without any accessible merge requests3691 returns empty json3692 user with an accessible merge request but no scope3693 params: {}3694 returns an error3695 params: {:group_id=>" "}3696 returns an error3697 params: {:project_id=>" "}3698 returns an error3699 params: {:group_id=>" ", :project_id=>" "}3700 returns an error3701 user with an accessible merge request by project3702 returns json3703 user with an accessible merge request by group3704 returns json3705Emails::ServiceDesk3706 .service_desk_thank_you_email3707 behaves like a service desk notification email3708 builds the email correctly3709 behaves like read template from repository3710 when a template is in the repository3711 uses the text template from the template3712 when the service_desk_templates directory does not contain correct template3713 uses the default template3714 when the service_desk_templates directory does not exist3715 uses the default template3716 when the project does not have a repo3717 uses the default template3718 handling template markdown3719 with a simple text3720 behaves like a service desk notification email with template content3721 builds the email correctly3722 with an issue id, issue path and unsubscribe url placeholders3723 behaves like a service desk notification email with template content3724 builds the email correctly3725 with header and footer placeholders3726 behaves like appearance header and footer enabled3727 contains header and footer3728 behaves like appearance header and footer not enabled3729 does not contain header and footer3730 with an issue id placeholder with whitespace3731 behaves like a service desk notification email with template content3732 builds the email correctly3733 with unexpected placeholder3734 behaves like a service desk notification email with template content3735 builds the email correctly3736 when issue description placeholder is used3737 behaves like a service desk notification email with template content3738 builds the email correctly3739 when issue url placeholder is used3740 behaves like a service desk notification email with template content3741 builds the email correctly3742 when it is used in markdown format3743 behaves like a service desk notification email with template content3744 builds the email correctly3745 .service_desk_new_note_email3746 behaves like a service desk notification email3747 builds the email correctly3748 behaves like read template from repository3749 when a template is in the repository3750 uses the text template from the template3751 when the service_desk_templates directory does not contain correct template3752 uses the default template3753 when the service_desk_templates directory does not exist3754 uses the default template3755 when the project does not have a repo3756 uses the default template3757 with template3758 with a simple text3759 behaves like a service desk notification email with template content3760 builds the email correctly3761 with an issue id, issue path, note and unsubscribe url placeholders3762 behaves like a service desk notification email with template content3763 builds the email correctly3764 with header and footer placeholders3765 behaves like appearance header and footer enabled3766 contains header and footer3767 behaves like appearance header and footer not enabled3768 does not contain header and footer3769 with an issue id placeholder with whitespace3770 behaves like a service desk notification email with template content3771 builds the email correctly3772 with unexpected placeholder3773 behaves like a service desk notification email with template content3774 builds the email correctly3775 with all-user reference in a an external author comment3776 behaves like a service desk notification email with template content3777 builds the email correctly3778 with upload link in the note3779 when total uploads size is more than 10mb3780 behaves like a service desk notification email3781 builds the email correctly3782 behaves like a service desk notification email with template content3783 builds the email correctly3784 when total uploads size is less or equal 10mb3785 when it has only one upload3786 when upload name is not changed in markdown3787 behaves like a service desk notification email3788 builds the email correctly3789 behaves like a service desk notification email with template content3790 builds the email correctly3791 when upload name is changed in markdown3792 behaves like a service desk notification email3793 builds the email correctly3794 behaves like a service desk notification email with template content3795 builds the email correctly3796 when it has more than one upload3797 when all uploads processed correct3798 behaves like a service desk notification email3799 builds the email correctly3800 behaves like a service desk notification email with template content3801 builds the email correctly3802 when not all uploads processed correct3803 behaves like a service desk notification email3804 builds the email correctly3805 behaves like a service desk notification email with template content3806 builds the email correctly3807 when UploaderFinder is raising error3808 behaves like a service desk notification email with template content3809 builds the email correctly3810 when FileUploader is raising error3811 behaves like a service desk notification email with template content3812 builds the email correctly3813 .service_desk_custom_email_verification_email3814 uses service bot name and custom email as sender3815 forcibly uses SMTP delivery method and has correct settings3816 uses verification email address as recipient3817 contains verification token3818 behaves like a custom email verification process email3819 contains custom email and project in subject3820 .service_desk_verification_triggered_email3821 contains triggerer username3822 behaves like an email sent from GitLab3823 has the characteristics of an email sent from GitLab3824 behaves like a custom email verification process email3825 contains custom email and project in subject3826 behaves like a custom email verification process notification email3827 has correct recipient3828 contains custom email and project in body3829 .service_desk_verification_result_email3830 behaves like an email sent from GitLab3831 has the characteristics of an email sent from GitLab3832 behaves like a custom email verification process email3833 contains custom email and project in subject3834 behaves like a custom email verification process notification email3835 has correct recipient3836 contains custom email and project in body3837 behaves like a custom email verification process result email with error3838 when having smtp_host_issue error3839 contains correct error message headline in text part3840 behaves like a custom email verification process result email with error3841 when having invalid_credentials error3842 contains correct error message headline in text part3843 behaves like a custom email verification process result email with error3844 when having mail_not_received_within_timeframe error3845 contains correct error message headline in text part3846 behaves like a custom email verification process result email with error3847 when having incorrect_from error3848 contains correct error message headline in text part3849 behaves like a custom email verification process result email with error3850 when having incorrect_token error3851 contains correct error message headline in text part3852API::ResourceAccessTokens3853 when the resource is a project3854 behaves like resource access token API3855 GET projects/:id/access_tokens3856 when the user has valid permissions3857 gets a list of access tokens for the specified project3858 exposes the correct token information3859 when using a project access token to GET other project access tokens3860 gets a list of access tokens for the specified project3861 when tokens belong to a different project3862 does not return tokens from a different project3863 when the project has no access tokens3864 returns an empty array3865 when trying to get the tokens of a different project3866 returns 4043867 when the project does not exist3868 returns 4043869 when the user does not have valid permissions3870 returns 4013871 GET projects/:id/access_tokens/:token_id3872 when the user has valid permissions3873 gets the project access token from the project3874 when using project access token to GET other project access token3875 gets the project access token from the project3876 when attempting to get a non-existent project access token3877 does not get the token, and returns 4043878 when attempting to get a token that does not belong to the specified project3879 does not get the token, and returns 4043880 when the user does not have valid permissions3881 returns 4013882 DELETE projects/:id/access_tokens/:token_id3883 when the user has valid permissions3884 deletes the project access token from the project3885 when using project access token to DELETE other project access token3886 deletes the project access token from the project3887 when attempting to delete a non-existent project access token3888 does not delete the token, and returns 4043889 when attempting to delete a token that does not belong to the specified project3890 does not delete the token, and returns 4043891 when the user does not have valid permissions3892 does not delete the token, and returns 4003893 POST projects/:id/access_tokens3894 when the user has valid permissions3895 with valid params3896 with full params3897 creates a project access token with the params3898 when 'expires_at' is not set3899 creates a project access token with the default expires_at value3900 when 'access_level' is not set3901 creates a project access token with the default access level3902 with invalid params3903 when missing the 'name' param3904 does not create a project access token without 'name'3905 when missing the 'scopes' param3906 does not create a project access token without 'scopes'3907 when using invalid 'scopes'3908 does not create a project access token with invalid 'scopes'3909 when using invalid 'access_level'3910 does not create a project access token with invalid 'access_level'3911 when trying to create a token in a different project3912 does not create the token, and returns the project not found error3913 when the user does not have valid permissions3914 when the user role is too low3915 does not create the token, and returns the permission error3916 when a project access token tries to create another project access token3917 does not allow a project access token to create another project access token3918 POST projects/:id/access_tokens/:token_id/rotate3919 allows owner to rotate token3920 without permission3921 returns an error message3922 when service raises an error3923 returns the same error message3924 when token does not exist3925 for non-admin user3926 returns unauthorized3927 for admin user3928 returns not found3929 when the resource is a group3930 behaves like resource access token API3931 GET groups/:id/access_tokens3932 when the user has valid permissions3933 gets a list of access tokens for the specified group3934 exposes the correct token information3935 when using a group access token to GET other group access tokens3936 gets a list of access tokens for the specified group3937 when tokens belong to a different group3938 does not return tokens from a different group3939 when the group has no access tokens3940 returns an empty array3941 when trying to get the tokens of a different group3942 returns 4043943 when the group does not exist3944 returns 4043945 when the user does not have valid permissions3946 returns 4013947 GET groups/:id/access_tokens/:token_id3948 when the user has valid permissions3949 gets the group access token from the group3950 when using group access token to GET other group access token3951 gets the group access token from the group3952 when attempting to get a non-existent group access token3953 does not get the token, and returns 4043954 when attempting to get a token that does not belong to the specified group3955 does not get the token, and returns 4043956 when the user does not have valid permissions3957 returns 4013958 DELETE groups/:id/access_tokens/:token_id3959 when the user has valid permissions3960 deletes the group access token from the group3961 when using group access token to DELETE other group access token3962 deletes the group access token from the group3963 when attempting to delete a non-existent group access token3964 does not delete the token, and returns 4043965 when attempting to delete a token that does not belong to the specified group3966 does not delete the token, and returns 4043967 when the user does not have valid permissions3968 does not delete the token, and returns 4003969 POST groups/:id/access_tokens3970 when the user has valid permissions3971 with valid params3972 with full params3973 creates a group access token with the params3974 when 'expires_at' is not set3975 creates a group access token with the default expires_at value3976 when 'access_level' is not set3977 creates a group access token with the default access level3978 with invalid params3979 when missing the 'name' param3980 does not create a group access token without 'name'3981 when missing the 'scopes' param3982 does not create a group access token without 'scopes'3983 when using invalid 'scopes'3984 does not create a group access token with invalid 'scopes'3985 when using invalid 'access_level'3986 does not create a group access token with invalid 'access_level'3987 when trying to create a token in a different group3988 does not create the token, and returns the group not found error3989 when the user does not have valid permissions3990 when the user role is too low3991 does not create the token, and returns the permission error3992 when a group access token tries to create another group access token3993 does not allow a group access token to create another group access token3994 POST groups/:id/access_tokens/:token_id/rotate3995 allows owner to rotate token3996 without permission3997 returns an error message3998 when service raises an error3999 returns the same error message4000 when token does not exist4001 for non-admin user4002 returns unauthorized4003 for admin user4004 returns not found4005API::GroupDebianDistributions4006 POST groups/:id/-/debian_distributions4007 behaves like Debian distributions write endpoint4008 with valid container4009 visibility_level: :public, user_type: :developer, auth_method: :private_token, expected_status: :created, expected_body: /^{.*"codename":"my-codename",.*"components":\["main"\],.*"architectures":\["all","amd64"\]/4010 behaves like Debian distributions POST request4011 creates distribution4012 visibility_level: :public, user_type: :developer, auth_method: :basic, expected_status: :unauthorized, expected_body: nil4013 behaves like Debian distributions POST request4014 returns unauthorized4015 visibility_level: :public, user_type: :guest, auth_method: :private_token, expected_status: :forbidden, expected_body: nil4016 behaves like Debian distributions POST request4017 returns forbidden4018 visibility_level: :public, user_type: :not_a_member, auth_method: :private_token, expected_status: :forbidden, expected_body: nil4019 behaves like Debian distributions POST request4020 returns forbidden4021 visibility_level: :public, user_type: :anonymous, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil4022 behaves like Debian distributions POST request4023 returns unauthorized4024 visibility_level: :public, user_type: :invalid_token, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil4025 behaves like Debian distributions POST request4026 returns unauthorized4027 visibility_level: :private, user_type: :developer, auth_method: :private_token, expected_status: :created, expected_body: /^{.*"codename":"my-codename",.*"components":\["main"\],.*"architectures":\["all","amd64"\]/4028 behaves like Debian distributions POST request4029 creates distribution4030 visibility_level: :private, user_type: :guest, auth_method: :private_token, expected_status: :forbidden, expected_body: nil4031 behaves like Debian distributions POST request4032 returns forbidden4033 visibility_level: :private, user_type: :not_a_member, auth_method: :private_token, expected_status: :not_found, expected_body: nil4034 behaves like Debian distributions POST request4035 returns not_found4036 visibility_level: :private, user_type: :anonymous, auth_method: :private_token, expected_status: :not_found, expected_body: nil4037 behaves like Debian distributions POST request4038 returns not_found4039 visibility_level: :private, user_type: :invalid_token, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil4040 behaves like Debian distributions POST request4041 returns unauthorized4042 behaves like rejects Debian access with unknown container id4043 with an unknown container4044 as anonymous4045 behaves like Debian packages GET request4046 returns not_found4047 as authenticated user4048 behaves like Debian packages GET request4049 returns not_found4050 GET groups/:id/-/debian_distributions4051 behaves like Debian distributions read endpoint4052 with valid container4053 visibility_level: :public, user_type: :guest, auth_method: :private_token, expected_status: :success, expected_body: /^\[{.*"codename":"existing-codename",.*"components":\["existing-component"\],.*"architectures":\["all","existing-arch"\]/4054 behaves like Debian distributions GET request4055 returns success and expected body4056 visibility_level: :public, user_type: :not_a_member, auth_method: :private_token, expected_status: :success, expected_body: /^\[{.*"codename":"existing-codename",.*"components":\["existing-component"\],.*"architectures":\["all","existing-arch"\]/4057 behaves like Debian distributions GET request4058 returns success and expected body4059 visibility_level: :public, user_type: :anonymous, auth_method: :private_token, expected_status: :success, expected_body: /^\[{.*"codename":"existing-codename",.*"components":\["existing-component"\],.*"architectures":\["all","existing-arch"\]/4060 behaves like Debian distributions GET request4061 returns success and expected body4062 visibility_level: :public, user_type: :invalid_token, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil4063 behaves like Debian distributions GET request4064 returns unauthorized4065 visibility_level: :private, user_type: :developer, auth_method: :private_token, expected_status: :success, expected_body: /^\[{.*"codename":"existing-codename",.*"components":\["existing-component"\],.*"architectures":\["all","existing-arch"\]/4066 behaves like Debian distributions GET request4067 returns success and expected body4068 visibility_level: :private, user_type: :developer, auth_method: :basic, expected_status: :not_found, expected_body: nil4069 behaves like Debian distributions GET request4070 returns not_found4071 visibility_level: :private, user_type: :guest, auth_method: :private_token, expected_status: :forbidden, expected_body: nil4072 behaves like Debian distributions GET request4073 returns forbidden4074 visibility_level: :private, user_type: :not_a_member, auth_method: :private_token, expected_status: :not_found, expected_body: nil4075 behaves like Debian distributions GET request4076 returns not_found4077 visibility_level: :private, user_type: :anonymous, auth_method: :private_token, expected_status: :not_found, expected_body: nil4078 behaves like Debian distributions GET request4079 returns not_found4080 visibility_level: :private, user_type: :invalid_token, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil4081 behaves like Debian distributions GET request4082 returns unauthorized4083 behaves like rejects Debian access with unknown container id4084 with an unknown container4085 as anonymous4086 behaves like Debian packages GET request4087 returns not_found4088 as authenticated user4089 behaves like Debian packages GET request4090 returns not_found4091 GET groups/:id/-/debian_distributions/:codename4092 behaves like Debian distributions read endpoint4093 with valid container4094 visibility_level: :public, user_type: :guest, auth_method: :private_token, expected_status: :success, expected_body: /^{.*"codename":"existing-codename",.*"components":\["existing-component"\],.*"architectures":\["all","existing-arch"\]/4095 behaves like Debian distributions GET request4096 returns success and expected body4097 visibility_level: :public, user_type: :not_a_member, auth_method: :private_token, expected_status: :success, expected_body: /^{.*"codename":"existing-codename",.*"components":\["existing-component"\],.*"architectures":\["all","existing-arch"\]/4098 behaves like Debian distributions GET request4099 returns success and expected body4100 visibility_level: :public, user_type: :anonymous, auth_method: :private_token, expected_status: :success, expected_body: /^{.*"codename":"existing-codename",.*"components":\["existing-component"\],.*"architectures":\["all","existing-arch"\]/4101 behaves like Debian distributions GET request4102 returns success and expected body4103 visibility_level: :public, user_type: :invalid_token, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil4104 behaves like Debian distributions GET request4105 returns unauthorized4106 visibility_level: :private, user_type: :developer, auth_method: :private_token, expected_status: :success, expected_body: /^{.*"codename":"existing-codename",.*"components":\["existing-component"\],.*"architectures":\["all","existing-arch"\]/4107 behaves like Debian distributions GET request4108 returns success and expected body4109 visibility_level: :private, user_type: :developer, auth_method: :basic, expected_status: :not_found, expected_body: nil4110 behaves like Debian distributions GET request4111 returns not_found4112 visibility_level: :private, user_type: :guest, auth_method: :private_token, expected_status: :forbidden, expected_body: nil4113 behaves like Debian distributions GET request4114 returns forbidden4115 visibility_level: :private, user_type: :not_a_member, auth_method: :private_token, expected_status: :not_found, expected_body: nil4116 behaves like Debian distributions GET request4117 returns not_found4118 visibility_level: :private, user_type: :anonymous, auth_method: :private_token, expected_status: :not_found, expected_body: nil4119 behaves like Debian distributions GET request4120 returns not_found4121 visibility_level: :private, user_type: :invalid_token, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil4122 behaves like Debian distributions GET request4123 returns unauthorized4124 behaves like rejects Debian access with unknown container id4125 with an unknown container4126 as anonymous4127 behaves like Debian packages GET request4128 returns not_found4129 as authenticated user4130 behaves like Debian packages GET request4131 returns not_found4132 GET groups/:id/-/debian_distributions/:codename/key.asc4133 behaves like Debian distributions read endpoint4134 with valid container4135 visibility_level: :public, user_type: :guest, auth_method: :private_token, expected_status: :success, expected_body: /^-----BEGIN PGP PUBLIC KEY BLOCK-----/4136 behaves like Debian distributions GET request4137 returns success and expected body4138 visibility_level: :public, user_type: :not_a_member, auth_method: :private_token, expected_status: :success, expected_body: /^-----BEGIN PGP PUBLIC KEY BLOCK-----/4139 behaves like Debian distributions GET request4140 returns success and expected body4141 visibility_level: :public, user_type: :anonymous, auth_method: :private_token, expected_status: :success, expected_body: /^-----BEGIN PGP PUBLIC KEY BLOCK-----/4142 behaves like Debian distributions GET request4143 returns success and expected body4144 visibility_level: :public, user_type: :invalid_token, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil4145 behaves like Debian distributions GET request4146 returns unauthorized4147 visibility_level: :private, user_type: :developer, auth_method: :private_token, expected_status: :success, expected_body: /^-----BEGIN PGP PUBLIC KEY BLOCK-----/4148 behaves like Debian distributions GET request4149 returns success and expected body4150 visibility_level: :private, user_type: :developer, auth_method: :basic, expected_status: :not_found, expected_body: nil4151 behaves like Debian distributions GET request4152 returns not_found4153 visibility_level: :private, user_type: :guest, auth_method: :private_token, expected_status: :forbidden, expected_body: nil4154 behaves like Debian distributions GET request4155 returns forbidden4156 visibility_level: :private, user_type: :not_a_member, auth_method: :private_token, expected_status: :not_found, expected_body: nil4157 behaves like Debian distributions GET request4158 returns not_found4159 visibility_level: :private, user_type: :anonymous, auth_method: :private_token, expected_status: :not_found, expected_body: nil4160 behaves like Debian distributions GET request4161 returns not_found4162 visibility_level: :private, user_type: :invalid_token, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil4163 behaves like Debian distributions GET request4164 returns unauthorized4165 behaves like rejects Debian access with unknown container id4166 with an unknown container4167 as anonymous4168 behaves like Debian packages GET request4169 returns not_found4170 as authenticated user4171 behaves like Debian packages GET request4172 returns not_found4173 PUT groups/:id/-/debian_distributions/:codename4174 behaves like Debian distributions write endpoint4175 with valid container4176 visibility_level: :public, user_type: :developer, auth_method: :private_token, expected_status: :success, expected_body: /^{.*"codename":"existing-codename",.*"suite":"my-suite",/4177 behaves like Debian distributions PUT request4178 updates distribution4179 visibility_level: :public, user_type: :developer, auth_method: :basic, expected_status: :unauthorized, expected_body: nil4180 behaves like Debian distributions PUT request4181 returns unauthorized4182 visibility_level: :public, user_type: :guest, auth_method: :private_token, expected_status: :forbidden, expected_body: nil4183 behaves like Debian distributions PUT request4184 returns forbidden4185 visibility_level: :public, user_type: :not_a_member, auth_method: :private_token, expected_status: :forbidden, expected_body: nil4186 behaves like Debian distributions PUT request4187 returns forbidden4188 visibility_level: :public, user_type: :anonymous, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil4189 behaves like Debian distributions PUT request4190 returns unauthorized4191 visibility_level: :public, user_type: :invalid_token, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil4192 behaves like Debian distributions PUT request4193 returns unauthorized4194 visibility_level: :private, user_type: :developer, auth_method: :private_token, expected_status: :success, expected_body: /^{.*"codename":"existing-codename",.*"suite":"my-suite",/4195 behaves like Debian distributions PUT request4196 updates distribution4197 visibility_level: :private, user_type: :guest, auth_method: :private_token, expected_status: :forbidden, expected_body: nil4198 behaves like Debian distributions PUT request4199 returns forbidden4200 visibility_level: :private, user_type: :not_a_member, auth_method: :private_token, expected_status: :not_found, expected_body: nil4201 behaves like Debian distributions PUT request4202 returns not_found4203 visibility_level: :private, user_type: :anonymous, auth_method: :private_token, expected_status: :not_found, expected_body: nil4204 behaves like Debian distributions PUT request4205 returns not_found4206 visibility_level: :private, user_type: :invalid_token, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil4207 behaves like Debian distributions PUT request4208 returns unauthorized4209 behaves like rejects Debian access with unknown container id4210 with an unknown container4211 as anonymous4212 behaves like Debian packages GET request4213 returns not_found4214 as authenticated user4215 behaves like Debian packages GET request4216 returns not_found4217 DELETE groups/:id/-/debian_distributions/:codename4218 behaves like Debian distributions maintainer write endpoint4219 with valid container4220 visibility_level: :public, user_type: :maintainer, auth_method: :private_token, expected_status: :success, expected_body: /^{"message":"202 Accepted"}$/4221 behaves like Debian distributions DELETE request4222 updates distribution4223 visibility_level: :public, user_type: :maintainer, auth_method: :basic, expected_status: :unauthorized, expected_body: nil4224 behaves like Debian distributions DELETE request4225 returns unauthorized4226 visibility_level: :public, user_type: :developer, auth_method: :private_token, expected_status: :forbidden, expected_body: nil4227 behaves like Debian distributions DELETE request4228 returns forbidden4229 visibility_level: :public, user_type: :not_a_member, auth_method: :private_token, expected_status: :forbidden, expected_body: nil4230 behaves like Debian distributions DELETE request4231 returns forbidden4232 visibility_level: :public, user_type: :anonymous, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil4233 behaves like Debian distributions DELETE request4234 returns unauthorized4235 visibility_level: :public, user_type: :invalid_token, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil4236 behaves like Debian distributions DELETE request4237 returns unauthorized4238 visibility_level: :private, user_type: :maintainer, auth_method: :private_token, expected_status: :success, expected_body: /^{"message":"202 Accepted"}$/4239 behaves like Debian distributions DELETE request4240 updates distribution4241 visibility_level: :private, user_type: :developer, auth_method: :private_token, expected_status: :forbidden, expected_body: nil4242 behaves like Debian distributions DELETE request4243 returns forbidden4244 visibility_level: :private, user_type: :not_a_member, auth_method: :private_token, expected_status: :not_found, expected_body: nil4245 behaves like Debian distributions DELETE request4246 returns not_found4247 visibility_level: :private, user_type: :anonymous, auth_method: :private_token, expected_status: :not_found, expected_body: nil4248 behaves like Debian distributions DELETE request4249 returns not_found4250 visibility_level: :private, user_type: :invalid_token, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil4251 behaves like Debian distributions DELETE request4252 returns unauthorized4253 behaves like rejects Debian access with unknown container id4254 with an unknown container4255 as anonymous4256 behaves like Debian packages GET request4257 returns not_found4258 as authenticated user4259 behaves like Debian packages GET request4260 returns not_found4261API::ProjectDebianDistributions4262 POST projects/:id/debian_distributions4263 behaves like Debian distributions write endpoint4264 with valid container4265 visibility_level: :public, user_type: :developer, auth_method: :private_token, expected_status: :created, expected_body: /^{.*"codename":"my-codename",.*"components":\["main"\],.*"architectures":\["all","amd64"\]/4266 behaves like Debian distributions POST request4267 creates distribution4268 visibility_level: :public, user_type: :developer, auth_method: :basic, expected_status: :unauthorized, expected_body: nil4269 behaves like Debian distributions POST request4270 returns unauthorized4271 visibility_level: :public, user_type: :guest, auth_method: :private_token, expected_status: :forbidden, expected_body: nil4272 behaves like Debian distributions POST request4273 returns forbidden4274 visibility_level: :public, user_type: :not_a_member, auth_method: :private_token, expected_status: :forbidden, expected_body: nil4275 behaves like Debian distributions POST request4276 returns forbidden4277 visibility_level: :public, user_type: :anonymous, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil4278 behaves like Debian distributions POST request4279 returns unauthorized4280 visibility_level: :public, user_type: :invalid_token, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil4281 behaves like Debian distributions POST request4282 returns unauthorized4283 visibility_level: :private, user_type: :developer, auth_method: :private_token, expected_status: :created, expected_body: /^{.*"codename":"my-codename",.*"components":\["main"\],.*"architectures":\["all","amd64"\]/4284 behaves like Debian distributions POST request4285 creates distribution4286 visibility_level: :private, user_type: :guest, auth_method: :private_token, expected_status: :forbidden, expected_body: nil4287 behaves like Debian distributions POST request4288 returns forbidden4289 visibility_level: :private, user_type: :not_a_member, auth_method: :private_token, expected_status: :not_found, expected_body: nil4290 behaves like Debian distributions POST request4291 returns not_found4292 visibility_level: :private, user_type: :anonymous, auth_method: :private_token, expected_status: :not_found, expected_body: nil4293 behaves like Debian distributions POST request4294 returns not_found4295 visibility_level: :private, user_type: :invalid_token, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil4296 behaves like Debian distributions POST request4297 returns unauthorized4298 behaves like rejects Debian access with unknown container id4299 with an unknown container4300 as anonymous4301 behaves like Debian packages GET request4302 returns not_found4303 as authenticated user4304 behaves like Debian packages GET request4305 returns not_found4306 with invalid parameters4307 behaves like Debian distributions write endpoint4308 with valid container4309 visibility_level: :public, user_type: :developer, auth_method: :private_token, expected_status: :bad_request, expected_body: /^{"message":{"codename":\["has already been taken"\]}}$/4310 behaves like Debian distributions GET request4311 returns bad_request and expected body4312 visibility_level: :public, user_type: :developer, auth_method: :basic, expected_status: :unauthorized, expected_body: nil4313 behaves like Debian distributions GET request4314 returns unauthorized4315 visibility_level: :public, user_type: :guest, auth_method: :private_token, expected_status: :forbidden, expected_body: nil4316 behaves like Debian distributions GET request4317 returns forbidden4318 visibility_level: :public, user_type: :not_a_member, auth_method: :private_token, expected_status: :forbidden, expected_body: nil4319 behaves like Debian distributions GET request4320 returns forbidden4321 visibility_level: :public, user_type: :anonymous, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil4322 behaves like Debian distributions GET request4323 returns unauthorized4324 visibility_level: :public, user_type: :invalid_token, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil4325 behaves like Debian distributions GET request4326 returns unauthorized4327 visibility_level: :private, user_type: :developer, auth_method: :private_token, expected_status: :bad_request, expected_body: /^{"message":{"codename":\["has already been taken"\]}}$/4328 behaves like Debian distributions GET request4329 returns bad_request and expected body4330 visibility_level: :private, user_type: :guest, auth_method: :private_token, expected_status: :forbidden, expected_body: nil4331 behaves like Debian distributions GET request4332 returns forbidden4333 visibility_level: :private, user_type: :not_a_member, auth_method: :private_token, expected_status: :not_found, expected_body: nil4334 behaves like Debian distributions GET request4335 returns not_found4336 visibility_level: :private, user_type: :anonymous, auth_method: :private_token, expected_status: :not_found, expected_body: nil4337 behaves like Debian distributions GET request4338 returns not_found4339 visibility_level: :private, user_type: :invalid_token, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil4340 behaves like Debian distributions GET request4341 returns unauthorized4342 behaves like rejects Debian access with unknown container id4343 with an unknown container4344 as anonymous4345 behaves like Debian packages GET request4346 returns not_found4347 as authenticated user4348 behaves like Debian packages GET request4349 returns not_found4350 with access to package registry for everyone4351 behaves like Debian distributions POST request4352 returns not_found4353 GET projects/:id/debian_distributions4354 behaves like Debian distributions read endpoint4355 with valid container4356 visibility_level: :public, user_type: :guest, auth_method: :private_token, expected_status: :success, expected_body: /^\[{.*"codename":"existing-codename",.*"components":\["existing-component"\],.*"architectures":\["all","existing-arch"\]/4357 behaves like Debian distributions GET request4358 returns success and expected body4359 visibility_level: :public, user_type: :not_a_member, auth_method: :private_token, expected_status: :success, expected_body: /^\[{.*"codename":"existing-codename",.*"components":\["existing-component"\],.*"architectures":\["all","existing-arch"\]/4360 behaves like Debian distributions GET request4361 returns success and expected body4362 visibility_level: :public, user_type: :anonymous, auth_method: :private_token, expected_status: :success, expected_body: /^\[{.*"codename":"existing-codename",.*"components":\["existing-component"\],.*"architectures":\["all","existing-arch"\]/4363 behaves like Debian distributions GET request4364 returns success and expected body4365 visibility_level: :public, user_type: :invalid_token, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil4366 behaves like Debian distributions GET request4367 returns unauthorized4368 visibility_level: :private, user_type: :developer, auth_method: :private_token, expected_status: :success, expected_body: /^\[{.*"codename":"existing-codename",.*"components":\["existing-component"\],.*"architectures":\["all","existing-arch"\]/4369 behaves like Debian distributions GET request4370 returns success and expected body4371 visibility_level: :private, user_type: :developer, auth_method: :basic, expected_status: :not_found, expected_body: nil4372 behaves like Debian distributions GET request4373 returns not_found4374 visibility_level: :private, user_type: :guest, auth_method: :private_token, expected_status: :forbidden, expected_body: nil4375 behaves like Debian distributions GET request4376 returns forbidden4377 visibility_level: :private, user_type: :not_a_member, auth_method: :private_token, expected_status: :not_found, expected_body: nil4378 behaves like Debian distributions GET request4379 returns not_found4380 visibility_level: :private, user_type: :anonymous, auth_method: :private_token, expected_status: :not_found, expected_body: nil4381 behaves like Debian distributions GET request4382 returns not_found4383 visibility_level: :private, user_type: :invalid_token, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil4384 behaves like Debian distributions GET request4385 returns unauthorized4386 behaves like rejects Debian access with unknown container id4387 with an unknown container4388 as anonymous4389 behaves like Debian packages GET request4390 returns not_found4391 as authenticated user4392 behaves like Debian packages GET request4393 returns not_found4394 behaves like accept GET request on private project with access to package registry for everyone4395 behaves like Debian distributions GET request4396 returns success4397 GET projects/:id/debian_distributions/:codename4398 behaves like Debian distributions read endpoint4399 with valid container4400 visibility_level: :public, user_type: :guest, auth_method: :private_token, expected_status: :success, expected_body: /^{.*"codename":"existing-codename",.*"components":\["existing-component"\],.*"architectures":\["all","existing-arch"\]/4401 behaves like Debian distributions GET request4402 returns success and expected body4403 visibility_level: :public, user_type: :not_a_member, auth_method: :private_token, expected_status: :success, expected_body: /^{.*"codename":"existing-codename",.*"components":\["existing-component"\],.*"architectures":\["all","existing-arch"\]/4404 behaves like Debian distributions GET request4405 returns success and expected body4406 visibility_level: :public, user_type: :anonymous, auth_method: :private_token, expected_status: :success, expected_body: /^{.*"codename":"existing-codename",.*"components":\["existing-component"\],.*"architectures":\["all","existing-arch"\]/4407 behaves like Debian distributions GET request4408 returns success and expected body4409 visibility_level: :public, user_type: :invalid_token, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil4410 behaves like Debian distributions GET request4411 returns unauthorized4412 visibility_level: :private, user_type: :developer, auth_method: :private_token, expected_status: :success, expected_body: /^{.*"codename":"existing-codename",.*"components":\["existing-component"\],.*"architectures":\["all","existing-arch"\]/4413 behaves like Debian distributions GET request4414 returns success and expected body4415 visibility_level: :private, user_type: :developer, auth_method: :basic, expected_status: :not_found, expected_body: nil4416 behaves like Debian distributions GET request4417 returns not_found4418 visibility_level: :private, user_type: :guest, auth_method: :private_token, expected_status: :forbidden, expected_body: nil4419 behaves like Debian distributions GET request4420 returns forbidden4421 visibility_level: :private, user_type: :not_a_member, auth_method: :private_token, expected_status: :not_found, expected_body: nil4422 behaves like Debian distributions GET request4423 returns not_found4424 visibility_level: :private, user_type: :anonymous, auth_method: :private_token, expected_status: :not_found, expected_body: nil4425 behaves like Debian distributions GET request4426 returns not_found4427 visibility_level: :private, user_type: :invalid_token, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil4428 behaves like Debian distributions GET request4429 returns unauthorized4430 behaves like rejects Debian access with unknown container id4431 with an unknown container4432 as anonymous4433 behaves like Debian packages GET request4434 returns not_found4435 as authenticated user4436 behaves like Debian packages GET request4437 returns not_found4438 behaves like accept GET request on private project with access to package registry for everyone4439 behaves like Debian distributions GET request4440 returns success4441 GET projects/:id/debian_distributions/:codename/key.asc4442 behaves like Debian distributions read endpoint4443 with valid container4444 visibility_level: :public, user_type: :guest, auth_method: :private_token, expected_status: :success, expected_body: /^-----BEGIN PGP PUBLIC KEY BLOCK-----/4445 behaves like Debian distributions GET request4446 returns success and expected body4447 visibility_level: :public, user_type: :not_a_member, auth_method: :private_token, expected_status: :success, expected_body: /^-----BEGIN PGP PUBLIC KEY BLOCK-----/4448 behaves like Debian distributions GET request4449 returns success and expected body4450 visibility_level: :public, user_type: :anonymous, auth_method: :private_token, expected_status: :success, expected_body: /^-----BEGIN PGP PUBLIC KEY BLOCK-----/4451 behaves like Debian distributions GET request4452 returns success and expected body4453 visibility_level: :public, user_type: :invalid_token, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil4454 behaves like Debian distributions GET request4455 returns unauthorized4456 visibility_level: :private, user_type: :developer, auth_method: :private_token, expected_status: :success, expected_body: /^-----BEGIN PGP PUBLIC KEY BLOCK-----/4457 behaves like Debian distributions GET request4458 returns success and expected body4459 visibility_level: :private, user_type: :developer, auth_method: :basic, expected_status: :not_found, expected_body: nil4460 behaves like Debian distributions GET request4461 returns not_found4462 visibility_level: :private, user_type: :guest, auth_method: :private_token, expected_status: :forbidden, expected_body: nil4463 behaves like Debian distributions GET request4464 returns forbidden4465 visibility_level: :private, user_type: :not_a_member, auth_method: :private_token, expected_status: :not_found, expected_body: nil4466 behaves like Debian distributions GET request4467 returns not_found4468 visibility_level: :private, user_type: :anonymous, auth_method: :private_token, expected_status: :not_found, expected_body: nil4469 behaves like Debian distributions GET request4470 returns not_found4471 visibility_level: :private, user_type: :invalid_token, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil4472 behaves like Debian distributions GET request4473 returns unauthorized4474 behaves like rejects Debian access with unknown container id4475 with an unknown container4476 as anonymous4477 behaves like Debian packages GET request4478 returns not_found4479 as authenticated user4480 behaves like Debian packages GET request4481 returns not_found4482 behaves like accept GET request on private project with access to package registry for everyone4483 behaves like Debian distributions GET request4484 returns success4485 PUT projects/:id/debian_distributions/:codename4486 behaves like Debian distributions write endpoint4487 with valid container4488 visibility_level: :public, user_type: :developer, auth_method: :private_token, expected_status: :success, expected_body: /^{.*"codename":"existing-codename",.*"suite":"my-suite",/4489 behaves like Debian distributions PUT request4490 updates distribution4491 visibility_level: :public, user_type: :developer, auth_method: :basic, expected_status: :unauthorized, expected_body: nil4492 behaves like Debian distributions PUT request4493 returns unauthorized4494 visibility_level: :public, user_type: :guest, auth_method: :private_token, expected_status: :forbidden, expected_body: nil4495 behaves like Debian distributions PUT request4496 returns forbidden4497 visibility_level: :public, user_type: :not_a_member, auth_method: :private_token, expected_status: :forbidden, expected_body: nil4498 behaves like Debian distributions PUT request4499 returns forbidden4500 visibility_level: :public, user_type: :anonymous, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil4501 behaves like Debian distributions PUT request4502 returns unauthorized4503 visibility_level: :public, user_type: :invalid_token, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil4504 behaves like Debian distributions PUT request4505 returns unauthorized4506 visibility_level: :private, user_type: :developer, auth_method: :private_token, expected_status: :success, expected_body: /^{.*"codename":"existing-codename",.*"suite":"my-suite",/4507 behaves like Debian distributions PUT request4508 updates distribution4509 visibility_level: :private, user_type: :guest, auth_method: :private_token, expected_status: :forbidden, expected_body: nil4510 behaves like Debian distributions PUT request4511 returns forbidden4512 visibility_level: :private, user_type: :not_a_member, auth_method: :private_token, expected_status: :not_found, expected_body: nil4513 behaves like Debian distributions PUT request4514 returns not_found4515 visibility_level: :private, user_type: :anonymous, auth_method: :private_token, expected_status: :not_found, expected_body: nil4516 behaves like Debian distributions PUT request4517 returns not_found4518 visibility_level: :private, user_type: :invalid_token, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil4519 behaves like Debian distributions PUT request4520 returns unauthorized4521 behaves like rejects Debian access with unknown container id4522 with an unknown container4523 as anonymous4524 behaves like Debian packages GET request4525 returns not_found4526 as authenticated user4527 behaves like Debian packages GET request4528 returns not_found4529 with invalid parameters4530 behaves like Debian distributions write endpoint4531 with valid container4532 visibility_level: :public, user_type: :developer, auth_method: :private_token, expected_status: :bad_request, expected_body: /^{"message":{"suite":\["has already been taken as Codename"\]}}$/4533 behaves like Debian distributions GET request4534 returns bad_request and expected body4535 visibility_level: :public, user_type: :developer, auth_method: :basic, expected_status: :unauthorized, expected_body: nil4536 behaves like Debian distributions GET request4537 returns unauthorized4538 visibility_level: :public, user_type: :guest, auth_method: :private_token, expected_status: :forbidden, expected_body: nil4539 behaves like Debian distributions GET request4540 returns forbidden4541 visibility_level: :public, user_type: :not_a_member, auth_method: :private_token, expected_status: :forbidden, expected_body: nil4542 behaves like Debian distributions GET request4543 returns forbidden4544 visibility_level: :public, user_type: :anonymous, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil4545 behaves like Debian distributions GET request4546 returns unauthorized4547 visibility_level: :public, user_type: :invalid_token, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil4548 behaves like Debian distributions GET request4549 returns unauthorized4550 visibility_level: :private, user_type: :developer, auth_method: :private_token, expected_status: :bad_request, expected_body: /^{"message":{"suite":\["has already been taken as Codename"\]}}$/4551 behaves like Debian distributions GET request4552 returns bad_request and expected body4553 visibility_level: :private, user_type: :guest, auth_method: :private_token, expected_status: :forbidden, expected_body: nil4554 behaves like Debian distributions GET request4555 returns forbidden4556 visibility_level: :private, user_type: :not_a_member, auth_method: :private_token, expected_status: :not_found, expected_body: nil4557 behaves like Debian distributions GET request4558 returns not_found4559 visibility_level: :private, user_type: :anonymous, auth_method: :private_token, expected_status: :not_found, expected_body: nil4560 behaves like Debian distributions GET request4561 returns not_found4562 visibility_level: :private, user_type: :invalid_token, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil4563 behaves like Debian distributions GET request4564 returns unauthorized4565 behaves like rejects Debian access with unknown container id4566 with an unknown container4567 as anonymous4568 behaves like Debian packages GET request4569 returns not_found4570 as authenticated user4571 behaves like Debian packages GET request4572 returns not_found4573 DELETE projects/:id/debian_distributions/:codename4574 behaves like Debian distributions maintainer write endpoint4575 with valid container4576 visibility_level: :public, user_type: :maintainer, auth_method: :private_token, expected_status: :success, expected_body: /^{"message":"202 Accepted"}$/4577 behaves like Debian distributions DELETE request4578 updates distribution4579 visibility_level: :public, user_type: :maintainer, auth_method: :basic, expected_status: :unauthorized, expected_body: nil4580 behaves like Debian distributions DELETE request4581 returns unauthorized4582 visibility_level: :public, user_type: :developer, auth_method: :private_token, expected_status: :forbidden, expected_body: nil4583 behaves like Debian distributions DELETE request4584 returns forbidden4585 visibility_level: :public, user_type: :not_a_member, auth_method: :private_token, expected_status: :forbidden, expected_body: nil4586 behaves like Debian distributions DELETE request4587 returns forbidden4588 visibility_level: :public, user_type: :anonymous, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil4589 behaves like Debian distributions DELETE request4590 returns unauthorized4591 visibility_level: :public, user_type: :invalid_token, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil4592 behaves like Debian distributions DELETE request4593 returns unauthorized4594 visibility_level: :private, user_type: :maintainer, auth_method: :private_token, expected_status: :success, expected_body: /^{"message":"202 Accepted"}$/4595 behaves like Debian distributions DELETE request4596 updates distribution4597 visibility_level: :private, user_type: :developer, auth_method: :private_token, expected_status: :forbidden, expected_body: nil4598 behaves like Debian distributions DELETE request4599 returns forbidden4600 visibility_level: :private, user_type: :not_a_member, auth_method: :private_token, expected_status: :not_found, expected_body: nil4601 behaves like Debian distributions DELETE request4602 returns not_found4603 visibility_level: :private, user_type: :anonymous, auth_method: :private_token, expected_status: :not_found, expected_body: nil4604 behaves like Debian distributions DELETE request4605 returns not_found4606 visibility_level: :private, user_type: :invalid_token, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil4607 behaves like Debian distributions DELETE request4608 returns unauthorized4609 behaves like rejects Debian access with unknown container id4610 with an unknown container4611 as anonymous4612 behaves like Debian packages GET request4613 returns not_found4614 as authenticated user4615 behaves like Debian packages GET request4616 returns not_found4617 when destroy fails4618 behaves like Debian distributions maintainer write endpoint4619 with valid container4620 visibility_level: :public, user_type: :maintainer, auth_method: :private_token, expected_status: :bad_request, expected_body: /^{"message":"Failed to delete distribution"}$/4621 behaves like Debian distributions GET request4622 returns bad_request and expected body4623 visibility_level: :public, user_type: :maintainer, auth_method: :basic, expected_status: :unauthorized, expected_body: nil4624 behaves like Debian distributions GET request4625 returns unauthorized4626 visibility_level: :public, user_type: :developer, auth_method: :private_token, expected_status: :forbidden, expected_body: nil4627 behaves like Debian distributions GET request4628 returns forbidden4629 visibility_level: :public, user_type: :not_a_member, auth_method: :private_token, expected_status: :forbidden, expected_body: nil4630 behaves like Debian distributions GET request4631 returns forbidden4632 visibility_level: :public, user_type: :anonymous, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil4633 behaves like Debian distributions GET request4634 returns unauthorized4635 visibility_level: :public, user_type: :invalid_token, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil4636 behaves like Debian distributions GET request4637 returns unauthorized4638 visibility_level: :private, user_type: :maintainer, auth_method: :private_token, expected_status: :bad_request, expected_body: /^{"message":"Failed to delete distribution"}$/4639 behaves like Debian distributions GET request4640 returns bad_request and expected body4641 visibility_level: :private, user_type: :developer, auth_method: :private_token, expected_status: :forbidden, expected_body: nil4642 behaves like Debian distributions GET request4643 returns forbidden4644 visibility_level: :private, user_type: :not_a_member, auth_method: :private_token, expected_status: :not_found, expected_body: nil4645 behaves like Debian distributions GET request4646 returns not_found4647 visibility_level: :private, user_type: :anonymous, auth_method: :private_token, expected_status: :not_found, expected_body: nil4648 behaves like Debian distributions GET request4649 returns not_found4650 visibility_level: :private, user_type: :invalid_token, auth_method: :private_token, expected_status: :unauthorized, expected_body: nil4651 behaves like Debian distributions GET request4652 returns unauthorized4653 behaves like rejects Debian access with unknown container id4654 with an unknown container4655 as anonymous4656 behaves like Debian packages GET request4657 returns not_found4658 as authenticated user4659 behaves like Debian packages GET request4660 returns not_found4661Import::GiteaController4662 GET new4663 behaves like a GitHub-ish import controller: GET new4664 redirects to status if we already have a token4665 renders the :new page if no token is present in session4666 POST personal_access_token4667 behaves like a GitHub-ish import controller: POST personal_access_token4668 updates access token4669 strips access token with spaces4670 passes namespace_id param as query param if it was present4671 GET status4672 behaves like a GitHub-ish import controller: GET status4673 returns variables for json request4674 touches the etag cache store4675 handles an invalid access token4676 does not produce N+1 database queries4677 requests provider repos list4678 when user is not allowed to import projects4679 returns 4044680 when filtering4681 filters list of repositories by name4682 filters the list, ignoring the case of the name4683 when user input contains html4684 sanitizes user input4685 when the client returns a non-string name4686 does not raise an error4687 when namespace_id query param is provided4688 when user is allowed to create projects in this namespace4689 provides namespace to the template4690 when user is not allowed to create projects in this namespace4691 renders 4044692 when host url is local or not http4693 denies network request4694 denies network request4695 denies network request4696 when DNS Rebinding protection is enabled4697 when provided host url is using https4698 uses unchanged host url to send request to Gitea4699 when provided host url is using http4700 uses changed host url to send request to Gitea4701 POST create4702 behaves like a GitHub-ish import controller: POST create4703 returns 200 response when the project is imported successfully4704 returns 422 response with the base error when the project could not be imported4705 touches the etag cache store4706 when the repository owner is the provider user4707 when the provider user and GitLab user's usernames match4708 takes the current user's namespace4709 when the provider user and GitLab user's usernames don't match4710 takes the current user's namespace4711 when the repository owner is not the provider user4712 when a namespace with the provider user's username already exists4713 when the namespace is owned by the GitLab user4714 takes the existing namespace4715 when the namespace is not owned by the GitLab user4716 creates a project using user's namespace4717 when a namespace with the provider user's username doesn't exist4718 when current user can create namespaces4719 does not create the namespace4720 user has chosen a namespace and name for the project4721 takes the selected namespace and name4722 user has chosen an existing nested namespace and name for the project4723 takes the selected namespace and name4724 user has chosen a non-existent nested namespaces and name for the project4725 does not take the selected namespace and name4726 does not create namespaces4727 user has chosen existent and non-existent nested namespaces and name for the project4728 does not take the selected namespace and name4729 does not create the namespaces4730 does not create a new namespace under the user namespace4731 user can use a group without having permissions to create a group4732 takes the selected namespace and name4733 when user can not create projects in the chosen namespace4734 returns 422 response4735 behaves like project import rate limiter4736 when limit exceeds4737 notifies and redirects user4738 GET realtime_changes4739 behaves like a GitHub-ish import controller: GET realtime_changes4740 sets a Poll-Interval header4741Groups::Registry::RepositoriesController4742 GET #index4743 behaves like renders correctly4744 when user has access to registry4745 html format4746 show index page4747 when there is an invalid path error ContainerRegistry::Path::InvalidRegistryPathError4748 displays a connection error message4749 when there is an invalid path error Faraday::Error4750 displays a connection error message4751 json format4752 has the correct response schema4753 behaves like renders a list of repositories4754 returns a list of projects for json format4755 when there is a ContainerRegistry::Path::InvalidRegistryPathError4756 displays a connection error message4757 when there is a Faraday::Error4758 displays a connection error message4759 behaves like with name parameter4760 returns the searched repo4761 behaves like a package tracking event4762 creates a gitlab tracking event list_repositories4763 with project in subgroup4764 behaves like renders a list of repositories4765 returns a list of projects for json format4766 when there is a ContainerRegistry::Path::InvalidRegistryPathError4767 displays a connection error message4768 when there is a Faraday::Error4769 displays a connection error message4770 behaves like with name parameter4771 returns the searched repo4772 with project in subgroup and group4773 returns all the projects4774 behaves like with name parameter4775 returns the searched repo4776 user does not have access to container registry4777 json format4778 behaves like returning response status4779 returns not_found4780 html format4781 behaves like returning response status4782 returns not_found4783 GET #show4784 behaves like renders correctly4785 when user has access to registry4786 html format4787 show index page4788 when there is an invalid path error ContainerRegistry::Path::InvalidRegistryPathError4789 displays a connection error message4790 when there is an invalid path error Faraday::Error4791 displays a connection error message4792 json format4793 has the correct response schema4794 behaves like renders a list of repositories4795 returns a list of projects for json format4796 when there is a ContainerRegistry::Path::InvalidRegistryPathError4797 displays a connection error message4798 when there is a Faraday::Error4799 displays a connection error message4800 behaves like with name parameter4801 returns the searched repo4802 behaves like a package tracking event4803 creates a gitlab tracking event list_repositories4804 with project in subgroup4805 behaves like renders a list of repositories4806 returns a list of projects for json format4807 when there is a ContainerRegistry::Path::InvalidRegistryPathError4808 displays a connection error message4809 when there is a Faraday::Error4810 displays a connection error message4811 behaves like with name parameter4812 returns the searched repo4813 with project in subgroup and group4814 returns all the projects4815 behaves like with name parameter4816 returns the searched repo4817 user does not have access to container registry4818 json format4819 behaves like returning response status4820 returns not_found4821 html format4822 behaves like returning response status4823 returns not_found4824Projects::SnippetsController4825 GET #index4826 fetches snippet counts via the snippet count service4827 behaves like paginated collection4828 renders a page number that is not ouf of range4829 redirects to last_page if page number is larger than number of pages4830 does not redirect to external sites when provided a host field4831 behaves like snippets sort order4832 when no sort param is provided4833 calls SnippetsFinder with updated_at sort option4834 when sort param is provided4835 calls SnippetsFinder with the given sort param4836 behaves like snippets views4837 when rendered4838 avoids N+1 database queries4839 when the project snippet is private4840 when anonymous4841 does not include the private snippet4842 when signed in as the author4843 renders the snippet4844 when signed in as a project member4845 renders the snippet4846 POST #mark_as_spam4847 updates the snippet4848 GET #show4849 when the project snippet is private4850 when anonymous4851 responds with status 4044852 when signed in as the author4853 behaves like successful response4854 renders the snippet4855 when signed in as a project member4856 behaves like successful response4857 renders the snippet4858 when the project snippet does not exist4859 when anonymous4860 responds with status 4044861 when signed in4862 responds with status 4044863 when the project snippet is public4864 when attempting to access from a different project route4865 responds with status 4044866 GET #raw4867 when the project snippet is private4868 when anonymous4869 responds with status 4044870 when signed in as the author4871 behaves like successful response4872 renders the snippet4873 when signed in as a project member4874 behaves like successful response4875 renders the snippet4876 when the project snippet does not exist4877 when anonymous4878 responds with status 4044879 when signed in4880 responds with status 4044881 when the project snippet is public4882 when attempting to access from a different project route4883 responds with status 4044884 GET #show for embeddable content4885 when snippet is private4886 responds with status 4044887 when snippet is public4888 renders the blob from the repository4889 does not show the blobs expanded by default4890 when param expanded is set4891 shows all blobs expanded4892 when the project is private4893 when snippet is public4894 responds with status 4044895 GET #raw4896 when repository is empty4897 CRLF line ending4898 returns LF line endings by default4899 when line_ending parameter present4900 does not convert line endings4901 when repository is not empty4902 sends the blob4903 behaves like project cache control headers4904 when project is public4905 returns cache_control public header to true4906 when project is private4907 returns cache_control public header to true4908 when project is internal4909 returns cache_control public header to true4910 behaves like content disposition headers4911 sets content disposition to inline4912 when inline param is false4913 sets content disposition to attachment4914getting container repositories in a project4915 returns the total count of container repositories4916 behaves like a working graphql query4917 returns a successful response4918 matches the JSON schema4919 with different permissions4920 project_visibility: :private, role: :maintainer, access_granted: true, can_delete: true4921 return the proper response4922 project_visibility: :private, role: :developer, access_granted: true, can_delete: true4923 return the proper response4924 project_visibility: :private, role: :reporter, access_granted: true, can_delete: false4925 return the proper response4926 project_visibility: :private, role: :guest, access_granted: false, can_delete: false4927 return the proper response4928 project_visibility: :private, role: :anonymous, access_granted: false, can_delete: false4929 return the proper response4930 project_visibility: :public, role: :maintainer, access_granted: true, can_delete: true4931 return the proper response4932 project_visibility: :public, role: :developer, access_granted: true, can_delete: true4933 return the proper response4934 project_visibility: :public, role: :reporter, access_granted: true, can_delete: false4935 return the proper response4936 project_visibility: :public, role: :guest, access_granted: true, can_delete: false4937 return the proper response4938 project_visibility: :public, role: :anonymous, access_granted: true, can_delete: false4939 return the proper response4940 limiting the number of repositories4941 only returns N repositories4942 filter by name4943 returns the searched container repository4944 behaves like handling graphql network errors with the container registry4945 returns a connection error4946 behaves like not hitting graphql network errors with the container registry4947 does not return any error4948 sorting and pagination4949 when sorting by name4950 when ascending4951 behaves like sorted paginated query4952 behaves like requires variables4953 shared example requires variables to be set4955 when sorting4956 sorts correctly4957 when paginating4958 paginates correctly4959 when descending4960 behaves like sorted paginated query4961 behaves like requires variables4962 shared example requires variables to be set4964 when sorting4965 sorts correctly4966 when paginating4967 paginates correctly4968maven package details4969 a maven package with version4970 behaves like a package detail4971 behaves like a working graphql query4972 returns a successful response4973 behaves like matching the package details schema4974 matches the JSON schema4975 with pipelines4976 behaves like a working graphql query4977 returns a successful response4978 behaves like matching the package details schema4979 matches the JSON schema4980 behaves like correct maven metadata4981 has the correct metadata4982 behaves like a package with files4983 has the right amount of files4984 has the basic package files data4985 with package files pending destruction4986 does not return them4987 a versionless maven package4988 has an empty version4989 behaves like a package detail4990 behaves like a working graphql query4991 returns a successful response4992 behaves like matching the package details schema4993 matches the JSON schema4994 with pipelines4995 behaves like a working graphql query4996 returns a successful response4997 behaves like matching the package details schema4998 matches the JSON schema4999 behaves like correct maven metadata5000 has the correct metadata5001 behaves like a package with files5002 has the right amount of files5003 has the basic package files data5004 with package files pending destruction5005 does not return them5006API::DraftNotes5007 # order random5008 Create a new draft note5009 when creating a new draft note5010 with required params5011 returns 201 Created status5012 creates a new draft note with the submitted params5013 without required params5014 returns 400 Bad Request status5015 when providing a non-existing commit_id5016 returns a 400 Bad Request5017 when targeting a merge request the user doesn't have access to5018 returns a 404 Not Found5019 when attempting to resolve a disscussion5020 when providing a non-existant ID5021 returns a 400 Bad Request5022 when not providing an ID5023 returns a 400 Bad Request5024 returns a validation error message5025 Bulk publishing draft notes5026 when publishing an existing draft note by the user5027 returns 204 No Content status5028 publishes the specified draft notes5029 only publishes the user's draft notes5030 when DraftNotes::PublishService returns a non-success5031 returns an :internal_server_error and a message5032 delete a draft note5033 when deleting an existing draft note by the user5034 returns 204 No Content status5035 deletes the specified draft note5036 when deleting a non-existent draft note5037 returns a 404 Not Found5038 when deleting a draft note by a different user5039 returns a 404 Not Found5040 Get a single draft note5041 when requesting an existing draft note by the user5042 returns 200 OK status5043 returns the requested draft note5044 when requesting a non-existent draft note5045 returns a 404 Not Found response5046 when requesting an existing draft note by another user5047 returns a 404 Not Found response5048 Get a list of merge request draft notes5049 returns 200 OK status5050 returns only draft notes authored by the current user5051 Update a draft note5052 when updating an existing draft note5053 with required params5054 returns 200 Success status5055 updates draft note with the new content5056 without including an update to the note body5057 returns the draft note with no changes5058 when updating a non-existent draft note5059 returns a 404 Not Found5060 when updating a draft note by a different user5061 returns a 404 Not Found5062 Publishing a draft note5063 when publishing an existing draft note by the user5064 returns 204 No Content status5065 publishes the specified draft note5066 when publishing a non-existent draft note5067 returns a 404 Not Found5068 when publishing a draft note by a different user5069 returns a 404 Not Found5070 when DraftNotes::PublishService returns a non-success5071 returns an :internal_server_error and a message5072API::AccessRequests5073 behaves like GET /:sources/:id/access_requests5074 with :sources == projects5075 behaves like a 404 response when source is private5076 returns 4045077 when authenticated as a non-maintainer/owner5078 as a developer5079 returns 4035080 as a access_requester5081 returns 4035082 as a stranger5083 returns 4035084 when authenticated as a maintainer/owner5085 returns access requesters5086 behaves like GET /:sources/:id/access_requests5087 with :sources == groups5088 behaves like a 404 response when source is private5089 returns 4045090 when authenticated as a non-maintainer/owner5091 as a developer5092 returns 4035093 as a access_requester5094 returns 4035095 as a stranger5096 returns 4035097 when authenticated as a maintainer/owner5098 returns access requesters5099 behaves like POST /:sources/:id/access_requests5100 with :sources == projects5101 behaves like a 404 response when source is private5102 returns 4045103 when authenticated as a member5104 as a developer5105 returns 4035106 as a maintainer5107 returns 4035108 when authenticated as an access requester5109 returns 4005110 when authenticated as a stranger5111 returns 2015112 when access request is disabled for the project5113 returns 4035114 behaves like POST /:sources/:id/access_requests5115 with :sources == groups5116 behaves like a 404 response when source is private5117 returns 4045118 when authenticated as a member5119 as a developer5120 returns 4035121 as a maintainer5122 returns 4035123 when authenticated as an access requester5124 returns 4005125 when authenticated as a stranger5126 returns 2015127 when access request is disabled for the group5128 returns 4035129 behaves like PUT /:sources/:id/access_requests/:user_id/approve5130 with :sources == projects5131 behaves like a 404 response when source is private5132 returns 4045133 when authenticated as a non-maintainer/owner5134 as a developer5135 returns 4035136 as a access_requester5137 returns 4035138 as a stranger5139 returns 4035140 when authenticated as a maintainer/owner5141 returns 2015142 user_id does not match an existing access requester5143 returns 4045144 behaves like PUT /:sources/:id/access_requests/:user_id/approve5145 with :sources == groups5146 behaves like a 404 response when source is private5147 returns 4045148 when authenticated as a non-maintainer/owner5149 as a developer5150 returns 4035151 as a access_requester5152 returns 4035153 as a stranger5154 returns 4035155 when authenticated as a maintainer/owner5156 returns 2015157 user_id does not match an existing access requester5158 returns 4045159 behaves like DELETE /:sources/:id/access_requests/:user_id5160 with :sources == projects5161 behaves like a 404 response when source is private5162 returns 4045163 when authenticated as a non-maintainer/owner5164 as a developer5165 returns 4035166 as a stranger5167 returns 4035168 when authenticated as the access requester5169 deletes the access requester5170 when authenticated as a maintainer/owner5171 deletes the access requester5172 user_id matches a member, not an access requester5173 returns 4045174 user_id does not match an existing access requester5175 returns 4045176 behaves like DELETE /:sources/:id/access_requests/:user_id5177 with :sources == groups5178 behaves like a 404 response when source is private5179 returns 4045180 when authenticated as a non-maintainer/owner5181 as a developer5182 returns 4035183 as a stranger5184 returns 4035185 when authenticated as the access requester5186 deletes the access requester5187 when authenticated as a maintainer/owner5188 deletes the access requester5189 user_id matches a member, not an access requester5190 returns 4045191 user_id does not match an existing access requester5192 returns 4045193Oauth::AuthorizationsController5194 includes Two-factor enforcement concern5195 GET #new5196 when the user is confirmed5197 when there is already an access token for the application with a matching scope5198 authorizes the request and shows the user a page that redirects5199 without valid params5200 returns 200 code and renders error view5201 with valid params5202 returns 200 code and renders view5203 deletes session.user_return_to and redirects when skip authorization5204 with gl_auth_type=login5205 the application has all scopes5206 downgrades the scopes5207 the application has api and read_user scopes5208 downgrades the scopes5209 the application has read_api and read_user scopes5210 downgrades the scopes5211 the application has only api scopes5212 downgrades the scopes5213 modifies the client.application.scopes5214 does not remove pre-existing scopes5215 the application has only read_api scopes5216 downgrades the scopes5217 modifies the client.application.scopes5218 does not remove pre-existing scopes5219 the application has scopes we do not handle5220 does not modify the scopes5221 when the user is not signed in5222 sets a lower session expiry and redirects to the sign in page5223 when the user is admin5224 when disable_admin_oauth_scopes is set5225 returns 200 and renders forbidden view5226 when disable_admin_oauth_scopes is set and the application is trusted5227 returns 200 and renders redirect view5228 when disable_admin_oauth_scopes is disabled5229 returns 200 and renders new view5230 when the user is not admin5231 when disable_admin_oauth_scopes is enabled5232 returns 200 and renders new view5233 POST #create5234 when the user is confirmed5235 when there is already an access token for the application with a matching scope5236 authorizes the request and redirects5237 when the user is unconfirmed5238 returns 200 and renders error view5239 DELETE #destroy5240 when the user is confirmed5241 when there is already an access token for the application with a matching scope5242 authorizes the request and redirects5243 when the user is unconfirmed5244 returns 200 and renders error view5245API::Suggestions5246 PUT /suggestions/:id/apply5247 when successfully applies patch5248 renders an ok response and returns json content5249 when a custom commit message is included5250 renders an ok response and returns json content5251 when not able to apply patch5252 renders a bad request error and returns json content5253 when suggestion is not found5254 renders a not found error and returns json content5255 when suggestion ID is not valid5256 renders a not found error and returns json content5257 when unauthorized5258 renders a forbidden error and returns json content5259 PUT /suggestions/batch_apply5260 when successfully applies multiple patches as a batch5261 renders an ok response and returns json content5262 provides a custom commit message5263 when not able to apply one or more of the patches5264 renders a bad request error and returns json content5265 with missing suggestions5266 renders a not found error and returns json content if any suggestion is not found5267 renders a bad request error and returns json content when no suggestions are provided5268 when unauthorized5269 renders a forbidden error and returns json content5270Updating an existing release5271 when the current user has access to update releases5272 name5273 when a new name is provided5274 behaves like updates release fields5275 updates the correct field and returns the release5276 behaves like no errors5277 returns no errors5278 when null is provided5279 behaves like updates release fields5280 updates the correct field and returns the release5281 behaves like no errors5282 returns no errors5283 description5284 when a new description is provided5285 behaves like updates release fields5286 updates the correct field and returns the release5287 behaves like no errors5288 returns no errors5289 when null is provided5290 behaves like updates release fields5291 updates the correct field and returns the release5292 behaves like no errors5293 returns no errors5294 releasedAt5295 when no time zone is provided5296 behaves like updates release fields5297 updates the correct field and returns the release5298 behaves like no errors5299 returns no errors5300 when a local time zone is provided5301 behaves like updates release fields5302 updates the correct field and returns the release5303 behaves like no errors5304 returns no errors5305 when null is provided5306 behaves like top-level error with message5307 returns a top-level error with message5308 milestones5309 when a new set of milestones is provided provided5310 behaves like updates release fields5311 updates the correct field and returns the release5312 behaves like no errors5313 returns no errors5314 when an empty array is provided5315 behaves like updates release fields5316 updates the correct field and returns the release5317 behaves like no errors5318 returns no errors5319 when null is provided5320 behaves like top-level error with message5321 returns a top-level error with message5322 when a non-existent milestone title is provided5323 behaves like errors-as-data with message5324 returns an error-as-data with message5325 when a milestone title from a different project is provided5326 behaves like errors-as-data with message5327 returns an error-as-data with message5328 validation5329 when no updated fields are provided5330 behaves like errors-as-data with message5331 returns an error-as-data with message5332 when the tag does not exist5333 behaves like errors-as-data with message5334 returns an error-as-data with message5335 when the project does not exist5336 behaves like top-level error with message5337 returns a top-level error with message5338 when the current user doesn't have access to update releases5339 when the current user is a Reporter5340 behaves like top-level error with message5341 returns a top-level error with message5342 when the current user is a Guest5343 behaves like top-level error with message5344 returns a top-level error with message5345 when the current user is a public user5346 behaves like top-level error with message5347 returns a top-level error with message5348Groups::Clusters::IntegrationsController5349 POST create_or_update5350 behaves like #create_or_update action5351 authorization5352 behaves like a secure endpoint5353 is allowed for admin when admin mode enabled5354 is denied for admin when admin mode disabled5355 it is allowed for group maintainers5356 is expected to be allowed for owner. Expected: 200,201,204,302 Got: 3025357 is expected to be allowed for maintainer. Expected: 200,201,204,302 Got: 3025358 is expected to be denied for developer. Expected: 401,404 Got: 4045359 is expected to be denied for reporter. Expected: 401,404 Got: 4045360 is expected to be denied for guest. Expected: 401,404 Got: 4045361 is expected to be denied for user. Expected: 401,404 Got: 4045362 is expected to be denied for external. Expected: 401,404 Got: 4045363 functionality5364 redirects on success5365 redirects on error5366JwtController5367 POST /jwt/auth5368 returns 4045369 authenticating against container registry5370 existing service5371 is expected to respond with numeric status code ok5372 returning custom http code5373 is expected to respond with numeric status code http_version_not_supported5374 when using authenticated request5375 using CI token5376 project with enabled CI5377 is expected to have received new(#<Project id:380 namespace302/project-378>>, #<User id:1737 @user1379>, #<ActionController::Parameters {"service"=>"container_registry", "auth_type"=>:build} permitted: true>) 1 time5378 behaves like user logging5379 logs username and ID5380 project with disabled CI5381 is expected to respond with numeric status code unauthorized5382 using deploy tokens5383 authenticates correctly5384 does not log a user5385 using personal access tokens5386 authenticates correctly5387 behaves like rejecting a blocked user5388 with blocked user5389 behaves like with invalid credentials5390 returns a generic error message5391 behaves like user logging5392 logs username and ID5393 behaves like a token that expires today5394 fails authentication5395 using User login5396 is expected to have received new(nil, #<User id:1751 @user1388>, #<ActionController::Parameters {"service"=>"container_registry", "auth_type"=>:gitlab_or_ldap} permitted: true>) 1 time5397 does not cause session based checks to be activated5398 behaves like rejecting a blocked user5399 with blocked user5400 behaves like with invalid credentials5401 returns a generic error message5402 when passing a flat array of scopes5403 is expected to have received new(nil, #<User id:1754 @user1391>, #<ActionController::Parameters {"service"=>"container_registry", "scopes"=>["scope1", "scope2"], "auth_type"=>:gitlab_or_ldap} permitted: true>) 1 time5404 behaves like user logging5405 logs username and ID5406 when user has 2FA enabled5407 without personal token5408 behaves like with invalid credentials5409 returns a generic error message5410 with personal token5411 accepts the authorization attempt5412 using invalid login5413 when internal auth is enabled5414 behaves like with invalid credentials5415 returns a generic error message5416 when internal auth is disabled5417 behaves like with invalid credentials5418 returns a generic error message5419 when using unauthenticated request5420 accepts the authorization attempt5421 allows read access5422 unknown service5423 is expected to respond with numeric status code not_found5424 authenticating against dependency proxy5425 with personal access token5426 behaves like with valid credentials5427 returns token successfully5428 behaves like a token that expires today5429 fails authentication5430 with user credentials token5431 behaves like with valid credentials5432 returns token successfully5433 with group deploy token5434 behaves like with valid credentials5435 returns token successfully5436 with project deploy token5437 behaves like returning response status5438 returns forbidden5439 with revoked group deploy token5440 behaves like returning response status5441 returns unauthorized5442 with group deploy token with insufficient scopes5443 behaves like returning response status5444 returns unauthorized5445 with invalid credentials5446 behaves like returning response status5447 returns unauthorized5448merge requests actions5449 GET /:namespace/:project/-/merge_requests/:iid5450 as json5451 with caching5452 for sidebar_extras5453 when the request has not been cached5454 behaves like a non-cached request5455 serializes merge request5456 when the request has already been cached5457 does not serialize merge request again5458 when the merge request is updated5459 when the logged in user is different5460 behaves like a non-cached request5461 serializes merge request5462 when the assignee is changed5463 behaves like a non-cached request5464 serializes merge request5465 when the existing assignee gets updated5466 behaves like a non-cached request5467 serializes merge request5468 when the reviewer is changed5469 behaves like a non-cached request5470 serializes merge request5471 when the existing reviewer gets updated5472 behaves like a non-cached request5473 serializes merge request5474 when the time_estimate is changed5475 behaves like a non-cached request5476 serializes merge request5477 when the spend_time is changed5478 behaves like a non-cached request5479 serializes merge request5480 when a user leaves a note5481 behaves like a non-cached request5482 serializes merge request5483 for other serializer5484 does not use cache5485Projects::Registry::RepositoriesController5486 when user has access to registry5487 GET #index5488 behaves like renders a list of repositories5489 when root container repository exists5490 does not create root container repository5491 when root container repository is not created5492 when there are tags for this repository5493 creates a root container repository5494 behaves like renders 200 for html and 404 for json5495 successfully renders container repositories5496 returns 404 for request in json format5497 when there is a ContainerRegistry::Path::InvalidRegistryPathError5498 displays a connection error message5499 when there is a Faraday::Error5500 displays a connection error message5501 when there are no tags for this repository5502 does not ensure root container repository5503 behaves like renders 200 for html and 404 for json5504 successfully renders container repositories5505 returns 404 for request in json format5506 when there is a ContainerRegistry::Path::InvalidRegistryPathError5507 displays a connection error message5508 when there is a Faraday::Error5509 displays a connection error message5510 GET #show5511 behaves like renders a list of repositories5512 when root container repository exists5513 does not create root container repository5514 when root container repository is not created5515 when there are tags for this repository5516 creates a root container repository5517 behaves like renders 200 for html and 404 for json5518 successfully renders container repositories5519 returns 404 for request in json format5520 when there is a ContainerRegistry::Path::InvalidRegistryPathError5521 displays a connection error message5522 when there is a Faraday::Error5523 displays a connection error message5524 when there are no tags for this repository5525 does not ensure root container repository5526 behaves like renders 200 for html and 404 for json5527 successfully renders container repositories5528 returns 404 for request in json format5529 when there is a ContainerRegistry::Path::InvalidRegistryPathError5530 displays a connection error message5531 when there is a Faraday::Error5532 displays a connection error message5533 DELETE #destroy5534 when root container repository exists5535 marks the repository as delete_scheduled5536 tracks the event5537 when user does not have access to registry5538 GET #index5539 responds with 4045540 does not ensure root container repository5541Projects::DesignManagement::Designs::RawImagesController5542 GET #show5543 when the design is not an LFS file5544 serves files with `Content-Disposition` header set to attachment plus the filename5545 serves files with Workhorse5546 behaves like project cache control headers5547 when project is public5548 returns cache_control public header to true5549 when project is private5550 returns cache_control public header to true5551 when project is internal5552 returns cache_control public header to true5553 when the user does not have permission5554 is expected to respond with numeric status code not_found5555 when design does not exist5556 is expected to respond with numeric status code not_found5557 sha param5558 is expected not to eq "157f421cb4d6a4aca7f87f626004ac012bbc5f08"5559 when sha is the newest version sha5560 behaves like a successful request for sha5561 is expected to respond with numeric status code ok5562 when sha is the oldest version sha5563 behaves like a successful request for sha5564 is expected to respond with numeric status code ok5565 when sha is nil5566 behaves like a successful request for sha5567 is expected to respond with numeric status code ok5568 when the design is an LFS file5569 serves files with `Content-Disposition: attachment`5570 sets appropriate caching headers5571 behaves like a controller that can serve LFS files5572 when lfs is enabled5573 when the project is linked to the LfsObject5574 serves the file5575 and lfs uses object storage5576 responds with redirect to file5577 sets content disposition5578 when project is not linked to the LfsObject5579 does not serve the file5580 when the project is part of a fork network5581 when the project is the root of the fork network5582 behaves like a controller that correctly serves lfs files within a fork network5583 is expected not to eq #<Project id:388 namespace310/project-386>>5584 does not serve the file if no members are linked to the LfsObject5585 serves the file when the fork network root is linked to the LfsObject5586 serves the file when the fork network member is linked to the LfsObject5587 when the project is a downstream member of the fork network5588 behaves like a controller that correctly serves lfs files within a fork network5589 is expected not to eq #<Project id:393 namespace315/project-391>>5590 does not serve the file if no members are linked to the LfsObject5591 serves the file when the fork network root is linked to the LfsObject5592 serves the file when the fork network member is linked to the LfsObject5593 when lfs is not enabled5594 delivers ASCII file (PENDING: Calling spec asked to skip testing LFS disabled scenario)5595Destroying multiple package files5596 post graphql mutation5597 with valid params5598 user_role: :maintainer, shared_examples_name: "destroying the package files"5599 behaves like destroying the package files5600 marks the package file as pending destruction5601 behaves like returning response status5602 returns success5603 user_role: :developer, shared_examples_name: "denying the mutation request"5604 behaves like denying the mutation request5605 does not mark the package file as pending destruction5606 behaves like returning response status5607 returns success5608 user_role: :reporter, shared_examples_name: "denying the mutation request"5609 behaves like denying the mutation request5610 does not mark the package file as pending destruction5611 behaves like returning response status5612 returns success5613 user_role: :guest, shared_examples_name: "denying the mutation request"5614 behaves like denying the mutation request5615 does not mark the package file as pending destruction5616 behaves like returning response status5617 returns success5618 user_role: :anonymous, shared_examples_name: "denying the mutation request"5619 behaves like denying the mutation request5620 does not mark the package file as pending destruction5621 behaves like returning response status5622 returns success5623 with more than 100 files5624 behaves like denying the mutation request5625 does not mark the package file as pending destruction5626 behaves like returning response status5627 returns success5628 with files outside of the project5629 behaves like denying the mutation request5630 does not mark the package file as pending destruction5631 behaves like returning response status5632 returns success5633 with invalid params5634 behaves like denying the mutation request5635 does not mark the package file as pending destruction5636 behaves like returning response status5637 returns success5638Sync project fork5639 # order random5640 when the branch is protected5641 does not call the sync service5642 behaves like a mutation that returns a top-level access error5643 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"5644 when the user has permission5645 and the sync service executes successfully5646 calls the sync service5647 and the sync service fails to execute5648 when fork details cannot be resolved5649 returns an error5650 when the specified branch does not exist5651 returns an error5652 when the previous execution resulted in a conflict5653 returns an error5654 when the request is rate limited5655 returns an error5656 when another fork sync is in progress5657 returns an error5658 when the user does not have permission5659 does not call the sync service5660 behaves like a mutation that returns a top-level access error5661 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"5662 when synchronize_fork feature flag is disabled5663 does not call the sync service5664Projects::FindFileController5665 GET #show5666 valid branch5667 is expected to respond with 2005668 invalid branch5669 is expected to respond with 4045670 GET #list5671 valid branch5672 returns an array of file path list5673 invalid branch5674 responds with status 4045675getting project members information5676 when the request is correct5677 returns project members successfully5678 behaves like a working graphql query5679 returns a successful response5680 search argument5681 returns members that match the search query5682 when paginating5683 returns correct results5684 member relations5685 returns direct members5686 returns invited members plus inherited members5687 returns direct, inherited, descendant, and invited members5688 returns an error for an invalid member relation5689 when a member is invited only via email and current_user is a maintainer5690 returns null in the user field5691 when project is owned by a member5692 returns the owner in the response5693 merge request interactions5694 avoids N+1 queries, when requesting multiple MRs5695 avoids N+1 queries, when more users are involved5696 when unauthenticated5697 returns members5698Repositories::LfsStorageController5699 PUT #upload_authorize5700 with unauthorized roles5701 user_role: :guest, expected_status: :forbidden5702 behaves like returning response status5703 returns forbidden5704 user_role: :anonymous, expected_status: :unauthorized5705 behaves like returning response status5706 returns unauthorized5707 with at least developer role5708 sets Workhorse with a max limit5709 PUT #upload_finalize5710 with lfs enabled5711 with unauthorized roles5712 user_role: :guest, expected_status: :forbidden5713 behaves like returning response status5714 returns forbidden5715 user_role: :anonymous, expected_status: :unauthorized5716 behaves like returning response status5717 returns unauthorized5718 with at least developer role5719 creates the objects5720 without the workhorse header5721 is expected to raise JWT::DecodeError5722 without file5723 behaves like returning response status5724 returns unprocessable_entity5725 with an invalid file5726 behaves like returning response status5727 returns bad_request5728 when an expected error5729 ActiveRecord::RecordInvalid raised5730 renders lfs forbidden5731 UploadedFile::InvalidPathError raised5732 renders lfs forbidden5733 ObjectStorage::RemoteStoreError raised5734 renders lfs forbidden5735 when existing file has been deleted5736 replaces the file5737 with invalid file5738 renders bad request5739 when file is not stored5740 renders unprocessable entity5741 with lfs disabled5742 behaves like returning response status5743 returns not_implemented5744Bulk update issues5745 # order random5746 when Gitlab is FOSS only5747 when parent is a group5748 does not allow bulk updating issues at the group level5749 when trying to update more than the max allowed5750 restricts updating more than 100 issues at the same time5751 when user can update all issues5752 updates all issues5753 when current user cannot read the specified project5754 returns a resource not found error5755 when setting arguments to null or none5756 updates all issues5757 when user can not update all issues5758 updates only issues that the user can update5759 when the `bulk_update_issues_mutation` feature flag is disabled5760 returns a resource not available error5761 when update service returns an error5762 returns an error message5763Setting assignees of a merge request5764 returns an error if the user is not allowed to update the merge request5765 when the current user does not have permission to add assignees5766 does not change the assignees5767 with assignees already assigned5768 replaces the assignee5769 triggers webhooks5770 when passing an empty list of assignees5771 removes assignee5772 when passing append as true5773 does not replace the assignee in CE5774 when passing remove as true5775 removes the users in the list, while adding none5776ConfirmEmailWarning5777 confirm email flash warning5778 when not signed in5779 is expected not to set confirm warning for "user1770@example.org"5780 when signed in5781 with a confirmed user5782 is expected not to set confirm warning for "user1771@example.org"5783 with an unconfirmed user5784 when executing a json request5785 is expected not to set confirm warning for "user1772@example.org"5786 when executing a post request5787 is expected not to set confirm warning for "user1773@example.org"5788 when executing a get request5789 with an unconfirmed email address present5790 is expected to set confirm warning for "unconfirmed@gitlab.com"5791 without an unconfirmed email address present5792 is expected to set confirm warning for "user1775@example.org"5793 when user is being impersonated5794 is expected to set confirm warning for "user1776@example.org"5795 when impersonated user email has html in their email5796 is expected to set confirm warning for "malicious@test.com<form><input/title='<script>alert(document.domain)</script>'>"5797 when user is not being impersonated5798 is expected to set confirm warning for "user1780@example.org"5799 when user email has html in their email5800 is expected to set confirm warning for "malicious@test.com<form><input/title='<script>alert(document.domain)</script>'>"5801Admin::RunnersController5802 #index5803 renders index template5804 #show5805 shows a runner show page5806 #new5807 renders a :new template5808 when create_runner_workflow_for_admin is disabled5809 returns :not_found5810 #register5811 when runner can be registered after creation5812 renders a :register template5813 when runner cannot be registered after creation5814 returns :not_found5815 when create_runner_workflow_for_admin is disabled5816 returns :not_found5817 #edit5818 shows a runner edit page5819 shows 404 for unknown runner5820 avoids N+1 queries5821 #update5822 with update succeeding5823 updates the runner and ticks the queue5824 with update failing5825 does not update runner or tick the queue5826 GET #runner_setup_scripts5827 renders the setup scripts5828 renders errors if they occur5829Query5830 gitpodEnabled field5831 When Gitpod is enabled for the application5832 is expected to include {"gitpodEnabled" => true}5833 When Gitpod is disabled for the application5834 is expected to include {"gitpodEnabled" => false}5835 .designManagement5836 .version5837 fetches the expected data5838 behaves like a working graphql query5839 returns a successful response5840 behaves like a query that needs authorization5841 the current user is not able to read designs5842 does not retrieve the record5843 raises an error5844 .designAtVersion5845 behaves like a working graphql query5846DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5847 returns a successful response5848 behaves like a query that needs authorization5849 the current user is not able to read designs5850 does not retrieve the record5851 raises an error5852 the current user is able to read designs5853DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5854 fetches the expected data, including the correct associations5855 .ciPipelineStage5856 when the current user has access to the stage5857 fetches the stage for the given ID5858 when the current user does not have access to the stage5859 returns nil5860MetricsDashboard5861 GET #metrics_dashboard5862 when no parameters are provided5863 returns an error json_response5864 when params are provided5865 returns the specified dashboard5866 when the params are in an alternate format5867 returns the specified dashboard5868 when environment for dashboard is available5869 returns the specified dashboard5870 when dashboard path includes encoded characters5871 decodes dashboard path5872 when parameters are provided and the list of all dashboards is required5873 returns a dashboard in addition to the list of dashboards5874 in all_dashboard list5875 includes project_blob_path only for project dashboards5876 allows editing only for project dashboards5877 includes out_of_the_box_dashboard key5878 project permissions5879 can_collaborate: false, system_can_edit: false, project_can_edit: false5880 sets can_edit appropriately5881 can_collaborate: true, system_can_edit: false, project_can_edit: true5882 sets can_edit appropriately5883 starred dashboards5884 adds starred dashboard information and sorts the list5885 when metrics dashboard feature is unavailable5886 returns 404 not found5887RootController5888 GET index5889 when user is not logged in5890 redirects to the sign-in page5891 when a custom home page URL is defined5892 redirects the user to the custom home page URL5893 with a user5894 who has customized their dashboard setting for starred projects5895 redirects to their starred projects list5896 who has customized their dashboard setting for their own activities5897 redirects to the activity list5898 who has customized their dashboard setting for project activities5899 redirects to the projects activity list5900 who has customized their dashboard setting for starred project activities5901 redirects to their starred projects activity list5902 who has customized their dashboard setting for followed user activities5903 redirects to the followed users activity list5904 who has customized their dashboard setting for groups5905 redirects to their group list5906 who has customized their dashboard setting for todos5907 redirects to their todo list5908 who has customized their dashboard setting for assigned issues5909 redirects to their assigned issues5910 who has customized their dashboard setting for assigned merge requests5911 redirects to their assigned merge requests5912 who uses the default dashboard setting5913 renders the default dashboard5914API::ContainerRepositories5915 GET /registry/repositories/:id5916 behaves like rejected container repository access5917 for guest5918 returns forbidden5919 behaves like rejected container repository access5920 for anonymous5921 returns unauthorized5922 for allowed user5923 returns a repository5924 returns a matching schema5925 with a network error5926 returns a matching schema5927 with tags param5928 returns a repository and its tags5929 with a network error5930caught error of type Faraday::Error in after callback inside Grape::Middleware::Formatter : 5931 returns a connection error message5932 with tags_count param5933 returns a repository and its tags_count5934 with size param5935 returns a repository and its size5936 with a network error5937caught error of type Faraday::Error in after callback inside Grape::Middleware::Formatter : 5938 returns an error message5939 with not supporting the gitlab api5940 returns nil5941 not on .com5942 returns nil5943 with an older container repository5944 returns nil5945 with invalid repository id5946 behaves like returning response status5947 returns not_found5948Querying a Board list5949 does not have an N+1 performance issue5950 when the user has access to the list5951 is expected to include {"issuesCount" => 2, "title" => "foo"}5952 behaves like a working graphql query5953 returns a successful response5954 issue filters5955 with matching assignee username issue filters5956 filters issues metadata5957 with unmatching assignee username issue filters5958 filters issues metadata5959 when filtering by confidential5960 filters issues metadata5961 when filtering by OR labels5962 filters issues metadata5963 when the user does not have access to the list5964 is expected to be nil5965 when ID argument is missing5966 raises an exception5967 when list ID is not found5968 is expected to be nil5969Mutations::Achievements::Update5970 # order random5971 when the user does not have permission5972 does not update the achievement5973 behaves like a mutation that returns a top-level access error5974 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"5975 when the user has permission5976 when the params are invalid5977 returns the validation error5978 when the achievement_id is invalid5979 returns the validation error5980 when the feature flag is disabled5981 returns the relevant permission error5982 with a new avatar5983 updates the achievement5984Projects::WikisController5985 # order random5986 CSP policy5987 #new5988 behaves like embed.diagrams.net frame-src directive5989 when diagrams.net disabled5990 drawio frame-src directive to the Content Security Policy header5991 when diagrams.net enabled5992 drawio frame-src directive to the Content Security Policy header5993 #edit5994 behaves like embed.diagrams.net frame-src directive5995 when diagrams.net disabled5996 drawio frame-src directive to the Content Security Policy header5997 when diagrams.net enabled5998 drawio frame-src directive to the Content Security Policy header5999 #create6000 behaves like embed.diagrams.net frame-src directive6001 when diagrams.net disabled6002 drawio frame-src directive to the Content Security Policy header6003 when diagrams.net enabled6004 drawio frame-src directive to the Content Security Policy header6005 #update6006 behaves like embed.diagrams.net frame-src directive6007 when diagrams.net disabled6008 drawio frame-src directive to the Content Security Policy header6009 when diagrams.net enabled6010 drawio frame-src directive to the Content Security Policy header6011RunnersRegistrationTokenReset6012 applied to project6013 resets runner registration token6014 when unauthorized6015 when not a project member6016 behaves like unauthorized6017 returns an error6018 with a non-admin project member6019 behaves like unauthorized6020 returns an error6021 when malformed id is provided6022 returns errors6023 applied to group6024 resets runner registration token6025 when unauthorized6026 when not a group member6027 behaves like unauthorized6028 returns an error6029 with a non-admin group member6030 behaves like unauthorized6031 returns an error6032 when malformed id is provided6033 returns errors6034 applied to instance6035 resets runner registration token6036 when unauthorized6037 behaves like unauthorized6038 returns an error6039 when malformed id is provided6040 returns errors6041Query.ciConfig6042 returns the correct structure6043 behaves like a working graphql query6044 returns a successful response6045 when the config file includes other files6046 returns the correct structure with included files6047 behaves like a working graphql query6048 returns a successful response6049 when the config file has multiple includes6050 returns correct includes6051 behaves like a working graphql query6052 returns a successful response6053GroupMemberBulkUpdate6054 # order random6055 behaves like members bulk update mutation6056 when user is not logged-in6057 behaves like a mutation that returns a top-level access error6058 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"6059 when user is not an owner6060 behaves like a mutation that returns a top-level access error6061 is expected to contain exactly "The resource that you are attempting to access does not exist or you don't have permission to perform this action"6062 when user is an owner6063 behaves like updates the user access role6064 is expected to all equal 106065 when inherited members are passed6066 does not update the members6067 when members count is more than the allowed limit6068 does not update the members6069 when the update service raises access denied error6070 does not update the members6071 when the update service returns an error message6072 will pass through the error6073Projects::Environments::PrometheusApiController6074 GET #prometheus_proxy6075 behaves like metrics dashboard prometheus api proxy6076 with valid requests6077 with success result6078 returns prometheus response6079 with nil query6080 does not raise error6081 with nil result6082 returns 204 no_content6083 with 404 result6084 returns body6085 with error result6086 with http_status6087 sets the http response status code6088 without http_status6089 returns bad_request6090 when metrics dashboard feature is unavailable6091 returns 404 not found6092 with inappropriate requests6093 without correct permissions6094 returns 4046095 with invalid proxyable id6096 returns 4046097 with variables6098 replaces variables with values6099 with invalid variables6100 returns 4006101 with anonymous user6102 redirects to signin page6103 with a public project6104 with guest user6105 returns 4046106getting merge access levels for a branch protection6107 # order random6108 behaves like a GraphQL query for access levels6109 when request AccessLevel type objects as a guest user6110 is expected not to be present6111 behaves like a working graphql query6112 returns a successful response6113 when request AccessLevel type objects as a maintainer6114 query6115 avoids N+1 queries6116 response6117 returns all the access level attributes6118 behaves like a working graphql query6119 returns a successful response6120Query current user groups6121 avoids N+1 queries6122 returns all groups where the user is a direct member6123 behaves like a working graphql query6124 returns a successful response6125 when permission_scope is CREATE_PROJECTS6126 is expected to match [{"id"=>"gid://gitlab/Group/2422", "name"=>"a public maintainer", "path"=>"a-public-maintainer", "fullPath"=>"root-group/a-public-maintainer"}, {"id"=>"gid://gitlab/Group/2423", "name"=>"a public owner", "path"=>"a-public-owner", "fullPath"=>"a-public-owner"}, {"id"=>"gid://gitlab/Group/2420", "name"=>"b private maintainer", "path"=>"b-private-maintainer", "fullPath"=>"root-group/b-private-maintainer"}, {"id"=>"gid://gitlab/Group/2421", "name"=>"c public developer", "path"=>"c-public-developer", "fullPath"=>"c-public-developer"}]6127 when search is provided6128 is expected to match [{"id"=>"gid://gitlab/Group/2422", "name"=>"a public maintainer", "path"=>"a-public-maintainer", "fullPath"=>"root-group/a-public-maintainer"}, {"id"=>"gid://gitlab/Group/2420", "name"=>"b private maintainer", "path"=>"b-private-maintainer", "fullPath"=>"root-group/b-private-maintainer"}]6129 when permission_scope is TRANSFER_PROJECTS6130 is expected to match [{"id"=>"gid://gitlab/Group/2422", "name"=>"a public maintainer", "path"=>"a-public-maintainer", "fullPath"=>"root-group/a-public-maintainer"}, {"id"=>"gid://gitlab/Group/2423", "name"=>"a public owner", "path"=>"a-public-owner", "fullPath"=>"a-public-owner"}, {"id"=>"gid://gitlab/Group/2420", "name"=>"b private maintainer", "path"=>"b-private-maintainer", "fullPath"=>"root-group/b-private-maintainer"}]6131 when search is provided6132 is expected to match [{"id"=>"gid://gitlab/Group/2423", "name"=>"a public owner", "path"=>"a-public-owner", "fullPath"=>"a-public-owner"}]6133 when search is provided6134 is expected to match [{"id"=>"gid://gitlab/Group/2422", "name"=>"a public maintainer", "path"=>"a-public-maintainer", "fullPath"=>"root-group/a-public-maintainer"}, {"id"=>"gid://gitlab/Group/2420", "name"=>"b private maintainer", "path"=>"b-private-maintainer", "fullPath"=>"root-group/b-private-maintainer"}]6135 when searching for a full path (including parent)6136 is expected to match [{"id"=>"gid://gitlab/Group/2420", "name"=>"b private maintainer", "path"=>"b-private-maintainer", "fullPath"=>"root-group/b-private-maintainer"}]6137Setting an issue as confidential6138 returns an error if the user is not allowed to update the issue6139 updates the issue confidentiality6140Groups::Harbor::TagsController6141 behaves like a harbor tags controller6142 GET #index.json6143 with harbor registry feature flag enabled6144 behaves like responds with 200 status with json6145 renders the index template6146 with harbor registry feature flag disabled6147 behaves like responds with 404 status6148 returns 4046149 with anonymous user6150 behaves like responds with 404 status6151 returns 4046152 with unauthorized user6153 behaves like responds with 404 status6154 returns 4046155 with valid params6156 with valid repository6157 behaves like responds with 200 status with json6158 renders the index template6159 with valid page6160 behaves like responds with 200 status with json6161 renders the index template6162 with valid limit6163 behaves like responds with 200 status with json6164 renders the index template6165 with invalid params6166 with invalid page6167 behaves like responds with 422 status with json6168 returns 4226169 with invalid limit6170 behaves like responds with 422 status with json6171 returns 4226172Query.project.mergeRequests.pipelines6173 .count6174 produces correct results6175 is scalable6176 .nodes6177 produces correct results6178 is scalable6179 requests merge_request_diffs at most once6180Admin::RunnerProjectsController6181 # order random6182 #create6183 when assigning to another project6184 redirects to the admin runner edit page6185 when assigning to same project6186 redirects to the admin runner edit page6187 when assigning to an unknown project6188 shows 404 for unknown project6189 #destroy6190 when unassigning runner from project6191 redirects to the admin runner edit page6192 when unassigning from unknown project6193 shows 404 for unknown project runner relationship6194Projects::Import::JiraController6195 GET #show6196 behaves like users without permissions6197 with anonymous user6198 redirects to new user page6199 when loged user is a developer6200 behaves like redirect with error6201 redirects to project issues path6202 renders a correct error6203 jira integration configuration6204 when Jira service is not enabled for the project6205 does not query Jira service6206 behaves like template with no message6207 does not set any message6208 renders show template6209 when Jira service is not configured correctly for the project6210 behaves like template with no message6211 does not set any message6212 renders show template6213Creation of a new commit6214 the user is not allowed to create a commit6215 behaves like a mutation that returns a top-level access error6216 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"6217 when user has permissions to create a commit6218 behaves like a commit is successful6219 creates a new commit6220 when branch is not correct6221 behaves like a mutation that returns errors in the response6222 is expected to contain exactly "You can only create or edit files when you are on a branch"6223 when branch is new, and a start_branch is defined6224 behaves like a commit is successful6225 creates a new commit6226Admin::JobsController6227 GET #index6228 with an authenticated admin user6229 paginates builds without a total count6230 without admin access6231 returns `not_found`6232JobCancel6233 # order random6234 returns an error if the user is not allowed to cancel the job6235 cancels a job6236SortingPreference6237 #set_sort_order6238 when user preference contains allowed sorting6239 sets sort order from user_preference6240 when user preference contains weight sorting6241 when user can sort by issue weight6242 sets sort order from user_preference6243 when user cannot sort by issue weight6244 sets default sort order6245 when user preference contains merged date sorting6246 sets default sort order6247 when controller_name is merge_requests6248 behaves like user can sort by merged date6249 sets sort order from user_preference6250 when action_name is merge_requests6251 behaves like user can sort by merged date6252 sets sort order from user_preference6253 #set_sort_order_from_user_preference6254 when sort param given6255 when sorting_field is defined6256 sets user_preference with the right value6257 when no sorting_field is defined on the controller6258 does not touch user_preference6259 when a user sorting preference exists6260 returns the set preference6261 #set_set_order_from_cookie6262 when sort param given6263 sets the cookie with the right values and flags6264 when cookie exists6265 sets the cookie with the right values and flags6266Admin::SpamLogsController6267 #index6268 lists paginated spam logs6269 #destroy6270 removes only the spam log when removing log6271 initiates user removal6272 #mark_as_ham6273 submits the log as ham6274getting a detailed sentry error6275 behaves like a working graphql query6276 returns a successful response6277 when data is loading via reactive cache6278 is expected to return an empty error6279 reactive cache returns data6280 is expected to return a valid error6281 is expected to return the frequency correctly6282Import::ManifestController6283 POST upload6284 with a valid manifest6285 saves the manifest and redirects to the status page6286 with an invalid manifest6287 displays an error6288 when the user cannot import projects in the group6289 displays an error6290 GET status6291 when the data is stored via Gitlab::ManifestImport::Metadata6292 returns variables for json request6293 when the data is stored in the user session6294 returns variables for json request6295Create an alert issue from an alert6296 when there is no issue associated with the alert6297 creates an alert issue6298 when there is an issue already associated with the alert6299 responds with an error6300Query.project(fullPath).ciConfigVariables(ref)6301 # order random6302 when the user is not authorized6303 returns nothing6304 when the user has the correct permissions6305 when the cache is not empty6306 returns the CI variables for the config6307 when the cache is empty6308 returns nothing6309getting Alert Management Alert Assignees6310 with self-managed prometheus payload6311 includes the correct metrics dashboard url6312 when metrics dashboard feature is unavailable6313 returns nil6314 with gitlab-managed prometheus payload6315 includes the correct metrics dashboard url6316 when metrics dashboard feature is unavailable6317 returns nil6318Projects::AlertManagementController6319 GET #index6320 shows the page6321 when user is unauthorized6322 shows 4046323 GET #details6324 shows the page6325 when user is unauthorized6326 shows 4046327 set_alert_id6328 sets alert id from the route6329Projects::Integrations::ShimosController6330 GET #show6331 when Shimo integration is inactive6332 returns 404 status6333 when Shimo integration is active6334 renders the "show" template6335Creation of a new Custom Emoji6336 when the user has no permission6337 does not create custom emoji6338 when user has permission6339 creates custom emoji6340 when the custom_emoji feature flag is disabled6341 does nothing and returns and error6342PipelineScheduleTakeOwnership6343 # order random6344 returns an error if the user is not allowed to take ownership of the schedule6345 takes ownership of the schedule6346API::APIGuard::ResponseCoercerMiddleware6347 is loaded6348 #call6349 returns a String body6350 returns a String body6351 returns a String body6352 returns a String body6353 allows nil body6354 allows nil body6355 allows nil body6356Emails::Groups6357 #group_was_exported_email6358 sends success email6359 #group_was_not_exported_email6360 sends failure email6361ConfigureSastIac6362 when authorized6363 creates a branch with sast iac configured6364Import::GithubController6365 # order random6366 GET details6367 with feature enabled6368 responds with a 200 and shows the template6369 with feature disabled6370 responds with a 4046371Admin::UsersController6372 # order random6373 PUT #block6374 when request format is :json6375 when user was blocked6376 returns 200 and json data with notice6377 when user was not blocked6378 returns 200 and json data with error6379ImportUrlParams6380 empty URL6381 returns empty hash6382 url and password separately provided6383 #import_url_params6384 returns hash with import_url6385 url with provided empty credentials6386 #import_url_params6387 does not change the url6388 url with provided mixed credentials6389 #import_url_params6390 returns import_url built from both url and hash credentials6391User sends malformed strings6392 raises a 400 error with a null byte6393 raises a 400 error with an invalid string6394 raises a 400 error with null bytes in the auth headers6395IssuableActions6396 #discussions6397 instantiates and calls NotesFinder as expected6398Pending: (Failures listed here are expected and do not affect your suite's status)6399 1) ProjectsController#update hashed storage behaves like updating a project when only renaming a project path upgrades and move project to hashed storage when project was originally legacy6400 # No reason given6401 # ./spec/controllers/projects_controller_spec.rb:8056402 2) ProjectsController#update legacy storage behaves like updating a project when only renaming a project path doesnt change the disk_path when using hashed storage6403 # No reason given6404 # ./spec/controllers/projects_controller_spec.rb:7906405 3) Projects::DesignManagement::Designs::RawImagesController GET #show behaves like a controller that can serve LFS files when lfs is not enabled delivers ASCII file6406 # Calling spec asked to skip testing LFS disabled scenario6407 # ./spec/support/shared_examples/controllers/repository_lfs_file_load_shared_examples.rb:1526408Finished in 21 minutes 35 seconds (files took 57.36 seconds to load)64092601 examples, 0 failures, 3 pending6410Randomized with seed 23166411[TEST PROF INFO] Time spent in factories: 07:37.652 (34.57% of total time)6412RSpec exited with 0.6413No examples to retry, congrats!6415Not uploading cache ruby-gems-debian-bullseye-ruby-3.0-16 due to policy6417Uploading artifacts...6418coverage/: found 5 matching artifact files and directories 6419crystalball/: found 2 matching artifact files and directories 6420WARNING: deprecations/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 6421knapsack/: found 4 matching artifact files and directories 6422WARNING: query_recorder/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 6423rspec/: found 14 matching artifact files and directories 6424WARNING: tmp/capybara/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 6425log/*.log: found 17 matching artifact files and directories 6426WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/4400964722/artifacts?artifact_format=zip&artifact_type=archive&expire_in=31d new-url=https://gitlab.com6427WARNING: Retrying... context=artifacts-uploader error=request redirected6428Uploading artifacts as "archive" to coordinator... 201 Created id=4400964722 responseStatus=201 Created token=64_UmC6x6429Uploading artifacts...6430rspec/rspec-*.xml: found 1 matching artifact files and directories 6431WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/4400964722/artifacts?artifact_format=gzip&artifact_type=junit&expire_in=31d new-url=https://gitlab.com6432WARNING: Retrying... context=artifacts-uploader error=request redirected6433Uploading artifacts as "junit" to coordinator... 201 Created id=4400964722 responseStatus=201 Created token=64_UmC6x6435Job succeeded