rspec integration pg13-as-if-foss single-db 3/12
Passed Started
by
@fabiopitino
Fabio Pitino
1 auth: :job_token, package_name_type: :scoped_naming_convention, request_forward: false, visibility: :private, user_role: :developer, expected_result: :accept, expected_status: :ok2 behaves like accept metadata request3 accepts the metadata request4 avoids N+1 database queries5 auth: :job_token, package_name_type: :scoped_no_naming_convention, request_forward: true, visibility: :private, user_role: :developer, expected_result: :accept, expected_status: :ok6 behaves like redirect metadata request7 redirects metadata request8 auth: :job_token, package_name_type: :scoped_no_naming_convention, request_forward: false, visibility: :private, user_role: :developer, expected_result: :accept, expected_status: :ok9 behaves like reject metadata request10 rejects the metadata request11 auth: :job_token, package_name_type: :unscoped, request_forward: true, visibility: :private, user_role: :developer, expected_result: :accept, expected_status: :ok12 behaves like redirect metadata request13 redirects metadata request14 auth: :job_token, package_name_type: :unscoped, request_forward: false, visibility: :private, user_role: :developer, expected_result: :accept, expected_status: :ok15 behaves like reject metadata request16 rejects the metadata request17 auth: :job_token, package_name_type: :non_existing, request_forward: true, visibility: :private, user_role: :developer, expected_result: :redirect, expected_status: :redirected18 behaves like redirect metadata request19 redirects metadata request20 auth: :job_token, package_name_type: :non_existing, request_forward: false, visibility: :private, user_role: :developer, expected_result: :reject, expected_status: :not_found21 behaves like reject metadata request22 rejects the metadata request23 auth: :job_token, package_name_type: :scoped_naming_convention, request_forward: true, visibility: :internal, user_role: :developer, expected_result: :accept, expected_status: :ok24 behaves like accept metadata request25 accepts the metadata request26 avoids N+1 database queries27 auth: :job_token, package_name_type: :scoped_naming_convention, request_forward: false, visibility: :internal, user_role: :developer, expected_result: :accept, expected_status: :ok28 behaves like accept metadata request29 accepts the metadata request30 avoids N+1 database queries31 auth: :job_token, package_name_type: :scoped_no_naming_convention, request_forward: true, visibility: :internal, user_role: :developer, expected_result: :accept, expected_status: :ok32 behaves like redirect metadata request33 redirects metadata request34 auth: :job_token, package_name_type: :scoped_no_naming_convention, request_forward: false, visibility: :internal, user_role: :developer, expected_result: :accept, expected_status: :ok35 behaves like reject metadata request36 rejects the metadata request37 auth: :job_token, package_name_type: :unscoped, request_forward: true, visibility: :internal, user_role: :developer, expected_result: :accept, expected_status: :ok38 behaves like redirect metadata request39 redirects metadata request40 auth: :job_token, package_name_type: :unscoped, request_forward: false, visibility: :internal, user_role: :developer, expected_result: :accept, expected_status: :ok41 behaves like reject metadata request42 rejects the metadata request43 auth: :job_token, package_name_type: :non_existing, request_forward: true, visibility: :internal, user_role: :developer, expected_result: :redirect, expected_status: :redirected44 behaves like redirect metadata request45 redirects metadata request46 auth: :job_token, package_name_type: :non_existing, request_forward: false, visibility: :internal, user_role: :developer, expected_result: :reject, expected_status: :not_found47 behaves like reject metadata request48 rejects the metadata request49 auth: :deploy_token, package_name_type: :scoped_naming_convention, request_forward: true, visibility: :public, user_role: nil, expected_result: :accept, expected_status: :ok50 behaves like accept metadata request51 accepts the metadata request52 avoids N+1 database queries53 auth: :deploy_token, package_name_type: :scoped_naming_convention, request_forward: false, visibility: :public, user_role: nil, expected_result: :accept, expected_status: :ok54 behaves like accept metadata request55 accepts the metadata request56 avoids N+1 database queries57 auth: :deploy_token, package_name_type: :scoped_no_naming_convention, request_forward: true, visibility: :public, user_role: nil, expected_result: :accept, expected_status: :ok58 behaves like redirect metadata request59 redirects metadata request60 auth: :deploy_token, package_name_type: :scoped_no_naming_convention, request_forward: false, visibility: :public, user_role: nil, expected_result: :accept, expected_status: :ok61 behaves like reject metadata request62 rejects the metadata request63 auth: :deploy_token, package_name_type: :unscoped, request_forward: true, visibility: :public, user_role: nil, expected_result: :accept, expected_status: :ok64 behaves like redirect metadata request65 redirects metadata request66 auth: :deploy_token, package_name_type: :unscoped, request_forward: false, visibility: :public, user_role: nil, expected_result: :accept, expected_status: :ok67 behaves like reject metadata request68 rejects the metadata request69 auth: :deploy_token, package_name_type: :non_existing, request_forward: true, visibility: :public, user_role: nil, expected_result: :redirect, expected_status: :redirected70 behaves like redirect metadata request71 redirects metadata request72 auth: :deploy_token, package_name_type: :non_existing, request_forward: false, visibility: :public, user_role: nil, expected_result: :reject, expected_status: :not_found73 behaves like reject metadata request74 rejects the metadata request75 auth: :deploy_token, package_name_type: :scoped_naming_convention, request_forward: true, visibility: :private, user_role: nil, expected_result: :accept, expected_status: :ok76 behaves like accept metadata request77 accepts the metadata request78 avoids N+1 database queries79 auth: :deploy_token, package_name_type: :scoped_naming_convention, request_forward: false, visibility: :private, user_role: nil, expected_result: :accept, expected_status: :ok80 behaves like accept metadata request81 accepts the metadata request82 avoids N+1 database queries83 auth: :deploy_token, package_name_type: :scoped_no_naming_convention, request_forward: true, visibility: :private, user_role: nil, expected_result: :accept, expected_status: :ok84 behaves like redirect metadata request85 redirects metadata request86 auth: :deploy_token, package_name_type: :scoped_no_naming_convention, request_forward: false, visibility: :private, user_role: nil, expected_result: :accept, expected_status: :ok87 behaves like reject metadata request88 rejects the metadata request89 auth: :deploy_token, package_name_type: :unscoped, request_forward: true, visibility: :private, user_role: nil, expected_result: :accept, expected_status: :ok90 behaves like redirect metadata request91 redirects metadata request92 auth: :deploy_token, package_name_type: :unscoped, request_forward: false, visibility: :private, user_role: nil, expected_result: :accept, expected_status: :ok93 behaves like reject metadata request94 rejects the metadata request95 auth: :deploy_token, package_name_type: :non_existing, request_forward: true, visibility: :private, user_role: nil, expected_result: :redirect, expected_status: :redirected96 behaves like redirect metadata request97 redirects metadata request98 auth: :deploy_token, package_name_type: :non_existing, request_forward: false, visibility: :private, user_role: nil, expected_result: :reject, expected_status: :not_found99 behaves like reject metadata request100 rejects the metadata request101 auth: :deploy_token, package_name_type: :scoped_naming_convention, request_forward: true, visibility: :internal, user_role: nil, expected_result: :accept, expected_status: :ok102 behaves like accept metadata request103 accepts the metadata request104 avoids N+1 database queries105 auth: :deploy_token, package_name_type: :scoped_naming_convention, request_forward: false, visibility: :internal, user_role: nil, expected_result: :accept, expected_status: :ok106 behaves like accept metadata request107 accepts the metadata request108 avoids N+1 database queries109 auth: :deploy_token, package_name_type: :scoped_no_naming_convention, request_forward: true, visibility: :internal, user_role: nil, expected_result: :accept, expected_status: :ok110 behaves like redirect metadata request111 redirects metadata request112 auth: :deploy_token, package_name_type: :scoped_no_naming_convention, request_forward: false, visibility: :internal, user_role: nil, expected_result: :accept, expected_status: :ok113 behaves like reject metadata request114 rejects the metadata request115 auth: :deploy_token, package_name_type: :unscoped, request_forward: true, visibility: :internal, user_role: nil, expected_result: :accept, expected_status: :ok116 behaves like redirect metadata request117 redirects metadata request118 auth: :deploy_token, package_name_type: :unscoped, request_forward: false, visibility: :internal, user_role: nil, expected_result: :accept, expected_status: :ok119 behaves like reject metadata request120 rejects the metadata request121 auth: :deploy_token, package_name_type: :non_existing, request_forward: true, visibility: :internal, user_role: nil, expected_result: :redirect, expected_status: :redirected122 behaves like redirect metadata request123 redirects metadata request124 auth: :deploy_token, package_name_type: :non_existing, request_forward: false, visibility: :internal, user_role: nil, expected_result: :reject, expected_status: :not_found125 behaves like reject metadata request126 rejects the metadata request127 with a developer128 project path with a dot129 behaves like accept metadata request130 accepts the metadata request131 avoids N+1 database queries132 with a job token133 behaves like reject metadata request134 rejects the metadata request135 with a duplicate package name in another project136 includes all matching package versions in the response137 with the feature flag disabled138 returns matching package versions from only one project139 GET /api/v4/packages/npm/-/package/*package_name/dist-tags140 behaves like handling get dist tags requests141 with a group namespace142 behaves like handling all conditions143 auth: nil, package_name_type: :scoped_naming_convention, visibility: :public, user_role: nil, expected_result: :accept, expected_status: :ok144 behaves like accept package tags request145 with valid package name146 returns a valid json response147 returns two package tags148 behaves like returning response status149 returns ok150 behaves like track event151 behaves like a package tracking event152 creates a gitlab tracking event list_tags153 with invalid package name154 package_name: "%20", status: :bad_request155 behaves like returning response status156 returns bad_request157 package_name: nil, status: :not_found158 behaves like returning response status159 returns not_found160 auth: nil, package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: nil, expected_result: :accept, expected_status: :ok161 behaves like reject package tags request162 behaves like returning response status163 returns not_found164 auth: nil, package_name_type: :unscoped, visibility: :public, user_role: nil, expected_result: :accept, expected_status: :ok165 behaves like reject package tags request166 behaves like returning response status167 returns not_found168 auth: nil, package_name_type: :non_existing, visibility: :public, user_role: nil, expected_result: :reject, expected_status: :not_found169 behaves like reject package tags request170 behaves like returning response status171 returns not_found172 auth: nil, package_name_type: :scoped_naming_convention, visibility: :private, user_role: nil, expected_result: :reject, expected_status: :not_found173 behaves like reject package tags request174 behaves like returning response status175 returns not_found176 auth: nil, package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: nil, expected_result: :reject, expected_status: :not_found177 behaves like reject package tags request178 behaves like returning response status179 returns not_found180 auth: nil, package_name_type: :unscoped, visibility: :private, user_role: nil, expected_result: :reject, expected_status: :not_found181 behaves like reject package tags request182 behaves like returning response status183 returns not_found184 auth: nil, package_name_type: :non_existing, visibility: :private, user_role: nil, expected_result: :reject, expected_status: :not_found185 behaves like reject package tags request186 behaves like returning response status187 returns not_found188 auth: nil, package_name_type: :scoped_naming_convention, visibility: :internal, user_role: nil, expected_result: :reject, expected_status: :not_found189 behaves like reject package tags request190 behaves like returning response status191 returns not_found192 auth: nil, package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: nil, expected_result: :reject, expected_status: :not_found193 behaves like reject package tags request194 behaves like returning response status195 returns not_found196 auth: nil, package_name_type: :unscoped, visibility: :internal, user_role: nil, expected_result: :reject, expected_status: :not_found197 behaves like reject package tags request198 behaves like returning response status199 returns not_found200 auth: nil, package_name_type: :non_existing, visibility: :internal, user_role: nil, expected_result: :reject, expected_status: :not_found201 behaves like reject package tags request202 behaves like returning response status203 returns not_found204 auth: :oauth, package_name_type: :scoped_naming_convention, visibility: :public, user_role: :guest, expected_result: :accept, expected_status: :ok205 behaves like accept package tags request206 with valid package name207 returns a valid json response208 returns two package tags209 behaves like returning response status210 returns ok211 behaves like track event212 behaves like a package tracking event213 creates a gitlab tracking event list_tags214 with invalid package name215 package_name: "%20", status: :bad_request216 behaves like returning response status217 returns bad_request218 package_name: nil, status: :not_found219 behaves like returning response status220 returns not_found221 auth: :oauth, package_name_type: :scoped_naming_convention, visibility: :public, user_role: :reporter, expected_result: :accept, expected_status: :ok222 behaves like accept package tags request223 with valid package name224 returns a valid json response225 returns two package tags226 behaves like returning response status227 returns ok228 behaves like track event229 behaves like a package tracking event230 creates a gitlab tracking event list_tags231 with invalid package name232 package_name: "%20", status: :bad_request233 behaves like returning response status234 returns bad_request235 package_name: nil, status: :not_found236 behaves like returning response status237 returns not_found238 auth: :oauth, package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: :guest, expected_result: :accept, expected_status: :ok239 behaves like reject package tags request240 behaves like returning response status241 returns not_found242 auth: :oauth, package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: :reporter, expected_result: :accept, expected_status: :ok243 behaves like reject package tags request244 behaves like returning response status245 returns not_found246 auth: :oauth, package_name_type: :unscoped, visibility: :public, user_role: :guest, expected_result: :accept, expected_status: :ok247 behaves like reject package tags request248 behaves like returning response status249 returns not_found250 auth: :oauth, package_name_type: :unscoped, visibility: :public, user_role: :reporter, expected_result: :accept, expected_status: :ok251 behaves like reject package tags request252 behaves like returning response status253 returns not_found254 auth: :oauth, package_name_type: :non_existing, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :not_found255 behaves like reject package tags request256 behaves like returning response status257 returns not_found258 auth: :oauth, package_name_type: :non_existing, visibility: :public, user_role: :reporter, expected_result: :reject, expected_status: :not_found259 behaves like reject package tags request260 behaves like returning response status261 returns not_found262 auth: :oauth, package_name_type: :scoped_naming_convention, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden263 behaves like reject package tags request264 behaves like returning response status265 returns forbidden266 auth: :oauth, package_name_type: :scoped_naming_convention, visibility: :private, user_role: :reporter, expected_result: :accept, expected_status: :ok267 behaves like accept package tags request268 with valid package name269 returns a valid json response270 returns two package tags271 behaves like returning response status272 returns ok273 behaves like track event274 behaves like a package tracking event275 creates a gitlab tracking event list_tags276 with invalid package name277 package_name: "%20", status: :bad_request278 behaves like returning response status279 returns bad_request280 package_name: nil, status: :not_found281 behaves like returning response status282 returns not_found283 auth: :oauth, package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden284 behaves like reject package tags request285 behaves like returning response status286 returns not_found287 auth: :oauth, package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: :reporter, expected_result: :accept, expected_status: :ok288 behaves like reject package tags request289 behaves like returning response status290 returns not_found291 auth: :oauth, package_name_type: :unscoped, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden292 behaves like reject package tags request293 behaves like returning response status294 returns not_found295 auth: :oauth, package_name_type: :unscoped, visibility: :private, user_role: :reporter, expected_result: :accept, expected_status: :ok296 behaves like reject package tags request297 behaves like returning response status298 returns not_found299 auth: :oauth, package_name_type: :non_existing, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden300 behaves like reject package tags request301 behaves like returning response status302 returns not_found303 auth: :oauth, package_name_type: :non_existing, visibility: :private, user_role: :reporter, expected_result: :reject, expected_status: :not_found304 behaves like reject package tags request305 behaves like returning response status306 returns not_found307 auth: :oauth, package_name_type: :scoped_naming_convention, visibility: :internal, user_role: :guest, expected_result: :accept, expected_status: :ok308 behaves like accept package tags request309 with valid package name310 returns a valid json response311 returns two package tags312 behaves like returning response status313 returns ok314 behaves like track event315 behaves like a package tracking event316 creates a gitlab tracking event list_tags317 with invalid package name318 package_name: "%20", status: :bad_request319 behaves like returning response status320 returns bad_request321 package_name: nil, status: :not_found322 behaves like returning response status323 returns not_found324 auth: :oauth, package_name_type: :scoped_naming_convention, visibility: :internal, user_role: :reporter, expected_result: :accept, expected_status: :ok325 behaves like accept package tags request326 with valid package name327 returns a valid json response328 returns two package tags329 behaves like returning response status330 returns ok331 behaves like track event332 behaves like a package tracking event333 creates a gitlab tracking event list_tags334 with invalid package name335 package_name: "%20", status: :bad_request336 behaves like returning response status337 returns bad_request338 package_name: nil, status: :not_found339 behaves like returning response status340 returns not_found341 auth: :oauth, package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: :guest, expected_result: :accept, expected_status: :ok342 behaves like reject package tags request343 behaves like returning response status344 returns not_found345 auth: :oauth, package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: :reporter, expected_result: :accept, expected_status: :ok346 behaves like reject package tags request347 behaves like returning response status348 returns not_found349 auth: :oauth, package_name_type: :unscoped, visibility: :internal, user_role: :guest, expected_result: :accept, expected_status: :ok350 behaves like reject package tags request351 behaves like returning response status352 returns not_found353 auth: :oauth, package_name_type: :unscoped, visibility: :internal, user_role: :reporter, expected_result: :accept, expected_status: :ok354 behaves like reject package tags request355 behaves like returning response status356 returns not_found357 auth: :oauth, package_name_type: :non_existing, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :not_found358 behaves like reject package tags request359 behaves like returning response status360 returns not_found361 auth: :oauth, package_name_type: :non_existing, visibility: :internal, user_role: :reporter, expected_result: :reject, expected_status: :not_found362 behaves like reject package tags request363 behaves like returning response status364 returns not_found365 auth: :personal_access_token, package_name_type: :scoped_naming_convention, visibility: :public, user_role: :guest, expected_result: :accept, expected_status: :ok366 behaves like accept package tags request367 with valid package name368 returns a valid json response369 returns two package tags370 behaves like returning response status371 returns ok372 behaves like track event373 behaves like a package tracking event374 creates a gitlab tracking event list_tags375 with invalid package name376 package_name: "%20", status: :bad_request377 behaves like returning response status378 returns bad_request379 package_name: nil, status: :not_found380 behaves like returning response status381 returns not_found382 auth: :personal_access_token, package_name_type: :scoped_naming_convention, visibility: :public, user_role: :reporter, expected_result: :accept, expected_status: :ok383 behaves like accept package tags request384 with valid package name385 returns a valid json response386 returns two package tags387 behaves like returning response status388 returns ok389 behaves like track event390 behaves like a package tracking event391 creates a gitlab tracking event list_tags392 with invalid package name393 package_name: "%20", status: :bad_request394 behaves like returning response status395 returns bad_request396 package_name: nil, status: :not_found397 behaves like returning response status398 returns not_found399 auth: :personal_access_token, package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: :guest, expected_result: :accept, expected_status: :ok400 behaves like reject package tags request401 behaves like returning response status402 returns not_found403 auth: :personal_access_token, package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: :reporter, expected_result: :accept, expected_status: :ok404 behaves like reject package tags request405 behaves like returning response status406 returns not_found407 auth: :personal_access_token, package_name_type: :unscoped, visibility: :public, user_role: :guest, expected_result: :accept, expected_status: :ok408 behaves like reject package tags request409 behaves like returning response status410 returns not_found411 auth: :personal_access_token, package_name_type: :unscoped, visibility: :public, user_role: :reporter, expected_result: :accept, expected_status: :ok412 behaves like reject package tags request413 behaves like returning response status414 returns not_found415 auth: :personal_access_token, package_name_type: :non_existing, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :not_found416 behaves like reject package tags request417 behaves like returning response status418 returns not_found419 auth: :personal_access_token, package_name_type: :non_existing, visibility: :public, user_role: :reporter, expected_result: :reject, expected_status: :not_found420 behaves like reject package tags request421 behaves like returning response status422 returns not_found423 auth: :personal_access_token, package_name_type: :scoped_naming_convention, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden424 behaves like reject package tags request425 behaves like returning response status426 returns forbidden427 auth: :personal_access_token, package_name_type: :scoped_naming_convention, visibility: :private, user_role: :reporter, expected_result: :accept, expected_status: :ok428 behaves like accept package tags request429 with valid package name430 returns a valid json response431 returns two package tags432 behaves like returning response status433 returns ok434 behaves like track event435 behaves like a package tracking event436 creates a gitlab tracking event list_tags437 with invalid package name438 package_name: "%20", status: :bad_request439 behaves like returning response status440 returns bad_request441 package_name: nil, status: :not_found442 behaves like returning response status443 returns not_found444 auth: :personal_access_token, package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden445 behaves like reject package tags request446 behaves like returning response status447 returns not_found448 auth: :personal_access_token, package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: :reporter, expected_result: :accept, expected_status: :ok449 behaves like reject package tags request450 behaves like returning response status451 returns not_found452 auth: :personal_access_token, package_name_type: :unscoped, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden453 behaves like reject package tags request454 behaves like returning response status455 returns not_found456 auth: :personal_access_token, package_name_type: :unscoped, visibility: :private, user_role: :reporter, expected_result: :accept, expected_status: :ok457 behaves like reject package tags request458 behaves like returning response status459 returns not_found460 auth: :personal_access_token, package_name_type: :non_existing, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden461 behaves like reject package tags request462 behaves like returning response status463 returns not_found464 auth: :personal_access_token, package_name_type: :non_existing, visibility: :private, user_role: :reporter, expected_result: :reject, expected_status: :not_found465 behaves like reject package tags request466 behaves like returning response status467 returns not_found468 auth: :personal_access_token, package_name_type: :scoped_naming_convention, visibility: :internal, user_role: :guest, expected_result: :accept, expected_status: :ok469 behaves like accept package tags request470 with valid package name471 returns a valid json response472 returns two package tags473 behaves like returning response status474 returns ok475 behaves like track event476 behaves like a package tracking event477 creates a gitlab tracking event list_tags478 with invalid package name479 package_name: "%20", status: :bad_request480 behaves like returning response status481 returns bad_request482 package_name: nil, status: :not_found483 behaves like returning response status484 returns not_found485 auth: :personal_access_token, package_name_type: :scoped_naming_convention, visibility: :internal, user_role: :reporter, expected_result: :accept, expected_status: :ok486 behaves like accept package tags request487 with valid package name488 returns a valid json response489 returns two package tags490 behaves like returning response status491 returns ok492 behaves like track event493 behaves like a package tracking event494 creates a gitlab tracking event list_tags495 with invalid package name496 package_name: "%20", status: :bad_request497 behaves like returning response status498 returns bad_request499 package_name: nil, status: :not_found500 behaves like returning response status501 returns not_found502 auth: :personal_access_token, package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: :guest, expected_result: :accept, expected_status: :ok503 behaves like reject package tags request504 behaves like returning response status505 returns not_found506 auth: :personal_access_token, package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: :reporter, expected_result: :accept, expected_status: :ok507 behaves like reject package tags request508 behaves like returning response status509 returns not_found510 auth: :personal_access_token, package_name_type: :unscoped, visibility: :internal, user_role: :guest, expected_result: :accept, expected_status: :ok511 behaves like reject package tags request512 behaves like returning response status513 returns not_found514 auth: :personal_access_token, package_name_type: :unscoped, visibility: :internal, user_role: :reporter, expected_result: :accept, expected_status: :ok515 behaves like reject package tags request516 behaves like returning response status517 returns not_found518 auth: :personal_access_token, package_name_type: :non_existing, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :not_found519 behaves like reject package tags request520 behaves like returning response status521 returns not_found522 auth: :personal_access_token, package_name_type: :non_existing, visibility: :internal, user_role: :reporter, expected_result: :reject, expected_status: :not_found523 behaves like reject package tags request524 behaves like returning response status525 returns not_found526 auth: :job_token, package_name_type: :scoped_naming_convention, visibility: :public, user_role: :developer, expected_result: :accept, expected_status: :ok527 behaves like accept package tags request528 with valid package name529 returns a valid json response530 returns two package tags531 behaves like returning response status532 returns ok533 behaves like track event534 behaves like a package tracking event535 creates a gitlab tracking event list_tags536 with invalid package name537 package_name: "%20", status: :bad_request538 behaves like returning response status539 returns bad_request540 package_name: nil, status: :not_found541 behaves like returning response status542 returns not_found543 auth: :job_token, package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: :developer, expected_result: :accept, expected_status: :ok544 behaves like reject package tags request545 behaves like returning response status546 returns not_found547 auth: :job_token, package_name_type: :unscoped, visibility: :public, user_role: :developer, expected_result: :accept, expected_status: :ok548 behaves like reject package tags request549 behaves like returning response status550 returns not_found551 auth: :job_token, package_name_type: :non_existing, visibility: :public, user_role: :developer, expected_result: :reject, expected_status: :not_found552 behaves like reject package tags request553 behaves like returning response status554 returns not_found555 auth: :job_token, package_name_type: :scoped_naming_convention, visibility: :private, user_role: :developer, expected_result: :accept, expected_status: :ok556 behaves like accept package tags request557 with valid package name558 returns a valid json response559 returns two package tags560 behaves like returning response status561 returns ok562 behaves like track event563 behaves like a package tracking event564 creates a gitlab tracking event list_tags565 with invalid package name566 package_name: "%20", status: :bad_request567 behaves like returning response status568 returns bad_request569 package_name: nil, status: :not_found570 behaves like returning response status571 returns not_found572 auth: :job_token, package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: :developer, expected_result: :accept, expected_status: :ok573 behaves like reject package tags request574 behaves like returning response status575 returns not_found576 auth: :job_token, package_name_type: :unscoped, visibility: :private, user_role: :developer, expected_result: :accept, expected_status: :ok577 behaves like reject package tags request578 behaves like returning response status579 returns not_found580 auth: :job_token, package_name_type: :non_existing, visibility: :private, user_role: :developer, expected_result: :reject, expected_status: :not_found581 behaves like reject package tags request582 behaves like returning response status583 returns not_found584 auth: :job_token, package_name_type: :scoped_naming_convention, visibility: :internal, user_role: :developer, expected_result: :accept, expected_status: :ok585 behaves like accept package tags request586 with valid package name587 returns a valid json response588 returns two package tags589 behaves like returning response status590 returns ok591 behaves like track event592 behaves like a package tracking event593 creates a gitlab tracking event list_tags594 with invalid package name595 package_name: "%20", status: :bad_request596 behaves like returning response status597 returns bad_request598 package_name: nil, status: :not_found599 behaves like returning response status600 returns not_found601 auth: :job_token, package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: :developer, expected_result: :accept, expected_status: :ok602 behaves like reject package tags request603 behaves like returning response status604 returns not_found605 auth: :job_token, package_name_type: :unscoped, visibility: :internal, user_role: :developer, expected_result: :accept, expected_status: :ok606 behaves like reject package tags request607 behaves like returning response status608 returns not_found609 auth: :job_token, package_name_type: :non_existing, visibility: :internal, user_role: :developer, expected_result: :reject, expected_status: :not_found610 behaves like reject package tags request611 behaves like returning response status612 returns not_found613 auth: :deploy_token, package_name_type: :scoped_naming_convention, visibility: :public, user_role: nil, expected_result: :accept, expected_status: :ok614 behaves like accept package tags request615 with valid package name616 returns a valid json response617 returns two package tags618 behaves like returning response status619 returns ok620 behaves like track event621 behaves like a package tracking event622 creates a gitlab tracking event list_tags623 with invalid package name624 package_name: "%20", status: :bad_request625 behaves like returning response status626 returns bad_request627 package_name: nil, status: :not_found628 behaves like returning response status629 returns not_found630 auth: :deploy_token, package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: nil, expected_result: :accept, expected_status: :ok631 behaves like reject package tags request632 behaves like returning response status633 returns not_found634 auth: :deploy_token, package_name_type: :unscoped, visibility: :public, user_role: nil, expected_result: :accept, expected_status: :ok635 behaves like reject package tags request636 behaves like returning response status637 returns not_found638 auth: :deploy_token, package_name_type: :non_existing, visibility: :public, user_role: nil, expected_result: :reject, expected_status: :not_found639 behaves like reject package tags request640 behaves like returning response status641 returns not_found642 auth: :deploy_token, package_name_type: :scoped_naming_convention, visibility: :private, user_role: nil, expected_result: :accept, expected_status: :ok643 behaves like accept package tags request644 with valid package name645 returns a valid json response646 returns two package tags647 behaves like returning response status648 returns ok649 behaves like track event650 behaves like a package tracking event651 creates a gitlab tracking event list_tags652 with invalid package name653 package_name: "%20", status: :bad_request654 behaves like returning response status655 returns bad_request656 package_name: nil, status: :not_found657 behaves like returning response status658 returns not_found659 auth: :deploy_token, package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: nil, expected_result: :accept, expected_status: :ok660 behaves like reject package tags request661 behaves like returning response status662 returns not_found663 auth: :deploy_token, package_name_type: :unscoped, visibility: :private, user_role: nil, expected_result: :accept, expected_status: :ok664 behaves like reject package tags request665 behaves like returning response status666 returns not_found667 auth: :deploy_token, package_name_type: :non_existing, visibility: :private, user_role: nil, expected_result: :reject, expected_status: :not_found668 behaves like reject package tags request669 behaves like returning response status670 returns not_found671 auth: :deploy_token, package_name_type: :scoped_naming_convention, visibility: :internal, user_role: nil, expected_result: :accept, expected_status: :ok672 behaves like accept package tags request673 with valid package name674 returns a valid json response675 returns two package tags676 behaves like returning response status677 returns ok678 behaves like track event679 behaves like a package tracking event680 creates a gitlab tracking event list_tags681 with invalid package name682 package_name: "%20", status: :bad_request683 behaves like returning response status684 returns bad_request685 package_name: nil, status: :not_found686 behaves like returning response status687 returns not_found688 auth: :deploy_token, package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: nil, expected_result: :accept, expected_status: :ok689 behaves like reject package tags request690 behaves like returning response status691 returns not_found692 auth: :deploy_token, package_name_type: :unscoped, visibility: :internal, user_role: nil, expected_result: :accept, expected_status: :ok693 behaves like reject package tags request694 behaves like returning response status695 returns not_found696 auth: :deploy_token, package_name_type: :non_existing, visibility: :internal, user_role: nil, expected_result: :reject, expected_status: :not_found697 behaves like reject package tags request698 behaves like returning response status699 returns not_found700 with a user namespace701 behaves like handling all conditions702 auth: nil, package_name_type: :scoped_naming_convention, visibility: :public, user_role: nil, expected_result: :accept, expected_status: :ok703 behaves like accept package tags request704 with valid package name705 returns a valid json response706 returns two package tags707 behaves like returning response status708 returns ok709 behaves like track event710 behaves like a package tracking event711 creates a gitlab tracking event list_tags712 with invalid package name713 package_name: "%20", status: :bad_request714 behaves like returning response status715 returns bad_request716 package_name: nil, status: :not_found717 behaves like returning response status718 returns not_found719 auth: nil, package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: nil, expected_result: :accept, expected_status: :ok720 behaves like reject package tags request721 behaves like returning response status722 returns not_found723 auth: nil, package_name_type: :unscoped, visibility: :public, user_role: nil, expected_result: :accept, expected_status: :ok724 behaves like reject package tags request725 behaves like returning response status726 returns not_found727 auth: nil, package_name_type: :non_existing, visibility: :public, user_role: nil, expected_result: :reject, expected_status: :not_found728 behaves like reject package tags request729 behaves like returning response status730 returns not_found731 auth: nil, package_name_type: :scoped_naming_convention, visibility: :private, user_role: nil, expected_result: :reject, expected_status: :not_found732 behaves like reject package tags request733 behaves like returning response status734 returns not_found735 auth: nil, package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: nil, expected_result: :reject, expected_status: :not_found736 behaves like reject package tags request737 behaves like returning response status738 returns not_found739 auth: nil, package_name_type: :unscoped, visibility: :private, user_role: nil, expected_result: :reject, expected_status: :not_found740 behaves like reject package tags request741 behaves like returning response status742 returns not_found743 auth: nil, package_name_type: :non_existing, visibility: :private, user_role: nil, expected_result: :reject, expected_status: :not_found744 behaves like reject package tags request745 behaves like returning response status746 returns not_found747 auth: nil, package_name_type: :scoped_naming_convention, visibility: :internal, user_role: nil, expected_result: :reject, expected_status: :not_found748 behaves like reject package tags request749 behaves like returning response status750 returns not_found751 auth: nil, package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: nil, expected_result: :reject, expected_status: :not_found752 behaves like reject package tags request753 behaves like returning response status754 returns not_found755 auth: nil, package_name_type: :unscoped, visibility: :internal, user_role: nil, expected_result: :reject, expected_status: :not_found756 behaves like reject package tags request757 behaves like returning response status758 returns not_found759 auth: nil, package_name_type: :non_existing, visibility: :internal, user_role: nil, expected_result: :reject, expected_status: :not_found760 behaves like reject package tags request761 behaves like returning response status762 returns not_found763 auth: :oauth, package_name_type: :scoped_naming_convention, visibility: :public, user_role: :guest, expected_result: :accept, expected_status: :ok764 behaves like accept package tags request765 with valid package name766 returns a valid json response767 returns two package tags768 behaves like returning response status769 returns ok770 behaves like track event771 behaves like a package tracking event772 creates a gitlab tracking event list_tags773 with invalid package name774 package_name: "%20", status: :bad_request775 behaves like returning response status776 returns bad_request777 package_name: nil, status: :not_found778 behaves like returning response status779 returns not_found780 auth: :oauth, package_name_type: :scoped_naming_convention, visibility: :public, user_role: :reporter, expected_result: :accept, expected_status: :ok781 behaves like accept package tags request782 with valid package name783 returns a valid json response784 returns two package tags785 behaves like returning response status786 returns ok787 behaves like track event788 behaves like a package tracking event789 creates a gitlab tracking event list_tags790 with invalid package name791 package_name: "%20", status: :bad_request792 behaves like returning response status793 returns bad_request794 package_name: nil, status: :not_found795 behaves like returning response status796 returns not_found797 auth: :oauth, package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: :guest, expected_result: :accept, expected_status: :ok798 behaves like reject package tags request799 behaves like returning response status800 returns not_found801 auth: :oauth, package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: :reporter, expected_result: :accept, expected_status: :ok802 behaves like reject package tags request803 behaves like returning response status804 returns not_found805 auth: :oauth, package_name_type: :unscoped, visibility: :public, user_role: :guest, expected_result: :accept, expected_status: :ok806 behaves like reject package tags request807 behaves like returning response status808 returns not_found809 auth: :oauth, package_name_type: :unscoped, visibility: :public, user_role: :reporter, expected_result: :accept, expected_status: :ok810 behaves like reject package tags request811 behaves like returning response status812 returns not_found813 auth: :oauth, package_name_type: :non_existing, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :not_found814 behaves like reject package tags request815 behaves like returning response status816 returns not_found817 auth: :oauth, package_name_type: :non_existing, visibility: :public, user_role: :reporter, expected_result: :reject, expected_status: :not_found818 behaves like reject package tags request819 behaves like returning response status820 returns not_found821 auth: :oauth, package_name_type: :scoped_naming_convention, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden822 behaves like reject package tags request823 behaves like returning response status824 returns forbidden825 auth: :oauth, package_name_type: :scoped_naming_convention, visibility: :private, user_role: :reporter, expected_result: :accept, expected_status: :ok826 behaves like accept package tags request827 with valid package name828 returns a valid json response829 returns two package tags830 behaves like returning response status831 returns ok832 behaves like track event833 behaves like a package tracking event834 creates a gitlab tracking event list_tags835 with invalid package name836 package_name: "%20", status: :bad_request837 behaves like returning response status838 returns bad_request839 package_name: nil, status: :not_found840 behaves like returning response status841 returns not_found842 auth: :oauth, package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden843 behaves like reject package tags request844 behaves like returning response status845 returns not_found846 auth: :oauth, package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: :reporter, expected_result: :accept, expected_status: :ok847 behaves like reject package tags request848 behaves like returning response status849 returns not_found850 auth: :oauth, package_name_type: :unscoped, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden851 behaves like reject package tags request852 behaves like returning response status853 returns not_found854 auth: :oauth, package_name_type: :unscoped, visibility: :private, user_role: :reporter, expected_result: :accept, expected_status: :ok855 behaves like reject package tags request856 behaves like returning response status857 returns not_found858 auth: :oauth, package_name_type: :non_existing, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden859 behaves like reject package tags request860 behaves like returning response status861 returns not_found862 auth: :oauth, package_name_type: :non_existing, visibility: :private, user_role: :reporter, expected_result: :reject, expected_status: :not_found863 behaves like reject package tags request864 behaves like returning response status865 returns not_found866 auth: :oauth, package_name_type: :scoped_naming_convention, visibility: :internal, user_role: :guest, expected_result: :accept, expected_status: :ok867 behaves like accept package tags request868 with valid package name869 returns a valid json response870 returns two package tags871 behaves like returning response status872 returns ok873 behaves like track event874 behaves like a package tracking event875 creates a gitlab tracking event list_tags876 with invalid package name877 package_name: "%20", status: :bad_request878 behaves like returning response status879 returns bad_request880 package_name: nil, status: :not_found881 behaves like returning response status882 returns not_found883 auth: :oauth, package_name_type: :scoped_naming_convention, visibility: :internal, user_role: :reporter, expected_result: :accept, expected_status: :ok884 behaves like accept package tags request885 with valid package name886 returns a valid json response887 returns two package tags888 behaves like returning response status889 returns ok890 behaves like track event891 behaves like a package tracking event892 creates a gitlab tracking event list_tags893 with invalid package name894 package_name: "%20", status: :bad_request895 behaves like returning response status896 returns bad_request897 package_name: nil, status: :not_found898 behaves like returning response status899 returns not_found900 auth: :oauth, package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: :guest, expected_result: :accept, expected_status: :ok901 behaves like reject package tags request902 behaves like returning response status903 returns not_found904 auth: :oauth, package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: :reporter, expected_result: :accept, expected_status: :ok905 behaves like reject package tags request906 behaves like returning response status907 returns not_found908 auth: :oauth, package_name_type: :unscoped, visibility: :internal, user_role: :guest, expected_result: :accept, expected_status: :ok909 behaves like reject package tags request910 behaves like returning response status911 returns not_found912 auth: :oauth, package_name_type: :unscoped, visibility: :internal, user_role: :reporter, expected_result: :accept, expected_status: :ok913 behaves like reject package tags request914 behaves like returning response status915 returns not_found916 auth: :oauth, package_name_type: :non_existing, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :not_found917 behaves like reject package tags request918 behaves like returning response status919 returns not_found920 auth: :oauth, package_name_type: :non_existing, visibility: :internal, user_role: :reporter, expected_result: :reject, expected_status: :not_found921 behaves like reject package tags request922 behaves like returning response status923 returns not_found924 auth: :personal_access_token, package_name_type: :scoped_naming_convention, visibility: :public, user_role: :guest, expected_result: :accept, expected_status: :ok925 behaves like accept package tags request926 with valid package name927 returns a valid json response928 returns two package tags929 behaves like returning response status930 returns ok931 behaves like track event932 behaves like a package tracking event933 creates a gitlab tracking event list_tags934 with invalid package name935 package_name: "%20", status: :bad_request936 behaves like returning response status937 returns bad_request938 package_name: nil, status: :not_found939 behaves like returning response status940 returns not_found941 auth: :personal_access_token, package_name_type: :scoped_naming_convention, visibility: :public, user_role: :reporter, expected_result: :accept, expected_status: :ok942 behaves like accept package tags request943 with valid package name944 returns a valid json response945 returns two package tags946 behaves like returning response status947 returns ok948 behaves like track event949 behaves like a package tracking event950 creates a gitlab tracking event list_tags951 with invalid package name952 package_name: "%20", status: :bad_request953 behaves like returning response status954 returns bad_request955 package_name: nil, status: :not_found956 behaves like returning response status957 returns not_found958 auth: :personal_access_token, package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: :guest, expected_result: :accept, expected_status: :ok959 behaves like reject package tags request960 behaves like returning response status961 returns not_found962 auth: :personal_access_token, package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: :reporter, expected_result: :accept, expected_status: :ok963 behaves like reject package tags request964 behaves like returning response status965 returns not_found966 auth: :personal_access_token, package_name_type: :unscoped, visibility: :public, user_role: :guest, expected_result: :accept, expected_status: :ok967 behaves like reject package tags request968 behaves like returning response status969 returns not_found970 auth: :personal_access_token, package_name_type: :unscoped, visibility: :public, user_role: :reporter, expected_result: :accept, expected_status: :ok971 behaves like reject package tags request972 behaves like returning response status973 returns not_found974 auth: :personal_access_token, package_name_type: :non_existing, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :not_found975 behaves like reject package tags request976 behaves like returning response status977 returns not_found978 auth: :personal_access_token, package_name_type: :non_existing, visibility: :public, user_role: :reporter, expected_result: :reject, expected_status: :not_found979 behaves like reject package tags request980 behaves like returning response status981 returns not_found982 auth: :personal_access_token, package_name_type: :scoped_naming_convention, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden983 behaves like reject package tags request984 behaves like returning response status985 returns forbidden986 auth: :personal_access_token, package_name_type: :scoped_naming_convention, visibility: :private, user_role: :reporter, expected_result: :accept, expected_status: :ok987 behaves like accept package tags request988 with valid package name989 returns a valid json response990 returns two package tags991 behaves like returning response status992 returns ok993 behaves like track event994 behaves like a package tracking event995 creates a gitlab tracking event list_tags996 with invalid package name997 package_name: "%20", status: :bad_request998 behaves like returning response status999 returns bad_request1000 package_name: nil, status: :not_found1001 behaves like returning response status1002 returns not_found1003 auth: :personal_access_token, package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden1004 behaves like reject package tags request1005 behaves like returning response status1006 returns not_found1007 auth: :personal_access_token, package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: :reporter, expected_result: :accept, expected_status: :ok1008 behaves like reject package tags request1009 behaves like returning response status1010 returns not_found1011 auth: :personal_access_token, package_name_type: :unscoped, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden1012 behaves like reject package tags request1013 behaves like returning response status1014 returns not_found1015 auth: :personal_access_token, package_name_type: :unscoped, visibility: :private, user_role: :reporter, expected_result: :accept, expected_status: :ok1016 behaves like reject package tags request1017 behaves like returning response status1018 returns not_found1019 auth: :personal_access_token, package_name_type: :non_existing, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden1020 behaves like reject package tags request1021 behaves like returning response status1022 returns not_found1023 auth: :personal_access_token, package_name_type: :non_existing, visibility: :private, user_role: :reporter, expected_result: :reject, expected_status: :not_found1024 behaves like reject package tags request1025 behaves like returning response status1026 returns not_found1027 auth: :personal_access_token, package_name_type: :scoped_naming_convention, visibility: :internal, user_role: :guest, expected_result: :accept, expected_status: :ok1028 behaves like accept package tags request1029 with valid package name1030 returns a valid json response1031 returns two package tags1032 behaves like returning response status1033 returns ok1034 behaves like track event1035 behaves like a package tracking event1036 creates a gitlab tracking event list_tags1037 with invalid package name1038 package_name: "%20", status: :bad_request1039 behaves like returning response status1040 returns bad_request1041 package_name: nil, status: :not_found1042 behaves like returning response status1043 returns not_found1044 auth: :personal_access_token, package_name_type: :scoped_naming_convention, visibility: :internal, user_role: :reporter, expected_result: :accept, expected_status: :ok1045 behaves like accept package tags request1046 with valid package name1047 returns a valid json response1048 returns two package tags1049 behaves like returning response status1050 returns ok1051 behaves like track event1052 behaves like a package tracking event1053 creates a gitlab tracking event list_tags1054 with invalid package name1055 package_name: "%20", status: :bad_request1056 behaves like returning response status1057 returns bad_request1058 package_name: nil, status: :not_found1059 behaves like returning response status1060 returns not_found1061 auth: :personal_access_token, package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: :guest, expected_result: :accept, expected_status: :ok1062 behaves like reject package tags request1063 behaves like returning response status1064 returns not_found1065 auth: :personal_access_token, package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: :reporter, expected_result: :accept, expected_status: :ok1066 behaves like reject package tags request1067 behaves like returning response status1068 returns not_found1069 auth: :personal_access_token, package_name_type: :unscoped, visibility: :internal, user_role: :guest, expected_result: :accept, expected_status: :ok1070 behaves like reject package tags request1071 behaves like returning response status1072 returns not_found1073 auth: :personal_access_token, package_name_type: :unscoped, visibility: :internal, user_role: :reporter, expected_result: :accept, expected_status: :ok1074 behaves like reject package tags request1075 behaves like returning response status1076 returns not_found1077 auth: :personal_access_token, package_name_type: :non_existing, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :not_found1078 behaves like reject package tags request1079 behaves like returning response status1080 returns not_found1081 auth: :personal_access_token, package_name_type: :non_existing, visibility: :internal, user_role: :reporter, expected_result: :reject, expected_status: :not_found1082 behaves like reject package tags request1083 behaves like returning response status1084 returns not_found1085 auth: :job_token, package_name_type: :scoped_naming_convention, visibility: :public, user_role: :developer, expected_result: :accept, expected_status: :ok1086 behaves like accept package tags request1087 with valid package name1088 returns a valid json response1089 returns two package tags1090 behaves like returning response status1091 returns ok1092 behaves like track event1093 behaves like a package tracking event1094 creates a gitlab tracking event list_tags1095 with invalid package name1096 package_name: "%20", status: :bad_request1097 behaves like returning response status1098 returns bad_request1099 package_name: nil, status: :not_found1100 behaves like returning response status1101 returns not_found1102 auth: :job_token, package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: :developer, expected_result: :accept, expected_status: :ok1103 behaves like reject package tags request1104 behaves like returning response status1105 returns not_found1106 auth: :job_token, package_name_type: :unscoped, visibility: :public, user_role: :developer, expected_result: :accept, expected_status: :ok1107 behaves like reject package tags request1108 behaves like returning response status1109 returns not_found1110 auth: :job_token, package_name_type: :non_existing, visibility: :public, user_role: :developer, expected_result: :reject, expected_status: :not_found1111 behaves like reject package tags request1112 behaves like returning response status1113 returns not_found1114 auth: :job_token, package_name_type: :scoped_naming_convention, visibility: :private, user_role: :developer, expected_result: :accept, expected_status: :ok1115 behaves like accept package tags request1116 with valid package name1117 returns a valid json response1118 returns two package tags1119 behaves like returning response status1120 returns ok1121 behaves like track event1122 behaves like a package tracking event1123 creates a gitlab tracking event list_tags1124 with invalid package name1125 package_name: "%20", status: :bad_request1126 behaves like returning response status1127 returns bad_request1128 package_name: nil, status: :not_found1129 behaves like returning response status1130 returns not_found1131 auth: :job_token, package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: :developer, expected_result: :accept, expected_status: :ok1132 behaves like reject package tags request1133 behaves like returning response status1134 returns not_found1135 auth: :job_token, package_name_type: :unscoped, visibility: :private, user_role: :developer, expected_result: :accept, expected_status: :ok1136 behaves like reject package tags request1137 behaves like returning response status1138 returns not_found1139 auth: :job_token, package_name_type: :non_existing, visibility: :private, user_role: :developer, expected_result: :reject, expected_status: :not_found1140 behaves like reject package tags request1141 behaves like returning response status1142 returns not_found1143 auth: :job_token, package_name_type: :scoped_naming_convention, visibility: :internal, user_role: :developer, expected_result: :accept, expected_status: :ok1144 behaves like accept package tags request1145 with valid package name1146 returns a valid json response1147 returns two package tags1148 behaves like returning response status1149 returns ok1150 behaves like track event1151 behaves like a package tracking event1152 creates a gitlab tracking event list_tags1153 with invalid package name1154 package_name: "%20", status: :bad_request1155 behaves like returning response status1156 returns bad_request1157 package_name: nil, status: :not_found1158 behaves like returning response status1159 returns not_found1160 auth: :job_token, package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: :developer, expected_result: :accept, expected_status: :ok1161 behaves like reject package tags request1162 behaves like returning response status1163 returns not_found1164 auth: :job_token, package_name_type: :unscoped, visibility: :internal, user_role: :developer, expected_result: :accept, expected_status: :ok1165 behaves like reject package tags request1166 behaves like returning response status1167 returns not_found1168 auth: :job_token, package_name_type: :non_existing, visibility: :internal, user_role: :developer, expected_result: :reject, expected_status: :not_found1169 behaves like reject package tags request1170 behaves like returning response status1171 returns not_found1172 auth: :deploy_token, package_name_type: :scoped_naming_convention, visibility: :public, user_role: nil, expected_result: :accept, expected_status: :ok1173 behaves like accept package tags request1174 with valid package name1175 returns a valid json response1176 returns two package tags1177 behaves like returning response status1178 returns ok1179 behaves like track event1180 behaves like a package tracking event1181 creates a gitlab tracking event list_tags1182 with invalid package name1183 package_name: "%20", status: :bad_request1184 behaves like returning response status1185 returns bad_request1186 package_name: nil, status: :not_found1187 behaves like returning response status1188 returns not_found1189 auth: :deploy_token, package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: nil, expected_result: :accept, expected_status: :ok1190 behaves like reject package tags request1191 behaves like returning response status1192 returns not_found1193 auth: :deploy_token, package_name_type: :unscoped, visibility: :public, user_role: nil, expected_result: :accept, expected_status: :ok1194 behaves like reject package tags request1195 behaves like returning response status1196 returns not_found1197 auth: :deploy_token, package_name_type: :non_existing, visibility: :public, user_role: nil, expected_result: :reject, expected_status: :not_found1198 behaves like reject package tags request1199 behaves like returning response status1200 returns not_found1201 auth: :deploy_token, package_name_type: :scoped_naming_convention, visibility: :private, user_role: nil, expected_result: :accept, expected_status: :ok1202 behaves like accept package tags request1203 with valid package name1204 returns a valid json response1205 returns two package tags1206 behaves like returning response status1207 returns ok1208 behaves like track event1209 behaves like a package tracking event1210 creates a gitlab tracking event list_tags1211 with invalid package name1212 package_name: "%20", status: :bad_request1213 behaves like returning response status1214 returns bad_request1215 package_name: nil, status: :not_found1216 behaves like returning response status1217 returns not_found1218 auth: :deploy_token, package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: nil, expected_result: :accept, expected_status: :ok1219 behaves like reject package tags request1220 behaves like returning response status1221 returns not_found1222 auth: :deploy_token, package_name_type: :unscoped, visibility: :private, user_role: nil, expected_result: :accept, expected_status: :ok1223 behaves like reject package tags request1224 behaves like returning response status1225 returns not_found1226 auth: :deploy_token, package_name_type: :non_existing, visibility: :private, user_role: nil, expected_result: :reject, expected_status: :not_found1227 behaves like reject package tags request1228 behaves like returning response status1229 returns not_found1230 auth: :deploy_token, package_name_type: :scoped_naming_convention, visibility: :internal, user_role: nil, expected_result: :accept, expected_status: :ok1231 behaves like accept package tags request1232 with valid package name1233 returns a valid json response1234 returns two package tags1235 behaves like returning response status1236 returns ok1237 behaves like track event1238 behaves like a package tracking event1239 creates a gitlab tracking event list_tags1240 with invalid package name1241 package_name: "%20", status: :bad_request1242 behaves like returning response status1243 returns bad_request1244 package_name: nil, status: :not_found1245 behaves like returning response status1246 returns not_found1247 auth: :deploy_token, package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: nil, expected_result: :accept, expected_status: :ok1248 behaves like reject package tags request1249 behaves like returning response status1250 returns not_found1251 auth: :deploy_token, package_name_type: :unscoped, visibility: :internal, user_role: nil, expected_result: :accept, expected_status: :ok1252 behaves like reject package tags request1253 behaves like returning response status1254 returns not_found1255 auth: :deploy_token, package_name_type: :non_existing, visibility: :internal, user_role: nil, expected_result: :reject, expected_status: :not_found1256 behaves like reject package tags request1257 behaves like returning response status1258 returns not_found1259 PUT /api/v4/packages/npm/-/package/*package_name/dist-tags/:tag1260 behaves like handling create dist tag requests1261 with a group namespace1262 behaves like handling all conditions1263 behaves like handling different package names, visibilities and user roles for tags create or delete1264 auth: nil, package_name_type: :scoped_naming_convention, visibility: :public, user_role: nil, expected_result: :reject, expected_status: :unauthorized1265 behaves like reject create package tag request1266 behaves like returning response status1267 returns unauthorized1268 auth: nil, package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: nil, expected_result: :reject, expected_status: :unauthorized1269 behaves like reject create package tag request1270 behaves like returning response status1271 returns unauthorized1272 auth: nil, package_name_type: :unscoped, visibility: :public, user_role: nil, expected_result: :reject, expected_status: :unauthorized1273 behaves like reject create package tag request1274 behaves like returning response status1275 returns unauthorized1276 auth: nil, package_name_type: :non_existing, visibility: :public, user_role: nil, expected_result: :reject, expected_status: :unauthorized1277 behaves like reject create package tag request1278 behaves like returning response status1279 returns unauthorized1280 auth: nil, package_name_type: :scoped_naming_convention, visibility: :private, user_role: nil, expected_result: :reject, expected_status: :unauthorized1281 behaves like reject create package tag request1282 behaves like returning response status1283 returns unauthorized1284 auth: nil, package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: nil, expected_result: :reject, expected_status: :unauthorized1285 behaves like reject create package tag request1286 behaves like returning response status1287 returns unauthorized1288 auth: nil, package_name_type: :unscoped, visibility: :private, user_role: nil, expected_result: :reject, expected_status: :unauthorized1289 behaves like reject create package tag request1290 behaves like returning response status1291 returns unauthorized1292 auth: nil, package_name_type: :non_existing, visibility: :private, user_role: nil, expected_result: :reject, expected_status: :unauthorized1293 behaves like reject create package tag request1294 behaves like returning response status1295 returns unauthorized1296 auth: nil, package_name_type: :scoped_naming_convention, visibility: :internal, user_role: nil, expected_result: :reject, expected_status: :unauthorized1297 behaves like reject create package tag request1298 behaves like returning response status1299 returns unauthorized1300 auth: nil, package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: nil, expected_result: :reject, expected_status: :unauthorized1301 behaves like reject create package tag request1302 behaves like returning response status1303 returns unauthorized1304 auth: nil, package_name_type: :unscoped, visibility: :internal, user_role: nil, expected_result: :reject, expected_status: :unauthorized1305 behaves like reject create package tag request1306 behaves like returning response status1307 returns unauthorized1308 auth: nil, package_name_type: :non_existing, visibility: :internal, user_role: nil, expected_result: :reject, expected_status: :unauthorized1309 behaves like reject create package tag request1310 behaves like returning response status1311 returns unauthorized1312 auth: :oauth, package_name_type: :scoped_naming_convention, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :forbidden1313 behaves like reject create package tag request1314 behaves like returning response status1315 returns forbidden1316 auth: :oauth, package_name_type: :scoped_naming_convention, visibility: :public, user_role: :developer, expected_result: :accept, expected_status: :ok1317 behaves like accept create package tag request1318 with valid package name1319 creates the package tag1320 returns a valid response1321 behaves like returning response status1322 returns no_content1323 behaves like track event1324 behaves like a package tracking event1325 creates a gitlab tracking event create_tag1326 with already existing tag1327 reuses existing tag1328 returns a valid response1329 behaves like returning response status1330 returns no_content1331 with invalid package name1332 package_name: "unknown", status: :not_found1333 behaves like returning response status1334 returns not_found1335 package_name: "", status: :not_found1336 behaves like returning response status1337 returns not_found1338 package_name: "%20", status: :bad_request1339 behaves like returning response status1340 returns bad_request1341 with invalid tag name1342 tag_name: "", status: :not_found1343 behaves like returning response status1344 returns not_found1345 tag_name: "%20", status: :bad_request1346 behaves like returning response status1347 returns bad_request1348 with invalid version1349 version: " ", status: :bad_request1350 behaves like returning response status1351 returns bad_request1352 version: "", status: :bad_request1353 behaves like returning response status1354 returns bad_request1355 version: nil, status: :bad_request1356 behaves like returning response status1357 returns bad_request1358 auth: :oauth, package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :forbidden1359 behaves like reject create package tag request1360 behaves like returning response status1361 returns not_found1362 auth: :oauth, package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: :developer, expected_result: :accept, expected_status: :ok1363 behaves like reject create package tag request1364 behaves like returning response status1365 returns not_found1366 auth: :oauth, package_name_type: :unscoped, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :forbidden1367 behaves like reject create package tag request1368 behaves like returning response status1369 returns not_found1370 auth: :oauth, package_name_type: :unscoped, visibility: :public, user_role: :developer, expected_result: :accept, expected_status: :ok1371 behaves like reject create package tag request1372 behaves like returning response status1373 returns not_found1374 auth: :oauth, package_name_type: :non_existing, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :forbidden1375 behaves like reject create package tag request1376 behaves like returning response status1377 returns not_found1378 auth: :oauth, package_name_type: :non_existing, visibility: :public, user_role: :developer, expected_result: :reject, expected_status: :not_found1379 behaves like reject create package tag request1380 behaves like returning response status1381 returns not_found1382 auth: :oauth, package_name_type: :scoped_naming_convention, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden1383 behaves like reject create package tag request1384 behaves like returning response status1385 returns forbidden1386 auth: :oauth, package_name_type: :scoped_naming_convention, visibility: :private, user_role: :developer, expected_result: :accept, expected_status: :ok1387 behaves like accept create package tag request1388 with valid package name1389 creates the package tag1390 returns a valid response1391 behaves like returning response status1392 returns no_content1393 behaves like track event1394 behaves like a package tracking event1395 creates a gitlab tracking event create_tag1396 with already existing tag1397 reuses existing tag1398 returns a valid response1399 behaves like returning response status1400 returns no_content1401 with invalid package name1402 package_name: "unknown", status: :not_found1403 behaves like returning response status1404 returns not_found1405 package_name: "", status: :not_found1406 behaves like returning response status1407 returns not_found1408 package_name: "%20", status: :bad_request1409 behaves like returning response status1410 returns bad_request1411 with invalid tag name1412 tag_name: "", status: :not_found1413 behaves like returning response status1414 returns not_found1415 tag_name: "%20", status: :bad_request1416 behaves like returning response status1417 returns bad_request1418 with invalid version1419 version: " ", status: :bad_request1420 behaves like returning response status1421 returns bad_request1422 version: "", status: :bad_request1423 behaves like returning response status1424 returns bad_request1425 version: nil, status: :bad_request1426 behaves like returning response status1427 returns bad_request1428 auth: :oauth, package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden1429 behaves like reject create package tag request1430 behaves like returning response status1431 returns not_found1432 auth: :oauth, package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: :developer, expected_result: :accept, expected_status: :ok1433 behaves like reject create package tag request1434 behaves like returning response status1435 returns not_found1436 auth: :oauth, package_name_type: :unscoped, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden1437 behaves like reject create package tag request1438 behaves like returning response status1439 returns not_found1440 auth: :oauth, package_name_type: :unscoped, visibility: :private, user_role: :developer, expected_result: :accept, expected_status: :ok1441 behaves like reject create package tag request1442 behaves like returning response status1443 returns not_found1444 auth: :oauth, package_name_type: :non_existing, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden1445 behaves like reject create package tag request1446 behaves like returning response status1447 returns not_found1448 auth: :oauth, package_name_type: :non_existing, visibility: :private, user_role: :developer, expected_result: :reject, expected_status: :not_found1449 behaves like reject create package tag request1450 behaves like returning response status1451 returns not_found1452 auth: :oauth, package_name_type: :scoped_naming_convention, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :forbidden1453 behaves like reject create package tag request1454 behaves like returning response status1455 returns forbidden1456 auth: :oauth, package_name_type: :scoped_naming_convention, visibility: :internal, user_role: :developer, expected_result: :accept, expected_status: :ok1457 behaves like accept create package tag request1458 with valid package name1459 creates the package tag1460 returns a valid response1461 behaves like returning response status1462 returns no_content1463 behaves like track event1464 behaves like a package tracking event1465 creates a gitlab tracking event create_tag1466 with already existing tag1467 reuses existing tag1468 returns a valid response1469 behaves like returning response status1470 returns no_content1471 with invalid package name1472 package_name: "unknown", status: :not_found1473 behaves like returning response status1474 returns not_found1475 package_name: "", status: :not_found1476 behaves like returning response status1477 returns not_found1478 package_name: "%20", status: :bad_request1479 behaves like returning response status1480 returns bad_request1481 with invalid tag name1482 tag_name: "", status: :not_found1483 behaves like returning response status1484 returns not_found1485 tag_name: "%20", status: :bad_request1486 behaves like returning response status1487 returns bad_request1488 with invalid version1489 version: " ", status: :bad_request1490 behaves like returning response status1491 returns bad_request1492 version: "", status: :bad_request1493 behaves like returning response status1494 returns bad_request1495 version: nil, status: :bad_request1496 behaves like returning response status1497 returns bad_request1498 auth: :oauth, package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :forbidden1499 behaves like reject create package tag request1500 behaves like returning response status1501 returns not_found1502 auth: :oauth, package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: :developer, expected_result: :accept, expected_status: :ok1503 behaves like reject create package tag request1504 behaves like returning response status1505 returns not_found1506 auth: :oauth, package_name_type: :unscoped, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :forbidden1507 behaves like reject create package tag request1508 behaves like returning response status1509 returns not_found1510 auth: :oauth, package_name_type: :unscoped, visibility: :internal, user_role: :developer, expected_result: :accept, expected_status: :ok1511 behaves like reject create package tag request1512 behaves like returning response status1513 returns not_found1514 auth: :oauth, package_name_type: :non_existing, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :forbidden1515 behaves like reject create package tag request1516 behaves like returning response status1517 returns not_found1518 auth: :oauth, package_name_type: :non_existing, visibility: :internal, user_role: :developer, expected_result: :reject, expected_status: :not_found1519 behaves like reject create package tag request1520 behaves like returning response status1521 returns not_found1522 auth: :personal_access_token, package_name_type: :scoped_naming_convention, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :forbidden1523 behaves like reject create package tag request1524 behaves like returning response status1525 returns forbidden1526 auth: :personal_access_token, package_name_type: :scoped_naming_convention, visibility: :public, user_role: :developer, expected_result: :accept, expected_status: :ok1527 behaves like accept create package tag request1528 with valid package name1529 creates the package tag1530 returns a valid response1531 behaves like returning response status1532 returns no_content1533 behaves like track event1534 behaves like a package tracking event1535 creates a gitlab tracking event create_tag1536 with already existing tag1537 reuses existing tag1538 returns a valid response1539 behaves like returning response status1540 returns no_content1541 with invalid package name1542 package_name: "unknown", status: :not_found1543 behaves like returning response status1544 returns not_found1545 package_name: "", status: :not_found1546 behaves like returning response status1547 returns not_found1548 package_name: "%20", status: :bad_request1549 behaves like returning response status1550 returns bad_request1551 with invalid tag name1552 tag_name: "", status: :not_found1553 behaves like returning response status1554 returns not_found1555 tag_name: "%20", status: :bad_request1556 behaves like returning response status1557 returns bad_request1558 with invalid version1559 version: " ", status: :bad_request1560 behaves like returning response status1561 returns bad_request1562 version: "", status: :bad_request1563 behaves like returning response status1564 returns bad_request1565 version: nil, status: :bad_request1566 behaves like returning response status1567 returns bad_request1568 auth: :personal_access_token, package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :forbidden1569 behaves like reject create package tag request1570 behaves like returning response status1571 returns not_found1572 auth: :personal_access_token, package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: :developer, expected_result: :accept, expected_status: :ok1573 behaves like reject create package tag request1574 behaves like returning response status1575 returns not_found1576 auth: :personal_access_token, package_name_type: :unscoped, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :forbidden1577 behaves like reject create package tag request1578 behaves like returning response status1579 returns not_found1580 auth: :personal_access_token, package_name_type: :unscoped, visibility: :public, user_role: :developer, expected_result: :accept, expected_status: :ok1581 behaves like reject create package tag request1582 behaves like returning response status1583 returns not_found1584 auth: :personal_access_token, package_name_type: :non_existing, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :forbidden1585 behaves like reject create package tag request1586 behaves like returning response status1587 returns not_found1588 auth: :personal_access_token, package_name_type: :non_existing, visibility: :public, user_role: :developer, expected_result: :reject, expected_status: :not_found1589 behaves like reject create package tag request1590 behaves like returning response status1591 returns not_found1592 auth: :personal_access_token, package_name_type: :scoped_naming_convention, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden1593 behaves like reject create package tag request1594 behaves like returning response status1595 returns forbidden1596 auth: :personal_access_token, package_name_type: :scoped_naming_convention, visibility: :private, user_role: :developer, expected_result: :accept, expected_status: :ok1597 behaves like accept create package tag request1598 with valid package name1599 creates the package tag1600 returns a valid response1601 behaves like returning response status1602 returns no_content1603 behaves like track event1604 behaves like a package tracking event1605 creates a gitlab tracking event create_tag1606 with already existing tag1607 reuses existing tag1608 returns a valid response1609 behaves like returning response status1610 returns no_content1611 with invalid package name1612 package_name: "unknown", status: :not_found1613 behaves like returning response status1614 returns not_found1615 package_name: "", status: :not_found1616 behaves like returning response status1617 returns not_found1618 package_name: "%20", status: :bad_request1619 behaves like returning response status1620 returns bad_request1621 with invalid tag name1622 tag_name: "", status: :not_found1623 behaves like returning response status1624 returns not_found1625 tag_name: "%20", status: :bad_request1626 behaves like returning response status1627 returns bad_request1628 with invalid version1629 version: " ", status: :bad_request1630 behaves like returning response status1631 returns bad_request1632 version: "", status: :bad_request1633 behaves like returning response status1634 returns bad_request1635 version: nil, status: :bad_request1636 behaves like returning response status1637 returns bad_request1638 auth: :personal_access_token, package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden1639 behaves like reject create package tag request1640 behaves like returning response status1641 returns not_found1642 auth: :personal_access_token, package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: :developer, expected_result: :accept, expected_status: :ok1643 behaves like reject create package tag request1644 behaves like returning response status1645 returns not_found1646 auth: :personal_access_token, package_name_type: :unscoped, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden1647 behaves like reject create package tag request1648 behaves like returning response status1649 returns not_found1650 auth: :personal_access_token, package_name_type: :unscoped, visibility: :private, user_role: :developer, expected_result: :accept, expected_status: :ok1651 behaves like reject create package tag request1652 behaves like returning response status1653 returns not_found1654 auth: :personal_access_token, package_name_type: :non_existing, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden1655 behaves like reject create package tag request1656 behaves like returning response status1657 returns not_found1658 auth: :personal_access_token, package_name_type: :non_existing, visibility: :private, user_role: :developer, expected_result: :reject, expected_status: :not_found1659 behaves like reject create package tag request1660 behaves like returning response status1661 returns not_found1662 auth: :personal_access_token, package_name_type: :scoped_naming_convention, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :forbidden1663 behaves like reject create package tag request1664 behaves like returning response status1665 returns forbidden1666 auth: :personal_access_token, package_name_type: :scoped_naming_convention, visibility: :internal, user_role: :developer, expected_result: :accept, expected_status: :ok1667 behaves like accept create package tag request1668 with valid package name1669 creates the package tag1670 returns a valid response1671 behaves like returning response status1672 returns no_content1673 behaves like track event1674 behaves like a package tracking event1675 creates a gitlab tracking event create_tag1676 with already existing tag1677 reuses existing tag1678 returns a valid response1679 behaves like returning response status1680 returns no_content1681 with invalid package name1682 package_name: "unknown", status: :not_found1683 behaves like returning response status1684 returns not_found1685 package_name: "", status: :not_found1686 behaves like returning response status1687 returns not_found1688 package_name: "%20", status: :bad_request1689 behaves like returning response status1690 returns bad_request1691 with invalid tag name1692 tag_name: "", status: :not_found1693 behaves like returning response status1694 returns not_found1695 tag_name: "%20", status: :bad_request1696 behaves like returning response status1697 returns bad_request1698 with invalid version1699 version: " ", status: :bad_request1700 behaves like returning response status1701 returns bad_request1702 version: "", status: :bad_request1703 behaves like returning response status1704 returns bad_request1705 version: nil, status: :bad_request1706 behaves like returning response status1707 returns bad_request1708 auth: :personal_access_token, package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :forbidden1709 behaves like reject create package tag request1710 behaves like returning response status1711 returns not_found1712 auth: :personal_access_token, package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: :developer, expected_result: :accept, expected_status: :ok1713 behaves like reject create package tag request1714 behaves like returning response status1715 returns not_found1716 auth: :personal_access_token, package_name_type: :unscoped, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :forbidden1717 behaves like reject create package tag request1718 behaves like returning response status1719 returns not_found1720 auth: :personal_access_token, package_name_type: :unscoped, visibility: :internal, user_role: :developer, expected_result: :accept, expected_status: :ok1721 behaves like reject create package tag request1722 behaves like returning response status1723 returns not_found1724 auth: :personal_access_token, package_name_type: :non_existing, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :forbidden1725 behaves like reject create package tag request1726 behaves like returning response status1727 returns not_found1728 auth: :personal_access_token, package_name_type: :non_existing, visibility: :internal, user_role: :developer, expected_result: :reject, expected_status: :not_found1729 behaves like reject create package tag request1730 behaves like returning response status1731 returns not_found1732 auth: :job_token, package_name_type: :scoped_naming_convention, visibility: :public, user_role: :developer, expected_result: :accept, expected_status: :ok1733 behaves like accept create package tag request1734 with valid package name1735 creates the package tag1736 returns a valid response1737 behaves like returning response status1738 returns no_content1739 behaves like track event1740 behaves like a package tracking event1741 creates a gitlab tracking event create_tag1742 with already existing tag1743 reuses existing tag1744 returns a valid response1745 behaves like returning response status1746 returns no_content1747 with invalid package name1748 package_name: "unknown", status: :not_found1749 behaves like returning response status1750 returns not_found1751 package_name: "", status: :not_found1752 behaves like returning response status1753 returns not_found1754 package_name: "%20", status: :bad_request1755 behaves like returning response status1756 returns bad_request1757 with invalid tag name1758 tag_name: "", status: :not_found1759 behaves like returning response status1760 returns not_found1761 tag_name: "%20", status: :bad_request1762 behaves like returning response status1763 returns bad_request1764 with invalid version1765 version: " ", status: :bad_request1766 behaves like returning response status1767 returns bad_request1768 version: "", status: :bad_request1769 behaves like returning response status1770 returns bad_request1771 version: nil, status: :bad_request1772 behaves like returning response status1773 returns bad_request1774 auth: :job_token, package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: :developer, expected_result: :accept, expected_status: :ok1775 behaves like reject create package tag request1776 behaves like returning response status1777 returns not_found1778 auth: :job_token, package_name_type: :unscoped, visibility: :public, user_role: :developer, expected_result: :accept, expected_status: :ok1779 behaves like reject create package tag request1780 behaves like returning response status1781 returns not_found1782 auth: :job_token, package_name_type: :non_existing, visibility: :public, user_role: :developer, expected_result: :reject, expected_status: :not_found1783 behaves like reject create package tag request1784 behaves like returning response status1785 returns not_found1786 auth: :job_token, package_name_type: :scoped_naming_convention, visibility: :private, user_role: :developer, expected_result: :accept, expected_status: :ok1787 behaves like accept create package tag request1788 with valid package name1789 creates the package tag1790 returns a valid response1791 behaves like returning response status1792 returns no_content1793 behaves like track event1794 behaves like a package tracking event1795 creates a gitlab tracking event create_tag1796 with already existing tag1797 reuses existing tag1798 returns a valid response1799 behaves like returning response status1800 returns no_content1801 with invalid package name1802 package_name: "unknown", status: :not_found1803 behaves like returning response status1804 returns not_found1805 package_name: "", status: :not_found1806 behaves like returning response status1807 returns not_found1808 package_name: "%20", status: :bad_request1809 behaves like returning response status1810 returns bad_request1811 with invalid tag name1812 tag_name: "", status: :not_found1813 behaves like returning response status1814 returns not_found1815 tag_name: "%20", status: :bad_request1816 behaves like returning response status1817 returns bad_request1818 with invalid version1819 version: " ", status: :bad_request1820 behaves like returning response status1821 returns bad_request1822 version: "", status: :bad_request1823 behaves like returning response status1824 returns bad_request1825 version: nil, status: :bad_request1826 behaves like returning response status1827 returns bad_request1828 auth: :job_token, package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: :developer, expected_result: :accept, expected_status: :ok1829 behaves like reject create package tag request1830 behaves like returning response status1831 returns not_found1832 auth: :job_token, package_name_type: :unscoped, visibility: :private, user_role: :developer, expected_result: :accept, expected_status: :ok1833 behaves like reject create package tag request1834 behaves like returning response status1835 returns not_found1836 auth: :job_token, package_name_type: :non_existing, visibility: :private, user_role: :developer, expected_result: :reject, expected_status: :not_found1837 behaves like reject create package tag request1838 behaves like returning response status1839 returns not_found1840 auth: :job_token, package_name_type: :scoped_naming_convention, visibility: :internal, user_role: :developer, expected_result: :accept, expected_status: :ok1841 behaves like accept create package tag request1842 with valid package name1843 creates the package tag1844 returns a valid response1845 behaves like returning response status1846 returns no_content1847 behaves like track event1848 behaves like a package tracking event1849 creates a gitlab tracking event create_tag1850 with already existing tag1851 reuses existing tag1852 returns a valid response1853 behaves like returning response status1854 returns no_content1855 with invalid package name1856 package_name: "unknown", status: :not_found1857 behaves like returning response status1858 returns not_found1859 package_name: "", status: :not_found1860 behaves like returning response status1861 returns not_found1862 package_name: "%20", status: :bad_request1863 behaves like returning response status1864 returns bad_request1865 with invalid tag name1866 tag_name: "", status: :not_found1867 behaves like returning response status1868 returns not_found1869 tag_name: "%20", status: :bad_request1870 behaves like returning response status1871 returns bad_request1872 with invalid version1873 version: " ", status: :bad_request1874 behaves like returning response status1875 returns bad_request1876 version: "", status: :bad_request1877 behaves like returning response status1878 returns bad_request1879 version: nil, status: :bad_request1880 behaves like returning response status1881 returns bad_request1882 auth: :job_token, package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: :developer, expected_result: :accept, expected_status: :ok1883 behaves like reject create package tag request1884 behaves like returning response status1885 returns not_found1886 auth: :job_token, package_name_type: :unscoped, visibility: :internal, user_role: :developer, expected_result: :accept, expected_status: :ok1887 behaves like reject create package tag request1888 behaves like returning response status1889 returns not_found1890 auth: :job_token, package_name_type: :non_existing, visibility: :internal, user_role: :developer, expected_result: :reject, expected_status: :not_found1891 behaves like reject create package tag request1892 behaves like returning response status1893 returns not_found1894 auth: :deploy_token, package_name_type: :scoped_naming_convention, visibility: :public, user_role: nil, expected_result: :accept, expected_status: :ok1895 behaves like accept create package tag request1896 with valid package name1897 creates the package tag1898 returns a valid response1899 behaves like returning response status1900 returns no_content1901 behaves like track event1902 behaves like a package tracking event1903 creates a gitlab tracking event create_tag1904 with already existing tag1905 reuses existing tag1906 returns a valid response1907 behaves like returning response status1908 returns no_content1909 with invalid package name1910 package_name: "unknown", status: :not_found1911 behaves like returning response status1912 returns not_found1913 package_name: "", status: :not_found1914 behaves like returning response status1915 returns not_found1916 package_name: "%20", status: :bad_request1917 behaves like returning response status1918 returns bad_request1919 with invalid tag name1920 tag_name: "", status: :not_found1921 behaves like returning response status1922 returns not_found1923 tag_name: "%20", status: :bad_request1924 behaves like returning response status1925 returns bad_request1926 with invalid version1927 version: " ", status: :bad_request1928 behaves like returning response status1929 returns bad_request1930 version: "", status: :bad_request1931 behaves like returning response status1932 returns bad_request1933 version: nil, status: :bad_request1934 behaves like returning response status1935 returns bad_request1936 auth: :deploy_token, package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: nil, expected_result: :accept, expected_status: :ok1937 behaves like reject create package tag request1938 behaves like returning response status1939 returns not_found1940 auth: :deploy_token, package_name_type: :unscoped, visibility: :public, user_role: nil, expected_result: :accept, expected_status: :ok1941 behaves like reject create package tag request1942 behaves like returning response status1943 returns not_found1944 auth: :deploy_token, package_name_type: :non_existing, visibility: :public, user_role: nil, expected_result: :reject, expected_status: :not_found1945 behaves like reject create package tag request1946 behaves like returning response status1947 returns not_found1948 auth: :deploy_token, package_name_type: :scoped_naming_convention, visibility: :private, user_role: nil, expected_result: :accept, expected_status: :ok1949 behaves like accept create package tag request1950 with valid package name1951 creates the package tag1952 returns a valid response1953 behaves like returning response status1954 returns no_content1955 behaves like track event1956 behaves like a package tracking event1957 creates a gitlab tracking event create_tag1958 with already existing tag1959 reuses existing tag1960 returns a valid response1961 behaves like returning response status1962 returns no_content1963 with invalid package name1964 package_name: "unknown", status: :not_found1965 behaves like returning response status1966 returns not_found1967 package_name: "", status: :not_found1968 behaves like returning response status1969 returns not_found1970 package_name: "%20", status: :bad_request1971 behaves like returning response status1972 returns bad_request1973 with invalid tag name1974 tag_name: "", status: :not_found1975 behaves like returning response status1976 returns not_found1977 tag_name: "%20", status: :bad_request1978 behaves like returning response status1979 returns bad_request1980 with invalid version1981 version: " ", status: :bad_request1982 behaves like returning response status1983 returns bad_request1984 version: "", status: :bad_request1985 behaves like returning response status1986 returns bad_request1987 version: nil, status: :bad_request1988 behaves like returning response status1989 returns bad_request1990 auth: :deploy_token, package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: nil, expected_result: :accept, expected_status: :ok1991 behaves like reject create package tag request1992 behaves like returning response status1993 returns not_found1994 auth: :deploy_token, package_name_type: :unscoped, visibility: :private, user_role: nil, expected_result: :accept, expected_status: :ok1995 behaves like reject create package tag request1996 behaves like returning response status1997 returns not_found1998 auth: :deploy_token, package_name_type: :non_existing, visibility: :private, user_role: nil, expected_result: :reject, expected_status: :not_found1999 behaves like reject create package tag request2000 behaves like returning response status2001 returns not_found2002 auth: :deploy_token, package_name_type: :scoped_naming_convention, visibility: :internal, user_role: nil, expected_result: :accept, expected_status: :ok2003 behaves like accept create package tag request2004 with valid package name2005 creates the package tag2006 returns a valid response2007 behaves like returning response status2008 returns no_content2009 behaves like track event2010 behaves like a package tracking event2011 creates a gitlab tracking event create_tag2012 with already existing tag2013 reuses existing tag2014 returns a valid response2015 behaves like returning response status2016 returns no_content2017 with invalid package name2018 package_name: "unknown", status: :not_found2019 behaves like returning response status2020 returns not_found2021 package_name: "", status: :not_found2022 behaves like returning response status2023 returns not_found2024 package_name: "%20", status: :bad_request2025 behaves like returning response status2026 returns bad_request2027 with invalid tag name2028 tag_name: "", status: :not_found2029 behaves like returning response status2030 returns not_found2031 tag_name: "%20", status: :bad_request2032 behaves like returning response status2033 returns bad_request2034 with invalid version2035 version: " ", status: :bad_request2036 behaves like returning response status2037 returns bad_request2038 version: "", status: :bad_request2039 behaves like returning response status2040 returns bad_request2041 version: nil, status: :bad_request2042 behaves like returning response status2043 returns bad_request2044 auth: :deploy_token, package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: nil, expected_result: :accept, expected_status: :ok2045 behaves like reject create package tag request2046 behaves like returning response status2047 returns not_found2048 auth: :deploy_token, package_name_type: :unscoped, visibility: :internal, user_role: nil, expected_result: :accept, expected_status: :ok2049 behaves like reject create package tag request2050 behaves like returning response status2051 returns not_found2052 auth: :deploy_token, package_name_type: :non_existing, visibility: :internal, user_role: nil, expected_result: :reject, expected_status: :not_found2053 behaves like reject create package tag request2054 behaves like returning response status2055 returns not_found2056 with a user namespace2057 behaves like handling all conditions2058 behaves like handling different package names, visibilities and user roles for tags create or delete2059 auth: nil, package_name_type: :scoped_naming_convention, visibility: :public, user_role: nil, expected_result: :reject, expected_status: :unauthorized2060 behaves like reject create package tag request2061 behaves like returning response status2062 returns unauthorized2063 auth: nil, package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: nil, expected_result: :reject, expected_status: :unauthorized2064 behaves like reject create package tag request2065 behaves like returning response status2066 returns unauthorized2067 auth: nil, package_name_type: :unscoped, visibility: :public, user_role: nil, expected_result: :reject, expected_status: :unauthorized2068 behaves like reject create package tag request2069 behaves like returning response status2070 returns unauthorized2071 auth: nil, package_name_type: :non_existing, visibility: :public, user_role: nil, expected_result: :reject, expected_status: :unauthorized2072 behaves like reject create package tag request2073 behaves like returning response status2074 returns unauthorized2075 auth: nil, package_name_type: :scoped_naming_convention, visibility: :private, user_role: nil, expected_result: :reject, expected_status: :unauthorized2076 behaves like reject create package tag request2077 behaves like returning response status2078 returns unauthorized2079 auth: nil, package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: nil, expected_result: :reject, expected_status: :unauthorized2080 behaves like reject create package tag request2081 behaves like returning response status2082 returns unauthorized2083 auth: nil, package_name_type: :unscoped, visibility: :private, user_role: nil, expected_result: :reject, expected_status: :unauthorized2084 behaves like reject create package tag request2085 behaves like returning response status2086 returns unauthorized2087 auth: nil, package_name_type: :non_existing, visibility: :private, user_role: nil, expected_result: :reject, expected_status: :unauthorized2088 behaves like reject create package tag request2089 behaves like returning response status2090 returns unauthorized2091 auth: nil, package_name_type: :scoped_naming_convention, visibility: :internal, user_role: nil, expected_result: :reject, expected_status: :unauthorized2092 behaves like reject create package tag request2093 behaves like returning response status2094 returns unauthorized2095 auth: nil, package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: nil, expected_result: :reject, expected_status: :unauthorized2096 behaves like reject create package tag request2097 behaves like returning response status2098 returns unauthorized2099 auth: nil, package_name_type: :unscoped, visibility: :internal, user_role: nil, expected_result: :reject, expected_status: :unauthorized2100 behaves like reject create package tag request2101 behaves like returning response status2102 returns unauthorized2103 auth: nil, package_name_type: :non_existing, visibility: :internal, user_role: nil, expected_result: :reject, expected_status: :unauthorized2104 behaves like reject create package tag request2105 behaves like returning response status2106 returns unauthorized2107 auth: :oauth, package_name_type: :scoped_naming_convention, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :forbidden2108 behaves like reject create package tag request2109 behaves like returning response status2110 returns forbidden2111 auth: :oauth, package_name_type: :scoped_naming_convention, visibility: :public, user_role: :developer, expected_result: :accept, expected_status: :ok2112 behaves like accept create package tag request2113 with valid package name2114 creates the package tag2115 returns a valid response2116 behaves like returning response status2117 returns no_content2118 behaves like track event2119 behaves like a package tracking event2120 creates a gitlab tracking event create_tag2121 with already existing tag2122 reuses existing tag2123 returns a valid response2124 behaves like returning response status2125 returns no_content2126 with invalid package name2127 package_name: "unknown", status: :not_found2128 behaves like returning response status2129 returns not_found2130 package_name: "", status: :not_found2131 behaves like returning response status2132 returns not_found2133 package_name: "%20", status: :bad_request2134 behaves like returning response status2135 returns bad_request2136 with invalid tag name2137 tag_name: "", status: :not_found2138 behaves like returning response status2139 returns not_found2140 tag_name: "%20", status: :bad_request2141 behaves like returning response status2142 returns bad_request2143 with invalid version2144 version: " ", status: :bad_request2145 behaves like returning response status2146 returns bad_request2147 version: "", status: :bad_request2148 behaves like returning response status2149 returns bad_request2150 version: nil, status: :bad_request2151 behaves like returning response status2152 returns bad_request2153 auth: :oauth, package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :forbidden2154 behaves like reject create package tag request2155 behaves like returning response status2156 returns not_found2157 auth: :oauth, package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: :developer, expected_result: :accept, expected_status: :ok2158 behaves like reject create package tag request2159 behaves like returning response status2160 returns not_found2161 auth: :oauth, package_name_type: :unscoped, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :forbidden2162 behaves like reject create package tag request2163 behaves like returning response status2164 returns not_found2165 auth: :oauth, package_name_type: :unscoped, visibility: :public, user_role: :developer, expected_result: :accept, expected_status: :ok2166 behaves like reject create package tag request2167 behaves like returning response status2168 returns not_found2169 auth: :oauth, package_name_type: :non_existing, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :forbidden2170 behaves like reject create package tag request2171 behaves like returning response status2172 returns not_found2173 auth: :oauth, package_name_type: :non_existing, visibility: :public, user_role: :developer, expected_result: :reject, expected_status: :not_found2174 behaves like reject create package tag request2175 behaves like returning response status2176 returns not_found2177 auth: :oauth, package_name_type: :scoped_naming_convention, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden2178 behaves like reject create package tag request2179 behaves like returning response status2180 returns forbidden2181 auth: :oauth, package_name_type: :scoped_naming_convention, visibility: :private, user_role: :developer, expected_result: :accept, expected_status: :ok2182 behaves like accept create package tag request2183 with valid package name2184 creates the package tag2185 returns a valid response2186 behaves like returning response status2187 returns no_content2188 behaves like track event2189 behaves like a package tracking event2190 creates a gitlab tracking event create_tag2191 with already existing tag2192 reuses existing tag2193 returns a valid response2194 behaves like returning response status2195 returns no_content2196 with invalid package name2197 package_name: "unknown", status: :not_found2198 behaves like returning response status2199 returns not_found2200 package_name: "", status: :not_found2201 behaves like returning response status2202 returns not_found2203 package_name: "%20", status: :bad_request2204 behaves like returning response status2205 returns bad_request2206 with invalid tag name2207 tag_name: "", status: :not_found2208 behaves like returning response status2209 returns not_found2210 tag_name: "%20", status: :bad_request2211 behaves like returning response status2212 returns bad_request2213 with invalid version2214 version: " ", status: :bad_request2215 behaves like returning response status2216 returns bad_request2217 version: "", status: :bad_request2218 behaves like returning response status2219 returns bad_request2220 version: nil, status: :bad_request2221 behaves like returning response status2222 returns bad_request2223 auth: :oauth, package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden2224 behaves like reject create package tag request2225 behaves like returning response status2226 returns not_found2227 auth: :oauth, package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: :developer, expected_result: :accept, expected_status: :ok2228 behaves like reject create package tag request2229 behaves like returning response status2230 returns not_found2231 auth: :oauth, package_name_type: :unscoped, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden2232 behaves like reject create package tag request2233 behaves like returning response status2234 returns not_found2235 auth: :oauth, package_name_type: :unscoped, visibility: :private, user_role: :developer, expected_result: :accept, expected_status: :ok2236 behaves like reject create package tag request2237 behaves like returning response status2238 returns not_found2239 auth: :oauth, package_name_type: :non_existing, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden2240 behaves like reject create package tag request2241 behaves like returning response status2242 returns not_found2243 auth: :oauth, package_name_type: :non_existing, visibility: :private, user_role: :developer, expected_result: :reject, expected_status: :not_found2244 behaves like reject create package tag request2245 behaves like returning response status2246 returns not_found2247 auth: :oauth, package_name_type: :scoped_naming_convention, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :forbidden2248 behaves like reject create package tag request2249 behaves like returning response status2250 returns forbidden2251 auth: :oauth, package_name_type: :scoped_naming_convention, visibility: :internal, user_role: :developer, expected_result: :accept, expected_status: :ok2252 behaves like accept create package tag request2253 with valid package name2254 creates the package tag2255 returns a valid response2256 behaves like returning response status2257 returns no_content2258 behaves like track event2259 behaves like a package tracking event2260 creates a gitlab tracking event create_tag2261 with already existing tag2262 reuses existing tag2263 returns a valid response2264 behaves like returning response status2265 returns no_content2266 with invalid package name2267 package_name: "unknown", status: :not_found2268 behaves like returning response status2269 returns not_found2270 package_name: "", status: :not_found2271 behaves like returning response status2272 returns not_found2273 package_name: "%20", status: :bad_request2274 behaves like returning response status2275 returns bad_request2276 with invalid tag name2277 tag_name: "", status: :not_found2278 behaves like returning response status2279 returns not_found2280 tag_name: "%20", status: :bad_request2281 behaves like returning response status2282 returns bad_request2283 with invalid version2284 version: " ", status: :bad_request2285 behaves like returning response status2286 returns bad_request2287 version: "", status: :bad_request2288 behaves like returning response status2289 returns bad_request2290 version: nil, status: :bad_request2291 behaves like returning response status2292 returns bad_request2293 auth: :oauth, package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :forbidden2294 behaves like reject create package tag request2295 behaves like returning response status2296 returns not_found2297 auth: :oauth, package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: :developer, expected_result: :accept, expected_status: :ok2298 behaves like reject create package tag request2299 behaves like returning response status2300 returns not_found2301 auth: :oauth, package_name_type: :unscoped, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :forbidden2302 behaves like reject create package tag request2303 behaves like returning response status2304 returns not_found2305 auth: :oauth, package_name_type: :unscoped, visibility: :internal, user_role: :developer, expected_result: :accept, expected_status: :ok2306 behaves like reject create package tag request2307 behaves like returning response status2308 returns not_found2309 auth: :oauth, package_name_type: :non_existing, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :forbidden2310 behaves like reject create package tag request2311 behaves like returning response status2312 returns not_found2313 auth: :oauth, package_name_type: :non_existing, visibility: :internal, user_role: :developer, expected_result: :reject, expected_status: :not_found2314 behaves like reject create package tag request2315 behaves like returning response status2316 returns not_found2317 auth: :personal_access_token, package_name_type: :scoped_naming_convention, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :forbidden2318 behaves like reject create package tag request2319 behaves like returning response status2320 returns forbidden2321 auth: :personal_access_token, package_name_type: :scoped_naming_convention, visibility: :public, user_role: :developer, expected_result: :accept, expected_status: :ok2322 behaves like accept create package tag request2323 with valid package name2324 creates the package tag2325 returns a valid response2326 behaves like returning response status2327 returns no_content2328 behaves like track event2329 behaves like a package tracking event2330 creates a gitlab tracking event create_tag2331 with already existing tag2332 reuses existing tag2333 returns a valid response2334 behaves like returning response status2335 returns no_content2336 with invalid package name2337 package_name: "unknown", status: :not_found2338 behaves like returning response status2339 returns not_found2340 package_name: "", status: :not_found2341 behaves like returning response status2342 returns not_found2343 package_name: "%20", status: :bad_request2344 behaves like returning response status2345 returns bad_request2346 with invalid tag name2347 tag_name: "", status: :not_found2348 behaves like returning response status2349 returns not_found2350 tag_name: "%20", status: :bad_request2351 behaves like returning response status2352 returns bad_request2353 with invalid version2354 version: " ", status: :bad_request2355 behaves like returning response status2356 returns bad_request2357 version: "", status: :bad_request2358 behaves like returning response status2359 returns bad_request2360 version: nil, status: :bad_request2361 behaves like returning response status2362 returns bad_request2363 auth: :personal_access_token, package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :forbidden2364 behaves like reject create package tag request2365 behaves like returning response status2366 returns not_found2367 auth: :personal_access_token, package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: :developer, expected_result: :accept, expected_status: :ok2368 behaves like reject create package tag request2369 behaves like returning response status2370 returns not_found2371 auth: :personal_access_token, package_name_type: :unscoped, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :forbidden2372 behaves like reject create package tag request2373 behaves like returning response status2374 returns not_found2375 auth: :personal_access_token, package_name_type: :unscoped, visibility: :public, user_role: :developer, expected_result: :accept, expected_status: :ok2376 behaves like reject create package tag request2377 behaves like returning response status2378 returns not_found2379 auth: :personal_access_token, package_name_type: :non_existing, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :forbidden2380 behaves like reject create package tag request2381 behaves like returning response status2382 returns not_found2383 auth: :personal_access_token, package_name_type: :non_existing, visibility: :public, user_role: :developer, expected_result: :reject, expected_status: :not_found2384 behaves like reject create package tag request2385 behaves like returning response status2386 returns not_found2387 auth: :personal_access_token, package_name_type: :scoped_naming_convention, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden2388 behaves like reject create package tag request2389 behaves like returning response status2390 returns forbidden2391 auth: :personal_access_token, package_name_type: :scoped_naming_convention, visibility: :private, user_role: :developer, expected_result: :accept, expected_status: :ok2392 behaves like accept create package tag request2393 with valid package name2394 creates the package tag2395 returns a valid response2396 behaves like returning response status2397 returns no_content2398 behaves like track event2399 behaves like a package tracking event2400 creates a gitlab tracking event create_tag2401 with already existing tag2402 reuses existing tag2403 returns a valid response2404 behaves like returning response status2405 returns no_content2406 with invalid package name2407 package_name: "unknown", status: :not_found2408 behaves like returning response status2409 returns not_found2410 package_name: "", status: :not_found2411 behaves like returning response status2412 returns not_found2413 package_name: "%20", status: :bad_request2414 behaves like returning response status2415 returns bad_request2416 with invalid tag name2417 tag_name: "", status: :not_found2418 behaves like returning response status2419 returns not_found2420 tag_name: "%20", status: :bad_request2421 behaves like returning response status2422 returns bad_request2423 with invalid version2424 version: " ", status: :bad_request2425 behaves like returning response status2426 returns bad_request2427 version: "", status: :bad_request2428 behaves like returning response status2429 returns bad_request2430 version: nil, status: :bad_request2431 behaves like returning response status2432 returns bad_request2433 auth: :personal_access_token, package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden2434 behaves like reject create package tag request2435 behaves like returning response status2436 returns not_found2437 auth: :personal_access_token, package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: :developer, expected_result: :accept, expected_status: :ok2438 behaves like reject create package tag request2439 behaves like returning response status2440 returns not_found2441 auth: :personal_access_token, package_name_type: :unscoped, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden2442 behaves like reject create package tag request2443 behaves like returning response status2444 returns not_found2445 auth: :personal_access_token, package_name_type: :unscoped, visibility: :private, user_role: :developer, expected_result: :accept, expected_status: :ok2446 behaves like reject create package tag request2447 behaves like returning response status2448 returns not_found2449 auth: :personal_access_token, package_name_type: :non_existing, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden2450 behaves like reject create package tag request2451 behaves like returning response status2452 returns not_found2453 auth: :personal_access_token, package_name_type: :non_existing, visibility: :private, user_role: :developer, expected_result: :reject, expected_status: :not_found2454 behaves like reject create package tag request2455 behaves like returning response status2456 returns not_found2457 auth: :personal_access_token, package_name_type: :scoped_naming_convention, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :forbidden2458 behaves like reject create package tag request2459 behaves like returning response status2460 returns forbidden2461 auth: :personal_access_token, package_name_type: :scoped_naming_convention, visibility: :internal, user_role: :developer, expected_result: :accept, expected_status: :ok2462 behaves like accept create package tag request2463 with valid package name2464 creates the package tag2465 returns a valid response2466 behaves like returning response status2467 returns no_content2468 behaves like track event2469 behaves like a package tracking event2470 creates a gitlab tracking event create_tag2471 with already existing tag2472 reuses existing tag2473 returns a valid response2474 behaves like returning response status2475 returns no_content2476 with invalid package name2477 package_name: "unknown", status: :not_found2478 behaves like returning response status2479 returns not_found2480 package_name: "", status: :not_found2481 behaves like returning response status2482 returns not_found2483 package_name: "%20", status: :bad_request2484 behaves like returning response status2485 returns bad_request2486 with invalid tag name2487 tag_name: "", status: :not_found2488 behaves like returning response status2489 returns not_found2490 tag_name: "%20", status: :bad_request2491 behaves like returning response status2492 returns bad_request2493 with invalid version2494 version: " ", status: :bad_request2495 behaves like returning response status2496 returns bad_request2497 version: "", status: :bad_request2498 behaves like returning response status2499 returns bad_request2500 version: nil, status: :bad_request2501 behaves like returning response status2502 returns bad_request2503 auth: :personal_access_token, package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :forbidden2504 behaves like reject create package tag request2505 behaves like returning response status2506 returns not_found2507 auth: :personal_access_token, package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: :developer, expected_result: :accept, expected_status: :ok2508 behaves like reject create package tag request2509 behaves like returning response status2510 returns not_found2511 auth: :personal_access_token, package_name_type: :unscoped, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :forbidden2512 behaves like reject create package tag request2513 behaves like returning response status2514 returns not_found2515 auth: :personal_access_token, package_name_type: :unscoped, visibility: :internal, user_role: :developer, expected_result: :accept, expected_status: :ok2516 behaves like reject create package tag request2517 behaves like returning response status2518 returns not_found2519 auth: :personal_access_token, package_name_type: :non_existing, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :forbidden2520 behaves like reject create package tag request2521 behaves like returning response status2522 returns not_found2523 auth: :personal_access_token, package_name_type: :non_existing, visibility: :internal, user_role: :developer, expected_result: :reject, expected_status: :not_found2524 behaves like reject create package tag request2525 behaves like returning response status2526 returns not_found2527 auth: :job_token, package_name_type: :scoped_naming_convention, visibility: :public, user_role: :developer, expected_result: :accept, expected_status: :ok2528 behaves like accept create package tag request2529 with valid package name2530 creates the package tag2531 returns a valid response2532 behaves like returning response status2533 returns no_content2534 behaves like track event2535 behaves like a package tracking event2536 creates a gitlab tracking event create_tag2537 with already existing tag2538 reuses existing tag2539 returns a valid response2540 behaves like returning response status2541 returns no_content2542 with invalid package name2543 package_name: "unknown", status: :not_found2544 behaves like returning response status2545 returns not_found2546 package_name: "", status: :not_found2547 behaves like returning response status2548 returns not_found2549 package_name: "%20", status: :bad_request2550 behaves like returning response status2551 returns bad_request2552 with invalid tag name2553 tag_name: "", status: :not_found2554 behaves like returning response status2555 returns not_found2556 tag_name: "%20", status: :bad_request2557 behaves like returning response status2558 returns bad_request2559 with invalid version2560 version: " ", status: :bad_request2561 behaves like returning response status2562 returns bad_request2563 version: "", status: :bad_request2564 behaves like returning response status2565 returns bad_request2566 version: nil, status: :bad_request2567 behaves like returning response status2568 returns bad_request2569 auth: :job_token, package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: :developer, expected_result: :accept, expected_status: :ok2570 behaves like reject create package tag request2571 behaves like returning response status2572 returns not_found2573 auth: :job_token, package_name_type: :unscoped, visibility: :public, user_role: :developer, expected_result: :accept, expected_status: :ok2574 behaves like reject create package tag request2575 behaves like returning response status2576 returns not_found2577 auth: :job_token, package_name_type: :non_existing, visibility: :public, user_role: :developer, expected_result: :reject, expected_status: :not_found2578 behaves like reject create package tag request2579 behaves like returning response status2580 returns not_found2581 auth: :job_token, package_name_type: :scoped_naming_convention, visibility: :private, user_role: :developer, expected_result: :accept, expected_status: :ok2582 behaves like accept create package tag request2583 with valid package name2584 creates the package tag2585 returns a valid response2586 behaves like returning response status2587 returns no_content2588 behaves like track event2589 behaves like a package tracking event2590 creates a gitlab tracking event create_tag2591 with already existing tag2592 reuses existing tag2593 returns a valid response2594 behaves like returning response status2595 returns no_content2596 with invalid package name2597 package_name: "unknown", status: :not_found2598 behaves like returning response status2599 returns not_found2600 package_name: "", status: :not_found2601 behaves like returning response status2602 returns not_found2603 package_name: "%20", status: :bad_request2604 behaves like returning response status2605 returns bad_request2606 with invalid tag name2607 tag_name: "", status: :not_found2608 behaves like returning response status2609 returns not_found2610 tag_name: "%20", status: :bad_request2611 behaves like returning response status2612 returns bad_request2613 with invalid version2614 version: " ", status: :bad_request2615 behaves like returning response status2616 returns bad_request2617 version: "", status: :bad_request2618 behaves like returning response status2619 returns bad_request2620 version: nil, status: :bad_request2621 behaves like returning response status2622 returns bad_request2623 auth: :job_token, package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: :developer, expected_result: :accept, expected_status: :ok2624 behaves like reject create package tag request2625 behaves like returning response status2626 returns not_found2627 auth: :job_token, package_name_type: :unscoped, visibility: :private, user_role: :developer, expected_result: :accept, expected_status: :ok2628 behaves like reject create package tag request2629 behaves like returning response status2630 returns not_found2631 auth: :job_token, package_name_type: :non_existing, visibility: :private, user_role: :developer, expected_result: :reject, expected_status: :not_found2632 behaves like reject create package tag request2633 behaves like returning response status2634 returns not_found2635 auth: :job_token, package_name_type: :scoped_naming_convention, visibility: :internal, user_role: :developer, expected_result: :accept, expected_status: :ok2636 behaves like accept create package tag request2637 with valid package name2638 creates the package tag2639 returns a valid response2640 behaves like returning response status2641 returns no_content2642 behaves like track event2643 behaves like a package tracking event2644 creates a gitlab tracking event create_tag2645 with already existing tag2646 reuses existing tag2647 returns a valid response2648 behaves like returning response status2649 returns no_content2650 with invalid package name2651 package_name: "unknown", status: :not_found2652 behaves like returning response status2653 returns not_found2654 package_name: "", status: :not_found2655 behaves like returning response status2656 returns not_found2657 package_name: "%20", status: :bad_request2658 behaves like returning response status2659 returns bad_request2660 with invalid tag name2661 tag_name: "", status: :not_found2662 behaves like returning response status2663 returns not_found2664 tag_name: "%20", status: :bad_request2665 behaves like returning response status2666 returns bad_request2667 with invalid version2668 version: " ", status: :bad_request2669 behaves like returning response status2670 returns bad_request2671 version: "", status: :bad_request2672 behaves like returning response status2673 returns bad_request2674 version: nil, status: :bad_request2675 behaves like returning response status2676 returns bad_request2677 auth: :job_token, package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: :developer, expected_result: :accept, expected_status: :ok2678 behaves like reject create package tag request2679 behaves like returning response status2680 returns not_found2681 auth: :job_token, package_name_type: :unscoped, visibility: :internal, user_role: :developer, expected_result: :accept, expected_status: :ok2682 behaves like reject create package tag request2683 behaves like returning response status2684 returns not_found2685 auth: :job_token, package_name_type: :non_existing, visibility: :internal, user_role: :developer, expected_result: :reject, expected_status: :not_found2686 behaves like reject create package tag request2687 behaves like returning response status2688 returns not_found2689 auth: :deploy_token, package_name_type: :scoped_naming_convention, visibility: :public, user_role: nil, expected_result: :accept, expected_status: :ok2690 behaves like accept create package tag request2691 with valid package name2692 creates the package tag2693 returns a valid response2694 behaves like returning response status2695 returns no_content2696 behaves like track event2697 behaves like a package tracking event2698 creates a gitlab tracking event create_tag2699 with already existing tag2700 reuses existing tag2701 returns a valid response2702 behaves like returning response status2703 returns no_content2704 with invalid package name2705 package_name: "unknown", status: :not_found2706 behaves like returning response status2707 returns not_found2708 package_name: "", status: :not_found2709 behaves like returning response status2710 returns not_found2711 package_name: "%20", status: :bad_request2712 behaves like returning response status2713 returns bad_request2714 with invalid tag name2715 tag_name: "", status: :not_found2716 behaves like returning response status2717 returns not_found2718 tag_name: "%20", status: :bad_request2719 behaves like returning response status2720 returns bad_request2721 with invalid version2722 version: " ", status: :bad_request2723 behaves like returning response status2724 returns bad_request2725 version: "", status: :bad_request2726 behaves like returning response status2727 returns bad_request2728 version: nil, status: :bad_request2729 behaves like returning response status2730 returns bad_request2731 auth: :deploy_token, package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: nil, expected_result: :accept, expected_status: :ok2732 behaves like reject create package tag request2733 behaves like returning response status2734 returns not_found2735 auth: :deploy_token, package_name_type: :unscoped, visibility: :public, user_role: nil, expected_result: :accept, expected_status: :ok2736 behaves like reject create package tag request2737 behaves like returning response status2738 returns not_found2739 auth: :deploy_token, package_name_type: :non_existing, visibility: :public, user_role: nil, expected_result: :reject, expected_status: :not_found2740 behaves like reject create package tag request2741 behaves like returning response status2742 returns not_found2743 auth: :deploy_token, package_name_type: :scoped_naming_convention, visibility: :private, user_role: nil, expected_result: :accept, expected_status: :ok2744 behaves like accept create package tag request2745 with valid package name2746 creates the package tag2747 returns a valid response2748 behaves like returning response status2749 returns no_content2750 behaves like track event2751 behaves like a package tracking event2752 creates a gitlab tracking event create_tag2753 with already existing tag2754 reuses existing tag2755 returns a valid response2756 behaves like returning response status2757 returns no_content2758 with invalid package name2759 package_name: "unknown", status: :not_found2760 behaves like returning response status2761 returns not_found2762 package_name: "", status: :not_found2763 behaves like returning response status2764 returns not_found2765 package_name: "%20", status: :bad_request2766 behaves like returning response status2767 returns bad_request2768 with invalid tag name2769 tag_name: "", status: :not_found2770 behaves like returning response status2771 returns not_found2772 tag_name: "%20", status: :bad_request2773 behaves like returning response status2774 returns bad_request2775 with invalid version2776 version: " ", status: :bad_request2777 behaves like returning response status2778 returns bad_request2779 version: "", status: :bad_request2780 behaves like returning response status2781 returns bad_request2782 version: nil, status: :bad_request2783 behaves like returning response status2784 returns bad_request2785 auth: :deploy_token, package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: nil, expected_result: :accept, expected_status: :ok2786 behaves like reject create package tag request2787 behaves like returning response status2788 returns not_found2789 auth: :deploy_token, package_name_type: :unscoped, visibility: :private, user_role: nil, expected_result: :accept, expected_status: :ok2790 behaves like reject create package tag request2791 behaves like returning response status2792 returns not_found2793 auth: :deploy_token, package_name_type: :non_existing, visibility: :private, user_role: nil, expected_result: :reject, expected_status: :not_found2794 behaves like reject create package tag request2795 behaves like returning response status2796 returns not_found2797 auth: :deploy_token, package_name_type: :scoped_naming_convention, visibility: :internal, user_role: nil, expected_result: :accept, expected_status: :ok2798 behaves like accept create package tag request2799 with valid package name2800 creates the package tag2801 returns a valid response2802 behaves like returning response status2803 returns no_content2804 behaves like track event2805 behaves like a package tracking event2806 creates a gitlab tracking event create_tag2807 with already existing tag2808 reuses existing tag2809 returns a valid response2810 behaves like returning response status2811 returns no_content2812 with invalid package name2813 package_name: "unknown", status: :not_found2814 behaves like returning response status2815 returns not_found2816 package_name: "", status: :not_found2817 behaves like returning response status2818 returns not_found2819 package_name: "%20", status: :bad_request2820 behaves like returning response status2821 returns bad_request2822 with invalid tag name2823 tag_name: "", status: :not_found2824 behaves like returning response status2825 returns not_found2826 tag_name: "%20", status: :bad_request2827 behaves like returning response status2828 returns bad_request2829 with invalid version2830 version: " ", status: :bad_request2831 behaves like returning response status2832 returns bad_request2833 version: "", status: :bad_request2834 behaves like returning response status2835 returns bad_request2836 version: nil, status: :bad_request2837 behaves like returning response status2838 returns bad_request2839 auth: :deploy_token, package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: nil, expected_result: :accept, expected_status: :ok2840 behaves like reject create package tag request2841 behaves like returning response status2842 returns not_found2843 auth: :deploy_token, package_name_type: :unscoped, visibility: :internal, user_role: nil, expected_result: :accept, expected_status: :ok2844 behaves like reject create package tag request2845 behaves like returning response status2846 returns not_found2847 auth: :deploy_token, package_name_type: :non_existing, visibility: :internal, user_role: nil, expected_result: :reject, expected_status: :not_found2848 behaves like reject create package tag request2849 behaves like returning response status2850 returns not_found2851 DELETE /api/v4/packages/npm/-/package/*package_name/dist-tags/:tag2852 behaves like handling delete dist tag requests2853 with a group namespace2854 behaves like handling all conditions2855 behaves like handling different package names, visibilities and user roles for tags create or delete2856 auth: nil, package_name_type: :scoped_naming_convention, visibility: :public, user_role: nil, expected_result: :reject, expected_status: :unauthorized2857 behaves like reject delete package tag request2858 behaves like returning response status2859 returns unauthorized2860 auth: nil, package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: nil, expected_result: :reject, expected_status: :unauthorized2861 behaves like reject delete package tag request2862 behaves like returning response status2863 returns unauthorized2864 auth: nil, package_name_type: :unscoped, visibility: :public, user_role: nil, expected_result: :reject, expected_status: :unauthorized2865 behaves like reject delete package tag request2866 behaves like returning response status2867 returns unauthorized2868 auth: nil, package_name_type: :non_existing, visibility: :public, user_role: nil, expected_result: :reject, expected_status: :unauthorized2869 behaves like reject delete package tag request2870 behaves like returning response status2871 returns unauthorized2872 auth: nil, package_name_type: :scoped_naming_convention, visibility: :private, user_role: nil, expected_result: :reject, expected_status: :unauthorized2873 behaves like reject delete package tag request2874 behaves like returning response status2875 returns unauthorized2876 auth: nil, package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: nil, expected_result: :reject, expected_status: :unauthorized2877 behaves like reject delete package tag request2878 behaves like returning response status2879 returns unauthorized2880 auth: nil, package_name_type: :unscoped, visibility: :private, user_role: nil, expected_result: :reject, expected_status: :unauthorized2881 behaves like reject delete package tag request2882 behaves like returning response status2883 returns unauthorized2884 auth: nil, package_name_type: :non_existing, visibility: :private, user_role: nil, expected_result: :reject, expected_status: :unauthorized2885 behaves like reject delete package tag request2886 behaves like returning response status2887 returns unauthorized2888 auth: nil, package_name_type: :scoped_naming_convention, visibility: :internal, user_role: nil, expected_result: :reject, expected_status: :unauthorized2889 behaves like reject delete package tag request2890 behaves like returning response status2891 returns unauthorized2892 auth: nil, package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: nil, expected_result: :reject, expected_status: :unauthorized2893 behaves like reject delete package tag request2894 behaves like returning response status2895 returns unauthorized2896 auth: nil, package_name_type: :unscoped, visibility: :internal, user_role: nil, expected_result: :reject, expected_status: :unauthorized2897 behaves like reject delete package tag request2898 behaves like returning response status2899 returns unauthorized2900 auth: nil, package_name_type: :non_existing, visibility: :internal, user_role: nil, expected_result: :reject, expected_status: :unauthorized2901 behaves like reject delete package tag request2902 behaves like returning response status2903 returns unauthorized2904 auth: :oauth, package_name_type: :scoped_naming_convention, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :forbidden2905 behaves like reject delete package tag request2906 behaves like returning response status2907 returns forbidden2908 auth: :oauth, package_name_type: :scoped_naming_convention, visibility: :public, user_role: :maintainer, expected_result: :accept, expected_status: :ok2909 behaves like accept delete package tag request2910 with valid package name2911 returns a valid response2912 destroy the package tag2913 behaves like returning response status2914 returns no_content2915 behaves like track event2916 behaves like a package tracking event2917 creates a gitlab tracking event delete_tag2918 with tag from other package2919 behaves like returning response status2920 returns not_found2921 with invalid package name2922 package_name: "unknown", status: :not_found2923 behaves like returning response status2924 returns not_found2925 package_name: "", status: :not_found2926 behaves like returning response status2927 returns not_found2928 package_name: "%20", status: :bad_request2929 behaves like returning response status2930 returns bad_request2931 with invalid tag name2932 tag_name: "unknown", status: :not_found2933 behaves like returning response status2934 returns not_found2935 tag_name: "", status: :not_found2936 behaves like returning response status2937 returns not_found2938 tag_name: "%20", status: :bad_request2939 behaves like returning response status2940 returns bad_request2941 auth: :oauth, package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :forbidden2942 behaves like reject delete package tag request2943 behaves like returning response status2944 returns not_found2945 auth: :oauth, package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: :maintainer, expected_result: :accept, expected_status: :ok2946 behaves like reject delete package tag request2947 behaves like returning response status2948 returns not_found2949 auth: :oauth, package_name_type: :unscoped, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :forbidden2950 behaves like reject delete package tag request2951 behaves like returning response status2952 returns not_found2953 auth: :oauth, package_name_type: :unscoped, visibility: :public, user_role: :maintainer, expected_result: :accept, expected_status: :ok2954 behaves like reject delete package tag request2955 behaves like returning response status2956 returns not_found2957 auth: :oauth, package_name_type: :non_existing, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :forbidden2958 behaves like reject delete package tag request2959 behaves like returning response status2960 returns not_found2961 auth: :oauth, package_name_type: :non_existing, visibility: :public, user_role: :maintainer, expected_result: :reject, expected_status: :not_found2962 behaves like reject delete package tag request2963 behaves like returning response status2964 returns not_found2965 auth: :oauth, package_name_type: :scoped_naming_convention, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden2966 behaves like reject delete package tag request2967 behaves like returning response status2968 returns forbidden2969 auth: :oauth, package_name_type: :scoped_naming_convention, visibility: :private, user_role: :maintainer, expected_result: :accept, expected_status: :ok2970 behaves like accept delete package tag request2971 with valid package name2972 returns a valid response2973 destroy the package tag2974 behaves like returning response status2975 returns no_content2976 behaves like track event2977 behaves like a package tracking event2978 creates a gitlab tracking event delete_tag2979 with tag from other package2980 behaves like returning response status2981 returns not_found2982 with invalid package name2983 package_name: "unknown", status: :not_found2984 behaves like returning response status2985 returns not_found2986 package_name: "", status: :not_found2987 behaves like returning response status2988 returns not_found2989 package_name: "%20", status: :bad_request2990 behaves like returning response status2991 returns bad_request2992 with invalid tag name2993 tag_name: "unknown", status: :not_found2994 behaves like returning response status2995 returns not_found2996 tag_name: "", status: :not_found2997 behaves like returning response status2998 returns not_found2999 tag_name: "%20", status: :bad_request3000 behaves like returning response status3001 returns bad_request3002 auth: :oauth, package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden3003 behaves like reject delete package tag request3004 behaves like returning response status3005 returns not_found3006 auth: :oauth, package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: :maintainer, expected_result: :accept, expected_status: :ok3007 behaves like reject delete package tag request3008 behaves like returning response status3009 returns not_found3010 auth: :oauth, package_name_type: :unscoped, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden3011 behaves like reject delete package tag request3012 behaves like returning response status3013 returns not_found3014 auth: :oauth, package_name_type: :unscoped, visibility: :private, user_role: :maintainer, expected_result: :accept, expected_status: :ok3015 behaves like reject delete package tag request3016 behaves like returning response status3017 returns not_found3018 auth: :oauth, package_name_type: :non_existing, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden3019 behaves like reject delete package tag request3020 behaves like returning response status3021 returns not_found3022 auth: :oauth, package_name_type: :non_existing, visibility: :private, user_role: :maintainer, expected_result: :reject, expected_status: :not_found3023 behaves like reject delete package tag request3024 behaves like returning response status3025 returns not_found3026 auth: :oauth, package_name_type: :scoped_naming_convention, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :forbidden3027 behaves like reject delete package tag request3028 behaves like returning response status3029 returns forbidden3030 auth: :oauth, package_name_type: :scoped_naming_convention, visibility: :internal, user_role: :maintainer, expected_result: :accept, expected_status: :ok3031 behaves like accept delete package tag request3032 with valid package name3033 returns a valid response3034 destroy the package tag3035 behaves like returning response status3036 returns no_content3037 behaves like track event3038 behaves like a package tracking event3039 creates a gitlab tracking event delete_tag3040 with tag from other package3041 behaves like returning response status3042 returns not_found3043 with invalid package name3044 package_name: "unknown", status: :not_found3045 behaves like returning response status3046 returns not_found3047 package_name: "", status: :not_found3048 behaves like returning response status3049 returns not_found3050 package_name: "%20", status: :bad_request3051 behaves like returning response status3052 returns bad_request3053 with invalid tag name3054 tag_name: "unknown", status: :not_found3055 behaves like returning response status3056 returns not_found3057 tag_name: "", status: :not_found3058 behaves like returning response status3059 returns not_found3060 tag_name: "%20", status: :bad_request3061 behaves like returning response status3062 returns bad_request3063 auth: :oauth, package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :forbidden3064 behaves like reject delete package tag request3065 behaves like returning response status3066 returns not_found3067 auth: :oauth, package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: :maintainer, expected_result: :accept, expected_status: :ok3068 behaves like reject delete package tag request3069 behaves like returning response status3070 returns not_found3071 auth: :oauth, package_name_type: :unscoped, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :forbidden3072 behaves like reject delete package tag request3073 behaves like returning response status3074 returns not_found3075 auth: :oauth, package_name_type: :unscoped, visibility: :internal, user_role: :maintainer, expected_result: :accept, expected_status: :ok3076 behaves like reject delete package tag request3077 behaves like returning response status3078 returns not_found3079 auth: :oauth, package_name_type: :non_existing, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :forbidden3080 behaves like reject delete package tag request3081 behaves like returning response status3082 returns not_found3083 auth: :oauth, package_name_type: :non_existing, visibility: :internal, user_role: :maintainer, expected_result: :reject, expected_status: :not_found3084 behaves like reject delete package tag request3085 behaves like returning response status3086 returns not_found3087 auth: :personal_access_token, package_name_type: :scoped_naming_convention, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :forbidden3088 behaves like reject delete package tag request3089 behaves like returning response status3090 returns forbidden3091 auth: :personal_access_token, package_name_type: :scoped_naming_convention, visibility: :public, user_role: :maintainer, expected_result: :accept, expected_status: :ok3092 behaves like accept delete package tag request3093 with valid package name3094 returns a valid response3095 destroy the package tag3096 behaves like returning response status3097 returns no_content3098 behaves like track event3099 behaves like a package tracking event3100 creates a gitlab tracking event delete_tag3101 with tag from other package3102 behaves like returning response status3103 returns not_found3104 with invalid package name3105 package_name: "unknown", status: :not_found3106 behaves like returning response status3107 returns not_found3108 package_name: "", status: :not_found3109 behaves like returning response status3110 returns not_found3111 package_name: "%20", status: :bad_request3112 behaves like returning response status3113 returns bad_request3114 with invalid tag name3115 tag_name: "unknown", status: :not_found3116 behaves like returning response status3117 returns not_found3118 tag_name: "", status: :not_found3119 behaves like returning response status3120 returns not_found3121 tag_name: "%20", status: :bad_request3122 behaves like returning response status3123 returns bad_request3124 auth: :personal_access_token, package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :forbidden3125 behaves like reject delete package tag request3126 behaves like returning response status3127 returns not_found3128 auth: :personal_access_token, package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: :maintainer, expected_result: :accept, expected_status: :ok3129 behaves like reject delete package tag request3130 behaves like returning response status3131 returns not_found3132 auth: :personal_access_token, package_name_type: :unscoped, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :forbidden3133 behaves like reject delete package tag request3134 behaves like returning response status3135 returns not_found3136 auth: :personal_access_token, package_name_type: :unscoped, visibility: :public, user_role: :maintainer, expected_result: :accept, expected_status: :ok3137 behaves like reject delete package tag request3138 behaves like returning response status3139 returns not_found3140 auth: :personal_access_token, package_name_type: :non_existing, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :forbidden3141 behaves like reject delete package tag request3142 behaves like returning response status3143 returns not_found3144 auth: :personal_access_token, package_name_type: :non_existing, visibility: :public, user_role: :maintainer, expected_result: :reject, expected_status: :not_found3145 behaves like reject delete package tag request3146 behaves like returning response status3147 returns not_found3148 auth: :personal_access_token, package_name_type: :scoped_naming_convention, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden3149 behaves like reject delete package tag request3150 behaves like returning response status3151 returns forbidden3152 auth: :personal_access_token, package_name_type: :scoped_naming_convention, visibility: :private, user_role: :maintainer, expected_result: :accept, expected_status: :ok3153 behaves like accept delete package tag request3154 with valid package name3155 returns a valid response3156 destroy the package tag3157 behaves like returning response status3158 returns no_content3159 behaves like track event3160 behaves like a package tracking event3161 creates a gitlab tracking event delete_tag3162 with tag from other package3163 behaves like returning response status3164 returns not_found3165 with invalid package name3166 package_name: "unknown", status: :not_found3167 behaves like returning response status3168 returns not_found3169 package_name: "", status: :not_found3170 behaves like returning response status3171 returns not_found3172 package_name: "%20", status: :bad_request3173 behaves like returning response status3174 returns bad_request3175 with invalid tag name3176 tag_name: "unknown", status: :not_found3177 behaves like returning response status3178 returns not_found3179 tag_name: "", status: :not_found3180 behaves like returning response status3181 returns not_found3182 tag_name: "%20", status: :bad_request3183 behaves like returning response status3184 returns bad_request3185 auth: :personal_access_token, package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden3186 behaves like reject delete package tag request3187 behaves like returning response status3188 returns not_found3189 auth: :personal_access_token, package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: :maintainer, expected_result: :accept, expected_status: :ok3190 behaves like reject delete package tag request3191 behaves like returning response status3192 returns not_found3193 auth: :personal_access_token, package_name_type: :unscoped, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden3194 behaves like reject delete package tag request3195 behaves like returning response status3196 returns not_found3197 auth: :personal_access_token, package_name_type: :unscoped, visibility: :private, user_role: :maintainer, expected_result: :accept, expected_status: :ok3198 behaves like reject delete package tag request3199 behaves like returning response status3200 returns not_found3201 auth: :personal_access_token, package_name_type: :non_existing, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden3202 behaves like reject delete package tag request3203 behaves like returning response status3204 returns not_found3205 auth: :personal_access_token, package_name_type: :non_existing, visibility: :private, user_role: :maintainer, expected_result: :reject, expected_status: :not_found3206 behaves like reject delete package tag request3207 behaves like returning response status3208 returns not_found3209 auth: :personal_access_token, package_name_type: :scoped_naming_convention, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :forbidden3210 behaves like reject delete package tag request3211 behaves like returning response status3212 returns forbidden3213 auth: :personal_access_token, package_name_type: :scoped_naming_convention, visibility: :internal, user_role: :maintainer, expected_result: :accept, expected_status: :ok3214 behaves like accept delete package tag request3215 with valid package name3216 returns a valid response3217 destroy the package tag3218 behaves like returning response status3219 returns no_content3220 behaves like track event3221 behaves like a package tracking event3222 creates a gitlab tracking event delete_tag3223 with tag from other package3224 behaves like returning response status3225 returns not_found3226 with invalid package name3227 package_name: "unknown", status: :not_found3228 behaves like returning response status3229 returns not_found3230 package_name: "", status: :not_found3231 behaves like returning response status3232 returns not_found3233 package_name: "%20", status: :bad_request3234 behaves like returning response status3235 returns bad_request3236 with invalid tag name3237 tag_name: "unknown", status: :not_found3238 behaves like returning response status3239 returns not_found3240 tag_name: "", status: :not_found3241 behaves like returning response status3242 returns not_found3243 tag_name: "%20", status: :bad_request3244 behaves like returning response status3245 returns bad_request3246 auth: :personal_access_token, package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :forbidden3247 behaves like reject delete package tag request3248 behaves like returning response status3249 returns not_found3250 auth: :personal_access_token, package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: :maintainer, expected_result: :accept, expected_status: :ok3251 behaves like reject delete package tag request3252 behaves like returning response status3253 returns not_found3254 auth: :personal_access_token, package_name_type: :unscoped, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :forbidden3255 behaves like reject delete package tag request3256 behaves like returning response status3257 returns not_found3258 auth: :personal_access_token, package_name_type: :unscoped, visibility: :internal, user_role: :maintainer, expected_result: :accept, expected_status: :ok3259 behaves like reject delete package tag request3260 behaves like returning response status3261 returns not_found3262 auth: :personal_access_token, package_name_type: :non_existing, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :forbidden3263 behaves like reject delete package tag request3264 behaves like returning response status3265 returns not_found3266 auth: :personal_access_token, package_name_type: :non_existing, visibility: :internal, user_role: :maintainer, expected_result: :reject, expected_status: :not_found3267 behaves like reject delete package tag request3268 behaves like returning response status3269 returns not_found3270 auth: :job_token, package_name_type: :scoped_naming_convention, visibility: :public, user_role: :maintainer, expected_result: :accept, expected_status: :ok3271 behaves like accept delete package tag request3272 with valid package name3273 returns a valid response3274 destroy the package tag3275 behaves like returning response status3276 returns no_content3277 behaves like track event3278 behaves like a package tracking event3279 creates a gitlab tracking event delete_tag3280 with tag from other package3281 behaves like returning response status3282 returns not_found3283 with invalid package name3284 package_name: "unknown", status: :not_found3285 behaves like returning response status3286 returns not_found3287 package_name: "", status: :not_found3288 behaves like returning response status3289 returns not_found3290 package_name: "%20", status: :bad_request3291 behaves like returning response status3292 returns bad_request3293 with invalid tag name3294 tag_name: "unknown", status: :not_found3295 behaves like returning response status3296 returns not_found3297 tag_name: "", status: :not_found3298 behaves like returning response status3299 returns not_found3300 tag_name: "%20", status: :bad_request3301 behaves like returning response status3302 returns bad_request3303 auth: :job_token, package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: :maintainer, expected_result: :accept, expected_status: :ok3304 behaves like reject delete package tag request3305 behaves like returning response status3306 returns not_found3307 auth: :job_token, package_name_type: :unscoped, visibility: :public, user_role: :maintainer, expected_result: :accept, expected_status: :ok3308 behaves like reject delete package tag request3309 behaves like returning response status3310 returns not_found3311 auth: :job_token, package_name_type: :non_existing, visibility: :public, user_role: :maintainer, expected_result: :reject, expected_status: :not_found3312 behaves like reject delete package tag request3313 behaves like returning response status3314 returns not_found3315 auth: :job_token, package_name_type: :scoped_naming_convention, visibility: :private, user_role: :maintainer, expected_result: :accept, expected_status: :ok3316 behaves like accept delete package tag request3317 with valid package name3318 returns a valid response3319 destroy the package tag3320 behaves like returning response status3321 returns no_content3322 behaves like track event3323 behaves like a package tracking event3324 creates a gitlab tracking event delete_tag3325 with tag from other package3326 behaves like returning response status3327 returns not_found3328 with invalid package name3329 package_name: "unknown", status: :not_found3330 behaves like returning response status3331 returns not_found3332 package_name: "", status: :not_found3333 behaves like returning response status3334 returns not_found3335 package_name: "%20", status: :bad_request3336 behaves like returning response status3337 returns bad_request3338 with invalid tag name3339 tag_name: "unknown", status: :not_found3340 behaves like returning response status3341 returns not_found3342 tag_name: "", status: :not_found3343 behaves like returning response status3344 returns not_found3345 tag_name: "%20", status: :bad_request3346 behaves like returning response status3347 returns bad_request3348 auth: :job_token, package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: :maintainer, expected_result: :accept, expected_status: :ok3349 behaves like reject delete package tag request3350 behaves like returning response status3351 returns not_found3352 auth: :job_token, package_name_type: :unscoped, visibility: :private, user_role: :maintainer, expected_result: :accept, expected_status: :ok3353 behaves like reject delete package tag request3354 behaves like returning response status3355 returns not_found3356 auth: :job_token, package_name_type: :non_existing, visibility: :private, user_role: :maintainer, expected_result: :reject, expected_status: :not_found3357 behaves like reject delete package tag request3358 behaves like returning response status3359 returns not_found3360 auth: :job_token, package_name_type: :scoped_naming_convention, visibility: :internal, user_role: :maintainer, expected_result: :accept, expected_status: :ok3361 behaves like accept delete package tag request3362 with valid package name3363 returns a valid response3364 destroy the package tag3365 behaves like returning response status3366 returns no_content3367 behaves like track event3368 behaves like a package tracking event3369 creates a gitlab tracking event delete_tag3370 with tag from other package3371 behaves like returning response status3372 returns not_found3373 with invalid package name3374 package_name: "unknown", status: :not_found3375 behaves like returning response status3376 returns not_found3377 package_name: "", status: :not_found3378 behaves like returning response status3379 returns not_found3380 package_name: "%20", status: :bad_request3381 behaves like returning response status3382 returns bad_request3383 with invalid tag name3384 tag_name: "unknown", status: :not_found3385 behaves like returning response status3386 returns not_found3387 tag_name: "", status: :not_found3388 behaves like returning response status3389 returns not_found3390 tag_name: "%20", status: :bad_request3391 behaves like returning response status3392 returns bad_request3393 auth: :job_token, package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: :maintainer, expected_result: :accept, expected_status: :ok3394 behaves like reject delete package tag request3395 behaves like returning response status3396 returns not_found3397 auth: :job_token, package_name_type: :unscoped, visibility: :internal, user_role: :maintainer, expected_result: :accept, expected_status: :ok3398 behaves like reject delete package tag request3399 behaves like returning response status3400 returns not_found3401 auth: :job_token, package_name_type: :non_existing, visibility: :internal, user_role: :maintainer, expected_result: :reject, expected_status: :not_found3402 behaves like reject delete package tag request3403 behaves like returning response status3404 returns not_found3405 auth: :deploy_token, package_name_type: :scoped_naming_convention, visibility: :public, user_role: nil, expected_result: :accept, expected_status: :ok3406 behaves like accept delete package tag request3407 with valid package name3408 returns a valid response3409 destroy the package tag3410 behaves like returning response status3411 returns no_content3412 behaves like track event3413 behaves like a package tracking event3414 creates a gitlab tracking event delete_tag3415 with tag from other package3416 behaves like returning response status3417 returns not_found3418 with invalid package name3419 package_name: "unknown", status: :not_found3420 behaves like returning response status3421 returns not_found3422 package_name: "", status: :not_found3423 behaves like returning response status3424 returns not_found3425 package_name: "%20", status: :bad_request3426 behaves like returning response status3427 returns bad_request3428 with invalid tag name3429 tag_name: "unknown", status: :not_found3430 behaves like returning response status3431 returns not_found3432 tag_name: "", status: :not_found3433 behaves like returning response status3434 returns not_found3435 tag_name: "%20", status: :bad_request3436 behaves like returning response status3437 returns bad_request3438 auth: :deploy_token, package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: nil, expected_result: :accept, expected_status: :ok3439 behaves like reject delete package tag request3440 behaves like returning response status3441 returns not_found3442 auth: :deploy_token, package_name_type: :unscoped, visibility: :public, user_role: nil, expected_result: :accept, expected_status: :ok3443 behaves like reject delete package tag request3444 behaves like returning response status3445 returns not_found3446 auth: :deploy_token, package_name_type: :non_existing, visibility: :public, user_role: nil, expected_result: :reject, expected_status: :not_found3447 behaves like reject delete package tag request3448 behaves like returning response status3449 returns not_found3450 auth: :deploy_token, package_name_type: :scoped_naming_convention, visibility: :private, user_role: nil, expected_result: :accept, expected_status: :ok3451 behaves like accept delete package tag request3452 with valid package name3453 returns a valid response3454 destroy the package tag3455 behaves like returning response status3456 returns no_content3457 behaves like track event3458 behaves like a package tracking event3459 creates a gitlab tracking event delete_tag3460 with tag from other package3461 behaves like returning response status3462 returns not_found3463 with invalid package name3464 package_name: "unknown", status: :not_found3465 behaves like returning response status3466 returns not_found3467 package_name: "", status: :not_found3468 behaves like returning response status3469 returns not_found3470 package_name: "%20", status: :bad_request3471 behaves like returning response status3472 returns bad_request3473 with invalid tag name3474 tag_name: "unknown", status: :not_found3475 behaves like returning response status3476 returns not_found3477 tag_name: "", status: :not_found3478 behaves like returning response status3479 returns not_found3480 tag_name: "%20", status: :bad_request3481 behaves like returning response status3482 returns bad_request3483 auth: :deploy_token, package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: nil, expected_result: :accept, expected_status: :ok3484 behaves like reject delete package tag request3485 behaves like returning response status3486 returns not_found3487 auth: :deploy_token, package_name_type: :unscoped, visibility: :private, user_role: nil, expected_result: :accept, expected_status: :ok3488 behaves like reject delete package tag request3489 behaves like returning response status3490 returns not_found3491 auth: :deploy_token, package_name_type: :non_existing, visibility: :private, user_role: nil, expected_result: :reject, expected_status: :not_found3492 behaves like reject delete package tag request3493 behaves like returning response status3494 returns not_found3495 auth: :deploy_token, package_name_type: :scoped_naming_convention, visibility: :internal, user_role: nil, expected_result: :accept, expected_status: :ok3496 behaves like accept delete package tag request3497 with valid package name3498 returns a valid response3499 destroy the package tag3500 behaves like returning response status3501 returns no_content3502 behaves like track event3503 behaves like a package tracking event3504 creates a gitlab tracking event delete_tag3505 with tag from other package3506 behaves like returning response status3507 returns not_found3508 with invalid package name3509 package_name: "unknown", status: :not_found3510 behaves like returning response status3511 returns not_found3512 package_name: "", status: :not_found3513 behaves like returning response status3514 returns not_found3515 package_name: "%20", status: :bad_request3516 behaves like returning response status3517 returns bad_request3518 with invalid tag name3519 tag_name: "unknown", status: :not_found3520 behaves like returning response status3521 returns not_found3522 tag_name: "", status: :not_found3523 behaves like returning response status3524 returns not_found3525 tag_name: "%20", status: :bad_request3526 behaves like returning response status3527 returns bad_request3528 auth: :deploy_token, package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: nil, expected_result: :accept, expected_status: :ok3529 behaves like reject delete package tag request3530 behaves like returning response status3531 returns not_found3532 auth: :deploy_token, package_name_type: :unscoped, visibility: :internal, user_role: nil, expected_result: :accept, expected_status: :ok3533 behaves like reject delete package tag request3534 behaves like returning response status3535 returns not_found3536 auth: :deploy_token, package_name_type: :non_existing, visibility: :internal, user_role: nil, expected_result: :reject, expected_status: :not_found3537 behaves like reject delete package tag request3538 behaves like returning response status3539 returns not_found3540 with a user namespace3541 behaves like handling all conditions3542 behaves like handling different package names, visibilities and user roles for tags create or delete3543 auth: nil, package_name_type: :scoped_naming_convention, visibility: :public, user_role: nil, expected_result: :reject, expected_status: :unauthorized3544 behaves like reject delete package tag request3545 behaves like returning response status3546 returns unauthorized3547 auth: nil, package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: nil, expected_result: :reject, expected_status: :unauthorized3548 behaves like reject delete package tag request3549 behaves like returning response status3550 returns unauthorized3551 auth: nil, package_name_type: :unscoped, visibility: :public, user_role: nil, expected_result: :reject, expected_status: :unauthorized3552 behaves like reject delete package tag request3553 behaves like returning response status3554 returns unauthorized3555 auth: nil, package_name_type: :non_existing, visibility: :public, user_role: nil, expected_result: :reject, expected_status: :unauthorized3556 behaves like reject delete package tag request3557 behaves like returning response status3558 returns unauthorized3559 auth: nil, package_name_type: :scoped_naming_convention, visibility: :private, user_role: nil, expected_result: :reject, expected_status: :unauthorized3560 behaves like reject delete package tag request3561 behaves like returning response status3562 returns unauthorized3563 auth: nil, package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: nil, expected_result: :reject, expected_status: :unauthorized3564 behaves like reject delete package tag request3565 behaves like returning response status3566 returns unauthorized3567 auth: nil, package_name_type: :unscoped, visibility: :private, user_role: nil, expected_result: :reject, expected_status: :unauthorized3568 behaves like reject delete package tag request3569 behaves like returning response status3570 returns unauthorized3571 auth: nil, package_name_type: :non_existing, visibility: :private, user_role: nil, expected_result: :reject, expected_status: :unauthorized3572 behaves like reject delete package tag request3573 behaves like returning response status3574 returns unauthorized3575 auth: nil, package_name_type: :scoped_naming_convention, visibility: :internal, user_role: nil, expected_result: :reject, expected_status: :unauthorized3576 behaves like reject delete package tag request3577 behaves like returning response status3578 returns unauthorized3579 auth: nil, package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: nil, expected_result: :reject, expected_status: :unauthorized3580 behaves like reject delete package tag request3581 behaves like returning response status3582 returns unauthorized3583 auth: nil, package_name_type: :unscoped, visibility: :internal, user_role: nil, expected_result: :reject, expected_status: :unauthorized3584 behaves like reject delete package tag request3585 behaves like returning response status3586 returns unauthorized3587 auth: nil, package_name_type: :non_existing, visibility: :internal, user_role: nil, expected_result: :reject, expected_status: :unauthorized3588 behaves like reject delete package tag request3589 behaves like returning response status3590 returns unauthorized3591 auth: :oauth, package_name_type: :scoped_naming_convention, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :forbidden3592 behaves like reject delete package tag request3593 behaves like returning response status3594 returns forbidden3595 auth: :oauth, package_name_type: :scoped_naming_convention, visibility: :public, user_role: :maintainer, expected_result: :accept, expected_status: :ok3596 behaves like accept delete package tag request3597 with valid package name3598 returns a valid response3599 destroy the package tag3600 behaves like returning response status3601 returns no_content3602 behaves like track event3603 behaves like a package tracking event3604 creates a gitlab tracking event delete_tag3605 with tag from other package3606 behaves like returning response status3607 returns not_found3608 with invalid package name3609 package_name: "unknown", status: :not_found3610 behaves like returning response status3611 returns not_found3612 package_name: "", status: :not_found3613 behaves like returning response status3614 returns not_found3615 package_name: "%20", status: :bad_request3616 behaves like returning response status3617 returns bad_request3618 with invalid tag name3619 tag_name: "unknown", status: :not_found3620 behaves like returning response status3621 returns not_found3622 tag_name: "", status: :not_found3623 behaves like returning response status3624 returns not_found3625 tag_name: "%20", status: :bad_request3626 behaves like returning response status3627 returns bad_request3628 auth: :oauth, package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :forbidden3629 behaves like reject delete package tag request3630 behaves like returning response status3631 returns not_found3632 auth: :oauth, package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: :maintainer, expected_result: :accept, expected_status: :ok3633 behaves like reject delete package tag request3634 behaves like returning response status3635 returns not_found3636 auth: :oauth, package_name_type: :unscoped, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :forbidden3637 behaves like reject delete package tag request3638 behaves like returning response status3639 returns not_found3640 auth: :oauth, package_name_type: :unscoped, visibility: :public, user_role: :maintainer, expected_result: :accept, expected_status: :ok3641 behaves like reject delete package tag request3642 behaves like returning response status3643 returns not_found3644 auth: :oauth, package_name_type: :non_existing, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :forbidden3645 behaves like reject delete package tag request3646 behaves like returning response status3647 returns not_found3648 auth: :oauth, package_name_type: :non_existing, visibility: :public, user_role: :maintainer, expected_result: :reject, expected_status: :not_found3649 behaves like reject delete package tag request3650 behaves like returning response status3651 returns not_found3652 auth: :oauth, package_name_type: :scoped_naming_convention, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden3653 behaves like reject delete package tag request3654 behaves like returning response status3655 returns forbidden3656 auth: :oauth, package_name_type: :scoped_naming_convention, visibility: :private, user_role: :maintainer, expected_result: :accept, expected_status: :ok3657 behaves like accept delete package tag request3658 with valid package name3659 returns a valid response3660 destroy the package tag3661 behaves like returning response status3662 returns no_content3663 behaves like track event3664 behaves like a package tracking event3665 creates a gitlab tracking event delete_tag3666 with tag from other package3667 behaves like returning response status3668 returns not_found3669 with invalid package name3670 package_name: "unknown", status: :not_found3671 behaves like returning response status3672 returns not_found3673 package_name: "", status: :not_found3674 behaves like returning response status3675 returns not_found3676 package_name: "%20", status: :bad_request3677 behaves like returning response status3678 returns bad_request3679 with invalid tag name3680 tag_name: "unknown", status: :not_found3681 behaves like returning response status3682 returns not_found3683 tag_name: "", status: :not_found3684 behaves like returning response status3685 returns not_found3686 tag_name: "%20", status: :bad_request3687 behaves like returning response status3688 returns bad_request3689 auth: :oauth, package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden3690 behaves like reject delete package tag request3691 behaves like returning response status3692 returns not_found3693 auth: :oauth, package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: :maintainer, expected_result: :accept, expected_status: :ok3694 behaves like reject delete package tag request3695 behaves like returning response status3696 returns not_found3697 auth: :oauth, package_name_type: :unscoped, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden3698 behaves like reject delete package tag request3699 behaves like returning response status3700 returns not_found3701 auth: :oauth, package_name_type: :unscoped, visibility: :private, user_role: :maintainer, expected_result: :accept, expected_status: :ok3702 behaves like reject delete package tag request3703 behaves like returning response status3704 returns not_found3705 auth: :oauth, package_name_type: :non_existing, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden3706 behaves like reject delete package tag request3707 behaves like returning response status3708 returns not_found3709 auth: :oauth, package_name_type: :non_existing, visibility: :private, user_role: :maintainer, expected_result: :reject, expected_status: :not_found3710 behaves like reject delete package tag request3711 behaves like returning response status3712 returns not_found3713 auth: :oauth, package_name_type: :scoped_naming_convention, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :forbidden3714 behaves like reject delete package tag request3715 behaves like returning response status3716 returns forbidden3717 auth: :oauth, package_name_type: :scoped_naming_convention, visibility: :internal, user_role: :maintainer, expected_result: :accept, expected_status: :ok3718 behaves like accept delete package tag request3719 with valid package name3720 returns a valid response3721 destroy the package tag3722 behaves like returning response status3723 returns no_content3724 behaves like track event3725 behaves like a package tracking event3726 creates a gitlab tracking event delete_tag3727 with tag from other package3728 behaves like returning response status3729 returns not_found3730 with invalid package name3731 package_name: "unknown", status: :not_found3732 behaves like returning response status3733 returns not_found3734 package_name: "", status: :not_found3735 behaves like returning response status3736 returns not_found3737 package_name: "%20", status: :bad_request3738 behaves like returning response status3739 returns bad_request3740 with invalid tag name3741 tag_name: "unknown", status: :not_found3742 behaves like returning response status3743 returns not_found3744 tag_name: "", status: :not_found3745 behaves like returning response status3746 returns not_found3747 tag_name: "%20", status: :bad_request3748 behaves like returning response status3749 returns bad_request3750 auth: :oauth, package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :forbidden3751 behaves like reject delete package tag request3752 behaves like returning response status3753 returns not_found3754 auth: :oauth, package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: :maintainer, expected_result: :accept, expected_status: :ok3755 behaves like reject delete package tag request3756 behaves like returning response status3757 returns not_found3758 auth: :oauth, package_name_type: :unscoped, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :forbidden3759 behaves like reject delete package tag request3760 behaves like returning response status3761 returns not_found3762 auth: :oauth, package_name_type: :unscoped, visibility: :internal, user_role: :maintainer, expected_result: :accept, expected_status: :ok3763 behaves like reject delete package tag request3764 behaves like returning response status3765 returns not_found3766 auth: :oauth, package_name_type: :non_existing, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :forbidden3767 behaves like reject delete package tag request3768 behaves like returning response status3769 returns not_found3770 auth: :oauth, package_name_type: :non_existing, visibility: :internal, user_role: :maintainer, expected_result: :reject, expected_status: :not_found3771 behaves like reject delete package tag request3772 behaves like returning response status3773 returns not_found3774 auth: :personal_access_token, package_name_type: :scoped_naming_convention, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :forbidden3775 behaves like reject delete package tag request3776 behaves like returning response status3777 returns forbidden3778 auth: :personal_access_token, package_name_type: :scoped_naming_convention, visibility: :public, user_role: :maintainer, expected_result: :accept, expected_status: :ok3779 behaves like accept delete package tag request3780 with valid package name3781 returns a valid response3782 destroy the package tag3783 behaves like returning response status3784 returns no_content3785 behaves like track event3786 behaves like a package tracking event3787 creates a gitlab tracking event delete_tag3788 with tag from other package3789 behaves like returning response status3790 returns not_found3791 with invalid package name3792 package_name: "unknown", status: :not_found3793 behaves like returning response status3794 returns not_found3795 package_name: "", status: :not_found3796 behaves like returning response status3797 returns not_found3798 package_name: "%20", status: :bad_request3799 behaves like returning response status3800 returns bad_request3801 with invalid tag name3802 tag_name: "unknown", status: :not_found3803 behaves like returning response status3804 returns not_found3805 tag_name: "", status: :not_found3806 behaves like returning response status3807 returns not_found3808 tag_name: "%20", status: :bad_request3809 behaves like returning response status3810 returns bad_request3811 auth: :personal_access_token, package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :forbidden3812 behaves like reject delete package tag request3813 behaves like returning response status3814 returns not_found3815 auth: :personal_access_token, package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: :maintainer, expected_result: :accept, expected_status: :ok3816 behaves like reject delete package tag request3817 behaves like returning response status3818 returns not_found3819 auth: :personal_access_token, package_name_type: :unscoped, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :forbidden3820 behaves like reject delete package tag request3821 behaves like returning response status3822 returns not_found3823 auth: :personal_access_token, package_name_type: :unscoped, visibility: :public, user_role: :maintainer, expected_result: :accept, expected_status: :ok3824 behaves like reject delete package tag request3825 behaves like returning response status3826 returns not_found3827 auth: :personal_access_token, package_name_type: :non_existing, visibility: :public, user_role: :guest, expected_result: :reject, expected_status: :forbidden3828 behaves like reject delete package tag request3829 behaves like returning response status3830 returns not_found3831 auth: :personal_access_token, package_name_type: :non_existing, visibility: :public, user_role: :maintainer, expected_result: :reject, expected_status: :not_found3832 behaves like reject delete package tag request3833 behaves like returning response status3834 returns not_found3835 auth: :personal_access_token, package_name_type: :scoped_naming_convention, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden3836 behaves like reject delete package tag request3837 behaves like returning response status3838 returns forbidden3839 auth: :personal_access_token, package_name_type: :scoped_naming_convention, visibility: :private, user_role: :maintainer, expected_result: :accept, expected_status: :ok3840 behaves like accept delete package tag request3841 with valid package name3842 returns a valid response3843 destroy the package tag3844 behaves like returning response status3845 returns no_content3846 behaves like track event3847 behaves like a package tracking event3848 creates a gitlab tracking event delete_tag3849 with tag from other package3850 behaves like returning response status3851 returns not_found3852 with invalid package name3853 package_name: "unknown", status: :not_found3854 behaves like returning response status3855 returns not_found3856 package_name: "", status: :not_found3857 behaves like returning response status3858 returns not_found3859 package_name: "%20", status: :bad_request3860 behaves like returning response status3861 returns bad_request3862 with invalid tag name3863 tag_name: "unknown", status: :not_found3864 behaves like returning response status3865 returns not_found3866 tag_name: "", status: :not_found3867 behaves like returning response status3868 returns not_found3869 tag_name: "%20", status: :bad_request3870 behaves like returning response status3871 returns bad_request3872 auth: :personal_access_token, package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden3873 behaves like reject delete package tag request3874 behaves like returning response status3875 returns not_found3876 auth: :personal_access_token, package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: :maintainer, expected_result: :accept, expected_status: :ok3877 behaves like reject delete package tag request3878 behaves like returning response status3879 returns not_found3880 auth: :personal_access_token, package_name_type: :unscoped, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden3881 behaves like reject delete package tag request3882 behaves like returning response status3883 returns not_found3884 auth: :personal_access_token, package_name_type: :unscoped, visibility: :private, user_role: :maintainer, expected_result: :accept, expected_status: :ok3885 behaves like reject delete package tag request3886 behaves like returning response status3887 returns not_found3888 auth: :personal_access_token, package_name_type: :non_existing, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden3889 behaves like reject delete package tag request3890 behaves like returning response status3891 returns not_found3892 auth: :personal_access_token, package_name_type: :non_existing, visibility: :private, user_role: :maintainer, expected_result: :reject, expected_status: :not_found3893 behaves like reject delete package tag request3894 behaves like returning response status3895 returns not_found3896 auth: :personal_access_token, package_name_type: :scoped_naming_convention, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :forbidden3897 behaves like reject delete package tag request3898 behaves like returning response status3899 returns forbidden3900 auth: :personal_access_token, package_name_type: :scoped_naming_convention, visibility: :internal, user_role: :maintainer, expected_result: :accept, expected_status: :ok3901 behaves like accept delete package tag request3902 with valid package name3903 returns a valid response3904 destroy the package tag3905 behaves like returning response status3906 returns no_content3907 behaves like track event3908 behaves like a package tracking event3909 creates a gitlab tracking event delete_tag3910 with tag from other package3911 behaves like returning response status3912 returns not_found3913 with invalid package name3914 package_name: "unknown", status: :not_found3915 behaves like returning response status3916 returns not_found3917 package_name: "", status: :not_found3918 behaves like returning response status3919 returns not_found3920 package_name: "%20", status: :bad_request3921 behaves like returning response status3922 returns bad_request3923 with invalid tag name3924 tag_name: "unknown", status: :not_found3925 behaves like returning response status3926 returns not_found3927 tag_name: "", status: :not_found3928 behaves like returning response status3929 returns not_found3930 tag_name: "%20", status: :bad_request3931 behaves like returning response status3932 returns bad_request3933 auth: :personal_access_token, package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :forbidden3934 behaves like reject delete package tag request3935 behaves like returning response status3936 returns not_found3937 auth: :personal_access_token, package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: :maintainer, expected_result: :accept, expected_status: :ok3938 behaves like reject delete package tag request3939 behaves like returning response status3940 returns not_found3941 auth: :personal_access_token, package_name_type: :unscoped, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :forbidden3942 behaves like reject delete package tag request3943 behaves like returning response status3944 returns not_found3945 auth: :personal_access_token, package_name_type: :unscoped, visibility: :internal, user_role: :maintainer, expected_result: :accept, expected_status: :ok3946 behaves like reject delete package tag request3947 behaves like returning response status3948 returns not_found3949 auth: :personal_access_token, package_name_type: :non_existing, visibility: :internal, user_role: :guest, expected_result: :reject, expected_status: :forbidden3950 behaves like reject delete package tag request3951 behaves like returning response status3952 returns not_found3953 auth: :personal_access_token, package_name_type: :non_existing, visibility: :internal, user_role: :maintainer, expected_result: :reject, expected_status: :not_found3954 behaves like reject delete package tag request3955 behaves like returning response status3956 returns not_found3957 auth: :job_token, package_name_type: :scoped_naming_convention, visibility: :public, user_role: :maintainer, expected_result: :accept, expected_status: :ok3958 behaves like accept delete package tag request3959 with valid package name3960 returns a valid response3961 destroy the package tag3962 behaves like returning response status3963 returns no_content3964 behaves like track event3965 behaves like a package tracking event3966 creates a gitlab tracking event delete_tag3967 with tag from other package3968 behaves like returning response status3969 returns not_found3970 with invalid package name3971 package_name: "unknown", status: :not_found3972 behaves like returning response status3973 returns not_found3974 package_name: "", status: :not_found3975 behaves like returning response status3976 returns not_found3977 package_name: "%20", status: :bad_request3978 behaves like returning response status3979 returns bad_request3980 with invalid tag name3981 tag_name: "unknown", status: :not_found3982 behaves like returning response status3983 returns not_found3984 tag_name: "", status: :not_found3985 behaves like returning response status3986 returns not_found3987 tag_name: "%20", status: :bad_request3988 behaves like returning response status3989 returns bad_request3990 auth: :job_token, package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: :maintainer, expected_result: :accept, expected_status: :ok3991 behaves like reject delete package tag request3992 behaves like returning response status3993 returns not_found3994 auth: :job_token, package_name_type: :unscoped, visibility: :public, user_role: :maintainer, expected_result: :accept, expected_status: :ok3995 behaves like reject delete package tag request3996 behaves like returning response status3997 returns not_found3998 auth: :job_token, package_name_type: :non_existing, visibility: :public, user_role: :maintainer, expected_result: :reject, expected_status: :not_found3999 behaves like reject delete package tag request4000 behaves like returning response status4001 returns not_found4002 auth: :job_token, package_name_type: :scoped_naming_convention, visibility: :private, user_role: :maintainer, expected_result: :accept, expected_status: :ok4003 behaves like accept delete package tag request4004 with valid package name4005 returns a valid response4006 destroy the package tag4007 behaves like returning response status4008 returns no_content4009 behaves like track event4010 behaves like a package tracking event4011 creates a gitlab tracking event delete_tag4012 with tag from other package4013 behaves like returning response status4014 returns not_found4015 with invalid package name4016 package_name: "unknown", status: :not_found4017 behaves like returning response status4018 returns not_found4019 package_name: "", status: :not_found4020 behaves like returning response status4021 returns not_found4022 package_name: "%20", status: :bad_request4023 behaves like returning response status4024 returns bad_request4025 with invalid tag name4026 tag_name: "unknown", status: :not_found4027 behaves like returning response status4028 returns not_found4029 tag_name: "", status: :not_found4030 behaves like returning response status4031 returns not_found4032 tag_name: "%20", status: :bad_request4033 behaves like returning response status4034 returns bad_request4035 auth: :job_token, package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: :maintainer, expected_result: :accept, expected_status: :ok4036 behaves like reject delete package tag request4037 behaves like returning response status4038 returns not_found4039 auth: :job_token, package_name_type: :unscoped, visibility: :private, user_role: :maintainer, expected_result: :accept, expected_status: :ok4040 behaves like reject delete package tag request4041 behaves like returning response status4042 returns not_found4043 auth: :job_token, package_name_type: :non_existing, visibility: :private, user_role: :maintainer, expected_result: :reject, expected_status: :not_found4044 behaves like reject delete package tag request4045 behaves like returning response status4046 returns not_found4047 auth: :job_token, package_name_type: :scoped_naming_convention, visibility: :internal, user_role: :maintainer, expected_result: :accept, expected_status: :ok4048 behaves like accept delete package tag request4049 with valid package name4050 returns a valid response4051 destroy the package tag4052 behaves like returning response status4053 returns no_content4054 behaves like track event4055 behaves like a package tracking event4056 creates a gitlab tracking event delete_tag4057 with tag from other package4058 behaves like returning response status4059 returns not_found4060 with invalid package name4061 package_name: "unknown", status: :not_found4062 behaves like returning response status4063 returns not_found4064 package_name: "", status: :not_found4065 behaves like returning response status4066 returns not_found4067 package_name: "%20", status: :bad_request4068 behaves like returning response status4069 returns bad_request4070 with invalid tag name4071 tag_name: "unknown", status: :not_found4072 behaves like returning response status4073 returns not_found4074 tag_name: "", status: :not_found4075 behaves like returning response status4076 returns not_found4077 tag_name: "%20", status: :bad_request4078 behaves like returning response status4079 returns bad_request4080 auth: :job_token, package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: :maintainer, expected_result: :accept, expected_status: :ok4081 behaves like reject delete package tag request4082 behaves like returning response status4083 returns not_found4084 auth: :job_token, package_name_type: :unscoped, visibility: :internal, user_role: :maintainer, expected_result: :accept, expected_status: :ok4085 behaves like reject delete package tag request4086 behaves like returning response status4087 returns not_found4088 auth: :job_token, package_name_type: :non_existing, visibility: :internal, user_role: :maintainer, expected_result: :reject, expected_status: :not_found4089 behaves like reject delete package tag request4090 behaves like returning response status4091 returns not_found4092 auth: :deploy_token, package_name_type: :scoped_naming_convention, visibility: :public, user_role: nil, expected_result: :accept, expected_status: :ok4093 behaves like accept delete package tag request4094 with valid package name4095 returns a valid response4096 destroy the package tag4097 behaves like returning response status4098 returns no_content4099 behaves like track event4100 behaves like a package tracking event4101 creates a gitlab tracking event delete_tag4102 with tag from other package4103 behaves like returning response status4104 returns not_found4105 with invalid package name4106 package_name: "unknown", status: :not_found4107 behaves like returning response status4108 returns not_found4109 package_name: "", status: :not_found4110 behaves like returning response status4111 returns not_found4112 package_name: "%20", status: :bad_request4113 behaves like returning response status4114 returns bad_request4115 with invalid tag name4116 tag_name: "unknown", status: :not_found4117 behaves like returning response status4118 returns not_found4119 tag_name: "", status: :not_found4120 behaves like returning response status4121 returns not_found4122 tag_name: "%20", status: :bad_request4123 behaves like returning response status4124 returns bad_request4125 auth: :deploy_token, package_name_type: :scoped_no_naming_convention, visibility: :public, user_role: nil, expected_result: :accept, expected_status: :ok4126 behaves like reject delete package tag request4127 behaves like returning response status4128 returns not_found4129 auth: :deploy_token, package_name_type: :unscoped, visibility: :public, user_role: nil, expected_result: :accept, expected_status: :ok4130 behaves like reject delete package tag request4131 behaves like returning response status4132 returns not_found4133 auth: :deploy_token, package_name_type: :non_existing, visibility: :public, user_role: nil, expected_result: :reject, expected_status: :not_found4134 behaves like reject delete package tag request4135 behaves like returning response status4136 returns not_found4137 auth: :deploy_token, package_name_type: :scoped_naming_convention, visibility: :private, user_role: nil, expected_result: :accept, expected_status: :ok4138 behaves like accept delete package tag request4139 with valid package name4140 returns a valid response4141 destroy the package tag4142 behaves like returning response status4143 returns no_content4144 behaves like track event4145 behaves like a package tracking event4146 creates a gitlab tracking event delete_tag4147 with tag from other package4148 behaves like returning response status4149 returns not_found4150 with invalid package name4151 package_name: "unknown", status: :not_found4152 behaves like returning response status4153 returns not_found4154 package_name: "", status: :not_found4155 behaves like returning response status4156 returns not_found4157 package_name: "%20", status: :bad_request4158 behaves like returning response status4159 returns bad_request4160 with invalid tag name4161 tag_name: "unknown", status: :not_found4162 behaves like returning response status4163 returns not_found4164 tag_name: "", status: :not_found4165 behaves like returning response status4166 returns not_found4167 tag_name: "%20", status: :bad_request4168 behaves like returning response status4169 returns bad_request4170 auth: :deploy_token, package_name_type: :scoped_no_naming_convention, visibility: :private, user_role: nil, expected_result: :accept, expected_status: :ok4171 behaves like reject delete package tag request4172 behaves like returning response status4173 returns not_found4174 auth: :deploy_token, package_name_type: :unscoped, visibility: :private, user_role: nil, expected_result: :accept, expected_status: :ok4175 behaves like reject delete package tag request4176 behaves like returning response status4177 returns not_found4178 auth: :deploy_token, package_name_type: :non_existing, visibility: :private, user_role: nil, expected_result: :reject, expected_status: :not_found4179 behaves like reject delete package tag request4180 behaves like returning response status4181 returns not_found4182 auth: :deploy_token, package_name_type: :scoped_naming_convention, visibility: :internal, user_role: nil, expected_result: :accept, expected_status: :ok4183 behaves like accept delete package tag request4184 with valid package name4185 returns a valid response4186 destroy the package tag4187 behaves like returning response status4188 returns no_content4189 behaves like track event4190 behaves like a package tracking event4191 creates a gitlab tracking event delete_tag4192 with tag from other package4193 behaves like returning response status4194 returns not_found4195 with invalid package name4196 package_name: "unknown", status: :not_found4197 behaves like returning response status4198 returns not_found4199 package_name: "", status: :not_found4200 behaves like returning response status4201 returns not_found4202 package_name: "%20", status: :bad_request4203 behaves like returning response status4204 returns bad_request4205 with invalid tag name4206 tag_name: "unknown", status: :not_found4207 behaves like returning response status4208 returns not_found4209 tag_name: "", status: :not_found4210 behaves like returning response status4211 returns not_found4212 tag_name: "%20", status: :bad_request4213 behaves like returning response status4214 returns bad_request4215 auth: :deploy_token, package_name_type: :scoped_no_naming_convention, visibility: :internal, user_role: nil, expected_result: :accept, expected_status: :ok4216 behaves like reject delete package tag request4217 behaves like returning response status4218 returns not_found4219 auth: :deploy_token, package_name_type: :unscoped, visibility: :internal, user_role: nil, expected_result: :accept, expected_status: :ok4220 behaves like reject delete package tag request4221 behaves like returning response status4222 returns not_found4223 auth: :deploy_token, package_name_type: :non_existing, visibility: :internal, user_role: nil, expected_result: :reject, expected_status: :not_found4224 behaves like reject delete package tag request4225 behaves like returning response status4226 returns not_found4227 POST /api/v4/packages/npm/-/npm/v1/security/advisories/bulk4228 behaves like handling audit request4229 with a group namespace4230 behaves like handling all conditions4231 auth: nil, request_forward: true, visibility: :public, user_role: nil, expected_result: :reject, expected_status: :unauthorized4232 behaves like reject audit request4233 rejects the audit request4234 auth: nil, request_forward: false, visibility: :public, user_role: nil, expected_result: :reject, expected_status: :unauthorized4235 behaves like reject audit request4236 rejects the audit request4237 auth: nil, request_forward: true, visibility: :private, user_role: nil, expected_result: :reject, expected_status: :unauthorized4238 behaves like reject audit request4239 rejects the audit request4240 auth: nil, request_forward: false, visibility: :private, user_role: nil, expected_result: :reject, expected_status: :unauthorized4241 behaves like reject audit request4242 rejects the audit request4243 auth: nil, request_forward: true, visibility: :internal, user_role: nil, expected_result: :reject, expected_status: :unauthorized4244 behaves like reject audit request4245 rejects the audit request4246 auth: nil, request_forward: false, visibility: :internal, user_role: nil, expected_result: :reject, expected_status: :unauthorized4247 behaves like reject audit request4248 rejects the audit request4249 auth: :oauth, request_forward: true, visibility: :public, user_role: :guest, expected_result: :redirect, expected_status: :temporary_redirect4250 behaves like redirect audit request4251 redirects audit request4252 auth: :oauth, request_forward: true, visibility: :public, user_role: :reporter, expected_result: :redirect, expected_status: :temporary_redirect4253 behaves like redirect audit request4254 redirects audit request4255 auth: :oauth, request_forward: false, visibility: :public, user_role: :guest, expected_result: :accept, expected_status: :ok4256 behaves like reject audit request4257 rejects the audit request4258 auth: :oauth, request_forward: false, visibility: :public, user_role: :reporter, expected_result: :accept, expected_status: :ok4259 behaves like reject audit request4260 rejects the audit request4261 auth: :oauth, request_forward: true, visibility: :private, user_role: :reporter, expected_result: :redirect, expected_status: :temporary_redirect4262 behaves like redirect audit request4263 redirects audit request4264 auth: :oauth, request_forward: false, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden4265 behaves like reject audit request4266 rejects the audit request4267 auth: :oauth, request_forward: false, visibility: :private, user_role: :reporter, expected_result: :accept, expected_status: :ok4268 behaves like reject audit request4269 rejects the audit request4270 auth: :oauth, request_forward: true, visibility: :private, user_role: :guest, expected_result: :redirect, expected_status: :temporary_redirect4271 behaves like redirect audit request4272 redirects audit request4273 auth: :oauth, request_forward: true, visibility: :internal, user_role: :guest, expected_result: :redirect, expected_status: :temporary_redirect4274 behaves like redirect audit request4275 redirects audit request4276 auth: :oauth, request_forward: true, visibility: :internal, user_role: :reporter, expected_result: :redirect, expected_status: :temporary_redirect4277 behaves like redirect audit request4278 redirects audit request4279 auth: :oauth, request_forward: false, visibility: :internal, user_role: :guest, expected_result: :accept, expected_status: :ok4280 behaves like reject audit request4281 rejects the audit request4282 auth: :oauth, request_forward: false, visibility: :internal, user_role: :reporter, expected_result: :accept, expected_status: :ok4283 behaves like reject audit request4284 rejects the audit request4285 auth: :personal_access_token, request_forward: true, visibility: :public, user_role: :guest, expected_result: :redirect, expected_status: :temporary_redirect4286 behaves like redirect audit request4287 redirects audit request4288 auth: :personal_access_token, request_forward: true, visibility: :public, user_role: :reporter, expected_result: :redirect, expected_status: :temporary_redirect4289 behaves like redirect audit request4290 redirects audit request4291 auth: :personal_access_token, request_forward: false, visibility: :public, user_role: :guest, expected_result: :accept, expected_status: :ok4292 behaves like reject audit request4293 rejects the audit request4294 auth: :personal_access_token, request_forward: false, visibility: :public, user_role: :reporter, expected_result: :accept, expected_status: :ok4295 behaves like reject audit request4296 rejects the audit request4297 auth: :personal_access_token, request_forward: true, visibility: :private, user_role: :guest, expected_result: :redirect, expected_status: :temporary_redirect4298 behaves like redirect audit request4299 redirects audit request4300 auth: :personal_access_token, request_forward: true, visibility: :private, user_role: :reporter, expected_result: :redirect, expected_status: :temporary_redirect4301 behaves like redirect audit request4302 redirects audit request4303 auth: :personal_access_token, request_forward: false, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden4304 behaves like reject audit request4305 rejects the audit request4306 auth: :personal_access_token, request_forward: false, visibility: :private, user_role: :reporter, expected_result: :accept, expected_status: :ok4307 behaves like reject audit request4308 rejects the audit request4309 auth: :personal_access_token, request_forward: true, visibility: :internal, user_role: :guest, expected_result: :redirect, expected_status: :temporary_redirect4310 behaves like redirect audit request4311 redirects audit request4312 auth: :personal_access_token, request_forward: true, visibility: :internal, user_role: :reporter, expected_result: :redirect, expected_status: :temporary_redirect4313 behaves like redirect audit request4314 redirects audit request4315 auth: :personal_access_token, request_forward: false, visibility: :internal, user_role: :guest, expected_result: :accept, expected_status: :ok4316 behaves like reject audit request4317 rejects the audit request4318 auth: :personal_access_token, request_forward: false, visibility: :internal, user_role: :reporter, expected_result: :accept, expected_status: :ok4319 behaves like reject audit request4320 rejects the audit request4321 auth: :job_token, request_forward: true, visibility: :public, user_role: :developer, expected_result: :redirect, expected_status: :temporary_redirect4322 behaves like redirect audit request4323 redirects audit request4324 auth: :job_token, request_forward: false, visibility: :public, user_role: :developer, expected_result: :accept, expected_status: :ok4325 behaves like reject audit request4326 rejects the audit request4327 auth: :job_token, request_forward: true, visibility: :private, user_role: :developer, expected_result: :redirect, expected_status: :temporary_redirect4328 behaves like redirect audit request4329 redirects audit request4330 auth: :job_token, request_forward: false, visibility: :private, user_role: :developer, expected_result: :accept, expected_status: :ok4331 behaves like reject audit request4332 rejects the audit request4333 auth: :job_token, request_forward: true, visibility: :internal, user_role: :developer, expected_result: :redirect, expected_status: :temporary_redirect4334 behaves like redirect audit request4335 redirects audit request4336 auth: :job_token, request_forward: false, visibility: :internal, user_role: :developer, expected_result: :accept, expected_status: :ok4337 behaves like reject audit request4338 rejects the audit request4339 auth: :deploy_token, request_forward: true, visibility: :public, user_role: nil, expected_result: :redirect, expected_status: :temporary_redirect4340 behaves like redirect audit request4341 redirects audit request4342 auth: :deploy_token, request_forward: false, visibility: :public, user_role: nil, expected_result: :accept, expected_status: :ok4343 behaves like reject audit request4344 rejects the audit request4345 auth: :deploy_token, request_forward: true, visibility: :private, user_role: nil, expected_result: :redirect, expected_status: :temporary_redirect4346 behaves like redirect audit request4347 redirects audit request4348 auth: :deploy_token, request_forward: false, visibility: :private, user_role: nil, expected_result: :accept, expected_status: :ok4349 behaves like reject audit request4350 rejects the audit request4351 auth: :deploy_token, request_forward: true, visibility: :internal, user_role: nil, expected_result: :redirect, expected_status: :temporary_redirect4352 behaves like redirect audit request4353 redirects audit request4354 auth: :deploy_token, request_forward: false, visibility: :internal, user_role: nil, expected_result: :accept, expected_status: :ok4355 behaves like reject audit request4356 rejects the audit request4357 with a developer4358 with a job token4359 behaves like reject audit request4360 rejects the audit request4361 POST /api/v4/packages/npm/-/npm/v1/security/audits/quick4362 behaves like handling audit request4363 with a group namespace4364 behaves like handling all conditions4365 auth: nil, request_forward: true, visibility: :public, user_role: nil, expected_result: :reject, expected_status: :unauthorized4366 behaves like reject audit request4367 rejects the audit request4368 auth: nil, request_forward: false, visibility: :public, user_role: nil, expected_result: :reject, expected_status: :unauthorized4369 behaves like reject audit request4370 rejects the audit request4371 auth: nil, request_forward: true, visibility: :private, user_role: nil, expected_result: :reject, expected_status: :unauthorized4372 behaves like reject audit request4373 rejects the audit request4374 auth: nil, request_forward: false, visibility: :private, user_role: nil, expected_result: :reject, expected_status: :unauthorized4375 behaves like reject audit request4376 rejects the audit request4377 auth: nil, request_forward: true, visibility: :internal, user_role: nil, expected_result: :reject, expected_status: :unauthorized4378 behaves like reject audit request4379 rejects the audit request4380 auth: nil, request_forward: false, visibility: :internal, user_role: nil, expected_result: :reject, expected_status: :unauthorized4381 behaves like reject audit request4382 rejects the audit request4383 auth: :oauth, request_forward: true, visibility: :public, user_role: :guest, expected_result: :redirect, expected_status: :temporary_redirect4384 behaves like redirect audit request4385 redirects audit request4386 auth: :oauth, request_forward: true, visibility: :public, user_role: :reporter, expected_result: :redirect, expected_status: :temporary_redirect4387 behaves like redirect audit request4388 redirects audit request4389 auth: :oauth, request_forward: false, visibility: :public, user_role: :guest, expected_result: :accept, expected_status: :ok4390 behaves like reject audit request4391 rejects the audit request4392 auth: :oauth, request_forward: false, visibility: :public, user_role: :reporter, expected_result: :accept, expected_status: :ok4393 behaves like reject audit request4394 rejects the audit request4395 auth: :oauth, request_forward: true, visibility: :private, user_role: :reporter, expected_result: :redirect, expected_status: :temporary_redirect4396 behaves like redirect audit request4397 redirects audit request4398 auth: :oauth, request_forward: false, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden4399 behaves like reject audit request4400 rejects the audit request4401 auth: :oauth, request_forward: false, visibility: :private, user_role: :reporter, expected_result: :accept, expected_status: :ok4402 behaves like reject audit request4403 rejects the audit request4404 auth: :oauth, request_forward: true, visibility: :private, user_role: :guest, expected_result: :redirect, expected_status: :temporary_redirect4405 behaves like redirect audit request4406 redirects audit request4407 auth: :oauth, request_forward: true, visibility: :internal, user_role: :guest, expected_result: :redirect, expected_status: :temporary_redirect4408 behaves like redirect audit request4409 redirects audit request4410 auth: :oauth, request_forward: true, visibility: :internal, user_role: :reporter, expected_result: :redirect, expected_status: :temporary_redirect4411 behaves like redirect audit request4412 redirects audit request4413 auth: :oauth, request_forward: false, visibility: :internal, user_role: :guest, expected_result: :accept, expected_status: :ok4414 behaves like reject audit request4415 rejects the audit request4416 auth: :oauth, request_forward: false, visibility: :internal, user_role: :reporter, expected_result: :accept, expected_status: :ok4417 behaves like reject audit request4418 rejects the audit request4419 auth: :personal_access_token, request_forward: true, visibility: :public, user_role: :guest, expected_result: :redirect, expected_status: :temporary_redirect4420 behaves like redirect audit request4421 redirects audit request4422 auth: :personal_access_token, request_forward: true, visibility: :public, user_role: :reporter, expected_result: :redirect, expected_status: :temporary_redirect4423 behaves like redirect audit request4424 redirects audit request4425 auth: :personal_access_token, request_forward: false, visibility: :public, user_role: :guest, expected_result: :accept, expected_status: :ok4426 behaves like reject audit request4427 rejects the audit request4428 auth: :personal_access_token, request_forward: false, visibility: :public, user_role: :reporter, expected_result: :accept, expected_status: :ok4429 behaves like reject audit request4430 rejects the audit request4431 auth: :personal_access_token, request_forward: true, visibility: :private, user_role: :guest, expected_result: :redirect, expected_status: :temporary_redirect4432 behaves like redirect audit request4433 redirects audit request4434 auth: :personal_access_token, request_forward: true, visibility: :private, user_role: :reporter, expected_result: :redirect, expected_status: :temporary_redirect4435 behaves like redirect audit request4436 redirects audit request4437 auth: :personal_access_token, request_forward: false, visibility: :private, user_role: :guest, expected_result: :reject, expected_status: :forbidden4438 behaves like reject audit request4439 rejects the audit request4440 auth: :personal_access_token, request_forward: false, visibility: :private, user_role: :reporter, expected_result: :accept, expected_status: :ok4441 behaves like reject audit request4442 rejects the audit request4443 auth: :personal_access_token, request_forward: true, visibility: :internal, user_role: :guest, expected_result: :redirect, expected_status: :temporary_redirect4444 behaves like redirect audit request4445 redirects audit request4446 auth: :personal_access_token, request_forward: true, visibility: :internal, user_role: :reporter, expected_result: :redirect, expected_status: :temporary_redirect4447 behaves like redirect audit request4448 redirects audit request4449 auth: :personal_access_token, request_forward: false, visibility: :internal, user_role: :guest, expected_result: :accept, expected_status: :ok4450 behaves like reject audit request4451 rejects the audit request4452 auth: :personal_access_token, request_forward: false, visibility: :internal, user_role: :reporter, expected_result: :accept, expected_status: :ok4453 behaves like reject audit request4454 rejects the audit request4455 auth: :job_token, request_forward: true, visibility: :public, user_role: :developer, expected_result: :redirect, expected_status: :temporary_redirect4456 behaves like redirect audit request4457 redirects audit request4458 auth: :job_token, request_forward: false, visibility: :public, user_role: :developer, expected_result: :accept, expected_status: :ok4459 behaves like reject audit request4460 rejects the audit request4461 auth: :job_token, request_forward: true, visibility: :private, user_role: :developer, expected_result: :redirect, expected_status: :temporary_redirect4462 behaves like redirect audit request4463 redirects audit request4464 auth: :job_token, request_forward: false, visibility: :private, user_role: :developer, expected_result: :accept, expected_status: :ok4465 behaves like reject audit request4466 rejects the audit request4467 auth: :job_token, request_forward: true, visibility: :internal, user_role: :developer, expected_result: :redirect, expected_status: :temporary_redirect4468 behaves like redirect audit request4469 redirects audit request4470 auth: :job_token, request_forward: false, visibility: :internal, user_role: :developer, expected_result: :accept, expected_status: :ok4471 behaves like reject audit request4472 rejects the audit request4473 auth: :deploy_token, request_forward: true, visibility: :public, user_role: nil, expected_result: :redirect, expected_status: :temporary_redirect4474 behaves like redirect audit request4475 redirects audit request4476 auth: :deploy_token, request_forward: false, visibility: :public, user_role: nil, expected_result: :accept, expected_status: :ok4477 behaves like reject audit request4478 rejects the audit request4479 auth: :deploy_token, request_forward: true, visibility: :private, user_role: nil, expected_result: :redirect, expected_status: :temporary_redirect4480 behaves like redirect audit request4481 redirects audit request4482 auth: :deploy_token, request_forward: false, visibility: :private, user_role: nil, expected_result: :accept, expected_status: :ok4483 behaves like reject audit request4484 rejects the audit request4485 auth: :deploy_token, request_forward: true, visibility: :internal, user_role: nil, expected_result: :redirect, expected_status: :temporary_redirect4486 behaves like redirect audit request4487 redirects audit request4488 auth: :deploy_token, request_forward: false, visibility: :internal, user_role: nil, expected_result: :accept, expected_status: :ok4489 behaves like reject audit request4490 rejects the audit request4491 with a developer4492 with a job token4493 behaves like reject audit request4494 rejects the audit request4495API::Groups4496 GET /groups4497 when unauthenticated4498 returns public groups4499 avoids N+1 queries4500 when statistics are requested4501 does not include statistics4502 when authenticated as user4503 normal user: returns an array of groups of user14504 does not include runners_token information4505 does not include statistics4506 includes a created_at timestamp4507 pagination strategies4508 when the user is anonymous4509 offset pagination4510 on making requests beyond the allowed offset pagination threshold4511 returns error and suggests to use keyset pagination4512 on making requests below the allowed offset pagination threshold4513 paginates the records4514 keyset pagination4515 on making requests with supported ordering structure4516 paginates the records correctly4517 on making requests with unsupported ordering structure4518 returns error4519 when authenticated as admin4520 admin: returns an array of all groups4521 does not include runners_token information4522 does not include statistics by default4523 includes a created_at timestamp4524 includes statistics if requested4525 when using skip_groups in request4526 returns all groups excluding skipped groups4527 when using all_available in request4528 returns all groups you have access to4529 when using top_level_only4530 doesn't return subgroups4531 when using sorting4532 sorts by name ascending by default4533 sorts in descending order when passed4534 sorts by path in order_by param4535 sorts by id in the order_by param4536 sorts also by descending id with pagination fix4537 sorts identical keys by id for good pagination4538 sorts descending identical keys by id for good pagination4539 when searching with similarity ordering4540 sorts top level groups before subgroups with exact matches first4541 when `search` parameter is not given4542 sorts items ordered by name4543 when using owned in the request4544 returns an array of groups the user owns4545 when using min_access_level in the request4546 with min_access_level parameter4547 returns an array of groups the user has at least master access4548 distinct count4549 counts with *4550 when searching4551 finds also groups with full path matching search param4552 GET /groups/:id4553 when unauthenticated4554 returns 404 for a private group4555 returns 200 for a public group4556 returns only public projects in the group4557 returns only public projects shared with the group4558 when authenticated as user4559 returns one of user1's groups4560 returns one of user1's groups without projects when with_projects option is set to false4561 doesn't return runners_token if the user is not the owner of the group4562 returns runners_token if the user is the owner of the group4563 does not return a non existing group4564 does not return a group not attached to user14565 returns only public and internal projects in the group4566 returns only public and internal projects shared with the group4567 avoids N+1 queries with project links4568 avoids N+1 queries with shared group links4569 when authenticated as admin4570 returns any existing group4571 returns information of the runners_token for the group4572 returns runners_token and no projects when with_projects option is set to false4573 does not return a non existing group4574 when using group path in URL4575 returns any existing group4576 does not return a non existing group4577 does not return a group not attached to user14578 limiting the number of projects and shared_projects in the response4579 limits projects and shared_projects4580 when a group is shared4581 when authenticated as admin4582 returns all groups that share the group4583 when unauthenticated4584 returns only public groups that share the group4585 when authenticated as a member of a parent group that has shared the group4586 returns private group if direct member4587 returns private group if inherited member4588 PUT /groups/:id4589 behaves like group avatar upload4590 when valid4591 returns avatar url in response4592 when invalid4593 when file format is not supported4594 behaves like invalid file upload request4595 returns 4004596 when file is too large4597 behaves like invalid file upload request4598 returns 4004599 when authenticated as the group owner4600 updates the group4601 removes the group avatar4602 does not update visibility_level if it is restricted4603 returns 404 for a non existing group4604 updating the `default_branch_protection` attribute4605 for users who have the ability to update default_branch_protection4606 updates the attribute4607 for users who does not have the ability to update default_branch_protection`4608 does not update the attribute4609 malicious group name4610 returns bad request4611 does not update group name4612 within a subgroup4613 does not change visibility when not requested4614 prevents making private a group containing public subgroups4615 does not update prevent_sharing_groups_outside_hierarchy4616 when authenticated as the admin4617 updates the group4618 ignores visibility level restrictions4619 when authenticated as an user that can see the group4620 does not updates the group4621 when authenticated as an user that cannot see the group4622 returns 404 when trying to update the group4623 GET /groups/:id/projects4624 when authenticated as user4625 returns the group's projects4626 returns the group's projects with simple representation4627 filters the groups projects4628 returns projects excluding shared4629 does not return a non existing group4630 does not return a group not attached to user14631 only returns projects to which user has access4632 only returns the projects owned by user4633 only returns the projects starred by user4634 avoids N+1 queries4635 with min access level4636 returns projects with min access level or higher4637 and using archived4638 returns the group's archived projects4639 returns the group's non-archived projects4640 returns all of the group's projects4641 with similarity ordering4642 returns items based ordered by similarity4643 when `search` parameter is not given4644 returns items ordered by name4645 when include_subgroups is true4646 returns projects including those in subgroups4647 when include_ancestor_groups is true4648 returns ancestors groups projects4649 when authenticated as admin4650 returns any existing group4651 does not return a non existing group4652 when using group path in URL4653 returns any existing group4654 does not return a non existing group4655 does not return a group not attached to user14656 GET /groups/:id/projects/shared4657 when authenticated as user4658 returns the shared projects in the group4659 returns shared projects with min access level or higher4660 returns the shared projects of the group with simple representation4661 filters the shared projects in the group based on visibility4662 filters the shared projects in the group based on search params4663 does not return the projects owned by the group4664 returns 404 for a non-existing group4665 does not return a group not attached to the user4666 only returns shared projects to which user has access4667 only returns the projects starred by user4668 when authenticated as admin4669 returns shared projects of an existing group4670 avoids N+1 queries4671 for a non-existent group4672 returns 404 for a non-existent group4673 when using group path in URL4674 returns the right details4675 returns 404 for a non-existent group4676 GET /groups/:id/subgroups4677 when unauthenticated4678 returns only public subgroups4679 returns 404 for a private group4680 when statistics are requested4681 does not include statistics4682 when authenticated as user4683 when user is not member of a public group4684 returns no subgroups for the public group4685 when using all_available in request4686 returns public subgroups4687 when user is not member of a private group4688 returns 404 for the private group4689 when user is member of public group4690 returns private subgroups4691 when using statistics in request4692 does not include statistics4693 when user is member of private group4694 returns subgroups4695 when authenticated as admin4696 returns private subgroups of a public group4697 returns subgroups of a private group4698 does not include statistics by default4699 includes statistics if requested4700 behaves like skips searching in full path4701 does not find groups by full path4702 GET /groups/:id/descendant_groups4703 when unauthenticated4704 returns only public descendants4705 returns 404 for a private group4706 when authenticated as user4707 when user is not member of a public group4708 returns no descendants for the public group4709 when using all_available in request4710 returns public descendants4711 when user is not member of a private group4712 returns 404 for the private group4713 when user is member of public group4714 returns private descendants4715 when using statistics in request4716 does not include statistics4717 when user is member of private group4718 returns descendants4719 when authenticated as admin4720 returns private descendants of a public group4721 returns descendants of a private group4722 does not include statistics by default4723 includes statistics if requested4724 behaves like skips searching in full path4725 does not find groups by full path4726 POST /groups4727 behaves like group avatar upload4728 when valid4729 returns avatar url in response4730 when invalid4731 when file format is not supported4732 behaves like invalid file upload request4733 returns 4004734 when file is too large4735 behaves like invalid file upload request4736 returns 4004737 when authenticated as user without group permissions4738 does not create group4739 as owner4740 can create subgroups4741 as maintainer4742 can create subgroups4743 when authenticated as user with group permissions4744 creates group4745 creates a nested group4746 does not create group, duplicate4747 returns 400 bad request error if name not given4748 returns 400 bad request error if path not given4749 malicious group name4750 returns bad request4751 is expected not to change `Group.count`4752 when creating a group with `default_branch_protection` attribute4753 for users who have the ability to create a group with `default_branch_protection`4754 creates group with the specified branch protection level4755 for users who do not have the ability to create a group with `default_branch_protection`4756 does not create the group with the specified branch protection level4757 DELETE /groups/:id4758 when authenticated as user4759 removes group4760 does not remove a group if not an owner4761 does not remove a non existing group4762 does not remove a group not attached to user14763 behaves like 412 response4764 for a modified resource4765 returns 412 with a JSON error4766 for an unmodified resource4767 returns 204 with an empty body4768 when authenticated as admin4769 removes any existing group4770 does not remove a non existing group4771 POST /groups/:id/projects/:project_id4772 when authenticated as user4773 does not transfer project to group4774 when authenticated as admin4775 transfers project to group4776 when using project path in URL4777 with a valid project path4778 transfers project to group4779 with a non-existent project path4780 does not transfer project to group4781 when using a group path in URL4782 with a valid group path4783 transfers project to group4784 with a non-existent group path4785 does not transfer project to group4786 GET /groups/:id/transfer_locations4787 when the user has rights to transfer the group4788 returns 2004789 only includes groups where the user has permissions to transfer a group to4790 with search4791 includes groups where the user has permissions to transfer a group to, matching the search term4792 when the user does not have permissions to transfer the group4793 returns 4034794 for an anonymous user4795 returns 4044796 POST /groups/:id/transfer4797 when promoting a subgroup to a root group4798 when no group_id is specified4799 behaves like promotes the subgroup to a root group4800 returns success4801 when group_id is specified as blank4802 behaves like promotes the subgroup to a root group4803 returns success4804 when the group is already a root group4805 returns error4806 when transferring a subgroup to a different group4807 when the user does not have admin rights to the group being transferred4808 forbids the operation4809 when the user does not have access to the new parent group4810 fails with 4044811 when the ID of a non-existent group is mentioned as the new parent group4812 fails with 4044813 when the transfer fails due to an error4814 returns error4815 when the transfer succceds4816 returns success4817 behaves like custom attributes endpoints4818 GET /groups with custom attributes filter4819 with an unauthorized user4820 does not filter by custom attributes4821 with an authorized user4822 filters by custom attributes4823 GET /groups with custom attributes4824 with an unauthorized user4825 does not include custom attributes4826 with an authorized user4827 does not include custom attributes by default4828 includes custom attributes if requested4829 GET /groups/:id with custom attributes4830 with an unauthorized user4831 does not include custom attributes4832 with an authorized user4833 does not include custom attributes by default4834 includes custom attributes if requested4835 GET /groups/:id/custom_attributes4836 with an unauthorized user4837 behaves like an unauthorized API user4838 is expected to eq 4034839 with an authorized user4840 returns all custom attributes4841 GET /groups/:id/custom_attributes/:key4842 with an unauthorized user4843 behaves like an unauthorized API user4844 is expected to eq 4034845 with an authorized user4846 returns a single custom attribute4847 PUT /groups/:id/custom_attributes/:key4848 with an unauthorized user4849 behaves like an unauthorized API user4850 is expected to eq 4034851 with an authorized user4852 creates a new custom attribute4853 updates an existing custom attribute4854 DELETE /groups/:id/custom_attributes/:key4855 with an unauthorized user4856 behaves like an unauthorized API user4857 is expected to eq 4034858 with an authorized user4859 deletes an existing custom attribute4860 POST /groups/:id/share4861 when authenticated as owner4862 behaves like shares group with group4863 shares group with group4864 returns a 400 error when group id is not given4865 returns a 400 error when access level is not given4866 returns a 404 error when group does not exist4867 returns a 400 error when wrong params passed4868 returns a 409 error when link is not saved4869 when the user is not the owner of the group4870 does not create group share4871 when authenticated as admin4872 behaves like shares group with group4873 shares group with group4874 returns a 400 error when group id is not given4875 returns a 400 error when access level is not given4876 returns a 404 error when group does not exist4877 returns a 400 error when wrong params passed4878 returns a 409 error when link is not saved4879 DELETE /groups/:id/share/:group_id4880 when authenticated as owner4881 behaves like deletes group share4882 deletes a group share4883 requires the group id to be an integer4884 returns a 404 error when group link does not exist4885 returns a 404 error when group does not exist4886 when the user is not the owner of the group4887 does not remove group share4888 when authenticated as admin4889 behaves like deletes group share4890 deletes a group share4891 requires the group id to be an integer4892 returns a 404 error when group link does not exist4893 returns a 404 error when group does not exist4894API::RubygemPackages4895 GET /api/v4/projects/:project_id/packages/rubygems/:filename4896 behaves like an unimplemented route4897 behaves like without authentication4898 behaves like returning response status4899 returns not_found4900 behaves like with authentication4901 user_role: :guest, token_type: :personal_access_token, valid_token: true, status: :forbidden4902 behaves like returning response status4903 returns forbidden4904 user_role: :guest, token_type: :personal_access_token, valid_token: false, status: :unauthorized4905 behaves like returning response status4906 returns unauthorized4907 user_role: :guest, token_type: :deploy_token, valid_token: true, status: :not_found4908 behaves like returning response status4909 returns not_found4910 user_role: :guest, token_type: :deploy_token, valid_token: false, status: :unauthorized4911 behaves like returning response status4912 returns unauthorized4913 user_role: :guest, token_type: :job_token, valid_token: true, status: :forbidden4914 behaves like returning response status4915 returns forbidden4916 user_role: :guest, token_type: :job_token, valid_token: false, status: :unauthorized4917 behaves like returning response status4918 returns unauthorized4919 user_role: :reporter, token_type: :personal_access_token, valid_token: true, status: :not_found4920 behaves like returning response status4921 returns not_found4922 user_role: :reporter, token_type: :personal_access_token, valid_token: false, status: :unauthorized4923 behaves like returning response status4924 returns unauthorized4925 user_role: :reporter, token_type: :deploy_token, valid_token: true, status: :not_found4926 behaves like returning response status4927 returns not_found4928 user_role: :reporter, token_type: :deploy_token, valid_token: false, status: :unauthorized4929 behaves like returning response status4930 returns unauthorized4931 user_role: :reporter, token_type: :job_token, valid_token: true, status: :not_found4932 behaves like returning response status4933 returns not_found4934 user_role: :reporter, token_type: :job_token, valid_token: false, status: :unauthorized4935 behaves like returning response status4936 returns unauthorized4937 user_role: :developer, token_type: :personal_access_token, valid_token: true, status: :not_found4938 behaves like returning response status4939 returns not_found4940 user_role: :developer, token_type: :personal_access_token, valid_token: false, status: :unauthorized4941 behaves like returning response status4942 returns unauthorized4943 user_role: :developer, token_type: :deploy_token, valid_token: true, status: :not_found4944 behaves like returning response status4945 returns not_found4946 user_role: :developer, token_type: :deploy_token, valid_token: false, status: :unauthorized4947 behaves like returning response status4948 returns unauthorized4949 user_role: :developer, token_type: :job_token, valid_token: true, status: :not_found4950 behaves like returning response status4951 returns not_found4952 user_role: :developer, token_type: :job_token, valid_token: false, status: :unauthorized4953 behaves like returning response status4954 returns unauthorized4955 behaves like when feature flag is disabled4956 behaves like returning response status4957 returns not_found4958 behaves like when package feature is disabled4959 behaves like returning response status4960 returns not_found4961 GET /api/v4/projects/:project_id/packages/rubygems/quick/Marshal.4.8/:file_name4962 behaves like an unimplemented route4963 behaves like without authentication4964 behaves like returning response status4965 returns not_found4966 behaves like with authentication4967 user_role: :guest, token_type: :personal_access_token, valid_token: true, status: :forbidden4968 behaves like returning response status4969 returns forbidden4970 user_role: :guest, token_type: :personal_access_token, valid_token: false, status: :unauthorized4971 behaves like returning response status4972 returns unauthorized4973 user_role: :guest, token_type: :deploy_token, valid_token: true, status: :not_found4974 behaves like returning response status4975 returns not_found4976 user_role: :guest, token_type: :deploy_token, valid_token: false, status: :unauthorized4977 behaves like returning response status4978 returns unauthorized4979 user_role: :guest, token_type: :job_token, valid_token: true, status: :forbidden4980 behaves like returning response status4981 returns forbidden4982 user_role: :guest, token_type: :job_token, valid_token: false, status: :unauthorized4983 behaves like returning response status4984 returns unauthorized4985 user_role: :reporter, token_type: :personal_access_token, valid_token: true, status: :not_found4986 behaves like returning response status4987 returns not_found4988 user_role: :reporter, token_type: :personal_access_token, valid_token: false, status: :unauthorized4989 behaves like returning response status4990 returns unauthorized4991 user_role: :reporter, token_type: :deploy_token, valid_token: true, status: :not_found4992 behaves like returning response status4993 returns not_found4994 user_role: :reporter, token_type: :deploy_token, valid_token: false, status: :unauthorized4995 behaves like returning response status4996 returns unauthorized4997 user_role: :reporter, token_type: :job_token, valid_token: true, status: :not_found4998 behaves like returning response status4999 returns not_found5000 user_role: :reporter, token_type: :job_token, valid_token: false, status: :unauthorized5001 behaves like returning response status5002 returns unauthorized5003 user_role: :developer, token_type: :personal_access_token, valid_token: true, status: :not_found5004 behaves like returning response status5005 returns not_found5006 user_role: :developer, token_type: :personal_access_token, valid_token: false, status: :unauthorized5007 behaves like returning response status5008 returns unauthorized5009 user_role: :developer, token_type: :deploy_token, valid_token: true, status: :not_found5010 behaves like returning response status5011 returns not_found5012 user_role: :developer, token_type: :deploy_token, valid_token: false, status: :unauthorized5013 behaves like returning response status5014 returns unauthorized5015 user_role: :developer, token_type: :job_token, valid_token: true, status: :not_found5016 behaves like returning response status5017 returns not_found5018 user_role: :developer, token_type: :job_token, valid_token: false, status: :unauthorized5019 behaves like returning response status5020 returns unauthorized5021 behaves like when feature flag is disabled5022 behaves like returning response status5023 returns not_found5024 behaves like when package feature is disabled5025 behaves like returning response status5026 returns not_found5027 GET /api/v4/projects/:project_id/packages/rubygems/gems/:file_name5028 with valid project5029 visibility: :public, user_role: :developer, member: true, token_type: :personal_access_token, valid_token: true, shared_examples_name: "Rubygems gem download", expected_status: :success5030 behaves like Rubygems gem download5031 for user type developer5032 returns the gem5033 behaves like a package tracking event5034 creates a gitlab tracking event pull_package5035 behaves like bumping the package last downloaded at field5036 bumps last_downloaded_at5037 visibility: :public, user_role: :guest, member: true, token_type: :personal_access_token, valid_token: true, shared_examples_name: "Rubygems gem download", expected_status: :success5038 behaves like Rubygems gem download5039 for user type guest5040 returns the gem5041 behaves like a package tracking event5042 creates a gitlab tracking event pull_package5043 behaves like bumping the package last downloaded at field5044 bumps last_downloaded_at5045 visibility: :public, user_role: :developer, member: true, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5046 behaves like rejects rubygems packages access5047 for user type developer5048 behaves like returning response status5049 returns unauthorized5050 visibility: :public, user_role: :guest, member: true, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5051 behaves like rejects rubygems packages access5052 for user type guest5053 behaves like returning response status5054 returns unauthorized5055 visibility: :public, user_role: :developer, member: false, token_type: :personal_access_token, valid_token: true, shared_examples_name: "Rubygems gem download", expected_status: :success5056 behaves like Rubygems gem download5057 for user type developer5058 returns the gem5059 behaves like a package tracking event5060 creates a gitlab tracking event pull_package5061 behaves like bumping the package last downloaded at field5062 bumps last_downloaded_at5063 visibility: :public, user_role: :guest, member: false, token_type: :personal_access_token, valid_token: true, shared_examples_name: "Rubygems gem download", expected_status: :success5064 behaves like Rubygems gem download5065 for user type guest5066 returns the gem5067 behaves like a package tracking event5068 creates a gitlab tracking event pull_package5069 behaves like bumping the package last downloaded at field5070 bumps last_downloaded_at5071 visibility: :public, user_role: :developer, member: false, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5072 behaves like rejects rubygems packages access5073 for user type developer5074 behaves like returning response status5075 returns unauthorized5076 visibility: :public, user_role: :guest, member: false, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5077 behaves like rejects rubygems packages access5078 for user type guest5079 behaves like returning response status5080 returns unauthorized5081 visibility: :public, user_role: :anonymous, member: false, token_type: :personal_access_token, valid_token: true, shared_examples_name: "Rubygems gem download", expected_status: :success5082 behaves like Rubygems gem download5083 for user type anonymous5084 returns the gem5085 behaves like a package tracking event5086 creates a gitlab tracking event pull_package5087 behaves like bumping the package last downloaded at field5088 bumps last_downloaded_at5089 visibility: :private, user_role: :developer, member: true, token_type: :personal_access_token, valid_token: true, shared_examples_name: "Rubygems gem download", expected_status: :success5090 behaves like Rubygems gem download5091 for user type developer5092 returns the gem5093 behaves like a package tracking event5094 creates a gitlab tracking event pull_package5095 behaves like bumping the package last downloaded at field5096 bumps last_downloaded_at5097 visibility: :private, user_role: :guest, member: true, token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects rubygems packages access", expected_status: :forbidden5098 behaves like rejects rubygems packages access5099 for user type guest5100 behaves like returning response status5101 returns forbidden5102 visibility: :private, user_role: :developer, member: true, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5103 behaves like rejects rubygems packages access5104 for user type developer5105 behaves like returning response status5106 returns unauthorized5107 visibility: :private, user_role: :guest, member: true, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5108 behaves like rejects rubygems packages access5109 for user type guest5110 behaves like returning response status5111 returns unauthorized5112 visibility: :private, user_role: :developer, member: false, token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects rubygems packages access", expected_status: :not_found5113 behaves like rejects rubygems packages access5114 for user type developer5115 behaves like returning response status5116 returns not_found5117 visibility: :private, user_role: :guest, member: false, token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects rubygems packages access", expected_status: :not_found5118 behaves like rejects rubygems packages access5119 for user type guest5120 behaves like returning response status5121 returns not_found5122 visibility: :private, user_role: :developer, member: false, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5123 behaves like rejects rubygems packages access5124 for user type developer5125 behaves like returning response status5126 returns unauthorized5127 visibility: :private, user_role: :guest, member: false, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5128 behaves like rejects rubygems packages access5129 for user type guest5130 behaves like returning response status5131 returns unauthorized5132 visibility: :private, user_role: :anonymous, member: false, token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects rubygems packages access", expected_status: :not_found5133 behaves like rejects rubygems packages access5134 for user type anonymous5135 behaves like returning response status5136 returns not_found5137 visibility: :public, user_role: :developer, member: true, token_type: :job_token, valid_token: true, shared_examples_name: "Rubygems gem download", expected_status: :success5138 behaves like Rubygems gem download5139 for user type developer5140 returns the gem5141 behaves like a package tracking event5142 creates a gitlab tracking event pull_package5143 behaves like bumping the package last downloaded at field5144 bumps last_downloaded_at5145 visibility: :public, user_role: :guest, member: true, token_type: :job_token, valid_token: true, shared_examples_name: "Rubygems gem download", expected_status: :success5146 behaves like Rubygems gem download5147 for user type guest5148 returns the gem5149 behaves like a package tracking event5150 creates a gitlab tracking event pull_package5151 behaves like bumping the package last downloaded at field5152 bumps last_downloaded_at5153 visibility: :public, user_role: :developer, member: true, token_type: :job_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5154 behaves like rejects rubygems packages access5155 for user type developer5156 behaves like returning response status5157 returns unauthorized5158 visibility: :public, user_role: :guest, member: true, token_type: :job_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5159 behaves like rejects rubygems packages access5160 for user type guest5161 behaves like returning response status5162 returns unauthorized5163 visibility: :public, user_role: :developer, member: false, token_type: :job_token, valid_token: true, shared_examples_name: "Rubygems gem download", expected_status: :success5164 behaves like Rubygems gem download5165 for user type developer5166 returns the gem5167 behaves like a package tracking event5168 creates a gitlab tracking event pull_package5169 behaves like bumping the package last downloaded at field5170 bumps last_downloaded_at5171 visibility: :public, user_role: :guest, member: false, token_type: :job_token, valid_token: true, shared_examples_name: "Rubygems gem download", expected_status: :success5172 behaves like Rubygems gem download5173 for user type guest5174 returns the gem5175 behaves like a package tracking event5176 creates a gitlab tracking event pull_package5177 behaves like bumping the package last downloaded at field5178 bumps last_downloaded_at5179 visibility: :public, user_role: :developer, member: false, token_type: :job_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5180 behaves like rejects rubygems packages access5181 for user type developer5182 behaves like returning response status5183 returns unauthorized5184 visibility: :public, user_role: :guest, member: false, token_type: :job_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5185 behaves like rejects rubygems packages access5186 for user type guest5187 behaves like returning response status5188 returns unauthorized5189 visibility: :private, user_role: :developer, member: true, token_type: :job_token, valid_token: true, shared_examples_name: "Rubygems gem download", expected_status: :success5190 behaves like Rubygems gem download5191 for user type developer5192 returns the gem5193 behaves like a package tracking event5194 creates a gitlab tracking event pull_package5195 behaves like bumping the package last downloaded at field5196 bumps last_downloaded_at5197 visibility: :private, user_role: :guest, member: true, token_type: :job_token, valid_token: true, shared_examples_name: "rejects rubygems packages access", expected_status: :forbidden5198 behaves like rejects rubygems packages access5199 for user type guest5200 behaves like returning response status5201 returns forbidden5202 visibility: :private, user_role: :developer, member: true, token_type: :job_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5203 behaves like rejects rubygems packages access5204 for user type developer5205 behaves like returning response status5206 returns unauthorized5207 visibility: :private, user_role: :guest, member: true, token_type: :job_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5208 behaves like rejects rubygems packages access5209 for user type guest5210 behaves like returning response status5211 returns unauthorized5212 visibility: :private, user_role: :developer, member: false, token_type: :job_token, valid_token: true, shared_examples_name: "rejects rubygems packages access", expected_status: :not_found5213 behaves like rejects rubygems packages access5214 for user type developer5215 behaves like returning response status5216 returns not_found5217 visibility: :private, user_role: :guest, member: false, token_type: :job_token, valid_token: true, shared_examples_name: "rejects rubygems packages access", expected_status: :not_found5218 behaves like rejects rubygems packages access5219 for user type guest5220 behaves like returning response status5221 returns not_found5222 visibility: :private, user_role: :developer, member: false, token_type: :job_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5223 behaves like rejects rubygems packages access5224 for user type developer5225 behaves like returning response status5226 returns unauthorized5227 visibility: :private, user_role: :guest, member: false, token_type: :job_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5228 behaves like rejects rubygems packages access5229 for user type guest5230 behaves like returning response status5231 returns unauthorized5232 visibility: :public, user_role: :developer, member: true, token_type: :deploy_token, valid_token: true, shared_examples_name: "Rubygems gem download", expected_status: :success5233 behaves like Rubygems gem download5234 for user type developer5235 returns the gem5236 behaves like a package tracking event5237 creates a gitlab tracking event pull_package5238 behaves like bumping the package last downloaded at field5239 bumps last_downloaded_at5240 visibility: :public, user_role: :developer, member: true, token_type: :deploy_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5241 behaves like rejects rubygems packages access5242 for user type developer5243 behaves like returning response status5244 returns unauthorized5245 visibility: :private, user_role: :developer, member: true, token_type: :deploy_token, valid_token: true, shared_examples_name: "Rubygems gem download", expected_status: :success5246 behaves like Rubygems gem download5247 for user type developer5248 returns the gem5249 behaves like a package tracking event5250 creates a gitlab tracking event pull_package5251 behaves like bumping the package last downloaded at field5252 bumps last_downloaded_at5253 visibility: :private, user_role: :developer, member: true, token_type: :deploy_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5254 behaves like rejects rubygems packages access5255 for user type developer5256 behaves like returning response status5257 returns unauthorized5258 with access to package registry for everyone5259 behaves like Rubygems gem download5260 for user type anonymous5261 returns the gem5262 behaves like a package tracking event5263 creates a gitlab tracking event pull_package5264 behaves like bumping the package last downloaded at field5265 bumps last_downloaded_at5266 with package files pending destruction5267 does not return them5268 POST /api/v4/projects/:project_id/packages/rubygems/api/v1/gems/authorize5269 with valid project5270 visibility: :public, user_role: :developer, member: true, token_type: :personal_access_token, valid_token: true, shared_examples_name: "process rubygems workhorse authorization", expected_status: :success5271 behaves like process rubygems workhorse authorization5272 for user type developer5273 has the proper content type5274 behaves like returning response status5275 returns success5276 with a request that bypassed gitlab-workhorse5277 behaves like returning response status5278 returns forbidden5279 visibility: :public, user_role: :guest, member: true, token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects rubygems packages access", expected_status: :forbidden5280 behaves like rejects rubygems packages access5281 for user type guest5282 behaves like returning response status5283 returns forbidden5284 visibility: :public, user_role: :developer, member: true, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5285 behaves like rejects rubygems packages access5286 for user type developer5287 behaves like returning response status5288 returns unauthorized5289 visibility: :public, user_role: :guest, member: true, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5290 behaves like rejects rubygems packages access5291 for user type guest5292 behaves like returning response status5293 returns unauthorized5294 visibility: :public, user_role: :developer, member: false, token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects rubygems packages access", expected_status: :forbidden5295 behaves like rejects rubygems packages access5296 for user type developer5297 behaves like returning response status5298 returns forbidden5299 visibility: :public, user_role: :guest, member: false, token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects rubygems packages access", expected_status: :forbidden5300 behaves like rejects rubygems packages access5301 for user type guest5302 behaves like returning response status5303 returns forbidden5304 visibility: :public, user_role: :developer, member: false, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5305 behaves like rejects rubygems packages access5306 for user type developer5307 behaves like returning response status5308 returns unauthorized5309 visibility: :public, user_role: :guest, member: false, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5310 behaves like rejects rubygems packages access5311 for user type guest5312 behaves like returning response status5313 returns unauthorized5314 visibility: :public, user_role: :anonymous, member: false, token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5315 behaves like rejects rubygems packages access5316 for user type anonymous5317 behaves like returning response status5318 returns unauthorized5319 visibility: :private, user_role: :developer, member: true, token_type: :personal_access_token, valid_token: true, shared_examples_name: "process rubygems workhorse authorization", expected_status: :success5320 behaves like process rubygems workhorse authorization5321 for user type developer5322 has the proper content type5323 behaves like returning response status5324 returns success5325 with a request that bypassed gitlab-workhorse5326 behaves like returning response status5327 returns forbidden5328 visibility: :private, user_role: :guest, member: true, token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects rubygems packages access", expected_status: :forbidden5329 behaves like rejects rubygems packages access5330 for user type guest5331 behaves like returning response status5332 returns forbidden5333 visibility: :private, user_role: :developer, member: true, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5334 behaves like rejects rubygems packages access5335 for user type developer5336 behaves like returning response status5337 returns unauthorized5338 visibility: :private, user_role: :guest, member: true, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5339 behaves like rejects rubygems packages access5340 for user type guest5341 behaves like returning response status5342 returns unauthorized5343 visibility: :private, user_role: :developer, member: false, token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects rubygems packages access", expected_status: :not_found5344 behaves like rejects rubygems packages access5345 for user type developer5346 behaves like returning response status5347 returns not_found5348 visibility: :private, user_role: :guest, member: false, token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects rubygems packages access", expected_status: :not_found5349 behaves like rejects rubygems packages access5350 for user type guest5351 behaves like returning response status5352 returns not_found5353 visibility: :private, user_role: :developer, member: false, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5354 behaves like rejects rubygems packages access5355 for user type developer5356 behaves like returning response status5357 returns unauthorized5358 visibility: :private, user_role: :guest, member: false, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5359 behaves like rejects rubygems packages access5360 for user type guest5361 behaves like returning response status5362 returns unauthorized5363 visibility: :private, user_role: :anonymous, member: false, token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5364 behaves like rejects rubygems packages access5365 for user type anonymous5366 behaves like returning response status5367 returns unauthorized5368 visibility: :public, user_role: :developer, member: true, token_type: :job_token, valid_token: true, shared_examples_name: "process rubygems workhorse authorization", expected_status: :success5369 behaves like process rubygems workhorse authorization5370 for user type developer5371 has the proper content type5372 behaves like returning response status5373 returns success5374 with a request that bypassed gitlab-workhorse5375 behaves like returning response status5376 returns forbidden5377 visibility: :public, user_role: :guest, member: true, token_type: :job_token, valid_token: true, shared_examples_name: "rejects rubygems packages access", expected_status: :forbidden5378 behaves like rejects rubygems packages access5379 for user type guest5380 behaves like returning response status5381 returns forbidden5382 visibility: :public, user_role: :developer, member: true, token_type: :job_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5383 behaves like rejects rubygems packages access5384 for user type developer5385 behaves like returning response status5386 returns unauthorized5387 visibility: :public, user_role: :guest, member: true, token_type: :job_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5388 behaves like rejects rubygems packages access5389 for user type guest5390 behaves like returning response status5391 returns unauthorized5392 visibility: :public, user_role: :developer, member: false, token_type: :job_token, valid_token: true, shared_examples_name: "rejects rubygems packages access", expected_status: :forbidden5393 behaves like rejects rubygems packages access5394 for user type developer5395 behaves like returning response status5396 returns forbidden5397 visibility: :public, user_role: :guest, member: false, token_type: :job_token, valid_token: true, shared_examples_name: "rejects rubygems packages access", expected_status: :forbidden5398 behaves like rejects rubygems packages access5399 for user type guest5400 behaves like returning response status5401 returns forbidden5402 visibility: :public, user_role: :developer, member: false, token_type: :job_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5403 behaves like rejects rubygems packages access5404 for user type developer5405 behaves like returning response status5406 returns unauthorized5407 visibility: :public, user_role: :guest, member: false, token_type: :job_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5408 behaves like rejects rubygems packages access5409 for user type guest5410 behaves like returning response status5411 returns unauthorized5412 visibility: :private, user_role: :developer, member: true, token_type: :job_token, valid_token: true, shared_examples_name: "process rubygems workhorse authorization", expected_status: :success5413 behaves like process rubygems workhorse authorization5414 for user type developer5415 has the proper content type5416 behaves like returning response status5417 returns success5418 with a request that bypassed gitlab-workhorse5419 behaves like returning response status5420 returns forbidden5421 visibility: :private, user_role: :guest, member: true, token_type: :job_token, valid_token: true, shared_examples_name: "rejects rubygems packages access", expected_status: :forbidden5422 behaves like rejects rubygems packages access5423 for user type guest5424 behaves like returning response status5425 returns forbidden5426 visibility: :private, user_role: :developer, member: true, token_type: :job_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5427 behaves like rejects rubygems packages access5428 for user type developer5429 behaves like returning response status5430 returns unauthorized5431 visibility: :private, user_role: :guest, member: true, token_type: :job_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5432 behaves like rejects rubygems packages access5433 for user type guest5434 behaves like returning response status5435 returns unauthorized5436 visibility: :private, user_role: :developer, member: false, token_type: :job_token, valid_token: true, shared_examples_name: "rejects rubygems packages access", expected_status: :not_found5437 behaves like rejects rubygems packages access5438 for user type developer5439 behaves like returning response status5440 returns not_found5441 visibility: :private, user_role: :guest, member: false, token_type: :job_token, valid_token: true, shared_examples_name: "rejects rubygems packages access", expected_status: :not_found5442 behaves like rejects rubygems packages access5443 for user type guest5444 behaves like returning response status5445 returns not_found5446 visibility: :private, user_role: :developer, member: false, token_type: :job_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5447 behaves like rejects rubygems packages access5448 for user type developer5449 behaves like returning response status5450 returns unauthorized5451 visibility: :private, user_role: :guest, member: false, token_type: :job_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5452 behaves like rejects rubygems packages access5453 for user type guest5454 behaves like returning response status5455 returns unauthorized5456 visibility: :public, user_role: :developer, member: true, token_type: :deploy_token, valid_token: true, shared_examples_name: "process rubygems workhorse authorization", expected_status: :success5457 behaves like process rubygems workhorse authorization5458 for user type developer5459 has the proper content type5460 behaves like returning response status5461 returns success5462 with a request that bypassed gitlab-workhorse5463 behaves like returning response status5464 returns forbidden5465 visibility: :public, user_role: :developer, member: true, token_type: :deploy_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5466 behaves like rejects rubygems packages access5467 for user type developer5468 behaves like returning response status5469 returns unauthorized5470 visibility: :private, user_role: :developer, member: true, token_type: :deploy_token, valid_token: true, shared_examples_name: "process rubygems workhorse authorization", expected_status: :success5471 behaves like process rubygems workhorse authorization5472 for user type developer5473 has the proper content type5474 behaves like returning response status5475 returns success5476 with a request that bypassed gitlab-workhorse5477 behaves like returning response status5478 returns forbidden5479 visibility: :private, user_role: :developer, member: true, token_type: :deploy_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5480 behaves like rejects rubygems packages access5481 for user type developer5482 behaves like returning response status5483 returns unauthorized5484 POST /api/v4/projects/:project_id/packages/rubygems/api/v1/gems5485 with valid project5486 visibility: :public, user_role: :developer, member: true, token_type: :personal_access_token, valid_token: true, shared_examples_name: "process rubygems upload", expected_status: :created5487 behaves like process rubygems upload5488 for user type developer5489 with object storage disabled5490 without a file from workhorse5491 behaves like returning response status5492 returns bad_request5493 with correct params5494 behaves like package workhorse uploads5495 without a workhorse header5496 logs an error5497 behaves like returning response status5498 returns forbidden5499 behaves like creates rubygems package files5500 creates package files5501 returns bad request if package creation fails5502 behaves like a package tracking event5503 creates a gitlab tracking event push_package5504 with object storage enabled5505 and direct upload enabled5506 behaves like creates rubygems package files5507 creates package files5508 returns bad request if package creation fails5509 with invalid remote_id: 1231235510 behaves like returning response status5511 returns forbidden5512 with invalid remote_id: ../../1231235513 behaves like returning response status5514 returns forbidden5515 and direct upload disabled5516 behaves like creates rubygems package files5517 creates package files5518 returns bad request if package creation fails5519 visibility: :public, user_role: :guest, member: true, token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects rubygems packages access", expected_status: :forbidden5520 behaves like rejects rubygems packages access5521 for user type guest5522 behaves like returning response status5523 returns forbidden5524 visibility: :public, user_role: :developer, member: true, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5525 behaves like rejects rubygems packages access5526 for user type developer5527 behaves like returning response status5528 returns unauthorized5529 visibility: :public, user_role: :guest, member: true, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5530 behaves like rejects rubygems packages access5531 for user type guest5532 behaves like returning response status5533 returns unauthorized5534 visibility: :public, user_role: :developer, member: false, token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects rubygems packages access", expected_status: :forbidden5535 behaves like rejects rubygems packages access5536 for user type developer5537 behaves like returning response status5538 returns forbidden5539 visibility: :public, user_role: :guest, member: false, token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects rubygems packages access", expected_status: :forbidden5540 behaves like rejects rubygems packages access5541 for user type guest5542 behaves like returning response status5543 returns forbidden5544 visibility: :public, user_role: :developer, member: false, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5545 behaves like rejects rubygems packages access5546 for user type developer5547 behaves like returning response status5548 returns unauthorized5549 visibility: :public, user_role: :guest, member: false, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5550 behaves like rejects rubygems packages access5551 for user type guest5552 behaves like returning response status5553 returns unauthorized5554 visibility: :public, user_role: :anonymous, member: false, token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5555 behaves like rejects rubygems packages access5556 for user type anonymous5557 behaves like returning response status5558 returns unauthorized5559 visibility: :private, user_role: :developer, member: true, token_type: :personal_access_token, valid_token: true, shared_examples_name: "process rubygems upload", expected_status: :created5560 behaves like process rubygems upload5561 for user type developer5562 with object storage disabled5563 without a file from workhorse5564 behaves like returning response status5565 returns bad_request5566 with correct params5567 behaves like package workhorse uploads5568 without a workhorse header5569 logs an error5570 behaves like returning response status5571 returns forbidden5572 behaves like creates rubygems package files5573 creates package files5574 returns bad request if package creation fails5575 behaves like a package tracking event5576 creates a gitlab tracking event push_package5577 with object storage enabled5578 and direct upload enabled5579 behaves like creates rubygems package files5580 creates package files5581 returns bad request if package creation fails5582 with invalid remote_id: 1231235583 behaves like returning response status5584 returns forbidden5585 with invalid remote_id: ../../1231235586 behaves like returning response status5587 returns forbidden5588 and direct upload disabled5589 behaves like creates rubygems package files5590 creates package files5591 returns bad request if package creation fails5592 visibility: :private, user_role: :guest, member: true, token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects rubygems packages access", expected_status: :forbidden5593 behaves like rejects rubygems packages access5594 for user type guest5595 behaves like returning response status5596 returns forbidden5597 visibility: :private, user_role: :developer, member: true, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5598 behaves like rejects rubygems packages access5599 for user type developer5600 behaves like returning response status5601 returns unauthorized5602 visibility: :private, user_role: :guest, member: true, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5603 behaves like rejects rubygems packages access5604 for user type guest5605 behaves like returning response status5606 returns unauthorized5607 visibility: :private, user_role: :developer, member: false, token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects rubygems packages access", expected_status: :not_found5608 behaves like rejects rubygems packages access5609 for user type developer5610 behaves like returning response status5611 returns not_found5612 visibility: :private, user_role: :guest, member: false, token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects rubygems packages access", expected_status: :not_found5613 behaves like rejects rubygems packages access5614 for user type guest5615 behaves like returning response status5616 returns not_found5617 visibility: :private, user_role: :developer, member: false, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5618 behaves like rejects rubygems packages access5619 for user type developer5620 behaves like returning response status5621 returns unauthorized5622 visibility: :private, user_role: :guest, member: false, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5623 behaves like rejects rubygems packages access5624 for user type guest5625 behaves like returning response status5626 returns unauthorized5627 visibility: :private, user_role: :anonymous, member: false, token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5628 behaves like rejects rubygems packages access5629 for user type anonymous5630 behaves like returning response status5631 returns unauthorized5632 visibility: :public, user_role: :developer, member: true, token_type: :job_token, valid_token: true, shared_examples_name: "process rubygems upload", expected_status: :created5633 behaves like process rubygems upload5634 for user type developer5635 with object storage disabled5636 without a file from workhorse5637 behaves like returning response status5638 returns bad_request5639 with correct params5640 behaves like package workhorse uploads5641 without a workhorse header5642 logs an error5643 behaves like returning response status5644 returns forbidden5645 behaves like creates rubygems package files5646 creates package files5647 returns bad request if package creation fails5648 behaves like a package tracking event5649 creates a gitlab tracking event push_package5650 with object storage enabled5651 and direct upload enabled5652 behaves like creates rubygems package files5653 creates package files5654 returns bad request if package creation fails5655 with invalid remote_id: 1231235656 behaves like returning response status5657 returns forbidden5658 with invalid remote_id: ../../1231235659 behaves like returning response status5660 returns forbidden5661 and direct upload disabled5662 behaves like creates rubygems package files5663 creates package files5664 returns bad request if package creation fails5665 visibility: :public, user_role: :guest, member: true, token_type: :job_token, valid_token: true, shared_examples_name: "rejects rubygems packages access", expected_status: :forbidden5666 behaves like rejects rubygems packages access5667 for user type guest5668 behaves like returning response status5669 returns forbidden5670 visibility: :public, user_role: :developer, member: true, token_type: :job_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5671 behaves like rejects rubygems packages access5672 for user type developer5673 behaves like returning response status5674 returns unauthorized5675 visibility: :public, user_role: :guest, member: true, token_type: :job_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5676 behaves like rejects rubygems packages access5677 for user type guest5678 behaves like returning response status5679 returns unauthorized5680 visibility: :public, user_role: :developer, member: false, token_type: :job_token, valid_token: true, shared_examples_name: "rejects rubygems packages access", expected_status: :forbidden5681 behaves like rejects rubygems packages access5682 for user type developer5683 behaves like returning response status5684 returns forbidden5685 visibility: :public, user_role: :guest, member: false, token_type: :job_token, valid_token: true, shared_examples_name: "rejects rubygems packages access", expected_status: :forbidden5686 behaves like rejects rubygems packages access5687 for user type guest5688 behaves like returning response status5689 returns forbidden5690 visibility: :public, user_role: :developer, member: false, token_type: :job_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5691 behaves like rejects rubygems packages access5692 for user type developer5693 behaves like returning response status5694 returns unauthorized5695 visibility: :public, user_role: :guest, member: false, token_type: :job_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5696 behaves like rejects rubygems packages access5697 for user type guest5698 behaves like returning response status5699 returns unauthorized5700 visibility: :private, user_role: :developer, member: true, token_type: :job_token, valid_token: true, shared_examples_name: "process rubygems upload", expected_status: :created5701 behaves like process rubygems upload5702 for user type developer5703 with object storage disabled5704 without a file from workhorse5705 behaves like returning response status5706 returns bad_request5707 with correct params5708 behaves like package workhorse uploads5709 without a workhorse header5710 logs an error5711 behaves like returning response status5712 returns forbidden5713 behaves like creates rubygems package files5714 creates package files5715 returns bad request if package creation fails5716 behaves like a package tracking event5717 creates a gitlab tracking event push_package5718 with object storage enabled5719 and direct upload enabled5720 behaves like creates rubygems package files5721 creates package files5722 returns bad request if package creation fails5723 with invalid remote_id: 1231235724 behaves like returning response status5725 returns forbidden5726 with invalid remote_id: ../../1231235727 behaves like returning response status5728 returns forbidden5729 and direct upload disabled5730 behaves like creates rubygems package files5731 creates package files5732 returns bad request if package creation fails5733 visibility: :private, user_role: :guest, member: true, token_type: :job_token, valid_token: true, shared_examples_name: "rejects rubygems packages access", expected_status: :forbidden5734 behaves like rejects rubygems packages access5735 for user type guest5736 behaves like returning response status5737 returns forbidden5738 visibility: :private, user_role: :developer, member: true, token_type: :job_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5739 behaves like rejects rubygems packages access5740 for user type developer5741 behaves like returning response status5742 returns unauthorized5743 visibility: :private, user_role: :guest, member: true, token_type: :job_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5744 behaves like rejects rubygems packages access5745 for user type guest5746 behaves like returning response status5747 returns unauthorized5748 visibility: :private, user_role: :developer, member: false, token_type: :job_token, valid_token: true, shared_examples_name: "rejects rubygems packages access", expected_status: :not_found5749 behaves like rejects rubygems packages access5750 for user type developer5751 behaves like returning response status5752 returns not_found5753 visibility: :private, user_role: :guest, member: false, token_type: :job_token, valid_token: true, shared_examples_name: "rejects rubygems packages access", expected_status: :not_found5754 behaves like rejects rubygems packages access5755 for user type guest5756 behaves like returning response status5757 returns not_found5758 visibility: :private, user_role: :developer, member: false, token_type: :job_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5759 behaves like rejects rubygems packages access5760 for user type developer5761 behaves like returning response status5762 returns unauthorized5763 visibility: :private, user_role: :guest, member: false, token_type: :job_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5764 behaves like rejects rubygems packages access5765 for user type guest5766 behaves like returning response status5767 returns unauthorized5768 visibility: :public, user_role: :developer, member: true, token_type: :deploy_token, valid_token: true, shared_examples_name: "process rubygems upload", expected_status: :created5769 behaves like process rubygems upload5770 for user type developer5771 with object storage disabled5772 without a file from workhorse5773 behaves like returning response status5774 returns bad_request5775 with correct params5776 behaves like package workhorse uploads5777 without a workhorse header5778 logs an error5779 behaves like returning response status5780 returns forbidden5781 behaves like creates rubygems package files5782 creates package files5783 returns bad request if package creation fails5784 behaves like a package tracking event5785 creates a gitlab tracking event push_package5786 with object storage enabled5787 and direct upload enabled5788 behaves like creates rubygems package files5789 creates package files5790 returns bad request if package creation fails5791 with invalid remote_id: 1231235792 behaves like returning response status5793 returns forbidden5794 with invalid remote_id: ../../1231235795 behaves like returning response status5796 returns forbidden5797 and direct upload disabled5798 behaves like creates rubygems package files5799 creates package files5800 returns bad request if package creation fails5801 visibility: :public, user_role: :developer, member: true, token_type: :deploy_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5802 behaves like rejects rubygems packages access5803 for user type developer5804 behaves like returning response status5805 returns unauthorized5806 visibility: :private, user_role: :developer, member: true, token_type: :deploy_token, valid_token: true, shared_examples_name: "process rubygems upload", expected_status: :created5807 behaves like process rubygems upload5808 for user type developer5809 with object storage disabled5810 without a file from workhorse5811 behaves like returning response status5812 returns bad_request5813 with correct params5814 behaves like package workhorse uploads5815 without a workhorse header5816 logs an error5817 behaves like returning response status5818 returns forbidden5819 behaves like creates rubygems package files5820 creates package files5821 returns bad request if package creation fails5822 behaves like a package tracking event5823 creates a gitlab tracking event push_package5824 with object storage enabled5825 and direct upload enabled5826 behaves like creates rubygems package files5827 creates package files5828 returns bad request if package creation fails5829 with invalid remote_id: 1231235830 behaves like returning response status5831 returns forbidden5832 with invalid remote_id: ../../1231235833 behaves like returning response status5834 returns forbidden5835 and direct upload disabled5836 behaves like creates rubygems package files5837 creates package files5838 returns bad request if package creation fails5839 visibility: :private, user_role: :developer, member: true, token_type: :deploy_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5840 behaves like rejects rubygems packages access5841 for user type developer5842 behaves like returning response status5843 returns unauthorized5844 failed package file save5845 does not create package record5846 GET /api/v4/projects/:project_id/packages/rubygems/api/v1/dependencies5847 with valid project5848 visibility: :public, user_role: :developer, member: true, token_type: :personal_access_token, valid_token: true, shared_examples_name: "dependency endpoint success", expected_status: :success5849 behaves like dependency endpoint success5850 for user type developer5851 with no params5852 returns empty5853 with gems params5854 returns successfully5855 rejects if the service fails5856 visibility: :public, user_role: :guest, member: true, token_type: :personal_access_token, valid_token: true, shared_examples_name: "dependency endpoint success", expected_status: :success5857 behaves like dependency endpoint success5858 for user type guest5859 with no params5860 returns empty5861 with gems params5862 returns successfully5863 rejects if the service fails5864 visibility: :public, user_role: :developer, member: true, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5865 behaves like rejects rubygems packages access5866 for user type developer5867 behaves like returning response status5868 returns unauthorized5869 visibility: :public, user_role: :guest, member: true, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5870 behaves like rejects rubygems packages access5871 for user type guest5872 behaves like returning response status5873 returns unauthorized5874 visibility: :public, user_role: :developer, member: false, token_type: :personal_access_token, valid_token: true, shared_examples_name: "dependency endpoint success", expected_status: :success5875 behaves like dependency endpoint success5876 for user type developer5877 with no params5878 returns empty5879 with gems params5880 returns successfully5881 rejects if the service fails5882 visibility: :public, user_role: :guest, member: false, token_type: :personal_access_token, valid_token: true, shared_examples_name: "dependency endpoint success", expected_status: :success5883 behaves like dependency endpoint success5884 for user type guest5885 with no params5886 returns empty5887 with gems params5888 returns successfully5889 rejects if the service fails5890 visibility: :public, user_role: :developer, member: false, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5891 behaves like rejects rubygems packages access5892 for user type developer5893 behaves like returning response status5894 returns unauthorized5895 visibility: :public, user_role: :guest, member: false, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5896 behaves like rejects rubygems packages access5897 for user type guest5898 behaves like returning response status5899 returns unauthorized5900 visibility: :public, user_role: :anonymous, member: false, token_type: :personal_access_token, valid_token: true, shared_examples_name: "dependency endpoint success", expected_status: :success5901 behaves like dependency endpoint success5902 for user type anonymous5903 with no params5904 returns empty5905 with gems params5906 returns successfully5907 rejects if the service fails5908 visibility: :private, user_role: :developer, member: true, token_type: :personal_access_token, valid_token: true, shared_examples_name: "dependency endpoint success", expected_status: :success5909 behaves like dependency endpoint success5910 for user type developer5911 with no params5912 returns empty5913 with gems params5914 returns successfully5915 rejects if the service fails5916 visibility: :private, user_role: :guest, member: true, token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects rubygems packages access", expected_status: :forbidden5917 behaves like rejects rubygems packages access5918 for user type guest5919 behaves like returning response status5920 returns forbidden5921 visibility: :private, user_role: :developer, member: true, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5922 behaves like rejects rubygems packages access5923 for user type developer5924 behaves like returning response status5925 returns unauthorized5926 visibility: :private, user_role: :guest, member: true, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5927 behaves like rejects rubygems packages access5928 for user type guest5929 behaves like returning response status5930 returns unauthorized5931 visibility: :private, user_role: :developer, member: false, token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects rubygems packages access", expected_status: :not_found5932 behaves like rejects rubygems packages access5933 for user type developer5934 behaves like returning response status5935 returns not_found5936 visibility: :private, user_role: :guest, member: false, token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects rubygems packages access", expected_status: :not_found5937 behaves like rejects rubygems packages access5938 for user type guest5939 behaves like returning response status5940 returns not_found5941 visibility: :private, user_role: :developer, member: false, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5942 behaves like rejects rubygems packages access5943 for user type developer5944 behaves like returning response status5945 returns unauthorized5946 visibility: :private, user_role: :guest, member: false, token_type: :personal_access_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5947 behaves like rejects rubygems packages access5948 for user type guest5949 behaves like returning response status5950 returns unauthorized5951 visibility: :private, user_role: :anonymous, member: false, token_type: :personal_access_token, valid_token: true, shared_examples_name: "rejects rubygems packages access", expected_status: :not_found5952 behaves like rejects rubygems packages access5953 for user type anonymous5954 behaves like returning response status5955 returns not_found5956 visibility: :public, user_role: :developer, member: true, token_type: :job_token, valid_token: true, shared_examples_name: "dependency endpoint success", expected_status: :success5957 behaves like dependency endpoint success5958 for user type developer5959 with no params5960 returns empty5961 with gems params5962 returns successfully5963 rejects if the service fails5964 visibility: :public, user_role: :guest, member: true, token_type: :job_token, valid_token: true, shared_examples_name: "dependency endpoint success", expected_status: :success5965 behaves like dependency endpoint success5966 for user type guest5967 with no params5968 returns empty5969 with gems params5970 returns successfully5971 rejects if the service fails5972 visibility: :public, user_role: :developer, member: true, token_type: :job_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5973 behaves like rejects rubygems packages access5974 for user type developer5975 behaves like returning response status5976 returns unauthorized5977 visibility: :public, user_role: :guest, member: true, token_type: :job_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5978 behaves like rejects rubygems packages access5979 for user type guest5980 behaves like returning response status5981 returns unauthorized5982 visibility: :public, user_role: :developer, member: false, token_type: :job_token, valid_token: true, shared_examples_name: "dependency endpoint success", expected_status: :success5983 behaves like dependency endpoint success5984 for user type developer5985 with no params5986 returns empty5987 with gems params5988 returns successfully5989 rejects if the service fails5990 visibility: :public, user_role: :guest, member: false, token_type: :job_token, valid_token: true, shared_examples_name: "dependency endpoint success", expected_status: :success5991 behaves like dependency endpoint success5992 for user type guest5993 with no params5994 returns empty5995 with gems params5996 returns successfully5997 rejects if the service fails5998 visibility: :public, user_role: :developer, member: false, token_type: :job_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized5999 behaves like rejects rubygems packages access6000 for user type developer6001 behaves like returning response status6002 returns unauthorized6003 visibility: :public, user_role: :guest, member: false, token_type: :job_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized6004 behaves like rejects rubygems packages access6005 for user type guest6006 behaves like returning response status6007 returns unauthorized6008 visibility: :private, user_role: :developer, member: true, token_type: :job_token, valid_token: true, shared_examples_name: "dependency endpoint success", expected_status: :success6009 behaves like dependency endpoint success6010 for user type developer6011 with no params6012 returns empty6013 with gems params6014 returns successfully6015 rejects if the service fails6016 visibility: :private, user_role: :guest, member: true, token_type: :job_token, valid_token: true, shared_examples_name: "rejects rubygems packages access", expected_status: :forbidden6017 behaves like rejects rubygems packages access6018 for user type guest6019 behaves like returning response status6020 returns forbidden6021 visibility: :private, user_role: :developer, member: true, token_type: :job_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized6022 behaves like rejects rubygems packages access6023 for user type developer6024 behaves like returning response status6025 returns unauthorized6026 visibility: :private, user_role: :guest, member: true, token_type: :job_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized6027 behaves like rejects rubygems packages access6028 for user type guest6029 behaves like returning response status6030 returns unauthorized6031 visibility: :private, user_role: :developer, member: false, token_type: :job_token, valid_token: true, shared_examples_name: "rejects rubygems packages access", expected_status: :not_found6032 behaves like rejects rubygems packages access6033 for user type developer6034 behaves like returning response status6035 returns not_found6036 visibility: :private, user_role: :guest, member: false, token_type: :job_token, valid_token: true, shared_examples_name: "rejects rubygems packages access", expected_status: :not_found6037 behaves like rejects rubygems packages access6038 for user type guest6039 behaves like returning response status6040 returns not_found6041 visibility: :private, user_role: :developer, member: false, token_type: :job_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized6042 behaves like rejects rubygems packages access6043 for user type developer6044 behaves like returning response status6045 returns unauthorized6046 visibility: :private, user_role: :guest, member: false, token_type: :job_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized6047 behaves like rejects rubygems packages access6048 for user type guest6049 behaves like returning response status6050 returns unauthorized6051 visibility: :public, user_role: :developer, member: true, token_type: :deploy_token, valid_token: true, shared_examples_name: "dependency endpoint success", expected_status: :success6052 behaves like dependency endpoint success6053 for user type developer6054 with no params6055 returns empty6056 with gems params6057 returns successfully6058 rejects if the service fails6059 visibility: :public, user_role: :developer, member: true, token_type: :deploy_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized6060 behaves like rejects rubygems packages access6061 for user type developer6062 behaves like returning response status6063 returns unauthorized6064 visibility: :private, user_role: :developer, member: true, token_type: :deploy_token, valid_token: true, shared_examples_name: "dependency endpoint success", expected_status: :success6065 behaves like dependency endpoint success6066 for user type developer6067 with no params6068 returns empty6069 with gems params6070 returns successfully6071 rejects if the service fails6072 visibility: :private, user_role: :developer, member: true, token_type: :deploy_token, valid_token: false, shared_examples_name: "rejects rubygems packages access", expected_status: :unauthorized6073 behaves like rejects rubygems packages access6074 for user type developer6075 behaves like returning response status6076 returns unauthorized6077 with access to package registry for everyone6078 behaves like dependency endpoint success6079 for user type anonymous6080 with no params6081 returns empty6082 with gems params6083 returns successfully6084 rejects if the service fails6085UsersController6086 GET #show6087 when the user exists and has public visibility6088 when logged in6089 behaves like renders the show template6090 renders the show template6091 when logged out6092 behaves like renders the show template6093 renders the show template6094 when public visibility level is restricted6095 when logged out6096 redirects to login page6097 when logged in6098 behaves like renders the show template6099 renders the show template6100 when a user by that username does not exist6101 when logged out6102 redirects to login page6103 when logged in6104 renders 4046105 requested in json format6106 returns 404 with deprecation message6107 GET /users/:username (deprecated user top)6108 redirects to /user16109 GET #activity6110 when the user exists and has public visibility6111 when logged in6112 behaves like renders the show template6113 renders the show template6114 when logged out6115 behaves like renders the show template6116 renders the show template6117 when public visibility level is restricted6118 when logged out6119 redirects to login page6120 when logged in6121 behaves like renders the show template6122 renders the show template6123 when a user by that username does not exist6124 when logged out6125 redirects to login page6126 when logged in6127 renders 4046128 requested in json format6129 when profile_tabs_vue feature flag is turned OFF6130 loads events6131 hides events if the user cannot read cross project6132 hides events if the user has a private profile6133 when profile_tabs_vue feature flag is turned ON6134 loads events6135 hides events if the user cannot read cross project6136 hides events if the user has a private profile6137 hides events if the user has a private profile6138 GET #ssh_keys6139 non existent user6140 does not generally work6141 user with no keys6142 responds the empty body with text/plain content type6143 user with keys6144 while signed in6145 behaves like renders all public keys6146 renders all non-deploy keys terminated with a new line with text/plain content type without the comment key6147 when logged out6148 behaves like renders all public keys6149 renders all non-deploy keys terminated with a new line with text/plain content type without the comment key6150 when public visibility is restricted6151 redirects to sign in6152 GET #gpg_keys6153 non existent user6154 does not generally work6155 user with no keys6156 responds the empty body with text/plain content type6157 user with keys6158 while signed in6159 behaves like renders all verified GPG keys6160 renders all verified keys terminated with a new line with text/plain content type6161 when logged out6162 behaves like renders all verified GPG keys6163 renders all verified keys terminated with a new line with text/plain content type6164 when revoked6165 while signed in6166 behaves like doesn't render revoked keys6167 doesn't render revoked keys6168 when logged out6169 behaves like doesn't render revoked keys6170 doesn't render revoked keys6171 GET #calendar6172 for user6173 with public profile6174 renders calendar6175 with private profile6176 does not render calendar6177 forked project6178 includes forked projects6179 GET #calendar_activities6180 renders activities on the specified day6181 for user6182 with public profile6183 renders calendar_activities6184 renders the correct url for issues and work items6185 avoids N+1 queries6186 with private profile6187 does not render calendar_activities6188 external authorization6189 behaves like disabled when using an external authorization service6190 works when the feature is not enabled6191 renders a 404 with a message when the feature is enabled6192 GET #contributed6193 format: html6194 with public profile6195 behaves like renders contributed projects6196 renders contributed projects6197 does not list projects aimed for deletion6198 with private profile6199 returns 4046200 with a user that has the ability to read private profiles6201 behaves like renders contributed projects6202 renders contributed projects6203 does not list projects aimed for deletion6204 format: json6205 with public profile6206 behaves like renders contributed projects6207 renders contributed projects6208 does not list projects aimed for deletion6209 with private profile6210 returns 4046211 with a user that has the ability to read private profiles6212 behaves like renders contributed projects6213 renders contributed projects6214 does not list projects aimed for deletion6215 GET #starred6216 format: html6217 with public profile6218 behaves like renders starred projects6219 renders starred projects6220 does not list projects aimed for deletion6221 with private profile6222 returns 4046223 with a user that has the ability to read private profiles6224 behaves like renders starred projects6225 renders starred projects6226 does not list projects aimed for deletion6227 format: json6228 with public profile6229 behaves like renders starred projects6230 renders starred projects6231 does not list projects aimed for deletion6232 with private profile6233 returns 4046234 with a user that has the ability to read private profiles6235 behaves like renders starred projects6236 renders starred projects6237 does not list projects aimed for deletion6238 GET #snippets6239 format html6240 renders snippets page6241 format json6242 response with snippets json data6243 external authorization6244 behaves like disabled when using an external authorization service6245 works when the feature is not enabled6246 renders a 404 with a message when the feature is enabled6247 GET #exists6248 when user exists6249 returns JSON indicating the user exists6250 when the casing is different6251 returns JSON indicating the user exists6252 when the user does not exist6253 will not show a signup page if registration is disabled6254 returns JSON indicating the user does not exist6255 when a user changed their username6256 returns JSON indicating a user by that username does not exist6257 when a project has the same name as a desired username6258 returns JSON indicating a user by that username does not exist6259 when the rate limit has been reached6260 returns status 429 Too Many Requests6261 #ensure_canonical_path6262 for a GET request6263 when requesting users at the root path6264 when requesting the canonical path6265 with exactly matching casing6266 responds with success6267 with different casing6268 redirects to the correct casing6269 when requesting a redirected path6270 behaves like redirects to the canonical path6271 redirects to the canonical path6272 when the old path is a substring of the scheme or host6273 behaves like redirects to the canonical path6274 redirects to the canonical path6275 when the old path is substring of users6276 behaves like redirects to the canonical path6277 redirects to the canonical path6278 when requesting users under the /users path6279 when requesting the canonical path6280 with exactly matching casing6281 responds with success6282 with different casing6283 redirects to the correct casing6284 when requesting a redirected path6285 behaves like redirects to the canonical path6286 redirects to the canonical path6287 when the old path is a substring of the scheme or host6288 behaves like redirects to the canonical path6289 redirects to the canonical path6290 when the old path is substring of users6291 behaves like redirects to the canonical path6292 redirects to the canonical path6293 POST #follow6294 when over followee limit6295WARNING: Active Record does not support composite primary key.6296user_follow_users has composite primary key. Composite primary key is ignored.6297 alerts and not follow6298 when user or followee disabled following6299 alerts and not follow if user disabled following6300 alerts and not follow if followee disabled following6301 token authentication6302 behaves like authenticates sessionless user for the request spec6303 show atom6304 when the 'private_token' param is populated with the personal access token6305 when valid token6306 when resource is public6307 authenticates user and returns response with ok status6308 when user with expired password6309 does not authenticate user and returns response with ok status6310 when the personal access token has no api scope6311 when resource is public6312 does not authenticate user and returns response with ok status6313 when invalid token6314 when resource is public6315 does not authenticate user and returns response with ok status6316 when the 'PRIVATE-TOKEN' header is populated with the personal access token6317 when valid token6318 when resource is public6319 authenticates user and returns response with ok status6320 when user with expired password6321 does not authenticate user and returns response with ok status6322 when the personal access token has no api scope6323 when resource is public6324 does not authenticate user and returns response with ok status6325 when invalid token6326 when resource is public6327 does not authenticate user and returns response with ok status6328 when the 'feed_token' param is populated with the feed token6329 when valid token6330 when resource is public6331 authenticates user and returns response with ok status6332 when user with expired password6333 does not authenticate user and returns response with ok status6334 when invalid token6335 when resource is public6336 does not authenticate user and returns response with ok status6337API::Internal::Base6338 GET /internal/check6339 is expected to equal true6340 returns false for field `redis` when redis is unavailable6341 authenticating6342 authenticates using a jwt token in a header6343 returns 401 when jwt token is expired6344 returns 401 when jwt issuer is not Gitlab-Shell6345 returns 401 when jwt token is not provided, even if plain secret is provided6346 GET /internal/two_factor_recovery_codes6347 behaves like actor key validations6348 key does not exist6349 returns an error message6350 key without user6351 returns an error message6352 key is a deploy key6353 returns an error message6354 when two-factor is enabled6355 returns new recovery codes when the user exists6356 when two-factor is not enabled6357 returns an error message6358 POST /internal/personal_access_token6359 returns an error message when given an non existent user6360 returns an error message when no name parameter is received6361 returns an error message when no scopes parameter is received6362 returns an error message when expires_at contains an invalid date6363 returns an error message when it receives an invalid scope6364 returns a token with expiry when it receives a valid expires_at parameter6365 returns token with expiry as PersonalAccessToken::MAX_PERSONAL_ACCESS_TOKEN_LIFETIME_IN_DAYS6366 behaves like actor key validations6367 key does not exist6368 returns an error message6369 key without user6370 returns an error message6371 key is a deploy key6372 returns an error message6373 POST /internal/lfs_authenticate6374 user key6375 returns the correct information about the key6376 returns the correct information about the user6377 returns a 404 when no key or user is provided6378 returns a 404 when the wrong key is provided6379 returns a 404 when the wrong user is provided6380 returns a 404 when LFS is disabled on the project6381 other repository types6382 returns the correct information for a project wiki6383 returns a 404 when the container does not support LFS6384 deploy key6385 returns the correct information about the key6386 GET /internal/discover6387 finds a user by key id6388 finds a user by username6389 responds successfully when a user is not found6390 response successfully when passing invalid params6391 when signing key is passed6392 does not authenticate user6393 when auth-only key is passed6394 authenticates user6395 GET /internal/authorized_keys6396 returns 404 with a partial key6397 returns 404 with an not valid base64 string6398 using an existing key6399 finds the key6400 exposes the comment of the key as a simple identifier of username + hostname6401 when signing key is passed6402 does not return the key6403 when auth-only key is passed6404 authenticates user6405 POST /internal/allowed6406 access granted6407 git push with project.wiki6408 responds with success6409 behaves like sets hook env6410 sets env in RequestStore6411 git pull with project.wiki6412 responds with success6413 git push with personal snippet6414 responds with success6415 behaves like sets hook env and routes to primary6416 sets env in RequestStore and routes gRPC messages to primary6417 git pull with personal snippet6418 responds with success6419 git push with project snippet6420 responds with success6421 behaves like sets hook env and routes to primary6422 sets env in RequestStore and routes gRPC messages to primary6423 git pull with project snippet6424 responds with success6425 git pull6426 with a feature flag enabled globally6427 has the correct payload6428 behaves like rate limited request6429 is throttled by rate limiter6430 is not throttled by rate limiter6431 when the IP is in a trusted range6432 is not throttled by rate limiter6433 when user_id is passed6434 behaves like rate limited request6435 is throttled by rate limiter6436 is not throttled by rate limiter6437 updates user's activity data6438 when the IP is in a trusted range6439 is not throttled by rate limiter6440 with a feature flag enabled for a project6441 has the flag set to true for that project6442 has the flag set to false for other projects6443 git push6444 project as namespace/project6445 is expected to eql Fri, 02 Jun 20236446 behaves like rate limited request6447 is throttled by rate limiter6448 is not throttled by rate limiter6449 when the IP is in a trusted range6450 is not throttled by rate limiter6451 when receive_max_input_size has been updated6452 returns maxInputSize and partial clone git config6453 when receive_max_input_size is empty6454 returns partial clone git config6455 with Project6456 behaves like storing arguments in the application context for the API6457 places the expected params in the application context6458 with PersonalSnippet6459 behaves like storing arguments in the application context for the API6460 places the expected params in the application context6461 with ProjectSnippet6462 behaves like storing arguments in the application context for the API6463 places the expected params in the application context6464 access denied6465 git pull6466 is expected to be nil6467 git push6468 is expected to be nil6469 with a pending membership6470 returns not found for git pull6471 returns not found for git push6472 custom action6473 git push6474 is expected to eql Fri, 02 Jun 20236475 console message6476 git pull6477 with a key that has expired6478 includes the `key expired` message in the response and fails6479 with a key that will expire in the next 7 days6480 includes the `key expiring soon` message in the response6481 with a key that has no expiry6482 does not include any message in the response6483 blocked user6484 git pull6485 is expected to be nil6486 git push6487 is expected to be nil6488 request times out6489 git push6490 responds with a gateway timeout6491 archived project6492 git pull6493 is expected to be truthy6494 git push6495 is expected to be falsey6496 deploy key6497 added to project6498 is expected to eq "secret"6499 behaves like rate limited request6500 is throttled by rate limiter6501 is not throttled by rate limiter6502 when the IP is in a trusted range6503 is not throttled by rate limiter6504 not added to project6505 is expected to be falsey6506 project does not exist6507 git pull6508 returns a 200 response with status: false6509 returns a 200 response when using a project path that does not exist6510 git push6511 from a user/group namespace6512 creates the project6513 from the personal snippet path6514 does not create snippet6515 from a project path6516 from an non existent project path6517 does not create project6518 does not create snippet6519 from an existent project path6520 does not create snippet6521 user does not exist6522 is expected to be falsey6523 ssh access has been disabled6524 rejects the SSH push6525 rejects the SSH pull6526 http access has been disabled6527 rejects the HTTP push6528 rejects the HTTP pull6529 web actions are always allowed6530 allows WEB push6531 the project path was changed6532 rejects the push6533 rejects the SSH pull6534 for design repositories6535 does not allow access6536 admin mode6537 application setting :admin_mode is enabled6538 with an admin user6539 is member of the project6540 behaves like pushes succeed for ssh and http6541 accepts the SSH push6542 accepts the HTTP push6543 is not member of the project6544 behaves like pushes succeed for ssh and http6545 accepts the SSH push6546 accepts the HTTP push6547 with a regular user6548 is member of the project6549 behaves like pushes succeed for ssh and http6550 accepts the SSH push6551 accepts the HTTP push6552 is not member of the project6553 behaves like pushes fail for ssh and http6554 rejects the SSH push6555 rejects the HTTP push6556 application setting :admin_mode is disabled6557 with an admin user6558 is member of the project6559 behaves like pushes succeed for ssh and http6560 accepts the SSH push6561 accepts the HTTP push6562 is not member of the project6563 behaves like pushes succeed for ssh and http6564 accepts the SSH push6565 accepts the HTTP push6566 with a regular user6567 is member of the project6568 behaves like pushes succeed for ssh and http6569 accepts the SSH push6570 accepts the HTTP push6571 is not member of the project6572 behaves like pushes fail for ssh and http6573 rejects the SSH push6574 rejects the HTTP push6575 POST /internal/post_receive6576 with Project6577 behaves like runs post-receive hooks6578 executes PostReceiveService6579 tries to notify that the container has moved6580 behaves like storing arguments in the application context for the API6581 places the expected params in the application context6582 with PersonalSnippet6583 behaves like runs post-receive hooks6584 executes PostReceiveService6585 tries to notify that the container has moved6586 behaves like storing arguments in the application context for the API6587 places the expected params in the application context6588 with ProjectSnippet6589 behaves like runs post-receive hooks6590 executes PostReceiveService6591 tries to notify that the container has moved6592 behaves like storing arguments in the application context for the API6593 places the expected params in the application context6594 with ProjectWiki6595 behaves like runs post-receive hooks6596 executes PostReceiveService6597 tries to notify that the container has moved6598 behaves like storing arguments in the application context for the API6599 places the expected params in the application context6600 with an orphaned write deploy key6601 does not try to notify that project moved6602 when container is nil6603 does not try to notify that project moved6604 POST /internal/pre_receive6605 decreases the reference counter and returns the result6606 POST /internal/two_factor_config6607 behaves like actor key validations6608 key does not exist6609 returns an error message6610 key without user6611 returns an error message6612 when the key is a deploy key6613 does not required two factor6614 when two-factor is enabled6615 returns user two factor config6616 when two-factor is not enabled6617 returns an error message6618 two_factor_for_cli feature is disabled6619 when two-factor is enabled for the user6620 returns user two factor config6621 POST /internal/two_factor_manual_otp_check6622 is not available6623 POST /internal/two_factor_push_otp_check6624 is not available6625 POST /internal/two_factor_manual_otp_check6626 is not available6627 POST /internal/two_factor_push_otp_check6628 is not available6629Projects::JobsController6630 GET index6631 when scope is pending6632 has only pending builds6633 when scope is running6634 has only running jobs6635 when scope is finished6636 has only finished jobs6637 when page is specified6638 when page number is eligible6639 redirects to the page6640 number of queries6641 verifies number of queries6642 GET show6643 when requesting HTML6644 when job exists6645 has a job6646 when job does not exist6647 renders not_found6648 when requesting JSON6649 does not serialize builds in exposed stages6650 exposes the stage the job belongs to6651 when job failed6652 exposes needed information6653 when job is running6654 job is cancelable6655 cancel_path is present with correct redirect6656 with web terminal6657 exposes the terminal path6658 when job has artifacts6659 with not expiry date6660 when artifacts are unlocked6661 exposes needed information6662 when artifacts are locked6663 exposes needed information6664 with expired artifacts6665 when artifacts are unlocked6666 exposes needed information6667 when artifacts are locked6668 exposes needed information6669 when job passed with no trace6670 exposes empty state illustrations6671 with no deployment6672 does not exposes the deployment information6673 with deployment6674 exposes the deployment information6675 when user can edit runner6676 that belongs to the project6677 user can edit runner6678 that belongs to group6679 user can not edit runner6680 that belongs to instance6681 user can not edit runner6682 when no runners are available6683 exposes needed information6684 when no runner is online6685 exposes needed information6686 settings_path6687 when user is developer6688 settings_path is not available6689 when user is maintainer6690 when admin mode is disabled6691 settings_path is not available6692 when admin mode is enabled6693 settings_path is available6694 when no trace is available6695 has_trace is false6696 when job has live trace6697 has_trace is true6698 when has live trace and unarchived artifact6699 has_trace is true6700 when requesting triggered job JSON6701 with no variables6702 exposes trigger information6703 with variables6704 user is a maintainer6705 returns a job_detail6706 exposes trigger information and variables6707 exposes correct variable properties6708 user is not a mantainer6709 returns a job_detail6710 exposes trigger information and variables6711 exposes correct variable properties6712 GET trace.json6713 when job has a trace artifact6714 returns a trace6715 when debug_mode? is enabled6716 with proper permissions on a project6717 returns response ok6718 without proper permissions for debug logging6719 returns response forbidden6720 when job has a live trace6721 behaves like returns trace6722 returns a trace6723 when job has unarchived artifact6724 behaves like returns trace6725 returns a trace6726 when job is running6727 sets being-watched flag for the job6728 when job is not running6729 does not set being-watched flag for the job6730 when job has no traces6731 returns no traces6732 when job has a trace with ANSI sequence and Unicode6733 returns a trace with Unicode6734 when trace artifact is in ObjectStorage6735 when there are no network issues6736 returns a trace6737 when there is a network issue6738 returns a trace6739 POST retry6740 when job is not retryable6741 and the job is a bridge6742 renders unprocessable_entity6743 and the job is a build6744 renders unprocessable_entity6745 when job is retryable6746 and the job is a bridge6747 responds :ok6748 and the job is a build6749 redirects to the retried job page6750 with branch pipeline6751 behaves like retried job has the same attributes6752 creates a new build has the same attributes from the previous build6753 with tag pipeline6754 behaves like retried job has the same attributes6755 creates a new build has the same attributes from the previous build6756 POST play6757 when job is playable6758 redirects to the played job page6759 transits to pending6760 when job variables are specified6761 assigns the job variables6762 when job is bridge6763 redirects to the pipeline page6764 transits to pending6765 when job is not playable6766 renders unprocessable_entity6767 POST cancel6768 when user is authorized to cancel the build6769 when continue url is present6770 when continue to is a safe url6771 redirects to the continue url6772 transits to canceled6773 when continue to is not a safe url6774 redirects to the builds page6775 when continue url is not present6776 when job is cancelable6777 redirects to the builds page6778 transits to canceled6779 when job is not cancelable6780 returns unprocessable_entity6781 when user is not authorized to cancel the build6782 responds with not_found6783 does not transit to canceled6784 POST unschedule6785 when user is authorized to unschedule the build6786 when job is scheduled6787 redirects to the unscheduled job page6788 transits to manual6789 when job is not scheduled6790 renders unprocessable_entity6791 when user is not authorized to unschedule the build6792 responds with not_found6793 does not transit to scheduled6794 POST erase6795 when project is not undergoing stats refresh6796 when job is successful and has artifacts6797 behaves like erases6798 redirects to the erased job page6799 erases artifacts6800 erases trace6801 when job has live trace and unarchived artifact6802 behaves like erases6803 redirects to the erased job page6804 erases artifacts6805 erases trace6806 when job is erased6807 returns unprocessable_entity6808 when user is developer6809 when triggered by same user6810 has successful status6811 when triggered by different user6812 does not have successful status6813 when project is undergoing stats refresh6814 behaves like preventing request because of ongoing project stats refresh6815 logs about the rejected request6816 returns 409 error6817 does not erase artifacts6818 GET raw6819 when job has a trace artifact6820 sets Gitlab-Workhorse-Detect-Content-Type header6821 when CI_DEBUG_TRACE and/or CI_DEBUG_SERVICES are enabled6822 ci_debug_trace: true, ci_debug_services: true6823 with proper permissions for debug logging on a project6824 returns response ok6825 without proper permissions for debug logging on a project6826 returns response forbidden if dev mode enabled6827 ci_debug_trace: true, ci_debug_services: false6828 with proper permissions for debug logging on a project6829 returns response ok6830 without proper permissions for debug logging on a project6831 returns response forbidden if dev mode enabled6832 ci_debug_trace: false, ci_debug_services: true6833 with proper permissions for debug logging on a project6834 returns response ok6835 without proper permissions for debug logging on a project6836 returns response forbidden if dev mode enabled6837 ci_debug_trace: false, ci_debug_services: false6838 with proper permissions for debug logging on a project6839 returns response ok6840 without proper permissions for debug logging on a project6841 returns response forbidden if dev mode enabled6842 when job has a live trace6843 behaves like sends live trace6844 sends a trace file6845 and when job has unarchived artifact6846 behaves like sends live trace6847 sends a trace file6848 when job does not have a trace file6849 returns not_found6850 when the trace artifact is in ObjectStorage6851 redirect to the trace file url6852 GET #terminal6853 when job exists6854 and it has a terminal6855 has a job6856 and does not have a terminal6857 returns not_found6858 when job does not exist6859 renders not_found6860 GET #terminal_websocket_authorize6861 with valid workhorse signature6862 and valid id6863 returns the terminal for the job6864 and invalid id6865 returns 4046866 with invalid workhorse signature6867 aborts with an exception6868 GET #proxy_websocket_authorize6869 converts the url scheme into wss6870 access rights6871 with admin6872 when admin mode is enabled6873 returns 2006874 when admin mode is disabled6875 returns 4046876 with owner6877 returns 2006878 with maintainer6879 returns 2006880 with developer6881 returns 4046882 with reporter6883 returns 4046884 with guest6885 returns 4046886 with non member6887 returns 4046888 when pipeline is not from a webide source6889 with admin6890 returns 4046891 when workhorse signature is valid6892 and the id is valid6893 returns the proxy data for the service running in the job6894 and the id is invalid6895 returns 4046896 with invalid workhorse signature6897 aborts with an exception6898 when feature flag :build_service_proxy is disabled6899 returns 4046900Projects::MergeRequests::DraftsController6901 GET #index6902 list merge request draft notes for current user6903 POST #create6904 creates a draft note6905 creates draft note with position6906 creates a draft note with quick actions6907 without permissions6908 does not allow draft note creation6909 in a thread6910 creates draft note as a reply6911 creates a draft note that will resolve a thread6912 cannot create more than one draft note per thread6913 commit_id is present6914 value is a commit sha6915 creates the draft note with commit ID6916 value is "undefined"6917 creates the draft note with nil commit ID6918 PUT #update6919 updates the draft6920 without permissions6921 does not allow editing draft note belonging to someone else6922 POST #publish6923 publishes draft notes with position6924 does nothing if there are no draft notes6925 publishes a draft note with quick actions and applies them6926 publishes all draft notes for an MR6927 can publish just a single draft note6928 without permissions6929 when note belongs to someone else6930 behaves like action that does not allow publishing draft note6931 does not allow publishing draft note6932 when merge request discussion is locked6933 behaves like action that does not allow publishing draft note6934 does not allow publishing draft note6935 when PublishService errors6936 returns message and 500 response6937 when publishing drafts in a thread6938 resolves a thread if the draft note resolves it6939 unresolves a thread if the draft note unresolves it6940 publish with note6941 creates note6942 does not create note when note param is empty6943 tracks merge request activity6944 approve merge request6945 approves merge request6946 does not approve merge request6947 tracks merge request activity6948 when merge request is already approved by user6949 does return 2006950 DELETE #destroy6951 destroys the draft note when ID is given6952 without permissions6953 does not allow destroying a draft note belonging to someone else6954 without permissions6955 does not allow editing draft note belonging to someone else6956 DELETE #discard6957 deletes all DraftNotes belonging to a user in a Merge Request6958 without permissions6959 does not destroys a draft note belonging to someone else6960Projects::ReleasesController6961 GET #index6962 as html6963 returns a text/html content_type6964 behaves like common access controls6965 renders a 2006966 when the project is private6967 when user is a developer6968 renders a 200 for a logged in developer6969 when user is an external user6970 renders a 404 when logged in but not in the project6971 when the project is private and the user is not logged in6972 returns a redirect6973 as json6974 returns an application/json content_type6975 returns the project's releases as JSON, ordered by released_at6976 behaves like common access controls6977 renders a 2006978 when the project is private6979 when user is a developer6980 renders a 200 for a logged in developer6981 when user is an external user6982 renders a 404 when logged in but not in the project6983 when the project is private and the user is not logged in6984 returns a redirect6985 GET #new6986 is expected to be denied for reporter. Expected: 401,404 Got: 4046987 is expected to be allowed for developer. Expected: 200,201,204,302 Got: 2006988 GET #edit6989 behaves like successful request6990 renders a 2006991 when tag name contains slash6992 is accessible at a URL encoded path6993 behaves like successful request6994 renders a 2006995 when release does not exist6996 behaves like not found6997 renders 4046998 when user is a reporter6999 behaves like not found7000 renders 4047001 GET #show7002 behaves like successful request7003 renders a 2007004 when tag name contains slash7005 is accesible at a URL encoded path7006 behaves like successful request7007 renders a 2007008 when release does not exist7009 behaves like not found7010 renders 4047011 when user is a guest7012 behaves like successful request7013 renders a 2007014 when user is an external user for the project7015 behaves like not found7016 GET #latest_permalink7017 when user is a guest7018 proceeds with the redirect7019 when user is an external user for the project7020 behaves like not found7021 when there are no releases for the project7022 behaves like not found7023 multiple releases7024 redirects to the latest release7025 suffix path redirection7026 redirects to the latest release with suffix path and format7027 suffix path abuse7028 raises attack error7029 url parameters7030 carries over query parameters without order_by parameter in the redirect7031 order_by parameter7032 invalid parameter7033 behaves like redirects to latest release ordered by using released_at7034 is expected to redirect to "/namespace135/project-164/-/releases/latest"7035 valid parameter7036 behaves like redirects to latest release ordered by using released_at7037 is expected to redirect to "/namespace136/project-165/-/releases/latest"7038Groups::ChildrenController7039 GET #index7040 for projects7041 as a user7042 shows all children7043 being member of private subgroup7044 shows public and private children the user is member of7045 as a guest7046 shows the public children7047 for subgroups7048 as a user7049 shows all children7050 being member of private subgroup7051 shows public and private children the user is member of7052 as a guest7053 shows the public children7054 filtering children7055 expands the tree for matching projects7056 expands the tree for matching subgroups7057 merges the trees correctly7058 expands the tree upto a specified parent7059 returns an array with one element when only one result is matched7060 returns an empty array when there are no search results7061 succeeds if multiple pages contain matching subgroups7062 includes pagination headers7063 queries per rendered element7064 queries the expected amount for a group row7065 queries the expected amount for a project row7066 when rendering hierarchies7067 queries the expected amount when nested rows are increased for a group7068 queries the expected amount when a new group match is added7069 queries the expected amount when nested rows are increased for a project7070 pagination7071 rejects negative per_page parameter7072 rejects non-numeric per_page parameter7073 with only projects7074 has projects on the first page7075 has projects on the second page7076 with subgroups and projects7077 contains all subgroups7078 contains the project and group on the second page7079 with a mixed first page7080 correctly calculates the counts7081 external authorization7082 works when external authorization service is enabled7083API::Terraform::StateVersion7084 GET /projects/:id/terraform/state/:name/versions/:serial7085 behaves like it depends on value of the `terraform_state.enabled` config7086 when terraform_state.enabled=false7087 returns `forbidden` response7088 when terraform_state.enabled=true7089 returns a successful response7090 with invalid authentication7091 returns unauthorized status7092 with no authentication7093 returns unauthorized status7094 personal acceess token authentication7095 with maintainer permissions7096 returns the state contents at the given version7097 for a project that does not exist7098 returns not found status7099 with developer permissions7100 returns the state contents at the given version7101 with no permissions7102 returns not found status7103 job token authentication7104 with maintainer permissions7105 returns the state contents at the given version7106 returns unauthorized status if the the job is not running7107 for a project that does not exist7108 returns not found status7109 with developer permissions7110 returns the state contents at the given version7111 with no permissions7112 returns not found status7113 DELETE /projects/:id/terraform/state/:name/versions/:serial7114 behaves like it depends on value of the `terraform_state.enabled` config7115 when terraform_state.enabled=false7116 returns `forbidden` response7117 when terraform_state.enabled=true7118 returns a successful response7119 with invalid authentication7120 returns unauthorized status7121 with no authentication7122 returns unauthorized status7123 with maintainer permissions7124 deletes the version7125 version does not exist7126 does not delete a version7127 with developer permissions7128 returns forbidden status7129 with no permissions7130 returns not found status7131API::Internal::Kubernetes7132 POST /internal/kubernetes/usage_metrics7133 returns correct error for the endpoint7134 not authenticated7135 returns 4017136 kubernetes_agent_internal_api feature flag disabled7137 returns 4047138 is authenticated for an agent7139 returns no_content for valid events7140 returns no_content for counts of zero7141 returns 400 for non counter number7142 returns 400 for non unique_counter set7143 tracks events and unique events7144 POST /internal/kubernetes/agent_configuration7145 returns correct error for the endpoint7146 not authenticated7147 returns 4017148 kubernetes_agent_internal_api feature flag disabled7149 returns 4047150 agent exists7151 configures the agent and returns a 2047152 agent does not exist7153 returns a 4047154 GET /internal/kubernetes/agent_info7155 returns 401 if Authorization header not sent7156 returns 401 if Authorization is for non-existent agent7157 returns correct error for the endpoint7158 not authenticated7159 returns 4017160 kubernetes_agent_internal_api feature flag disabled7161 returns 4047162 an agent is found7163 tracks token usage7164 returns expected data7165 GET /internal/kubernetes/project_info7166 returns 401 if Authorization header not sent7167 returns 401 if Authorization is for non-existent agent7168 returns correct error for the endpoint7169 not authenticated7170 returns 4017171 kubernetes_agent_internal_api feature flag disabled7172 returns 4047173 an agent is found7174 tracks token usage7175 project is public7176 returns expected data7177 repository is for project members only7178 returns 4047179 project is private7180 returns 4047181 and agent belongs to project7182 returns 2007183 project is internal7184 returns 4047185 project does not exist7186 returns 4047187 GET /internal/kubernetes/verify_project_access7188 returns 401 if Authorization header not sent7189 returns 401 if Authorization is for non-existent agent7190 returns correct error for the endpoint7191 not authenticated7192 returns 4017193 kubernetes_agent_internal_api feature flag disabled7194 returns 4047195 an agent is found7196 tracks token usage7197 project is public7198 behaves like access is granted7199 returns success response7200 repository is for project members only7201 behaves like access is denied7202 returns 4047203 project is private7204 behaves like access is denied7205 returns 4047206 and agent belongs to project7207 behaves like access is granted7208 returns success response7209 project is internal7210 behaves like access is denied7211 returns 4047212 and agent belongs to project7213 behaves like access is granted7214 returns success response7215 project does not exist7216 behaves like access is denied7217 returns 4047218 POST /internal/kubernetes/authorize_proxy_user7219 returns 400 when cookie is invalid7220 returns 401 when session is not found7221 returns 401 when CSRF token does not match7222 returns 404 for non-existent agent7223 returns 403 when user has no access7224 returns 200 when user has access7225 returns 401 when user has valid KAS cookie and CSRF token but has no access to requested agent7226 returns 401 when global flag is disabled7227 returns 401 when user id is not found in session7228API::ProjectImport7229 POST /projects/import7230 executes a limited number of queries7231 schedules an import using a namespace7232 schedules an import using the namespace path7233 does not schedule an import for a namespace that does not exist7234 does not schedule an import if the user has no permission to the namespace7235 stores params that can be overridden7236 does not store params that are not allowed7237 behaves like requires authentication7238 returns 4017239 behaves like requires import source to be enabled7240 when gitlab_project import_sources is disabled7241 returns 4037242 when a name is explicitly set7243 schedules an import using a namespace and a different name7244 schedules an import using the namespace path and a different name7245 sets name correctly7246 sets name correctly with an overwrite7247 schedules an import using the path and name explicitly set to nil7248 when namespace not set7249 schedules an import at the user namespace level7250 when current user is a bot user7251 does not schedule an import7252 when passed in namespace is a bot user namespace7253 does not schedule an import7254 if user uploads no valid file7255 does not schedule an import if the user uploads no valid file7256 when target path already exists in namespace7257 does not schedule an import7258 when param overwrite is true7259 schedules an import7260 when request exceeds the rate limit7261 prevents users from importing projects7262 when using remote storage7263 schedules an import7264 POST /projects/remote-import7265 behaves like requires authentication7266 returns 4017267 behaves like requires import source to be enabled7268 when gitlab_project import_sources is disabled7269 returns 4037270 when the response is successful7271 schedules the import successfully7272 when the service returns an error7273 fails to schedule the import7274 POST /projects/remote-import-s37275 behaves like requires authentication7276 returns 4017277 behaves like requires import source to be enabled7278 when gitlab_project import_sources is disabled7279 returns 4037280 when the response is successful7281 schedules the import successfully7282 when the service returns an error7283 fails to schedule the import7284 GET /projects/:id/import7285 public project accessible for an unauthenticated user7286 returns the import status7287 returns the import status and the error if failed7288 returns the import status if canceled7289 POST /projects/import/authorize7290 authorizes importing project with workhorse header7291 rejects requests that bypassed gitlab-workhorse7292 behaves like requires authentication7293 returns 4017294 behaves like requires import source to be enabled7295 when gitlab_project import_sources is disabled7296 returns 4037297 when using remote storage7298 when direct upload is enabled7299 responds with status 200, location of file remote store and object details7300 when direct upload is disabled7301 handles as a local file7302API::PersonalAccessTokens7303 GET /personal_access_tokens7304 logged in as an Administrator7305 returns all PATs by default7306 filtered with user_id parameter7307 returns only PATs belonging to that user7308 filter with revoked parameter7309 revoked: true, status: :ok, result_count: 1, result: lazy { [revoked_token.id] }7310 behaves like response as expected7311 status, count and result as expected7312 revoked: false, status: :ok, result_count: 3, result: lazy { [not_revoked_token1.id, not_revoked_token2.id, current_users_token.id] }7313 behaves like response as expected7314 status, count and result as expected7315 revoked: "asdf", status: :bad_request, result_count: 1, result: {"error"=>"revoked is invalid"}7316 behaves like response as expected7317 status, count and result as expected7318 filter with active parameter7319 state: "inactive", status: :ok, result_count: 2, result: lazy { [inactive_token1.id, inactive_token2.id] }7320 behaves like response as expected7321 status, count and result as expected7322 state: "active", status: :ok, result_count: 2, result: lazy { [active_token.id, current_users_token.id] }7323 behaves like response as expected7324 status, count and result as expected7325 state: "asdf", status: :bad_request, result_count: 1, result: {"error"=>"state does not have a valid value"}7326 behaves like response as expected7327 status, count and result as expected7328 filter with created parameter7329 test created_before7330 created_at: "2022-01-02", status: :ok, result_count: 1, result: lazy { [token1.id] }7331 behaves like response as expected7332 status, count and result as expected7333 created_at: "2022-01-01", status: :ok, result_count: 0, result: lazy { [] }7334 behaves like response as expected7335 status, count and result as expected7336 created_at: "2022-01-01T12:30:24", status: :ok, result_count: 0, result: lazy { [] }7337 behaves like response as expected7338 status, count and result as expected7339 created_at: "2022-01-01T12:30:25", status: :ok, result_count: 1, result: lazy { [token1.id] }7340 behaves like response as expected7341 status, count and result as expected7342 created_at: "2022-01-01T:12:30:26", status: :ok, result_count: 1, result: lazy { [token1.id] }7343 behaves like response as expected7344 status, count and result as expected7345 created_at: "asdf", status: :bad_request, result_count: 1, result: {"error"=>"created_before is invalid"}7346 behaves like response as expected7347 status, count and result as expected7348 test created_after7349 created_at: "2022-01-03", status: :ok, result_count: 1, result: lazy { [current_users_token.id] }7350 behaves like response as expected7351 status, count and result as expected7352 created_at: "2022-01-01", status: :ok, result_count: 2, result: lazy { [token1.id, current_users_token.id] }7353 behaves like response as expected7354 status, count and result as expected7355 created_at: "2022-01-01T12:30:25", status: :ok, result_count: 2, result: lazy { [token1.id, current_users_token.id] }7356 behaves like response as expected7357 status, count and result as expected7358 created_at: "2022-01-01T12:30:26", status: :ok, result_count: 1, result: lazy { [current_users_token.id] }7359 behaves like response as expected7360 status, count and result as expected7361 created_at: "2023-06-03T06:22:24+00:00", status: :ok, result_count: 0, result: lazy { [] }7362 behaves like response as expected7363 status, count and result as expected7364 created_at: "asdf", status: :bad_request, result_count: 1, result: {"error"=>"created_after is invalid"}7365 behaves like response as expected7366 status, count and result as expected7367 filter with last_used parameter7368 test last_used_before7369 last_used_at: "2022-01-02", status: :ok, result_count: 1, result: lazy { [token1.id] }7370 behaves like response as expected7371 status, count and result as expected7372 last_used_at: "2022-01-01", status: :ok, result_count: 0, result: lazy { [] }7373 behaves like response as expected7374 status, count and result as expected7375 last_used_at: "2022-01-01T12:30:24", status: :ok, result_count: 0, result: lazy { [] }7376 behaves like response as expected7377 status, count and result as expected7378 last_used_at: "2022-01-01T12:30:25", status: :ok, result_count: 1, result: lazy { [token1.id] }7379 behaves like response as expected7380 status, count and result as expected7381 last_used_at: "2022-01-01T12:30:26", status: :ok, result_count: 1, result: lazy { [token1.id] }7382 behaves like response as expected7383 status, count and result as expected7384 last_used_at: "asdf", status: :bad_request, result_count: 1, result: {"error"=>"last_used_before is invalid"}7385 behaves like response as expected7386 status, count and result as expected7387 test last_used_after7388 last_used_at: "2022-01-03", status: :ok, result_count: 1, result: lazy { [current_users_token.id] }7389 behaves like response as expected7390 status, count and result as expected7391 last_used_at: "2022-01-01", status: :ok, result_count: 2, result: lazy { [token1.id, current_users_token.id] }7392 behaves like response as expected7393 status, count and result as expected7394 last_used_at: "2022-01-01T12:30:26", status: :ok, result_count: 1, result: lazy { [current_users_token.id] }7395 behaves like response as expected7396 status, count and result as expected7397 last_used_at: "2022-01-01T12:30:25", status: :ok, result_count: 2, result: lazy { [token1.id, current_users_token.id] }7398 behaves like response as expected7399 status, count and result as expected7400 last_used_at: "2023-06-03T06:22:24+00:00", status: :ok, result_count: 0, result: lazy { [] }7401 behaves like response as expected7402 status, count and result as expected7403 last_used_at: "asdf", status: :bad_request, result_count: 1, result: {"error"=>"last_used_after is invalid"}7404 behaves like response as expected7405 status, count and result as expected7406 filter with search parameter7407 pattern: "test", status: :ok, result_count: 2, result: lazy { [token1.id, token2.id] }7408 behaves like response as expected7409 status, count and result as expected7410 pattern: "", status: :ok, result_count: 4, result: lazy { [token1.id, token2.id, token3.id, current_users_token.id] }7411 behaves like response as expected7412 status, count and result as expected7413 pattern: "test_1", status: :ok, result_count: 1, result: lazy { [token1.id] }7414 behaves like response as expected7415 status, count and result as expected7416 pattern: "asdf", status: :ok, result_count: 0, result: lazy { [] }7417 behaves like response as expected7418 status, count and result as expected7419 filter created_before/created_after combined with last_used_before/last_used_after7420 date_before: "2022-01-03", date_after: "2022-01-01", status: :ok, result_count: 1, result: lazy { [token1.id] }7421 behaves like response as expected7422 status, count and result as expected7423 behaves like response as expected7424 status, count and result as expected7425 date_before: "2022-01-01", date_after: "2022-01-03", status: :ok, result_count: 0, result: lazy { [] }7426 behaves like response as expected7427 status, count and result as expected7428 behaves like response as expected7429 status, count and result as expected7430 date_before: "2022-01-03", date_after: nil, status: :ok, result_count: 1, result: lazy { [token1.id] }7431 behaves like response as expected7432 status, count and result as expected7433 behaves like response as expected7434 status, count and result as expected7435 date_before: nil, date_after: "2022-01-01", status: :ok, result_count: 2, result: lazy { [token1.id, current_users_token.id] }7436 behaves like response as expected7437 status, count and result as expected7438 behaves like response as expected7439 status, count and result as expected7440 filter created_before and created_after combined is valid7441 created_before: "2022-01-02", created_after: "2022-01-02", status: :ok, result: lazy { [token1.id] }7442 returns all valid tokens7443 created_before: "2022-01-03", created_after: "2022-01-01", status: :ok, result: lazy { [token1.id] }7444 returns all valid tokens7445 created_before: "2022-01-01", created_after: "2022-01-03", status: :ok, result: lazy { [] }7446 returns all valid tokens7447 created_before: "2022-01-03", created_after: nil, status: :ok, result: lazy { [token1.id] }7448 returns all valid tokens7449 created_before: nil, created_after: "2022-01-01", status: :ok, result: lazy { [token1.id] }7450 returns all valid tokens7451 filter last_used_before and last_used_after combined is valid7452 last_used_before: "2022-01-02", last_used_after: "2022-01-02", status: :ok, result: lazy { [token1.id] }7453 returns all valid tokens7454 last_used_before: "2022-01-03", last_used_after: "2022-01-01", status: :ok, result: lazy { [token1.id] }7455 returns all valid tokens7456 last_used_before: "2022-01-01", last_used_after: "2022-01-03", status: :ok, result: lazy { [] }7457 returns all valid tokens7458 last_used_before: "2022-01-03", last_used_after: nil, status: :ok, result: lazy { [token1.id] }7459 returns all valid tokens7460 last_used_before: nil, last_used_after: "2022-01-01", status: :ok, result: lazy { [token1.id] }7461 returns all valid tokens7462 logged in as a non-Administrator7463 returns all PATs belonging to the signed-in user7464 filtered with user_id parameter7465 returns PATs belonging to the specific user7466 is unauthorized if filtered by a user other than current_user7467 filter with revoked parameter7468 revoked: true, status: :ok, result_count: 1, result: lazy { [users_revoked_token.id] }7469 behaves like response as expected7470 status, count and result as expected7471 revoked: false, status: :ok, result_count: 1, result: lazy { [current_users_token.id] }7472 behaves like response as expected7473 status, count and result as expected7474 filter with active parameter7475 state: "inactive", status: :ok, result_count: 1, result: lazy { [users_inactive_token.id] }7476 behaves like response as expected7477 status, count and result as expected7478 state: "active", status: :ok, result_count: 1, result: lazy { [current_users_token.id] }7479 behaves like response as expected7480 status, count and result as expected7481 filter with created parameter7482 created_before7483 behaves like response as expected7484 status, count and result as expected7485 created_after7486 behaves like response as expected7487 status, count and result as expected7488 filter with last_used7489 last_used_before7490 behaves like response as expected7491 status, count and result as expected7492 last_used_after7493 behaves like response as expected7494 status, count and result as expected7495 filter with search parameter7496 pattern: "test", status: :ok, result_count: 1, result: lazy { [token1.id] }7497 behaves like response as expected7498 status, count and result as expected7499 pattern: "", status: :ok, result_count: 2, result: lazy { [token1.id, current_users_token.id] }7500 behaves like response as expected7501 status, count and result as expected7502 pattern: "test_1", status: :ok, result_count: 1, result: lazy { [token1.id] }7503 behaves like response as expected7504 status, count and result as expected7505 not authenticated7506 is forbidden7507 GET /personal_access_tokens/:id7508 when current_user is an administrator7509 returns admins own PAT by id7510 returns a different users PAT by id7511 fails to return PAT because no PAT exists with this id7512 when current_user is not an administrator7513 returns users own PAT by id7514 fails to return other users PAT by id7515 fails to return PAT because no PAT exists with this id7516 fails to return own PAT by id with read_repository token7517 POST /personal_access_tokens/:id/rotate7518 rotates user's own token7519 without permission7520 returns an error message7521 when service raises an error7522 returns the same error message7523 when token does not exist7524 for non-admin user7525 returns unauthorized7526 for admin user7527 returns not found7528 DELETE /personal_access_tokens/:id7529 when current_user is an administrator7530 revokes a different users token7531 revokes their own token7532 fails to revoke a different user token using a readonly scope7533 when current_user is not an administrator7534 fails revokes a different users token7535 revokes their own token7536 cannot revoke impersonation token7537Query.project(fullPath).pipelines7538 sha7539 returns all formats of the SHA7540 duration fields7541 includes the duration fields7542 .stages7543 is present if the user has guest access7544 is present if the user has reporter access7545 .groups7546 is present if the user has guest access7547 is present if the user has reporter access7548 .job7549 fetches the latest job with the given name7550 .jobs7551 limits the results7552 fetches all results7553 fetches the jobs without an N+17554 .job_artifacts7555 returns the job_artifacts of a pipeline7556 avoids N+1 queries7557 behaves like a working graphql query7558 returns a successful response7559 warningMessages7560 returns pipeline warnings7561 avoids N+1 queries7562 .jobs(securityReportTypes)7563 fetches the jobs matching the report type filter7564 upstream7565 returns the upstream pipeline of a pipeline7566 behaves like a working graphql query7567 returns a successful response7568 when fetching the upstream pipeline from the pipeline7569 avoids N+1 queries7570 downstream7571 returns the downstream pipelines of a pipeline7572 behaves like a working graphql query7573 returns a successful response7574 when fetching the downstream pipelines from the pipeline7575 avoids N+1 queries7576 ref_path7577 avoids N+1 queries7578 filtering7579 when filtered by updated_at7580 accepts filter params7581 behaves like a working graphql query7582 returns a successful response7583Projects::MergeRequests::ConflictsController7584 GET show7585 when the request is html7586 does tracks the resolve call7587 when the conflicts cannot be resolved in the UI7588 returns a 200 status code7589 returns JSON with a message7590 does not track the resolve call7591 with valid conflicts7592 matches the schema7593 includes meta info about the MR7594 includes each file that has conflicts7595 splits files into sections with lines7596 has unique section IDs across files7597 GET conflict_for_path7598 when the conflicts cannot be resolved in the UI7599 returns a 404 status code7600 when the file does not exist cannot be resolved in the UI7601 returns a 404 status code7602 with an existing file7603 returns a 200 and the file in JSON format7604 POST resolve_conflicts7605 with valid params7606 handles the success case7607 when sections are missing7608 handles the error case7609 when files are missing7610 handles the error case7611 when a file has identical content to the conflict7612 handles the error case7613API::Admin::InstanceClusters7614 GET /admin/clusters7615 behaves like GET request permissions for admin mode7616 behaves like when admin7617 behaves like makes request7618 returns7619 behaves like makes request7620 returns7621 behaves like when user7622 returns7623 behaves like makes request7624 returns7625 feature flag is disabled7626 responds with :not_found7627 when authenticated as admin7628 includes pagination headers7629 only returns the instance clusters7630 GET /admin/clusters/:cluster_id7631 behaves like GET request permissions for admin mode7632 behaves like when admin7633 behaves like makes request7634 returns7635 behaves like makes request7636 returns7637 behaves like when user7638 returns7639 behaves like makes request7640 returns7641 feature flag is disabled7642 responds with :not_found7643 when authenticated as admin7644 when no cluster associated to the ID7645 returns 4047646 when cluster with cluster_id exists7647 returns the cluster with cluster_id7648 returns the cluster information7649 returns kubernetes platform information7650 returns user information7651 returns GCP provider information7652 when cluster has no provider7653 does not include GCP provider info7654 when trying to get a project cluster via the instance cluster endpoint7655 returns 4047656 POST /admin/clusters/add7657 behaves like POST request permissions for admin mode7658 behaves like when admin7659 behaves like makes request7660 returns7661 behaves like makes request7662 returns7663 behaves like when user7664 returns7665 behaves like makes request7666 returns7667 feature flag is disabled7668 responds with :not_found7669 authorized user7670 with valid params7671 creates a new Clusters::Cluster7672 when user does not indicate authorization type7673 defaults to RBAC7674 when user sets authorization type as ABAC7675 creates an ABAC cluster7676 when namespace_per_environment is not set7677 defaults to true7678 when an instance cluster already exists7679 allows user to add multiple clusters7680 with invalid params7681 when missing a required parameter7682 responds with 4007683 with a malformed api url7684 responds with 4007685 returns validation errors7686 PUT /admin/clusters/:cluster_id7687 behaves like PUT request permissions for admin mode7688 behaves like when admin7689 behaves like makes request7690 returns7691 behaves like makes request7692 returns7693 behaves like when user7694 returns7695 behaves like makes request7696 returns7697 feature flag is disabled7698 responds with :not_found7699 authorized user7700 with valid params7701 updates cluster attributes7702 with invalid params7703 responds with 4007704 does not update cluster attributes7705 returns validation errors7706 with a GCP cluster7707 when user tries to change GCP specific fields7708 responds with 4007709 returns validation error7710 when user tries to change domain7711 responds with 2007712 with an user cluster7713 responds with 2007714 updates platform kubernetes attributes7715 with a cluster that does not exist7716 returns 4047717 when trying to update a project cluster via the instance cluster endpoint7718 returns 4047719 DELETE /admin/clusters/:cluster_id7720 behaves like DELETE request permissions for admin mode7721 behaves like when admin7722 behaves like makes request7723 returns7724 behaves like makes request7725 returns7726 behaves like when user7727 returns7728 behaves like makes request7729 returns7730 feature flag is disabled7731 responds with :not_found7732 authorized user7733 deletes the cluster7734 with a cluster that does not exist7735 returns 4047736 when trying to update a project cluster via the instance cluster endpoint7737 returns 4047738Projects::Settings::AccessTokensController7739 GET /:namespace/:project/-/settings/access_tokens7740 behaves like feature unavailable7741 user is not a maintainer7742 is expected to respond with numeric status code not_found7743 behaves like GET resource access tokens available7744 retrieves active access tokens7745 lists all available scopes7746 returns for json response7747 behaves like GET access tokens are paginated and ordered7748 when multiple access tokens are returned7749 returns paginated response7750 when access_token_pagination feature flag is disabled7751 returns all tokens in system7752 when tokens returned are ordered7753 orders token list ascending on expires_at7754 orders tokens on id in case token has same expires_at7755 POST /:namespace/:project/-/settings/access_tokens7756 behaves like feature unavailable7757 user is not a maintainer7758 is expected to respond with numeric status code not_found7759 behaves like POST resource access tokens available7760 renders JSON with a token7761 creates resource access token7762 creates project bot user7763 is expected to change `User.count` by 17764 is expected to change `PersonalAccessToken.count` by 17765 when unsuccessful7766 does not create the token7767 does not add the project bot as a member7768 does not create the project bot user7769 renders JSON with an error7770 when project access token creation is disabled7771 is expected to respond with numeric status code not_found7772 does not create the token7773 does not add the project bot as a member7774 does not create the project bot user7775 with custom access level7776 behaves like POST resource access tokens available7777 renders JSON with a token7778 creates resource access token7779 creates project bot user7780 is expected to change `User.count` by 17781 is expected to change `PersonalAccessToken.count` by 17782 when unsuccessful7783 does not create the token7784 does not add the project bot as a member7785 does not create the project bot user7786 renders JSON with an error7787 PUT /:namespace/:project/-/settings/access_tokens/:id7788 behaves like feature unavailable7789 user is not a maintainer7790 is expected to respond with numeric status code not_found7791 behaves like PUT resource access tokens available7792 calls delete user worker7793 removes membership of bot user7794 creates GhostUserMigration records to handle migration in a worker7795 when unsuccessful7796 shows a failure alert7797 #index7798 includes details of the active project access tokens7799Dashboard::ProjectsController7800 #index7801 user logged in7802 orders the projects by name by default7803 assigns the correct all_user_projects7804 assigns the correct all_starred_projects7805 external authorization7806 works when the external authorization service is enabled7807 project sorting7808 behaves like set sort order from user preference7809 #set_sort_order_from_user_preference7810 when database is in read-only mode7811 does not update user preference7812 when database is not in read-only mode7813 updates user preference7814 with search and sort parameters7815 behaves like search and sort parameters7816 returns a single project with no ambiguous column errors7817 behaves like search and sort parameters7818 returns a single project with no ambiguous column errors7819 behaves like search and sort parameters7820 returns a single project with no ambiguous column errors7821 behaves like search and sort parameters7822 returns a single project with no ambiguous column errors7823 behaves like search and sort parameters7824 returns a single project with no ambiguous column errors7825 with archived project7826 does not display archived project7827 excludes archived project from all_user_projects7828 excludes archived project from all_starred_projects7829 with deleted project7830 does not display deleted project7831 json requests7832 GET /projects.json7833 is expected to respond with 2007834 GET /starred.json7835 returns success7836 does not include projects aimed for deletion7837 pagination7838 paginates the records7839 atom requests7840 #index7841 project pagination7842 does not paginate projects, even if normally restricted by pagination7843 rendering7844 renders all kinds of event without error7845 with deleted project7846 does not display deleted project7847Query.project(fullPath).releases()7848 ensures that the correct data is returned based on the project's visibility and the user's access level7849 when the project is private7850 when the user is not logged in7851 behaves like no access to any release data7852 returns nil7853 when the user has Guest permissions7854 behaves like no access to any repository-related fields7855 repository-related fields7856 does not return data for fields that expose repository information7857 behaves like correct total count7858 returns the total count7859 when the user has Reporter permissions7860 behaves like full access to all repository-related fields7861 repository-related fields7862 returns data for fields that are protected in private projects7863 behaves like correct total count7864 returns the total count7865 behaves like no access to editUrl7866 does not return editUrl7867 when the user has Developer permissions7868 behaves like full access to all repository-related fields7869 repository-related fields7870 returns data for fields that are protected in private projects7871 behaves like correct total count7872 returns the total count7873 behaves like access to editUrl7874 returns editUrl7875 when the project is public7876 when the user is not logged in7877 behaves like full access to all repository-related fields7878 repository-related fields7879 returns data for fields that are protected in private projects7880 behaves like correct total count7881 returns the total count7882 behaves like no access to editUrl7883 does not return editUrl7884 when the user has Guest permissions7885 behaves like full access to all repository-related fields7886 repository-related fields7887 returns data for fields that are protected in private projects7888 behaves like correct total count7889 returns the total count7890 behaves like no access to editUrl7891 does not return editUrl7892 when the user has Reporter permissions7893 behaves like full access to all repository-related fields7894 repository-related fields7895 returns data for fields that are protected in private projects7896 behaves like correct total count7897 returns the total count7898 behaves like no access to editUrl7899 does not return editUrl7900 when the user has Developer permissions7901 behaves like full access to all repository-related fields7902 repository-related fields7903 returns data for fields that are protected in private projects7904 behaves like correct total count7905 returns the total count7906 behaves like access to editUrl7907 returns editUrl7908 sorting and pagination7909 when sorting by released_at7910 when ascending7911 behaves like sorted paginated query7912 behaves like requires variables7913 shared example requires variables to be set7915 when sorting7916 sorts correctly7917 when paginating7918 paginates correctly7919 when descending7920 behaves like sorted paginated query7921 behaves like requires variables7922 shared example requires variables to be set7924 when sorting7925 sorts correctly7926 when paginating7927 paginates correctly7928 when sorting by created_at7929 when ascending7930 behaves like sorted paginated query7931 behaves like requires variables7932 shared example requires variables to be set7934 when sorting7935 sorts correctly7936 when paginating7937 paginates correctly7938 when descending7939 behaves like sorted paginated query7940 behaves like requires variables7941 shared example requires variables to be set7943 when sorting7944 sorts correctly7945 when paginating7946 paginates correctly7947Jira referenced paths7948 behaves like redirects to jira path7949 redirects to canonical path with legacy prefix7950 redirects to canonical path7951 contains @ before the first /7952 behaves like redirects to jira path7953 redirects to canonical path with legacy prefix7954 redirects to canonical path7955 including commit path7956 behaves like redirects to jira path7957 redirects to canonical path with legacy prefix7958 redirects to canonical path7959 including tree path7960 behaves like redirects to jira path7961 redirects to canonical path with legacy prefix7962 redirects to canonical path7963 malicious path7964 behaves like redirects to jira path7965 redirects to canonical path with legacy prefix7966 redirects to canonical path7967 regular paths with legacy prefix7968 jira_path: "/-/jira/group/group_project", redirect_path: "/group/group_project"7969 redirects to canonical path7970 jira_path: "/-/jira/group/group_project/commit/1234567", redirect_path: "/group/group_project/commit/1234567"7971 redirects to canonical path7972 jira_path: "/-/jira/group/group_project/tree/1234567", redirect_path: "/group/group_project/-/tree/1234567"7973 redirects to canonical path7974 when tree path has an @7975 does not do a redirect7976Groups::UploadsController7977 behaves like handle uploads7978 behaves like handle uploads authorize7979 POST #authorize7980 when a user is not authorized to upload a file7981 returns 404 status7982 when id is not passed as a param7983 returns 404 status7984 when a user can upload a file7985 and the request bypassed workhorse7986 raises an exception7987 and request is sent by gitlab-workhorse to authorize the request7988 when using local storage7989 behaves like a local file7990 behaves like a valid response7991 responds with status 2007992 uses the gitlab-workhorse content type7993 responds with status 200, location of uploads store and object details7994 when using remote storage7995 when direct upload is enabled7996 behaves like a valid response7997 responds with status 2007998 uses the gitlab-workhorse content type7999 responds with status 200, location of uploads remote store and object details8000 when direct upload is disabled8001 behaves like a local file8002 behaves like a valid response8003 responds with status 2008004 uses the gitlab-workhorse content type8005 responds with status 200, location of uploads store and object details8006 POST #create8007 when a user is not authorized to upload a file8008 returns 404 status8009 when a user can upload a file8010 without params['file']8011 returns an error8012 with valid image8013 returns a content with original filename, new link, and correct type.8014 creates a corresponding Upload record8015 with valid non-image file8016 returns a content with original filename, new link, and correct type.8017 GET #show8018 when the secret is invalid8019 responds with status 4048020 is a working exploit without the validation8021 when accessing a specific upload via different model8022 responds with status 4048023 when the upload does not have a MIME type that Rails knows8024 falls back to the null type8025 when the model is public8026 when not signed in8027 when the file exists8028 responds with status 2008029 when neither the uploader nor the model exists8030 responds with status 4048031 when the file doesn't exist8032 responds with status 4048033 when signed in8034 when the file exists8035 responds with status 2008036 when the file doesn't exist8037 responds with status 4048038 when the model is private8039 when not signed in8040 when the file exists8041 when the file is an image8042 responds with the appropriate status code8043 when the file is not an image8044 redirects to the sign in page8045 when the file doesn't exist8046 redirects to the sign in page8047 when signed in8048 when the user has access to the project8049 when the file exists8050 responds with status 2008051 when the file doesn't exist8052 responds with status 4048053 when the user doesn't have access to the model8054 when the file exists8055 when the file is an image8056 responds with the appropriate status code8057 when the file is not an image8058 responds with status 4048059 when the file doesn't exist8060 responds with status 4048061 with a moved group8062 redirects to a file with the proper extension8063 GET #show8064 when the group is public8065 when not signed in8066 responds with appropriate status8067 when signed in8068 when the user doesn't have access to the model8069 responds with status 2008070 when the group is private8071 when not signed in8072 responds with appropriate status8073 when signed in8074 when the user doesn't have access to the model8075 responds with status 2008076API::MergeRequestDiffs MergeRequestDiffs8077 GET /projects/:id/merge_requests/:merge_request_iid/versions8078 returns 200 for a valid merge request8079 returns a 404 when merge_request id is used instead of the iid8080 returns a 404 when merge_request_iid not found8081 when merge request author has only guest access8082 behaves like rejects user from accessing merge request info8083 returns a 403 error8084 GET /projects/:id/merge_requests/:merge_request_iid/versions/:version_id8085 returns a 200 for a valid merge request8086 returns a 404 when merge_request id is used instead of the iid8087 returns a 404 when merge_request version_id is not found8088 returns a 404 when merge_request_iid is not found8089 when merge request author has only guest access8090 behaves like rejects user from accessing merge request info8091 returns a 403 error8092 caching merge request diffs8093 is performed8094API::ProjectHooks ProjectHooks8095 behaves like web-hook API endpoints8096 GET /projects/:id/hooks8097 authorized user8098 returns all hooks8099 when user is forbidden8100 prevents access to hooks8101 when user is unauthorized8102 prevents access to hooks8103 the hook has URL variables8104 returns the names of the url variables8105 GET /projects/:id/hooks/:hook_id8106 authorized user8107 returns a project hook8108 returns a 404 error if hook id is not available8109 the hook is disabled8110 has the correct alert status8111 the hook is backed-off8112 has the correct alert status8113 when user is forbidden8114 does not access an existing hook8115 when user is unauthorized8116 does not access an existing hook8117 POST /projects/:id/hooks8118WARNING: ignoring the provided expectation message argument (:push_events) since it is not a string or a proc.8119WARNING: ignoring the provided expectation message argument (:tag_push_events) since it is not a string or a proc.8120WARNING: ignoring the provided expectation message argument (:merge_requests_events) since it is not a string or a proc.8121WARNING: ignoring the provided expectation message argument (:issues_events) since it is not a string or a proc.8122WARNING: ignoring the provided expectation message argument (:confidential_issues_events) since it is not a string or a proc.8123WARNING: ignoring the provided expectation message argument (:note_events) since it is not a string or a proc.8124WARNING: ignoring the provided expectation message argument (:confidential_note_events) since it is not a string or a proc.8125WARNING: ignoring the provided expectation message argument (:pipeline_events) since it is not a string or a proc.8126WARNING: ignoring the provided expectation message argument (:wiki_page_events) since it is not a string or a proc.8127WARNING: ignoring the provided expectation message argument (:job_events) since it is not a string or a proc.8128WARNING: ignoring the provided expectation message argument (:deployment_events) since it is not a string or a proc.8129WARNING: ignoring the provided expectation message argument (:releases_events) since it is not a string or a proc.8130 adds hook8131 adds the token without including it in the response8132 returns a 400 error if url not given8133 returns a 400 error if no parameters are provided8134WARNING: ignoring the provided expectation message argument (:push_events) since it is not a string or a proc.8135WARNING: ignoring the provided expectation message argument (:tag_push_events) since it is not a string or a proc.8136WARNING: ignoring the provided expectation message argument (:merge_requests_events) since it is not a string or a proc.8137WARNING: ignoring the provided expectation message argument (:issues_events) since it is not a string or a proc.8138WARNING: ignoring the provided expectation message argument (:confidential_issues_events) since it is not a string or a proc.8139WARNING: ignoring the provided expectation message argument (:note_events) since it is not a string or a proc.8140WARNING: ignoring the provided expectation message argument (:confidential_note_events) since it is not a string or a proc.8141WARNING: ignoring the provided expectation message argument (:pipeline_events) since it is not a string or a proc.8142WARNING: ignoring the provided expectation message argument (:wiki_page_events) since it is not a string or a proc.8143WARNING: ignoring the provided expectation message argument (:job_events) since it is not a string or a proc.8144WARNING: ignoring the provided expectation message argument (:deployment_events) since it is not a string or a proc.8145WARNING: ignoring the provided expectation message argument (:releases_events) since it is not a string or a proc.8146 sets default values for events8147 returns a 422 error if token not valid8148 returns a 422 error if url not valid8149 PUT /projects/:id/hooks/:hook_id8150 updates an existing hook8151 updates the URL variables8152 adds the token without including it in the response8153 returns 404 error if hook id not found8154 returns 400 error if no parameters are provided8155 returns a 422 error if url is not valid8156 returns a 422 error if token is not valid8157 DELETE /projects/:id/hooks/:hook_id8158 deletes hook from project8159 returns a 404 error when deleting non existent hook8160 returns a 404 error if hook id not given8161 returns forbidden if a user attempts to delete hooks they do not own8162 behaves like 412 response8163 for a modified resource8164 returns 412 with a JSON error8165 for an unmodified resource8166 returns 204 with an empty body8167 PUT /projects/:id/hooks/:hook_id/url_variables/:key8168 sets the variable8169 overwrites existing values8170 returns a 404 error when editing non existent hook8171 returns a 422 error when the key is illegal8172 returns a 422 error when the value is illegal8173 DELETE /projects/:id/hooks/:hook_id/url_variables/:key8174 unsets the variable8175 returns 404 for keys that do not exist8176 returns a 404 error when deleting a variable from a non existent hook8177 behaves like web-hook API endpoints with branch-filter8178 POST /projects/:id/hooks8179 returns a 422 error if branch filter is not valid8180Updating a Note8181 when the user does not have permission8182 does not update the Note8183 behaves like a mutation that returns a top-level access error8184 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"8185 when the user has permission8186 behaves like a Note mutation when the given resource id is not for a Note8187 behaves like a mutation that returns top-level errors8188 is expected to include /does not represent an instance of Note/8189 behaves like a Note mutation updates a note successfully8190 updates the Note8191 returns the updated Note8192 behaves like a Note mutation update with errors8193 when there are ActiveRecord validation errors8194 does not update the Note8195 returns the original Note8196 behaves like a mutation that returns errors in the response8197 is expected to contain exactly "Note can't be blank" and "Confidential can not be changed for existing notes"8198 behaves like a Note mutation update only with quick actions8199 when body only contains quick actions8200 returns a nil note and empty errors8201 for work item8202 behaves like a Note mutation updates a note successfully8203 updates the Note8204 returns the updated Note8205 behaves like a Note mutation update with errors8206 when there are ActiveRecord validation errors8207 does not update the Note8208 returns the original Note8209 behaves like a mutation that returns errors in the response8210 is expected to contain exactly "Note can't be blank" and "Confidential can not be changed for existing notes"8211 behaves like a Note mutation update only with quick actions8212 when body only contains quick actions8213 returns a nil note and empty errors8214 without notes widget8215 does not update the Note8216 behaves like a mutation that returns top-level errors8217 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"8218conan package details8219 has the correct metadata8220 has the correct file metadata8221 behaves like a package detail8222 behaves like a working graphql query8223 returns a successful response8224 behaves like matching the package details schema8225 matches the JSON schema8226 with pipelines8227 behaves like a working graphql query8228 returns a successful response8229 behaves like matching the package details schema8230 matches the JSON schema8231 behaves like a package with files8232 has the right amount of files8233 has the basic package files data8234 with package files pending destruction8235 does not return them8236Git LFS File Locking API8237 Create File Lock endpoint8238 when user does not have download permission8239 returns a 404 response8240 when user does not have upload permission8241 returns a 403 response8242 with an existent lock8243 return an error message8244 returns the existen lock8245 without an existent lock8246 creates the lock8247 Listing File Locks endpoint8248 returns the list of locked files8249 when user does not have download permission8250 returns a 404 response8251 when user does not have upload permission8252 returns a 403 response8253 List File Locks for verification endpoint8254 returns the list of locked files grouped by owner8255 when user does not have download permission8256 returns a 404 response8257 when user does not have upload permission8258 returns a 403 response8259 Delete File Lock endpoint8260 when user does not have download permission8261 returns a 404 response8262 when user does not have upload permission8263 returns a 403 response8264 with an existent lock8265 deletes the lock8266 returns the deleted lock8267 when a maintainer uses force8268 deletes the lock8269API::ProjectEvents8270 GET /projects/:id/events8271 when unauthenticated8272 returns 404 for private project8273 returns 200 status for a public project8274 with inaccessible events8275 returns only accessible events8276 returns all events when the user has access8277 pagination8278 correctly returns the second page without inaccessible events8279 correctly returns the first page without inaccessible events8280 when not permitted to read8281 returns 4048282 when authenticated8283 returns project events8284 returns 404 if project does not exist8285 when the requesting token does not have "api" scope8286 returns a "403" response8287 when exists some events8288 avoids N+1 queries8289get board lists8290 for a project8291 behaves like group and project board lists query8292 when the user does not have access to the board8293 returns nil8294 when user can read the board8295 sorting and pagination8296 when using default sorting8297 when ascending8298 behaves like sorted paginated query8299 behaves like requires variables8300 shared example requires variables to be set8302 when sorting8303 sorts correctly8304 when paginating8305 paginates correctly8306 when querying for a single list8307 returns the correct list with issue count for matching issue filters8308 when filtering by a unioned argument8309 returns correctly filtered issues8310 when feature flag is disabled8311 returns an error8312 for a group8313 behaves like group and project board lists query8314 when the user does not have access to the board8315 returns nil8316 when user can read the board8317 sorting and pagination8318 when using default sorting8319 when ascending8320 behaves like sorted paginated query8321 behaves like requires variables8322 shared example requires variables to be set8324 when sorting8325 sorts correctly8326 when paginating8327 paginates correctly8328 when querying for a single list8329 returns the correct list with issue count for matching issue filters8330 when filtering by a unioned argument8331 returns correctly filtered issues8332 when feature flag is disabled8333 returns an error8334Groups::VariablesController8335 GET #show8336 renders the variables as json8337 has only one variable8338 when the user is a maintainer8339 returns not found response8340 PATCH #update8341 with invalid new variable parameters8342 does not update the existing variable8343 does not create the new variable8344 returns a bad request response8345 with duplicate new variable parameters8346 does not update the existing variable8347 does not create the new variable8348 returns a bad request response8349 with valid new variable parameters8350 updates the existing variable8351 creates the new variable8352 returns a successful response8353 has all variables in response8354 with a deleted variable8355 destroys the variable8356 returns a successful response8357 has all variables in response8358 with missing variable8359 returns not found response8360 for variables of type file8361 creates new variable of type file8362 when the user is a maintainer8363 returns not found response8364 with external authorization enabled8365 GET #show8366 is successful8367 PATCH #update8368 is successful8369Import::GitlabGroupsController8370 POST create8371 when importing without a parent group8372 successfully creates the group8373 imports the group data8374 when importing to a parent group8375 creates a new group under the parent8376 when the parent is Public8377 imports a Public group8378 when the parent is Internal8379 imports a Internal group8380 when the parent is Private8381 imports a Private group8382 when supplied invalid params8383 responds with an error8384 when the user is not authorized to create groups8385 returns an error8386 when the requests exceed the rate limit8387 throttles the requests8388 when the parent group is invalid8389 does not create a new group8390 when the user is not an owner of the parent group8391 returns an error8392 POST authorize8393 behaves like handle uploads authorize request8394 POST authorize8395 authorizes workhorse header8396 rejects requests that bypassed gitlab-workhorse8397 when using remote storage8398 when direct upload is enabled8399 responds with status 200, location of file remote store and object details8400 when direct upload is disabled8401 handles as a local file8402sentry errors requests8403 getting a detailed sentry error8404 returns a successful response8405 when data is loading via reactive cache8406 is expected to return an empty error8407 when reactive cache returns data8408 is expected to return the frequency correctly8409 behaves like setting sentry error data8410 sets the sentry error data correctly8411 when user does not have permission8412 is expected to return an empty error8413 when sentry api returns an error8414 is expected to handle the error and return nil8415 getting an errors list8416 behaves like a working graphql query8417 returns a successful response8418 when data is loading via reactive cache8419 is expected to return nil8420 when reactive cache returns data8421 is expected to return an array of data8422 sets the pagination correctly8423 is expected to return the frequency correctly8424 behaves like setting sentry error data8425 sets the sentry error data correctly8426 when sentry api itself errors out8427 is expected to handle the error and return nil8428 getting a stack trace8429 behaves like a working graphql query8430 returns a successful response8431 when data is loading via reactive cache8432 is expected to return an empty error8433 when reactive cache returns data8434 behaves like setting stack trace error8435 sets the stack trace data correctly8436 sets the stack trace entry data correctly8437 when user does not have permission8438 is expected to return an empty error8439 when sentry api returns an error8440 is expected to handle the error and return nil8441Groups::Crm::ContactsController8442 GET #index8443 behaves like ok response with index template if authorized8444 private group8445 with authorized user8446 when crm_enabled is true8447 behaves like ok response with index template8448 renders the index template8449 when crm_enabled is false8450 behaves like response with 404 status8451 returns 4048452 when subgroup8453 behaves like response with 404 status8454 returns 4048455 with unauthorized user8456 behaves like response with 404 status8457 returns 4048458 with anonymous user8459 blah8460 public group8461 with anonymous user8462 behaves like response with 404 status8463 returns 4048464 GET #new8465 behaves like ok response with index template if authorized8466 private group8467 with authorized user8468 when crm_enabled is true8469 behaves like ok response with index template8470 renders the index template8471 when crm_enabled is false8472 behaves like response with 404 status8473 returns 4048474 when subgroup8475 behaves like response with 404 status8476 returns 4048477 with unauthorized user8478 behaves like response with 404 status8479 returns 4048480 with anonymous user8481 blah8482 public group8483 with anonymous user8484 behaves like response with 404 status8485 returns 4048486 GET #edit8487 behaves like ok response with index template if authorized8488 private group8489 with authorized user8490 when crm_enabled is true8491 behaves like ok response with index template8492 renders the index template8493 when crm_enabled is false8494 behaves like response with 404 status8495 returns 4048496 when subgroup8497 behaves like response with 404 status8498 returns 4048499 with unauthorized user8500 behaves like response with 404 status8501 returns 4048502 with anonymous user8503 blah8504 public group8505 with anonymous user8506 behaves like response with 404 status8507 returns 4048508Projects::HooksController8509 #index8510 renders index with 200 status code8511 #update8512 adds, updates and deletes URL variables8513 with an existing token8514 does not change a token8515 #edit8516 does not error if the hook cannot be found8517 assigns hook_logs8518 handles when logs are present8519 can paginate logs8520 #create8521 sets all parameters8522 alerts the user if the new hook is invalid8523 DELETE #destroy8524 behaves like Web hook destroyer8525 displays a message about synchronous delete8526 displays a message about async delete8527 displays an error if deletion failed8528 when user does not have permission8529 renders a 4048530 #test8531 when the hook executes successfully8532 informs the user8533 when the hook runs, but fails8534 informs the user8535 when the hook fails completely8536 informs the user8537 when the endpoint receives requests above the limit8538 prevents making test requests8539Deleting a release8540 when the current user has access to update releases8541 deletes the release8542 returns the deleted release8543 does not remove the Git tag associated with the deleted release8544 returns no errors8545 validation8546 when the release does not exist8547 returns the release as null8548 returns an errors-at-data message8549 when the project does not exist8550 behaves like unauthorized or not found error8551 returns a top-level error with message8552 when the current user doesn't have access to update releases8553 when the current user is a Reporter8554 behaves like unauthorized or not found error8555 returns a top-level error with message8556 when the current user is a Guest8557 behaves like unauthorized or not found error8558 returns a top-level error with message8559 when the current user is a public user8560 behaves like unauthorized or not found error8561 returns a top-level error with message8562Emails::Issues8563 adds email methods to Notify8564 #import_issues_csv_email8565 shows number of successful issues imported8566 shows error when file is invalid8567 shows line numbers with errors8568 with header and footer8569 behaves like appearance header and footer enabled8570 contains header and footer8571 behaves like appearance header and footer not enabled8572 does not contain header and footer8573 #issues_csv_email8574 behaves like export csv email8575 attachment has csv mime type8576 generates a useful filename8577 mentions number of objects and project name8578 doesn't need to mention truncation by default8579 when truncated8580 mentions that the csv has been truncated8581 mentions the number of objects written and expected8582getting a tree in a project8583 when path does not exist8584 returns empty tree8585 returns null commit8586 when ref does not exist8587 returns empty tree8588 returns null commit8589 when ref and path exist8590 returns tree8591 returns blobs, subtrees and submodules inside tree8592 returns tree latest commit8593 when the ref points to a gpg-signed commit with a user8594 returns the expected signature data8595 when the ref points to a X.509-signed commit8596 returns the expected signature data8597 returns expected certificate data8598 when the ref points to a SSH-signed commit8599 returns the expected signature data8600 when current user is nil8601 returns empty project8602Milestones through GroupQuery8603 Get list of milestones from a group8604 when the request is correct8605 returns milestones successfully8606 behaves like a working graphql query8607 returns a successful response8608 when filtering by timeframe8609 fetches milestones between timeframe start and end arguments8610 when filtering by state8611 returns milestones with given state8612 when including milestones from decendants8613 when including decendants8614 returns milestones also from subgroups and subprojects visible to user8615 when including ancestors8616 returns milestones from ancestor groups8617 ensures each field returns the correct value8618 returns correct values for scalar fields8619 milestone statistics8620 returns the correct milestone statistics8621API::ProjectSnapshots8622 GET /projects/:id/snapshot8623 returns authentication error as project owner8624 returns authentication error as unauthenticated user8625 requests project repository raw archive as administrator8626 requests wiki repository raw archive as administrator8627 behaves like GET request permissions for admin mode8628 behaves like when admin8629 behaves like makes request8630 returns8631 behaves like makes request8632 returns8633 behaves like when user8634 returns8635 behaves like makes request8636 returns8637Admin::Ci::VariablesController8638 GET #show8639 when signed in as admin8640 renders the variables as json8641 has only one variable8642 when signed in as regular user8643 returns 4048644 PATCH #update8645 when signed in as admin8646 with invalid new variable parameters8647 does not update the existing variable8648 does not create the new variable8649 returns a bad request response8650 with duplicate new variable parameters8651 does not update the existing variable8652 does not create the new variable8653 returns a bad request response8654 with valid new variable parameters8655 updates the existing variable8656 creates the new variable8657 returns a successful response8658 has all variables in response8659 with a deleted variable8660 destroys the variable8661 returns a successful response8662 has all variables in response8663 with missing variable8664 returns not found response8665 for variables of type file8666 creates new variable of type file8667 when signed in as regular user8668 returns 4048669getting dependency proxy image ttl policy for a group8670 behaves like a working graphql query8671 returns a successful response8672 with different permissions8673 group_visibility: :private, role: :owner, access_granted: true8674 return the proper response8675 group_visibility: :private, role: :maintainer, access_granted: false8676 return the proper response8677 when the feature flag is disabled8678 returns the proper response8679 group_visibility: :private, role: :developer, access_granted: false8680 return the proper response8681 group_visibility: :private, role: :reporter, access_granted: false8682 return the proper response8683 group_visibility: :private, role: :guest, access_granted: false8684 return the proper response8685 group_visibility: :private, role: :anonymous, access_granted: false8686 return the proper response8687 group_visibility: :public, role: :owner, access_granted: true8688 return the proper response8689 group_visibility: :public, role: :maintainer, access_granted: false8690 return the proper response8691 when the feature flag is disabled8692 returns the proper response8693 group_visibility: :public, role: :developer, access_granted: false8694 return the proper response8695 group_visibility: :public, role: :reporter, access_granted: false8696 return the proper response8697 group_visibility: :public, role: :guest, access_granted: false8698 return the proper response8699 group_visibility: :public, role: :anonymous, access_granted: false8700 return the proper response8701getting incident timeline events8702 # order random8703 returns the correct number of timeline events8704 returns the correct properties of the incident timeline events8705 behaves like a working graphql query8706 returns a successful response8707 when timelineEvent tags are linked8708 returns the set tags8709 behaves like a working graphql query8710 returns a successful response8711 when different timeline events are loaded8712 avoids N+1 queries8713 when filtering by id8714 returns a single timeline event8715 behaves like a working graphql query8716 returns a successful response8717Projects::Harbor::ArtifactsController8718 behaves like a harbor artifacts controller8719 GET #index.json8720 with harbor registry feature flag enabled8721 behaves like responds with 200 status with json8722 renders the index template8723 with harbor registry feature flag disabled8724 behaves like responds with 404 status8725 returns 4048726 with anonymous user8727 behaves like responds with 302 status8728 returns 3028729 with unauthorized user8730 behaves like responds with 404 status8731 returns 4048732 with valid params8733 with valid repository8734 behaves like responds with 200 status with json8735 renders the index template8736 with valid page8737 behaves like responds with 200 status with json8738 renders the index template8739 with valid limit8740 behaves like responds with 200 status with json8741 renders the index template8742 with invalid params8743 with invalid page8744 behaves like responds with 422 status with json8745 returns 4228746 with invalid limit8747 behaves like responds with 422 status with json8748 returns 4228749Users::TermsController8750 GET #index8751 when a user is signed in8752 redirects when no terms exist8753 when terms exist8754 shows terms when they exist8755 shows a message when the user already accepted the terms8756 when a user is not signed in8757 when terms exist8758 returns success response8759 when no terms exist8760 redirects8761 POST #accept8762 when a user is signed in8763 saves that the user accepted the terms8764 redirects to a path when specified8765 redirects to the referer when no redirect specified8766 redirecting to another domain8767 is prevented when passing a redirect param8768 is prevented when redirecting to the referer8769 when a user is not signed in8770 redirects to login page8771 POST #decline8772 when a user is signed in8773 stores that the user declined the terms8774 signs out the user8775 when a user is not signed in8776 redirects to login page8777SourcegraphDecorator8778 with feature enabled, application enabled, and user enabled8779 behaves like enabled8780 is expected to eq {:url=>"http://sourcegraph.gitlab.com"}8781 with feature enabled for specific project8782 behaves like enabled8783 is expected to eq {:url=>"http://sourcegraph.gitlab.com"}8784 with feature enabled for different project8785 behaves like disabled8786 is expected to be nil8787 with feature disabled8788 behaves like disabled8789 is expected to be nil8790 with admin settings disabled8791 behaves like disabled8792 is expected to be nil8793 with public only8794 with internal project8795 behaves like disabled8796 is expected to be nil8797 with public project8798 behaves like enabled8799 is expected to eq {:url=>"http://sourcegraph.gitlab.com"}8800 with user disabled8801 behaves like disabled8802 is expected to be nil8803 with no user8804 behaves like disabled8805 is expected to be nil8806 with non-html format8807 behaves like disabled8808 is expected to be nil8809Restoring Todos8810 restores a single todo8811 when todo is already marked pending8812 has the expected response8813 when todo does not belong to requesting user8814 results in the correct todo states8815 behaves like a mutation that returns a top-level access error8816 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"8817 when using an invalid gid8818 contains the expected error8819Query.project(fullPath).pipelines.job(id)8820 scalar fields8821 retrieves scalar fields8822 when fetching by name8823 retrieves scalar fields8824 .detailedStatus8825 retrieves detailed status8826 .stage8827 returns appropriate data8828Projects::Ml::CandidatesController8829 # order random8830 GET show8831 renders the template8832 does not perform N+1 sql queries8833 behaves like 404 if candidate does not exist8834 when experiment does not exist8835 behaves like renders 4048836 renders 4048837 behaves like 404 if feature flag disabled8838 when :ml_experiment_tracking disabled8839 behaves like renders 4048840 renders 4048841 DELETE #destroy8842 deletes the experiment8843 behaves like 404 if candidate does not exist8844 when experiment does not exist8845 behaves like renders 4048846 renders 4048847 behaves like 404 if feature flag disabled8848 when :ml_experiment_tracking disabled8849 behaves like renders 4048850 renders 4048851getting Issue counts by status8852 with issue count data8853 without project permissions8854 is expected to equal nil8855 behaves like a working graphql query8856 returns a successful response8857 with project permissions8858 returns the correct counts for each status8859 behaves like a working graphql query8860 returns a successful response8861Profiles::PersonalAccessTokensController8862 #create8863 allows creation of a token with scopes8864 allows creation of a token with an expiry date8865 does not allow creation when personal access tokens are disabled8866 behaves like #create access token8867 when POST is successful8868 renders JSON with a new token8869 when POST is unsuccessful8870 renders JSON with an error8871 GET /-/profile/personal_access_tokens8872 behaves like GET access tokens are paginated and ordered8873 when multiple access tokens are returned8874 returns paginated response8875 when access_token_pagination feature flag is disabled8876 returns all tokens in system8877 when tokens returned are ordered8878 orders token list ascending on expires_at8879 orders tokens on id in case token has same expires_at8880 #index8881 only includes details of the active personal access token8882 sets PAT name and scopes8883 returns 404 when personal access tokens are disabled8884 returns tokens for json format8885Merge Requests Context Commit Diffs8886 GET diffs_batch8887 without caching8888 behaves like serializes diffs with expected arguments8889 serializes paginated merge request diff collection8890 with caching8891 when the request has not been cached8892 behaves like serializes diffs with expected arguments8893 serializes paginated merge request diff collection8894 when the request has already been cached8895 does not serialize diffs8896 with the different user8897 behaves like serializes diffs with expected arguments8898 serializes paginated merge request diff collection8899getting job information8900 # order random8901 when user is admin8902 has full access to all jobs8903 when filtered by status8904 gets pending jobs8905 gets pending and failed jobs8906 when N+1 queries8907 avoids N+1 queries successfully8908 if the user is not an admin8909 has no access to the jobs8910Projects::ReleasesController8911 GET #downloads8912 filepath redirection8913 valid filepath8914 redirects to the asset direct link8915 redirects with a status of 3028916 invalid filepath8917 is not found8918 sessionless download authentication8919 will allow sessionless users to download the file8920 invalid filepath8921 cannot create an invalid filepath8922RendersCommits8923 sets instance variables for counts8924 rendering commits8925 avoids N + 18926 .prepare_commits_for_rendering8927 avoids N+18928getting CRM contacts8929 behaves like sorted paginated query8930 behaves like requires variables8931 shared example requires variables to be set8933 when sorting8934 sorts correctly8935 when paginating8936 paginates correctly8937getting push access levels for a branch protection8938 # order random8939 behaves like a GraphQL query for access levels8940 when request AccessLevel type objects as a guest user8941 is expected not to be present8942 behaves like a working graphql query8943 returns a successful response8944 when request AccessLevel type objects as a maintainer8945 query8946 avoids N+1 queries8947 response8948 returns all the access level attributes8949 behaves like a working graphql query8950 returns a successful response8951Delete a cluster agent8952 without project permissions8953 does not delete cluster agent8954 behaves like a mutation that returns top-level errors8955 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"8956 with project permissions8957 deletes a cluster agent8958Groups::AchievementsController8959 # order random8960 GET #index8961 behaves like ok response with index template if authorized8962 with a private group8963 with authorized user8964 behaves like ok response with index template8965 renders the index template8966 when achievements ff is disabled8967 behaves like response with 404 status8968 returns 4048969 with unauthorized user8970 behaves like response with 404 status8971 returns 4048972 with anonymous user8973 redirects to sign_in page8974 with a public group8975 with anonymous user8976 behaves like ok response with index template8977 renders the index template8978Group callouts8979 POST /-/users/group_callouts8980 with valid feature name and group8981 when callout entry does not exist8982 creates a callout entry with dismissed state8983 returns success8984 when callout entry already exists8985 returns success8986 with invalid feature name8987 returns bad request8988Emails::WorkItems8989 # order random8990 #export_work_items_csv_email8991 behaves like export csv email8992 attachment has csv mime type8993 generates a useful filename8994 mentions number of objects and project name8995 doesn't need to mention truncation by default8996 when truncated8997 mentions that the csv has been truncated8998 mentions the number of objects written and expected8999API::Admin::Sidekiq9000 DELETE /admin/sidekiq/queues/:queue_name9001 when the user is an admin9002 valid request9003 returns info about the deleted jobs9004 behaves like DELETE request permissions for admin mode9005 behaves like when admin9006 behaves like makes request9007 returns9008 behaves like makes request9009 returns9010 behaves like when user9011 returns9012 behaves like makes request9013 returns9014 when no required params are provided9015 returns a 4009016 when the queue does not exist9017 returns a 4049018Projects::Analytics::CycleAnalytics::SummaryController9019 GET "show"9020 succeeds9021 when analytics_disabled features are disabled9022 renders 4049023 when user is not part of the project9024 renders 4049025 when filters are applied9026 filters by author username9027 filters by milestone title9028Creating a new Prometheus Integration9029 creates a new integration9030 without required argument project_path9031 behaves like an invalid argument to the mutation9032 behaves like a mutation that returns top-level errors9033 is expected to contain exactly (include "invalid value for projectPath")9034 without required argument active9035 behaves like an invalid argument to the mutation9036 behaves like a mutation that returns top-level errors9037 is expected to contain exactly (include "invalid value for active")9038 without required argument api_url9039 behaves like an invalid argument to the mutation9040 behaves like a mutation that returns top-level errors9041 is expected to contain exactly (include "invalid value for apiUrl")9042Update Environment Canary Ingress9043 when kubernetes accepted the patch request9044 updates successfully9045Update Environment9046 # order random9047 when updating external URL9048 updates successfully9049 when url is invalid9050 returns error9051 when updating tier9052 updates successfully9053API::Integrations::Slack::Interactions9054 # order random9055 POST /integrations/slack/interactions9056 behaves like Slack request verification9057 unauthorized request9058 when the slack_app_signing_secret setting is not set9059 behaves like an unauthorized request9060 is expected to respond with numeric status code unauthorized9061 when the timestamp header has expired9062 behaves like an unauthorized request9063 is expected to respond with numeric status code unauthorized9064 when the timestamp header is missing9065 behaves like an unauthorized request9066 is expected to respond with numeric status code unauthorized9067 when the signature header is missing9068 behaves like an unauthorized request9069 is expected to respond with numeric status code unauthorized9070 when the signature is not verified9071 behaves like an unauthorized request9072 is expected to respond with numeric status code unauthorized9073 when type param is missing9074 behaves like a successful request that generates a tracked error9075 is expected to be empty9076 when type param is unknown9077 generates a tracked error9078 when event.type param is view_closed9079 calls the Slack Interactivity Service9080Oauth::AuthorizationsController9081 GET #new9082 when application redirect URI has a custom scheme9083 when CSP is disabled9084 does not add a CSP9085 when CSP contains form-action9086 adds custom scheme to CSP form-action9087 when CSP does not contain form-action9088 does not add form-action to the CSP9089Resetting a token on an existing Prometheus Integration9090 creates a token9091 with an existing alerting setting9092 updates the token9093Projects::ErrorTracking::StackTracesController9094 GET #index9095 when awaiting data9096 responds with no data9097 behaves like sets the polling header9098 is expected to eq "1000"9099 when service result is successful9100 highlights stack trace source code9101 behaves like sets the polling header9102 is expected to eq "1000"9103 when service result is erroneous9104 without http_status9105 responds with bad request9106 with explicit http_status9107 responds with custom http status9108Updating the dependency proxy image ttl policy9109 post graphql mutation9110 without permission9111 returns no response9112 with permission9113 for owner9114 returns the updated dependency proxy image ttl policy9115 for maintainer9116 returns the updated dependency proxy image ttl policy9117getting group recent issue boards9118 behaves like querying a GraphQL type recent boards9119 Get list of recently visited boards9120 when the request is correct9121 returns recent boards for user successfully9122 behaves like a working graphql query9123 returns a successful response9124 when requests has errors9125 when there are no recently visited boards9126 returns empty result9127GroupMember9128 behaves like a working graphql query9129 returns a successful response9130 behaves like a working membership object query9131 contains edge to expected project9132 contains correct access level9133Timeline Events9134 # order random9135 POST /preview_markdown9136 when authorized9137 renders JSON in a correct format9138 when not authorized9139 returns 3029140Groups::AvatarsController9141 removes avatar from DB calling destroy9142 works when external authorization service is enabled9143delete a terraform state9144 returns a successful response9145Projects::PipelinesSettingsController9146 GET show9147 redirects with 302 status code9148Groups::PackagesController9149 GET #index9150 behaves like returning response status9151 returns ok9152 GET #show9153 behaves like returning response status9154 returns ok9155Terraform::ServicesController9156 GET /.well-known/terraform.json9157 responds with terraform service discovery9158Finished in 19 minutes 58 seconds (files took 1 minute 9.76 seconds to load)91593662 examples, 0 failures9160Randomized with seed 501199161[TEST PROF INFO] Time spent in factories: 06:25.791 (31.32% of total time)9162RSpec exited with 0.9163No examples to retry, congrats!9165Not uploading cache ruby-gems-debian-bullseye-ruby-3.0-16 due to policy9167Uploading artifacts...9168coverage/: found 5 matching artifact files and directories 9169crystalball/: found 2 matching artifact files and directories 9170WARNING: deprecations/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 9171knapsack/: found 4 matching artifact files and directories 9172WARNING: query_recorder/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 9173rspec/: found 14 matching artifact files and directories 9174WARNING: tmp/capybara/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 9175log/*.log: found 14 matching artifact files and directories 9176WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/4400964701/artifacts?artifact_format=zip&artifact_type=archive&expire_in=31d new-url=https://gitlab.com9177WARNING: Retrying... context=artifacts-uploader error=request redirected9178Uploading artifacts as "archive" to coordinator... 201 Created id=4400964701 responseStatus=201 Created token=64_yfzfK9179Uploading artifacts...9180rspec/rspec-*.xml: found 1 matching artifact files and directories 9181WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/4400964701/artifacts?artifact_format=gzip&artifact_type=junit&expire_in=31d new-url=https://gitlab.com9182WARNING: Retrying... context=artifacts-uploader error=request redirected9183Uploading artifacts as "junit" to coordinator... 201 Created id=4400964701 responseStatus=201 Created token=64_yfzfK9185Job succeeded