rspec integration pg14 single-redis 7/12
Passed Started
by
@seggenberger

Sascha Eggenberger
1Running with gitlab-runner 16.6.0~beta.105.gd2263193 (d2263193)2 on green-5.private.runners-manager.gitlab.com/gitlab.com/gitlab-org Zi_8oswQ, system ID: s_8a4f217c24b63 feature flags: FF_NETWORK_PER_BUILD:true, FF_USE_FASTZIP:true, FF_USE_IMPROVED_URL_MASKING:true6Using Docker executor with image registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.1.patched-golang-1.20-rust-1.73-node-18.17-postgresql-14:rubygems-3.4-git-2.36-lfs-2.9-chrome-113-yarn-1.22-graphicsmagick-1.3.36 ...7Starting service registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-14-pgvector-0.4.1 ...8Authenticating with credentials from job payload (GitLab Registry)9Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-14-pgvector-0.4.1 ...10Using docker image sha256:6c7370fd46a94d5beaed2a0304c7518e74a5759d4da3322ea9f7052507f51d80 for registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-14-pgvector-0.4.1 with digest registry.gitlab.com/gitlab-org/gitlab-build-images@sha256:1b39aac95406782d786043ec3f1772c0a3a5ce1b9ce28cf001cac9a290f366c8 ...11WARNING: Service registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 is already created. Ignoring.12WARNING: Service registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 is already created. Ignoring.13Starting service registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 ...14Authenticating with credentials from job payload (GitLab Registry)15Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 ...16Using docker image sha256:f4c047edb00d9bbfcc2b002a01548fab14592940f5b3e6b3f227f690e3fa272d for registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 with digest registry.gitlab.com/gitlab-org/gitlab-build-images@sha256:9a1b6b68dc464f0baae914703d5b059e7773bf23c9579c44e2a1b1154a83656f ...17Starting service redis:6.2-alpine ...18Pulling docker image redis:6.2-alpine ...19Using docker image sha256:c9052246611fd2d9efcf620a05898778c045696a9ef664a13d2454e073dd05cc for redis:6.2-alpine with digest redis@sha256:80cc8518800438c684a53ed829c621c94afd1087aaeb59b0d4343ed3e7bcf6c5 ...20Waiting for services to be up and running (timeout 30 seconds)...21Authenticating with credentials from job payload (GitLab Registry)22Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.1.patched-golang-1.20-rust-1.73-node-18.17-postgresql-14:rubygems-3.4-git-2.36-lfs-2.9-chrome-113-yarn-1.22-graphicsmagick-1.3.36 ...23Using docker image sha256:b6ecd857a9432dbcf3db944482b11a6539f3a0be42b882ff1b2e14c381fb46ad for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.1.patched-golang-1.20-rust-1.73-node-18.17-postgresql-14:rubygems-3.4-git-2.36-lfs-2.9-chrome-113-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.1.patched-golang-1.20-rust-1.73-node-18.17-postgresql-14@sha256:1312a2d5cbb44b0f06794cc762e3b684b200c3e4c0ba6e458c61a641293b28c0 ...25Running on runner-zi8oswq-project-278964-concurrent-0 via runner-zi8oswq-private-1700667630-cf018131...27Fetching changes with git depth set to 20...28Initialized empty Git repository in /builds/gitlab-org/gitlab/.git/29Created fresh repository.30remote: Enumerating objects: 160062, done. 31remote: Counting objects: 100% (160062/160062), done. 32remote: Compressing objects: 100% (106043/106043), done. 33remote: Total 160062 (delta 72911), reused 107612 (delta 47791), pack-reused 0 34Receiving objects: 100% (160062/160062), 141.24 MiB | 31.72 MiB/s, done.35Resolving deltas: 100% (72911/72911), done.37 * [new ref] refs/pipelines/1081810896 -> refs/pipelines/108181089638Checking out bc34b5b9 as detached HEAD (ref is refs/merge-requests/137025/merge)...39Skipping Git submodules setup40$ git remote set-url origin "${CI_REPOSITORY_URL}"42Checking cache for ruby-gems-debian-bullseye-ruby-3.1-16...43cache.zip is up to date 44Successfully extracted cache46Downloading artifacts for compile-test-assets (5597250154)...47Downloading artifacts from coordinator... ok host=storage.googleapis.com id=5597250154 responseStatus=200 OK token=64_n6zZd48Downloading artifacts for detect-tests (5597250235)...49Downloading artifacts from coordinator... ok host=storage.googleapis.com id=5597250235 responseStatus=200 OK token=64_n6zZd50Downloading artifacts for retrieve-tests-metadata (5597250273)...51Downloading artifacts from coordinator... ok host=storage.googleapis.com id=5597250273 responseStatus=200 OK token=64_n6zZd52Downloading artifacts for setup-test-env (5597250178)...53Downloading artifacts from coordinator... ok host=storage.googleapis.com id=5597250178 responseStatus=200 OK token=64_n6zZd55Using docker image sha256:b6ecd857a9432dbcf3db944482b11a6539f3a0be42b882ff1b2e14c381fb46ad for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.1.patched-golang-1.20-rust-1.73-node-18.17-postgresql-14:rubygems-3.4-git-2.36-lfs-2.9-chrome-113-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.1.patched-golang-1.20-rust-1.73-node-18.17-postgresql-14@sha256:1312a2d5cbb44b0f06794cc762e3b684b200c3e4c0ba6e458c61a641293b28c0 ...56$ echo $FOSS_ONLY57$ [ "$FOSS_ONLY" = "1" ] && rm -rf ee/ qa/spec/ee/ qa/qa/specs/features/ee/ qa/qa/ee/ qa/qa/ee.rb58$ export GOPATH=$CI_PROJECT_DIR/.go59$ mkdir -p $GOPATH60$ source scripts/utils.sh61$ source scripts/prepare_build.sh93Using decomposed database config (config/database.yml.decomposed-postgresql)94Geo DB won't be set up.95Embedding DB won't be set up.147$ source ./scripts/rspec_helpers.sh148$ run_timed_command "gem install knapsack --no-document"149$ gem install knapsack --no-document150Successfully installed knapsack-4.0.01511 gem installed152==> 'gem install knapsack --no-document' succeeded in 1 seconds.153$ section_start "gitaly-test-spawn" "Spawning Gitaly"; scripts/gitaly-test-spawn; section_end "gitaly-test-spawn"158$ export RSPEC_SKIPPED_TESTS_REPORT_PATH="rspec/skipped_tests-${CI_JOB_ID}.txt"159$ export RSPEC_RETRIED_TESTS_REPORT_PATH="rspec/retried_tests-${CI_JOB_ID}.txt"160$ tooling/bin/create_job_metrics_file || true161[job-metrics] Creating the job metrics file for the CI/CD job.162$ rspec_paralellized_job "--fail-fast=${RSPEC_FAIL_FAST_THRESHOLD} --tag ~quarantine --tag ~level:background_migration --tag ~click_house --tag ~real_ai_request"163RETRY_FAILED_TESTS_IN_NEW_PROCESS: true164KNAPSACK_GENERATE_REPORT: true165FLAKY_RSPEC_GENERATE_REPORT: true166KNAPSACK_TEST_FILE_PATTERN: spec/{commands,controllers,mailers,requests}{,/**/}*_spec.rb167KNAPSACK_LOG_LEVEL: debug168KNAPSACK_REPORT_PATH: knapsack/rspec_integration_pg14_single-redis_7_12_report.json169FLAKY_RSPEC_SUITE_REPORT_PATH: rspec/flaky/report-suite.json170FLAKY_RSPEC_REPORT_PATH: rspec/flaky/all_rspec_integration_pg14_single-redis_7_12_report.json171NEW_FLAKY_RSPEC_REPORT_PATH: rspec/flaky/new_rspec_integration_pg14_single-redis_7_12_report.json172RSPEC_SKIPPED_TESTS_REPORT_PATH: rspec/skipped_tests-5597251441.txt173CRYSTALBALL: 174RSPEC_TESTS_MAPPING_ENABLED: 175RSPEC_TESTS_FILTER_FILE: 176Shell set options (set -o) enabled:177braceexpand on178hashall on179interactive-comments on180pipefail on181Knapsack report generator started!182Run options: exclude {:quarantine=>true, :level=>"background_migration", :click_house=>true, :real_ai_request=>true}183unknown OID 2249: failed to recognize type of 'pg_stat_file'. It will be treated as String.184unknown OID 2249: failed to recognize type of 'pg_stat_file'. It will be treated as String.185Test environment set up in 0.635609554 seconds186API::MergeRequests187 route shadowing188 does not occur189 GET /merge_requests190 when unauthenticated191 returns an array of all merge requests192 returns authentication error without any scope193 returns authentication error when scope is assigned-to-me194 returns authentication error when scope is assigned_to_me195 returns authentication error when scope is created-by-me196 behaves like issuable API rate-limited search197 behaves like rate limited endpoint198 when rate limiter enabled199 logs request and declines it when endpoint called more than the threshold200 when rate limiter is disabled201 does not log request and does not block the request202 behaves like rate limited endpoint203 when rate limiter enabled204 logs request and declines it when endpoint called more than the threshold205 when rate limiter is disabled206 does not log request and does not block the request207 when authenticated208 returns an array of all merge requests except unauthorized ones209 returns an array of no merge_requests when wip=yes210 returns an array of no merge_requests when wip=no211 does not return unauthorized merge requests212 returns an array of merge requests created by current user if no scope is given213 returns an array of merge requests assigned to the given user214 returns an array of merge requests with no assignee215 returns an array of merge requests with any assignee216 returns an array of merge requests assigned to me217 returns an array of merge requests assigned to me (kebab-case)218 returns an array of merge requests created by me219 returns an array of merge requests created by me (kebab-case)220 returns merge requests reacted by the authenticated user by the given emoji221 returns merge requests created before a specific date222 returns merge requests created after a specific date223 returns merge requests updated before a specific date224 returns merge requests updated after a specific date225 filter by author226 when only `author_id` is passed227 returns an array of merge requests authored by the given user228 when only `author_username` is passed229 returns an array of merge requests authored by the given user(by `author_username`)230 when both `author_id` and `author_username` are passed231 returns a 400232 filter by reviewer233 with reviewer_id234 with an id235 returns review requested merge requests for the given user236 with Any237 returns review requested merge requests for any user238 with None239 returns merge requests that has no assigned reviewers240 with reviewer_username241 returns review requested merge requests for the given user242 with both reviewer_id and reviewer_username243 returns a 400244 source_branch param245 returns merge requests with the given source branch246 target_branch param247 returns merge requests with the given target branch248 search params249 returns merge requests matching given search string for title250 returns merge requests matching given search string for title and scoped in title251 returns an empty array if no merge request matches given search string for description and scoped in title252 returns merge requests for project matching given search string for description253 state param254 returns merge requests with the given state255 GET /projects/:id/merge_requests256 returns 404 for non public projects257 returns an array of no merge_requests when wip=yes258 returns merge_request by "iids" array259 behaves like merge requests list260 when unauthenticated261 returns merge requests for public projects262 when merge request is unchecked263 with merge status recheck projection264 does not check mergeability265 behaves like issuable API rate-limited search266 behaves like rate limited endpoint267 when rate limiter enabled268 logs request and declines it when endpoint called more than the threshold269 when rate limiter is disabled270 does not log request and does not block the request271 behaves like rate limited endpoint272 when rate limiter enabled273 logs request and declines it when endpoint called more than the threshold274 when rate limiter is disabled275 does not log request and does not block the request276 when authenticated277 returns an array of all merge_requests using simple mode278 returns an array of all merge_requests279 returns an array of open merge_requests280 returns an array of closed merge_requests281 returns an array of merged merge_requests282 matches V4 response schema283 returns an empty array if no issue matches milestone284 returns an empty array if milestone does not exist285 returns an array of merge requests in given milestone286 returns an array of merge requests matching state in milestone287 returns an array of labeled merge requests that are merged for a milestone288 when merge request is unchecked289 with a developer+ role290 with merge status recheck projection291 checks mergeability asynchronously in batch292 without merge status recheck projection293 does not enqueue a merge status recheck294 with a reporter role295 with merge status recheck projection296 does not check mergeability297 with labels298 returns an array of all merge_requests299 with labels_details300 returns labels with details301 when DB timeouts occur302 returns a :request_timeout status303 with approved param304 returns only approved merge requests305 returns only non-approved merge requests306 with labels307 returns an array of labeled merge requests308 returns an array of labeled merge requests where all labels match309 returns an empty array if no merge request matches labels310 returns an array of labeled merge requests where all labels match311 returns an array of merge requests with any label when filtering by any label312 returns an array of merge requests with any label when filtering by any label313 returns an array of merge requests with any label when filtering by any label314 returns an array of merge requests without a label when filtering by no label315 with ordering316 returns an array of merge_requests in ascending order317 returns an array of merge_requests in descending order318 returns an array of merge_requests ordered by updated_at319 returns an array of merge_requests ordered by created_at320 2 merge requests with equal created_at321 page breaks first page correctly322 page breaks second page correctly323 returns an array of merge_requests ordered by title324 asc when requested325 desc when requested326 NOT params327 returns merge requests without any of the labels given328 returns merge requests without any of the milestones given329 returns merge requests without the author given330 returns merge requests without the assignee given331 filter by reviewer332 with reviewer_id333 with an id334 returns merge requests that do not have the given reviewer335 with Any336 returns a 400337 with None338 returns a 400339 with reviewer_username340 returns merge requests that do not have the given reviewer341 when both reviewer_id and reviewer_username342 returns a 400343 source_branch param344 returns merge requests with the given source branch345 target_branch param346 returns merge requests with the given target branch347 caching348 when it is cached349 behaves like a cached MergeRequest api request350 serializes merge request351 when it is not cached352 when the status changes353 behaves like a non-cached MergeRequest api request354 serializes merge request355 when the label changes356 behaves like a non-cached MergeRequest api request357 serializes merge request358 when the assignees change359 behaves like a non-cached MergeRequest api request360 serializes merge request361 when the reviewers change362 behaves like a non-cached MergeRequest api request363 serializes merge request364 when another user requests365 behaves like a non-cached MergeRequest api request366 serializes merge request367 when filtering by deployments368 supports getting merge requests deployed to an environment369 does not return merge requests for an environment without deployments370 supports getting merge requests deployed after a date371 does not return merge requests not deployed after a given date372 supports getting merge requests deployed before a date373 does not return merge requests not deployed before a given date374 when user is an inherited member from the group375 and user is a guest376 when project is public with private merge requests377 behaves like user cannot view merge requests378 returns 403 forbidden379 when project is private380 behaves like user cannot view merge requests381 returns 403 forbidden382 GET /groups/:id/merge_requests383 behaves like merge requests list384 when unauthenticated385 returns merge requests for public projects386 when merge request is unchecked387 with merge status recheck projection388 does not check mergeability389 behaves like issuable API rate-limited search390 behaves like rate limited endpoint391 when rate limiter enabled392 logs request and declines it when endpoint called more than the threshold393 when rate limiter is disabled394 does not log request and does not block the request395 behaves like rate limited endpoint396 when rate limiter enabled397 logs request and declines it when endpoint called more than the threshold398 when rate limiter is disabled399 does not log request and does not block the request400 when authenticated401 returns an array of all merge_requests using simple mode402 returns an array of all merge_requests403 returns an array of open merge_requests404 returns an array of closed merge_requests405 returns an array of merged merge_requests406 matches V4 response schema407 returns an empty array if no issue matches milestone408 returns an empty array if milestone does not exist409 returns an array of merge requests in given milestone410 returns an array of merge requests matching state in milestone411 returns an array of labeled merge requests that are merged for a milestone412 when merge request is unchecked413 with a developer+ role414 with merge status recheck projection415 checks mergeability asynchronously in batch416 without merge status recheck projection417 does not enqueue a merge status recheck418 with a reporter role419 with merge status recheck projection420 does not check mergeability421 with labels422 returns an array of all merge_requests423 with labels_details424 returns labels with details425 when DB timeouts occur426 returns a :request_timeout status427 with approved param428 returns only approved merge requests429 returns only non-approved merge requests430 with labels431 returns an array of labeled merge requests432 returns an array of labeled merge requests where all labels match433 returns an empty array if no merge request matches labels434 returns an array of labeled merge requests where all labels match435 returns an array of merge requests with any label when filtering by any label436 returns an array of merge requests with any label when filtering by any label437 returns an array of merge requests with any label when filtering by any label438 returns an array of merge requests without a label when filtering by no label439 with ordering440 returns an array of merge_requests in ascending order441 returns an array of merge_requests in descending order442 returns an array of merge_requests ordered by updated_at443 returns an array of merge_requests ordered by created_at444 2 merge requests with equal created_at445 page breaks first page correctly446 page breaks second page correctly447 returns an array of merge_requests ordered by title448 asc when requested449 desc when requested450 NOT params451 returns merge requests without any of the labels given452 returns merge requests without any of the milestones given453 returns merge requests without the author given454 returns merge requests without the assignee given455 filter by reviewer456 with reviewer_id457 with an id458 returns merge requests that do not have the given reviewer459 with Any460 returns a 400461 with None462 returns a 400463 with reviewer_username464 returns merge requests that do not have the given reviewer465 when both reviewer_id and reviewer_username466 returns a 400467 source_branch param468 returns merge requests with the given source branch469 target_branch param470 returns merge requests with the given target branch471 when have subgroups472 behaves like merge requests list473 when unauthenticated474 returns merge requests for public projects475 when merge request is unchecked476 with merge status recheck projection477 does not check mergeability478 behaves like issuable API rate-limited search479 behaves like rate limited endpoint480 when rate limiter enabled481 logs request and declines it when endpoint called more than the threshold482 when rate limiter is disabled483 does not log request and does not block the request484 behaves like rate limited endpoint485 when rate limiter enabled486 logs request and declines it when endpoint called more than the threshold487 when rate limiter is disabled488 does not log request and does not block the request489 when authenticated490 returns an array of all merge_requests using simple mode491 returns an array of all merge_requests492 returns an array of open merge_requests493 returns an array of closed merge_requests494 returns an array of merged merge_requests495 matches V4 response schema496 returns an empty array if no issue matches milestone497 returns an empty array if milestone does not exist498 returns an array of merge requests in given milestone499 returns an array of merge requests matching state in milestone500 returns an array of labeled merge requests that are merged for a milestone501 when merge request is unchecked502 with a developer+ role503 with merge status recheck projection504 checks mergeability asynchronously in batch505 without merge status recheck projection506 does not enqueue a merge status recheck507 with a reporter role508 with merge status recheck projection509 does not check mergeability510 with labels511 returns an array of all merge_requests512 with labels_details513 returns labels with details514 when DB timeouts occur515 returns a :request_timeout status516 with approved param517 returns only approved merge requests518 returns only non-approved merge requests519 with labels520 returns an array of labeled merge requests521 returns an array of labeled merge requests where all labels match522 returns an empty array if no merge request matches labels523 returns an array of labeled merge requests where all labels match524 returns an array of merge requests with any label when filtering by any label525 returns an array of merge requests with any label when filtering by any label526 returns an array of merge requests with any label when filtering by any label527 returns an array of merge requests without a label when filtering by no label528 with ordering529 returns an array of merge_requests in ascending order530 returns an array of merge_requests in descending order531 returns an array of merge_requests ordered by updated_at532 returns an array of merge_requests ordered by created_at533 2 merge requests with equal created_at534 page breaks first page correctly535 page breaks second page correctly536 returns an array of merge_requests ordered by title537 asc when requested538 desc when requested539 NOT params540 returns merge requests without any of the labels given541 returns merge requests without any of the milestones given542 returns merge requests without the author given543 returns merge requests without the assignee given544 filter by reviewer545 with reviewer_id546 with an id547 returns merge requests that do not have the given reviewer548 with Any549 returns a 400550 with None551 returns a 400552 with reviewer_username553 returns merge requests that do not have the given reviewer554 when both reviewer_id and reviewer_username555 returns a 400556 source_branch param557 returns merge requests with the given source branch558 target_branch param559 returns merge requests with the given target branch560 #to_reference561 exposes reference path in context of group562 referencing from parent group563 exposes reference path in context of parent group564 with archived projects565 returns an array excluding merge_requests from archived projects566 with non_archived param set as false567 returns an array including merge_requests from archived projects568 GET /projects/:id/merge_requests/:merge_request_iid569 matches json schema570 exposes known attributes571 exposes description and title html when render_html is true572 exposes rebase_in_progress when include_rebase_in_progress is true573 returns the commits behind the target branch when include_diverged_commits_count is present574 returns a 404 error if merge_request_iid not found575 returns a 404 error if merge_request `id` is used instead of iid576 indicates if a user cannot merge the MR577 returns `checking` as its merge_status instead of `cannot_be_merged_rechecking`578 when author is not a member without any merged merge requests579 exposes first_contribution as true580 when merge request author has only guest access581 behaves like rejects user from accessing merge request info582 returns a 403 error583 merge_request_metrics584 has fields from merge request metrics585 returns correct values586 merge_user587 when MR is set to MWPS588 returns user who set MWPS589 when MR is already merged590 returns user who actually merged591 head_pipeline592 when user can read the pipeline593 exposes pipeline information594 when user can not read the pipeline595 does not expose pipeline information596 Draft597 returns merge request598 when a merge request has more than the changes limit599 returns a string indicating that more changes were made600 for forked projects601 includes the `allow_collaboration` field602 when merge request is unchecked603 checks mergeability asynchronously604 GET /projects/:id/merge_requests/:merge_request_iid/participants605 behaves like issuable participants endpoint606 returns participants607 returns a 404 when iid does not exist608 returns a 404 when id is used instead of iid609 when merge request author has only guest access610 behaves like rejects user from accessing merge request info611 returns a 403 error612 GET /projects/:id/merge_requests/:merge_request_iid/reviewers613 returns reviewers614 returns a 404 when iid does not exist615 returns a 404 when id is used instead of iid616 when merge request author has only guest access617 behaves like rejects user from accessing merge request info618 returns a 403 error619 GET /projects/:id/merge_requests/:merge_request_iid/commits620 returns a 200 when merge request is valid621 returns a 404 when merge_request_iid not found622 returns a 404 when merge_request id is used instead of iid623 when merge request author has only guest access624 behaves like rejects user from accessing merge request info625 returns a 403 error626 GET /projects/:id/merge_requests/:merge_request_iid/:context_commits627 returns a 200 when merge request is valid628 returns a 404 when merge_request_iid not found629 GET /projects/:id/merge_requests/:merge_request_iid/changes630 returns a 404 when merge_request_iid not found631 returns a 404 when merge_request id is used instead of iid632 returns the overflow status as false633 when merge request author has only guest access634 behaves like rejects user from accessing merge request info635 returns a 403 error636 behaves like find an existing merge request637 returns the change information of the merge_request638 behaves like accesses diffs via raw_diffs639 as expected640 when unidiff format is requested641 returns the diff in Unified format642 when using DB-backed diffs643 accesses diffs via DB-backed diffs.diffs644 behaves like find an existing merge request645 returns the change information of the merge_request646 when the diff_collection has overflowed its size limits647 returns the overflow status as true648 when access_raw_diffs is true649 behaves like accesses diffs via raw_diffs650 as expected651 GET /projects/:id/merge_requests/:merge_request_iid/diffs652 returns a 404 when merge_request_iid not found653 returns a 404 when merge_request id is used instead of iid654 returns the diffs of the merge_request655 when merge request author has only guest access656 behaves like rejects user from accessing merge request info657 returns a 403 error658 when unidiff format is requested659 returns the diff in Unified format660 when pagination params are present661 returns limited diffs662 GET /projects/:id/merge_requests/:merge_request_iid/pipelines663 when authorized664 returns a paginated array of corresponding pipelines665 exposes basic attributes666 returns 404 if MR does not exist667 when unauthorized668 returns 403669 when merge request author has only guest access670 behaves like rejects user from accessing merge request info671 returns a 403 error672 POST /projects/:id/merge_requests/:merge_request_iid/pipelines673 when authorized674 creates and returns the new Pipeline675 when unauthorized676 responds with a blank 404677 when the merge request does not exist678 responds with a blank 404679 when the .gitlab-ci.yml file is invalid680 creates a failed pipeline681 POST /projects/:id/merge_requests682 support for deprecated assignee_id683 creates a new merge request684 creates a new merge request when assignee_id is empty685 filters assignee_id of unauthorized user686 single assignee restrictions687 creates a new project merge request with no more than one assignee688 accepts reviewer_ids689 creates a new merge request with a reviewer690 creates a new merge request with no reviewer691 between branches projects692 returns 422 when source_branch equals target_branch693 returns 400 when source_branch is missing694 returns 400 when target_branch is missing695 returns 400 when title is missing696 different labels697 creates merge request with special label names698 creates merge request with special label names as array699 empty label param does not add any labels700 empty label param as array does not add any labels, but only explicitly as json701 empty label param as array, does not add any labels702 array with one empty string element does not add labels703 array with multiple empty string elements, does not add labels704 behaves like creates merge request with labels705 returns merge_request706 behaves like creates merge request with labels707 returns merge_request708 behaves like creates merge request with labels709 returns merge_request710 with existing MR711 returns 409 when MR already exists for source/target712 accepts remove_source_branch parameter713 sets force_remove_source_branch to false714 sets force_remove_source_branch to true715 forked projects716 returns merge_request717 does not return 422 when source_branch equals target_branch718 returns 403 when target project has disabled merge requests719 returns 400 when source_branch is missing720 returns 400 when target_branch is missing721 returns 400 when title is missing722 allows setting `allow_collaboration`723 returns 201 when target_branch is specified and for the same project724 when target_branch and target_project_id is specified725 returns 422 if targeting a different fork726 returns 403 if targeting a different fork which user can not access727 when user is an inherited member from the group728 and user is a guest729 when project is public with private merge requests730 behaves like user cannot create merge requests731 returns 403 forbidden732 when project is private733 behaves like user cannot create merge requests734 returns 403 forbidden735 PUT /projects/:id/merge_requests/:merge_request_iid736 behaves like issuable update endpoint737 PUT /projects/:id/issues/:issue_iid738 clears labels when labels param is nil739 updates the issuable with labels param as array740 clears milestone when milestone_id=0741 when only assignee_ids are provided742 sets the assignees743 creates appropriate system notes744 triggers webhooks745 when assignee_id=user2.id746 sets the assignees747 when assignee_id=0748 clears the assignees749 creates appropriate system notes750 when only assignee_ids are provided, and the list is empty751 clears the assignees752 when only assignee_ids are provided, and the list contains the sentinel value753 clears the assignees754 when only assignee_id=0755 clears the assignees756 accepts reviewer_ids757 adds a reviewer to the existing merge request758 removes a reviewer from the existing merge request759 POST /projects/:id/merge_requests/:merge_request_iid/context_commits760 when authenticated761 creates and returns the new context commit762 returns 400 when one or more shas are invalid763 returns 400 when the commits are empty764 returns 400 when params is empty765 returns 403 when creating new context commit for guest role766 returns 403 when creating new context commit for reporter role767 doesnt create when its already created768 returns 400 when the context commit is already created769 when unauthenticated770 returns 401 if user tries to create context commits771 DELETE /projects/:id/merge_requests/:merge_request_iid772 when the user is developer773 denies the deletion of the merge request774 when the user is project owner775 destroys the merge request owners can destroy776 returns 404 for an invalid merge request IID777 returns 404 if the merge request id is used instead of iid778 behaves like 412 response779 for a modified resource780 returns 412 with a JSON error781 for an unmodified resource782 returns 204 with an empty body783 DELETE /projects/:id/merge_requests/:merge_request_iid/context_commits784 when authenticated785 deletes context commit786 returns 400 when invalid commit sha is passed787 returns 400 when commits is empty788 returns 400 when no params is passed789 returns 403 when deleting existing context commit for guest role790 returns 403 when deleting existing context commit for reporter role791 when unauthenticated792 returns 401, unauthorised error793 PUT /projects/:id/merge_requests/:merge_request_iid/merge794 returns merge_request in case of success795 returns 422 if branch can't be merged796 returns 405 if merge_request is not open797 returns 405 if merge_request is a draft798 returns 405 if the build failed for a merge request that requires success799 returns 401 if user has no permissions to merge800 returns 409 if the SHA parameter doesn't match801 succeeds if the SHA parameter matches802 updates the MR's squash attribute803 does not merge if merge_when_pipeline_succeeds is passed and the pipeline has failed804 merges if the head pipeline already succeeded and `merge_when_pipeline_succeeds` is passed805 enables merge when pipeline succeeds if the pipeline is active806 enables merge when pipeline succeeds if the pipeline is active and only_allow_merge_if_pipeline_succeeds is true807 returns 404 for an invalid merge request IID808 returns 404 if the merge request id is used instead of iid809 when the merge request fails to merge810 returns 422811 the squash_commit_message param812 results in a specific squash commit message when set813 results in a default squash commit message when not set814 the should_remove_source_branch param815 removes the source branch when set816 with a merge request that has force_remove_source_branch enabled817 removes the source branch818 does not remove the source branch819 performing a ff-merge with squash820 records the squash commit SHA and returns it in the response821 GET /projects/:id/merge_requests/:merge_request_iid/merge_ref822 returns the generated ID from the merge service in case of success823 when merge-ref is not synced with merge status824 returns 200 if MR can be merged825 returns 400 if MR cannot be merged826 when user has no access to the MR827 returns 404828 when invalid merge request IID829 returns 404830 when merge request ID is used instead IID831 returns 404832 PUT /projects/:id/merge_requests/:merge_request_iid833 updates title and returns merge_request834 updates description and returns merge_request835 updates milestone_id and returns merge_request836 updates squash and returns merge_request837 updates target_branch and returns merge_request838 returns merge_request that removes the source branch839 filters assignee_id of unauthorized user840 does not update state when title is empty841 does not update state when target_branch is empty842 returns 404 for an invalid merge request IID843 returns 404 if the merge request id is used instead of iid844 updates force_remove_source_branch properly845 sets to false846 sets to true847 with a merge request across forks848 is true for an authorized user849 is false for an unauthorized user850 to close a MR851 returns merge_request852 forked projects853 when source project is public (i.e. MergeRequest#collaborative_push_possible? == true)854 behaves like update of allow_collaboration and allow_maintainer_to_push855 attempts to update allow_collaboration to true and returns true for `allow_collaboration`856 attempts to update allow_maintainer_to_push to true and returns true for `allow_collaboration`857 when source project is private (i.e. MergeRequest#collaborative_push_possible? == false)858 behaves like update of allow_collaboration and allow_maintainer_to_push859 attempts to update allow_collaboration to true and returns false for `allow_collaboration`860 attempts to update allow_maintainer_to_push to true and returns false for `allow_collaboration`861 when updating labels862 allows special label names863 also accepts labels as an array864 empty label param removes labels865 label param as empty array, but only explicitly as json, removes labels866 empty label as array, removes labels867 array with one empty string element removes labels868 array with multiple empty string elements, removes labels869 with labels870 when adding labels, keeps existing labels and adds new871 when removing labels, only removes those specified872 when removing all labels, keeps no labels873 GET :id/merge_requests/:merge_request_iid/closes_issues874 returns the issue that will be closed on merge875 returns an empty array when there are no issues to be closed876 handles external issues877 returns 403 if the user has no access to the merge request878 returns 404 for an invalid merge request IID879 returns 404 if the merge request id is used instead of iid880 POST :id/merge_requests/:merge_request_iid/subscribe881 subscribes to a merge request882 returns 304 if already subscribed883 returns 404 if the merge request is not found884 returns 404 if the merge request id is used instead of iid885 returns 403 if user has no access to read code886 behaves like POST request permissions for admin mode887 behaves like when admin888 behaves like makes request889 returns890 behaves like makes request891 returns892 behaves like when user893 returns894 behaves like makes request895 returns896 POST :id/merge_requests/:merge_request_iid/unsubscribe897 unsubscribes from a merge request898 returns 304 if not subscribed899 returns 404 if the merge request is not found900 returns 404 if the merge request id is used instead of iid901 returns 403 if user has no access to read code902 POST :id/merge_requests/:merge_request_iid/cancel_merge_when_pipeline_succeeds903 removes the merge_when_pipeline_succeeds status904 returns 404 if the merge request is not found905 returns 404 if the merge request id is used instead of iid906 PUT :id/merge_requests/:merge_request_iid/rebase907 returns 403 if the user cannot push to the branch908 returns 409 if a rebase is already in progress909 returns 409 if rebase can't lock the row910 when rebase can be performed911 enqueues a rebase of the merge request against the target branch912 when skip_ci parameter is set913 enqueues a rebase of the merge request with skip_ci flag set914 when merge request branch does not allow force push915 returns 403916 Time tracking917 POST /projects/:id/merge_requests/:merge_request_id/time_estimate918 with an unauthorized user919 behaves like an unauthorized API user920 is expected to eq 403921 behaves like API user with insufficient permissions922 with non member that is the author923 behaves like an unauthorized API user924 is expected to eq 403925 with an authorized user926 sets the time estimate for merge_request927 updating the current estimate928 updated_duration: "foo", expected_http_status: :bad_request, expected_time_estimate: 7200929 returns expected HTTP status and time estimate930 updated_duration: "-1", expected_http_status: :bad_request, expected_time_estimate: 7200931 returns expected HTTP status and time estimate932 updated_duration: "1h", expected_http_status: :ok, expected_time_estimate: 3600933 returns expected HTTP status and time estimate934 updated_duration: "0", expected_http_status: :ok, expected_time_estimate: 0935 returns expected HTTP status and time estimate936 POST /projects/:id/merge_requests/:merge_request_id/reset_time_estimate937 resets the time estimate for merge_request938 with an unauthorized user939 behaves like an unauthorized API user940 is expected to eq 403941 behaves like API user with insufficient permissions942 with non member that is the author943 behaves like an unauthorized API user944 is expected to eq 403945 POST /projects/:id/merge_requests/:merge_request_id/add_spent_time946 add spent time for merge_request947 calls update service with :use_specialized_service param948 with an unauthorized user949 behaves like an unauthorized API user950 is expected to eq 403951 behaves like API user with insufficient permissions952 with non member that is the author953 behaves like an unauthorized API user954 is expected to eq 403955 when subtracting time956 subtracts time of the total spent time957 when time to subtract is greater than the total spent time958 does not modify the total time spent959 POST /projects/:id/merge_requests/:merge_request_id/reset_spent_time960 resets spent time for merge_request961 with an unauthorized user962 behaves like an unauthorized API user963 is expected to eq 403964 behaves like API user with insufficient permissions965 with non member that is the author966 behaves like an unauthorized API user967 is expected to eq 403968 GET /projects/:id/merge_requests/:merge_request_id/time_stats969 returns the time stats for merge_request970API::ConanProjectPackages971 GET /api/v4/projects/:id/packages/conan/v1/ping972 behaves like conan ping endpoint973 responds with 200 OK when no token provided974 behaves like conan FIPS mode975 when FIPS mode is enabled976 behaves like returning response status977 returns not_found978 packages feature disabled979 responds with 404 Not Found980 GET /api/v4/projects/:id/packages/conan/v1/conans/search981 behaves like conan search endpoint982 with a public project983 returns packages with a matching name984 is expected to contain exactly "package-7/1.0.0@namespace50+project-111/stable"985 returns packages using a * wildcard986 is expected to contain exactly "package-9/1.0.0@namespace52+project-113/stable"987 does not return non-matching packages988 is expected to be blank989 with a private project990 role: :maintainer, packages_visible: true991 is expected to contain exactly "package-13/1.0.0@namespace56+project-117/stable"992 role: :developer, packages_visible: true993 is expected to contain exactly "package-15/1.0.0@namespace58+project-119/stable"994 role: :reporter, packages_visible: true995 is expected to contain exactly "package-17/1.0.0@namespace60+project-121/stable"996 role: :guest, packages_visible: false997 is expected to be blank998 role: :anonymous, packages_visible: false999 is expected to be blank1000 behaves like conan FIPS mode1001 when FIPS mode is enabled1002 behaves like returning response status1003 returns not_found1004 with access to package registry for everyone1005 with a matching name1006 is expected to contain exactly "package-25/1.0.0@namespace68+project-129/stable"1007 with a * wildcard1008 is expected to contain exactly "package-27/1.0.0@namespace70+project-131/stable"1009 GET /api/v4/projects/:id/packages/conan/v1/users/authenticate1010 behaves like conan authenticate endpoint1011 responds with 401 Unauthorized when an invalid access token is provided1012 responds with 401 Unauthorized when the provided JWT is signed with different secret1013 responds with 401 UnauthorizedOK when invalid JWT is provided1014 behaves like conan FIPS mode1015 when FIPS mode is enabled1016 behaves like returning response status1017 returns not_found1018 when using invalid token1019 responds with 4011020 when valid JWT access token is provided1021 responds with 2001022 token has valid validity time1023 with valid job token1024 responds with 2001025 with valid deploy token1026 responds with 2001027 GET /api/v4/projects/:id/packages/conan/v1/users/check_credentials1028 behaves like conan check_credentials endpoint1029 responds with a 200 OK with PAT1030 responds with a 401 Unauthorized when an invalid token is used1031 behaves like conan FIPS mode1032 when FIPS mode is enabled1033 behaves like returning response status1034 returns not_found1035 with job token1036 responds with a 200 OK with job token1037 with deploy token1038 responds with a 200 OK with job token1039 recipe endpoints1040 GET /api/v4/projects/:id/packages/conan/v1/conans/:package_name/package_version/:package_username/:package_channel1041 behaves like recipe snapshot endpoint1042 behaves like conan FIPS mode1043 when FIPS mode is enabled1044 behaves like returning response status1045 returns not_found1046 behaves like rejects invalid recipe1047 with invalid recipe path1048 returns 4001049 behaves like rejects recipe for invalid project1050 with invalid project1051 behaves like not found request1052 returns not found1053 behaves like empty recipe for not found package1054 with invalid recipe url1055 returns not found1056 behaves like handling empty values for username and channel1057 username: "username", channel: "channel", status: :ok1058 returns the correct status code1059 username: "username", channel: "_", status: :bad_request1060 returns the correct status code1061 username: "_", channel: "channel", status: :bad_request_or_not_found1062 returns the correct status code1063 username: "_", channel: "_", status: :ok_or_not_found1064 returns the correct status code1065 with existing package1066 returns a hash of files with their md5 hashes1067 behaves like accept get request on private project with access to package registry for everyone1068 behaves like returning response status1069 returns ok1070 GET /api/v4/projects/:id/packages/conan/v1/conans/:package_name/package_version/:package_username/:package_channel/packages/:conan_package_reference1071 behaves like package snapshot endpoint1072 behaves like conan FIPS mode1073 when FIPS mode is enabled1074 behaves like returning response status1075 returns not_found1076 behaves like rejects invalid recipe1077 with invalid recipe path1078 returns 4001079 behaves like rejects recipe for invalid project1080 with invalid project1081 behaves like not found request1082 returns not found1083 behaves like empty recipe for not found package1084 with invalid recipe url1085 returns not found1086 behaves like handling empty values for username and channel1087 username: "username", channel: "channel", status: :ok1088 returns the correct status code1089 username: "username", channel: "_", status: :bad_request1090 returns the correct status code1091 username: "_", channel: "channel", status: :bad_request_or_not_found1092 returns the correct status code1093 username: "_", channel: "_", status: :ok_or_not_found1094 returns the correct status code1095 with existing package1096 returns a hash of md5 values for the files1097 behaves like accept get request on private project with access to package registry for everyone1098 behaves like returning response status1099 returns ok1100 GET /api/v4/projects/:id/packages/conan/v1/conans/:package_name/package_version/:package_username/:package_channel/digest1101 behaves like recipe download_urls endpoint1102 behaves like conan FIPS mode1103 when FIPS mode is enabled1104 behaves like returning response status1105 returns not_found1106 behaves like rejects invalid recipe1107 with invalid recipe path1108 returns 4001109 behaves like rejects recipe for invalid project1110 with invalid project1111 behaves like not found request1112 returns not found1113 behaves like recipe download_urls1114 returns the download_urls for the recipe files1115 behaves like not selecting a package with the wrong type1116 with a nuget package with same name and version1117 calls the presenter with a nil package1118 behaves like handling empty values for username and channel1119 username: "username", channel: "channel", status: :ok1120 returns the correct status code1121 username: "username", channel: "_", status: :bad_request1122 returns the correct status code1123 username: "_", channel: "channel", status: :bad_request_or_not_found1124 returns the correct status code1125 username: "_", channel: "_", status: :ok_or_not_found1126 returns the correct status code1127 behaves like accept get request on private project with access to package registry for everyone1128 behaves like returning response status1129 returns ok1130 GET /api/v4/projects/:id/packages/conan/v1/conans/:package_name/package_version/:package_username/:package_channel/packages/:conan_package_reference/download_urls1131 behaves like package download_urls endpoint1132 behaves like conan FIPS mode1133 when FIPS mode is enabled1134 behaves like returning response status1135 returns not_found1136 behaves like rejects invalid recipe1137 with invalid recipe path1138 returns 4001139 behaves like rejects recipe for invalid project1140 with invalid project1141 behaves like not found request1142 returns not found1143 behaves like package download_urls1144 returns the download_urls for the package files1145 behaves like not selecting a package with the wrong type1146 with a nuget package with same name and version1147 calls the presenter with a nil package1148 behaves like handling empty values for username and channel1149 username: "username", channel: "channel", status: :ok1150 returns the correct status code1151 username: "username", channel: "_", status: :bad_request1152 returns the correct status code1153 username: "_", channel: "channel", status: :bad_request_or_not_found1154 returns the correct status code1155 username: "_", channel: "_", status: :ok_or_not_found1156 returns the correct status code1157 behaves like accept get request on private project with access to package registry for everyone1158 behaves like returning response status1159 returns ok1160 GET /api/v4/projects/:id/packages/conan/v1/conans/:package_name/package_version/:package_username/:package_channel/download_urls1161 behaves like recipe download_urls endpoint1162 behaves like conan FIPS mode1163 when FIPS mode is enabled1164 behaves like returning response status1165 returns not_found1166 behaves like rejects invalid recipe1167 with invalid recipe path1168 returns 4001169 behaves like rejects recipe for invalid project1170 with invalid project1171 behaves like not found request1172 returns not found1173 behaves like recipe download_urls1174 returns the download_urls for the recipe files1175 behaves like not selecting a package with the wrong type1176 with a nuget package with same name and version1177 calls the presenter with a nil package1178 behaves like handling empty values for username and channel1179 username: "username", channel: "channel", status: :ok1180 returns the correct status code1181 username: "username", channel: "_", status: :bad_request1182 returns the correct status code1183 username: "_", channel: "channel", status: :bad_request_or_not_found1184 returns the correct status code1185 username: "_", channel: "_", status: :ok_or_not_found1186 returns the correct status code1187 behaves like accept get request on private project with access to package registry for everyone1188 behaves like returning response status1189 returns ok1190 GET /api/v4/projects/:id/packages/conan/v1/conans/:package_name/package_version/:package_username/:package_channel/packages/:conan_package_reference/digest1191 behaves like package download_urls endpoint1192 behaves like conan FIPS mode1193 when FIPS mode is enabled1194 behaves like returning response status1195 returns not_found1196 behaves like rejects invalid recipe1197 with invalid recipe path1198 returns 4001199 behaves like rejects recipe for invalid project1200 with invalid project1201 behaves like not found request1202 returns not found1203 behaves like package download_urls1204 returns the download_urls for the package files1205 behaves like not selecting a package with the wrong type1206 with a nuget package with same name and version1207 calls the presenter with a nil package1208 behaves like handling empty values for username and channel1209 username: "username", channel: "channel", status: :ok1210 returns the correct status code1211 username: "username", channel: "_", status: :bad_request1212 returns the correct status code1213 username: "_", channel: "channel", status: :bad_request_or_not_found1214 returns the correct status code1215 username: "_", channel: "_", status: :ok_or_not_found1216 returns the correct status code1217 behaves like accept get request on private project with access to package registry for everyone1218 behaves like returning response status1219 returns ok1220 POST /api/v4/projects/:id/packages/conan/v1/conans/:package_name/package_version/:package_username/:package_channel/upload_urls1221 behaves like recipe upload_urls endpoint1222 returns a set of upload urls for the files requested1223 behaves like conan FIPS mode1224 when FIPS mode is enabled1225 behaves like returning response status1226 returns not_found1227 behaves like rejects invalid recipe1228 with invalid recipe path1229 returns 4001230 behaves like rejects invalid upload_url params1231 with unaccepted json format1232 returns 4001233 behaves like handling empty values for username and channel1234 username: "username", channel: "channel", status: :ok1235 returns the correct status code1236 username: "username", channel: "_", status: :bad_request1237 returns the correct status code1238 username: "_", channel: "channel", status: :bad_request_or_not_found1239 returns the correct status code1240 username: "_", channel: "_", status: :ok_or_not_found1241 returns the correct status code1242 with conan_sources and conan_export files1243 returns upload urls for the additional files1244 with an invalid file1245 does not return the invalid file as an upload_url1246 POST /api/v4/projects/:id/packages/conan/v1/conans/:package_name/package_version/:package_username/:package_channel/packages/:conan_package_reference/upload_urls1247 behaves like package upload_urls endpoint1248 returns a set of upload urls for the files requested1249 behaves like conan FIPS mode1250 when FIPS mode is enabled1251 behaves like returning response status1252 returns not_found1253 behaves like rejects invalid recipe1254 with invalid recipe path1255 returns 4001256 behaves like rejects invalid upload_url params1257 with unaccepted json format1258 returns 4001259 behaves like handling empty values for username and channel1260 username: "username", channel: "channel", status: :ok1261 returns the correct status code1262 username: "username", channel: "_", status: :bad_request1263 returns the correct status code1264 username: "_", channel: "channel", status: :bad_request_or_not_found1265 returns the correct status code1266 username: "_", channel: "_", status: :ok_or_not_found1267 returns the correct status code1268 with invalid files1269 returns upload urls only for the valid requested files1270 DELETE /api/v4/projects/:id/packages/conan/v1/conans/:package_name/package_version/:package_username/:package_channel1271 behaves like delete package endpoint1272 returns unauthorized for users without valid permission1273 behaves like conan FIPS mode1274 when FIPS mode is enabled1275 behaves like returning response status1276 returns not_found1277 behaves like rejects invalid recipe1278 with invalid recipe path1279 returns 4001280 behaves like handling empty values for username and channel1281 username: "username", channel: "channel", status: :ok1282 returns the correct status code1283 username: "username", channel: "_", status: :bad_request1284 returns the correct status code1285 username: "_", channel: "channel", status: :bad_request_or_not_found1286 returns the correct status code1287 username: "_", channel: "_", status: :ok_or_not_found1288 returns the correct status code1289 with delete permissions1290 deletes a package1291 behaves like a package tracking event1292 creates a gitlab tracking event delete_package1293 file upload endpoints1294 PUT /api/v4/projects/:id/packages/conan/v1/files/:package_name/package_version/:package_username/:package_channel/:recipe_revision/export/:file_name/authorize1295 behaves like workhorse authorize endpoint1296 behaves like conan FIPS mode1297 when FIPS mode is enabled1298 behaves like returning response status1299 returns not_found1300 behaves like rejects invalid recipe1301 with invalid recipe path1302 returns 4001303 behaves like rejects invalid file_name1304 with invalid file_name1305 returns 4001306 behaves like workhorse authorization1307 authorizes posting package with a valid token1308 rejects request without a valid token1309 rejects request without a valid permission1310 rejects requests that bypassed gitlab-workhorse1311 when using remote storage1312 when direct upload is enabled1313 responds with status 200, location of package remote store and object details1314 when direct upload is disabled1315 handles as a local file1316 behaves like handling empty values for username and channel1317 username: "username", channel: "channel", status: :ok1318 returns the correct status code1319 username: "username", channel: "_", status: :bad_request1320 returns the correct status code1321 username: "_", channel: "channel", status: :bad_request_or_not_found1322 returns the correct status code1323 username: "_", channel: "_", status: :ok_or_not_found1324 returns the correct status code1325 PUT /api/v4/projects/:id/packages/conan/v1/files/:package_name/package_version/:package_username/:package_channel/:recipe_revision/export/:conan_package_reference/:package_revision/:file_name/authorize1326 behaves like workhorse authorize endpoint1327 behaves like conan FIPS mode1328 when FIPS mode is enabled1329 behaves like returning response status1330 returns not_found1331 behaves like rejects invalid recipe1332 with invalid recipe path1333 returns 4001334 behaves like rejects invalid file_name1335 with invalid file_name1336 returns 4001337 behaves like workhorse authorization1338 authorizes posting package with a valid token1339 rejects request without a valid token1340 rejects request without a valid permission1341 rejects requests that bypassed gitlab-workhorse1342 when using remote storage1343 when direct upload is enabled1344 responds with status 200, location of package remote store and object details1345 when direct upload is disabled1346 handles as a local file1347 behaves like handling empty values for username and channel1348 username: "username", channel: "channel", status: :ok1349 returns the correct status code1350 username: "username", channel: "_", status: :bad_request1351 returns the correct status code1352 username: "_", channel: "channel", status: :bad_request_or_not_found1353 returns the correct status code1354 username: "_", channel: "_", status: :ok_or_not_found1355 returns the correct status code1356 PUT /api/v4/projects/:id/packages/conan/v1/files/:package_name/package_version/:package_username/:package_channel/:recipe_revision/export/:file_name1357 behaves like workhorse recipe file upload endpoint1358 behaves like conan FIPS mode1359 when FIPS mode is enabled1360 behaves like returning response status1361 returns not_found1362 behaves like rejects invalid recipe1363 with invalid recipe path1364 returns 4001365 behaves like rejects invalid file_name1366 with invalid file_name1367 returns 4001368 behaves like uploads a package file1369 file size above maximum limit1370 handles as a local file1371 with object storage disabled1372 without a file from workhorse1373 rejects the request1374 with a file1375 behaves like package workhorse uploads1376 without a workhorse header1377 logs an error1378 behaves like returning response status1379 returns forbidden1380 without a token1381 rejects request without a token1382 when params from workhorse are correct1383 creates package and stores package file1384 with existing package1385 does not create a new package1386 marked as pending_destruction1387 does not create a new package1388 with object storage enabled1389 and direct upload enabled1390 with invalid remote_id: 1231231391 responds with status 4031392 with invalid remote_id: ../../1231231393 responds with status 4031394 with valid remote_id1395 creates package and stores package file1396 behaves like handling empty values for username and channel1397 username: "username", channel: "channel", status: :ok1398 returns the correct status code1399 username: "username", channel: "_", status: :bad_request1400 returns the correct status code1401 username: "_", channel: "channel", status: :bad_request_or_not_found1402 returns the correct status code1403 username: "_", channel: "_", status: :ok_or_not_found1404 returns the correct status code1405 behaves like handling validation error for package1406 with validation error1407 returns 4001408 PUT /api/v4/projects/:id/packages/conan/v1/files/:package_name/package_version/:package_username/:package_channel/:recipe_revision/export/:conan_package_reference/:package_revision/:file_name1409 behaves like workhorse package file upload endpoint1410 behaves like rejects invalid recipe1411 with invalid recipe path1412 returns 4001413 behaves like rejects invalid file_name1414 with invalid file_name1415 returns 4001416 behaves like uploads a package file1417 file size above maximum limit1418 handles as a local file1419 with object storage disabled1420 without a file from workhorse1421 rejects the request1422 with a file1423 behaves like package workhorse uploads1424 without a workhorse header1425 logs an error1426 behaves like returning response status1427 returns forbidden1428 without a token1429 rejects request without a token1430 when params from workhorse are correct1431 creates package and stores package file1432 with existing package1433 does not create a new package1434 marked as pending_destruction1435 does not create a new package1436 with object storage enabled1437 and direct upload enabled1438 with invalid remote_id: 1231231439 responds with status 4031440 with invalid remote_id: ../../1231231441 responds with status 4031442 with valid remote_id1443 creates package and stores package file1444 behaves like handling empty values for username and channel1445 username: "username", channel: "channel", status: :ok1446 returns the correct status code1447 username: "username", channel: "_", status: :bad_request1448 returns the correct status code1449 username: "_", channel: "channel", status: :bad_request_or_not_found1450 returns the correct status code1451 username: "_", channel: "_", status: :ok_or_not_found1452 returns the correct status code1453 behaves like handling validation error for package1454 with validation error1455 returns 4001456 tracking the conan_package.tgz upload1457 behaves like a package tracking event1458 creates a gitlab tracking event push_package1459API::Discussions1460 when discussions have cross-reference system notes1461 behaves like with cross-reference system notes1462 returns only the note that the user should see1463 avoids Git calls and N+1 SQL queries1464 when noteable is an Issue1465 behaves like discussions API1466 GET /projects/:id/issues/:noteable_id/discussions1467 returns an array of discussions1468 returns a 404 error when noteable id not found1469 returns 404 when not authorized1470 GET /projects/:id/issues/:noteable_id/discussions/:discussion_id1471 returns a discussion by id1472 returns a 404 error if discussion not found1473 POST /projects/:id/issues/:noteable_id/discussions1474 creates a new note1475 returns a 400 bad request error if body not given1476 returns a 401 unauthorized error if user not authenticated1477 tracks a Notes::CreateService event1478 when an admin or owner makes the request1479 accepts the creation date to be set1480 when user does not have access to read the discussion1481 responds with 4041482 when a project is public with private repo access1483 when user is not a team member of private repo1484 creating a new note1485 raises 404 error1486 fetching a discussion1487 raises 404 error1488 POST /projects/:id/issues/:noteable_id/discussions/:discussion_id/notes1489 adds a new note to the discussion1490 returns a 400 bad request error if body not given1491 when the discussion is an individual note1492 creates a new discussion1493 PUT /projects/:id/issues/:noteable_id/discussions/:discussion_id/notes/:note_id1494 returns modified note1495 returns a 404 error when note id not found1496 returns a 400 bad request error if body not given1497 DELETE /projects/:id/issues/:noteable_id/discussions/:discussion_id/notes/:note_id1498 deletes a note1499 returns a 404 error when note id not found1500 behaves like 412 response1501 for a modified resource1502 returns 412 with a JSON error1503 for an unmodified resource1504 returns 204 with an empty body1505 when noteable is a WorkItem1506 behaves like discussions API1507 GET /projects/:id/issues/:noteable_id/discussions1508 returns an array of discussions1509 returns a 404 error when noteable id not found1510 returns 404 when not authorized1511 GET /projects/:id/issues/:noteable_id/discussions/:discussion_id1512 returns a discussion by id1513 returns a 404 error if discussion not found1514 POST /projects/:id/issues/:noteable_id/discussions1515 creates a new note1516 returns a 400 bad request error if body not given1517 returns a 401 unauthorized error if user not authenticated1518 tracks a Notes::CreateService event1519 when an admin or owner makes the request1520 accepts the creation date to be set1521 when user does not have access to read the discussion1522 responds with 4041523 when a project is public with private repo access1524 when user is not a team member of private repo1525 creating a new note1526 raises 404 error1527 fetching a discussion1528 raises 404 error1529 POST /projects/:id/issues/:noteable_id/discussions/:discussion_id/notes1530 adds a new note to the discussion1531 returns a 400 bad request error if body not given1532 when the discussion is an individual note1533 creates a new discussion1534 PUT /projects/:id/issues/:noteable_id/discussions/:discussion_id/notes/:note_id1535 returns modified note1536 returns a 404 error when note id not found1537 returns a 400 bad request error if body not given1538 DELETE /projects/:id/issues/:noteable_id/discussions/:discussion_id/notes/:note_id1539 deletes a note1540 returns a 404 error when note id not found1541 behaves like 412 response1542 for a modified resource1543 returns 412 with a JSON error1544 for an unmodified resource1545 returns 204 with an empty body1546 with work item without notes widget1547 when fetching discussions1548 returns 4041549 when single fetching discussion by discussion_id1550 returns 4041551 when trying to create a new discussion1552 returns 4041553 when trying to create a new comment on a discussion1554 returns 4041555 when trying to update a new comment on a discussion1556 returns 4041557 when deleting a note1558 returns 4041559 when noteable is a Snippet1560 behaves like discussions API1561 GET /projects/:id/snippets/:noteable_id/discussions1562 returns an array of discussions1563 returns a 404 error when noteable id not found1564 returns 404 when not authorized1565 GET /projects/:id/snippets/:noteable_id/discussions/:discussion_id1566 returns a discussion by id1567 returns a 404 error if discussion not found1568 POST /projects/:id/snippets/:noteable_id/discussions1569 creates a new note1570 returns a 400 bad request error if body not given1571 returns a 401 unauthorized error if user not authenticated1572 tracks a Notes::CreateService event1573 when an admin or owner makes the request1574 accepts the creation date to be set1575 when user does not have access to read the discussion1576 responds with 4041577 when a project is public with private repo access1578 when user is not a team member of private repo1579 creating a new note1580 raises 404 error1581 fetching a discussion1582 raises 404 error1583 POST /projects/:id/snippets/:noteable_id/discussions/:discussion_id/notes1584 adds a new note to the discussion1585 returns a 400 bad request error if body not given1586 when the discussion is an individual note1587 returns 400 bad request1588 PUT /projects/:id/snippets/:noteable_id/discussions/:discussion_id/notes/:note_id1589 returns modified note1590 returns a 404 error when note id not found1591 returns a 400 bad request error if body not given1592 DELETE /projects/:id/snippets/:noteable_id/discussions/:discussion_id/notes/:note_id1593 deletes a note1594 returns a 404 error when note id not found1595 behaves like 412 response1596 for a modified resource1597 returns 412 with a JSON error1598 for an unmodified resource1599 returns 204 with an empty body1600 when noteable is a Merge Request1601 behaves like discussions API1602 GET /projects/:id/merge_requests/:noteable_id/discussions1603 returns an array of discussions1604 returns a 404 error when noteable id not found1605 returns 404 when not authorized1606 GET /projects/:id/merge_requests/:noteable_id/discussions/:discussion_id1607 returns a discussion by id1608 returns a 404 error if discussion not found1609 POST /projects/:id/merge_requests/:noteable_id/discussions1610 creates a new note1611 returns a 400 bad request error if body not given1612 returns a 401 unauthorized error if user not authenticated1613 tracks a Notes::CreateService event1614 when an admin or owner makes the request1615 accepts the creation date to be set1616 when user does not have access to read the discussion1617 responds with 4041618 when a project is public with private repo access1619 when user is not a team member of private repo1620 creating a new note1621 raises 404 error1622 fetching a discussion1623 raises 404 error1624 POST /projects/:id/merge_requests/:noteable_id/discussions/:discussion_id/notes1625 adds a new note to the discussion1626 returns a 400 bad request error if body not given1627 when the discussion is an individual note1628 creates a new discussion1629 PUT /projects/:id/merge_requests/:noteable_id/discussions/:discussion_id/notes/:note_id1630 returns modified note1631 returns a 404 error when note id not found1632 returns a 400 bad request error if body not given1633 DELETE /projects/:id/merge_requests/:noteable_id/discussions/:discussion_id/notes/:note_id1634 deletes a note1635 returns a 404 error when note id not found1636 behaves like 412 response1637 for a modified resource1638 returns 412 with a JSON error1639 for an unmodified resource1640 returns 204 with an empty body1641 behaves like diff discussions API1642 GET /projects/:id/merge_requests/:noteable_id/discussions1643 includes diff discussions1644 GET /projects/:id/merge_requests/:noteable_id/discussions/:discussion_id1645 returns a discussion by id1646 POST /projects/:id/merge_requests/:noteable_id/discussions1647 creates a new diff note1648 when position is invalid1649 returns a 400 bad request error when position is not plausible1650 returns a 400 bad request error when the position is not valid for this discussion1651 POST /projects/:id/merge_requests/:noteable_id/discussions/:discussion_id/notes1652 adds a new note to the diff discussion1653 behaves like resolvable discussions API1654 PUT /projects/:id/merge_requests/:noteable_id/discussions/:discussion_id1655 resolves discussion if resolved is true1656 unresolves discussion if resolved is false1657 returns a 400 bad request error if resolved parameter is not passed1658 returns a 401 unauthorized error if user is not authenticated1659 returns a 403 error if user resolves discussion of someone else1660 when user does not have access to read the discussion1661 responds with 4041662 PUT /projects/:id/merge_requests/:noteable_id/discussions/:discussion_id/notes/:note_id1663 returns resolved note when resolved parameter is true1664 returns a 404 error when note id not found1665 returns a 400 bad request error if neither body nor resolved parameter is given1666 returns a 403 error if user resolves note of someone else1667 when position_type is file1668 creates a new diff note1669 when position is for a previous commit on the merge request1670 returns a 400 bad request error because the line_code is old1671 when a commit parameter is given1672 creates the discussion on that commit within the merge request1673 when noteable is a Commit1674 behaves like discussions API1675 GET /projects/:id/repository/commits/:noteable_id/discussions1676 returns an array of discussions1677 returns a 404 error when noteable id not found1678 returns 404 when not authorized1679 GET /projects/:id/repository/commits/:noteable_id/discussions/:discussion_id1680 returns a discussion by id1681 returns a 404 error if discussion not found1682 POST /projects/:id/repository/commits/:noteable_id/discussions1683 creates a new note1684 returns a 400 bad request error if body not given1685 returns a 401 unauthorized error if user not authenticated1686 tracks a Notes::CreateService event1687 when an admin or owner makes the request1688 accepts the creation date to be set1689 when user does not have access to read the discussion1690 responds with 4041691 when a project is public with private repo access1692 when user is not a team member of private repo1693 creating a new note1694 raises 404 error1695 fetching a discussion1696 raises 404 error1697 POST /projects/:id/repository/commits/:noteable_id/discussions/:discussion_id/notes1698 adds a new note to the discussion1699 returns a 400 bad request error if body not given1700 when the discussion is an individual note1701 returns 400 bad request1702 PUT /projects/:id/repository/commits/:noteable_id/discussions/:discussion_id/notes/:note_id1703 returns modified note1704 returns a 404 error when note id not found1705 returns a 400 bad request error if body not given1706 DELETE /projects/:id/repository/commits/:noteable_id/discussions/:discussion_id/notes/:note_id1707 deletes a note1708 returns a 404 error when note id not found1709 behaves like 412 response1710 for a modified resource1711 returns 412 with a JSON error1712 for an unmodified resource1713 returns 204 with an empty body1714 behaves like diff discussions API1715 GET /projects/:id/repository/commits/:noteable_id/discussions1716 includes diff discussions1717 GET /projects/:id/repository/commits/:noteable_id/discussions/:discussion_id1718 returns a discussion by id1719 POST /projects/:id/repository/commits/:noteable_id/discussions1720 creates a new diff note1721 when position is invalid1722 returns a 400 bad request error when position is not plausible1723 returns a 400 bad request error when the position is not valid for this discussion1724 POST /projects/:id/repository/commits/:noteable_id/discussions/:discussion_id/notes1725 adds a new note to the diff discussion1726Projects::NotesController1727 GET index1728 is expected to have request urgency :low1729 sets the correct feature category1730 passes last_fetched_at from headers to NotesFinder and MergeIntoNotesService1731 returns status 400 when last_fetched_at is not present1732 when user notes_filter is present1733 filters system notes by comments1734 returns all notes1735 does not merge label event notes1736 for a discussion note1737 responds with the expected attributes1738 for a diff discussion note1739 responds with the expected attributes1740 for a commit note1741 when displayed on a merge request1742 responds with the expected attributes1743 when displayed on the commit1744 responds with the expected attributes1745 sets the correct feature category1746 when user cannot read commit1747 renders 4041748 for a snippet note1749 responds with the expected attributes1750 sets the correct feature category1751 for a merge request note1752 responds with the expected attributes1753 sets the correct feature category1754 with cross-reference system note1755 filters notes that the user should not see1756 does not result in N+1 queries1757 POST create1758 is expected to have request urgency :low1759 making the creation request1760 sets the correct feature category1761 on an issue1762 sets the correct feature category1763 on a commit1764 sets the correct feature category1765 on a project snippet1766 sets the correct feature category1767 the project is publically available1768 for HTML1769 returns status 3021770 for JSON1771 returns status 200 for json1772 the note does not have commands_only errors1773 for empty note1774 returns status 422 for json1775 the project is a private project1776 format is1777 returns status 4041778 format is json1779 returns status 4041780 the user is a developer on a private project1781 HTML requests1782 returns status 302 (redirect)1783 JSON requests1784 returns status 2001785 the return_discussion param is set1786 returns discussion JSON when the return_discussion param is set1787 when creating a confidential note1788 when parameter is not provided1789 sets `confidential` and `internal` to `false` in JSON response1790 when is not a confidential note1791 when using the `internal` parameter1792 sets `confidential` and `internal` to `false` in JSON response1793 when using deprecated `confidential` parameter1794 sets `confidential` and `internal` to `false` in JSON response1795 when is a confidential note1796 when using the `internal` parameter1797 sets `confidential` and `internal` to `true` in JSON response1798 when using deprecated `confidential` parameter1799 sets `confidential` and `internal` to `true` in JSON response1800 when `internal` parameter is `true` and `confidential` parameter is `false`1801 uses the `internal` param as source of truth1802 when creating a note with quick actions1803 with commands that return changes1804 includes changes in commands_changes1805 includes command_names1806 with commands that do not return changes1807 does not include changes in commands_changes1808 includes command_names1809 with commands that return an error1810 returns status 422 with error message1811 when the internal project prohibits non-members from accessing merge requests1812 prevents a non-member user from creating a note on one of the project's merge requests1813 when the user is a team member1814 can add comments1815 when the request includes a :in_reply_to_discussion_id designed to fool us1816 prevents the request from adding notes to the spoofed discussion1817 returns an error to the user1818 when the public project prohibits non-members from accessing merge requests1819 prevents a non-member user from creating a note on one of the project's merge requests1820 when the user is a team member1821 can add comments1822 when merge_request_diff_head_sha present1823 returns status 302 for html1824 when creating a comment on a commit with SHA1 starting with a large number1825 creates a note successfully1826 when creating a commit comment from an MR fork1827 when the note_project_id is not correct1828 returns a 4041829 when the user has no access to the fork1830 returns a 4041831 when the user has access to the fork1832 is successful1833 creates the note1834 when target_id and noteable_id do not match1835 uses target_id and ignores noteable_id1836 when the merge request discussion is locked1837 when a noteable is not found1838 returns 404 status1839 when a user is a team member1840 returns 302 status for html1841 returns 200 status for json1842 creates a new note1843 when a user is not a team member1844 returns 404 status1845 does not create a new note1846 behaves like create notes request exceeding rate limit1847 allows user in allow-list to create notes, even if the case is different1848 when rate limiter enabled1849 logs request and declines it when endpoint called more than the threshold1850 when rate limiter is disabled1851 does not log request and does not block the request1852 PUT update1853 is expected to have request urgency :low1854 when the note is valid1855 updates the note1856 returns status 2001857 when the issue is confidential and the user has guest permissions1858 disallows edits1859 returns status 4041860 when there are ActiveRecord validation errors1861 does not update the note1862 returns status 4221863 DELETE destroy1864 is expected to have request urgency :low1865 user is the author of a note1866 returns status 200 for html1867 deletes the note1868 user is not the author of a note1869 returns status 4041870 POST toggle_award_emoji1871 is expected to have request urgency :low1872 toggles the award emoji1873 removes the already awarded emoji1874 marks Todos on the Noteable as done1875 resolving and unresolving1876 POST resolve1877 is expected to have request urgency :low1878 when the user is not authorized to resolve the note1879 returns status 4041880 when the user is authorized to resolve the note1881 when the note is not resolvable1882 returns status 4041883 when the note is resolvable1884 resolves the note1885 sends notifications if all discussions are resolved1886 returns the name of the resolving user1887 returns status 2001888 DELETE unresolve1889 is expected to have request urgency :low1890 when the user is not authorized to resolve the note1891 returns status 4041892 when the user is authorized to resolve the note1893 when the note is not resolvable1894 returns status 4041895 when the note is resolvable1896 unresolves the note1897 returns status 2001898 GET outdated_line_change1899 successfully renders expected JSON response1900 is expected to have request urgency :low1901API::Issues1902 GET /groups/:id/issues1903 when group has subgroups1904 when user is unauthenticated1905 also returns subgroups public projects issues1906 also returns subgroups public projects issues filtered by milestone1907 issues_statistics1908 no state is treated as all state1909 behaves like group issues statistics1910 returns issues statistics1911 statistics when all state is passed1912 behaves like group issues statistics1913 returns issues statistics1914 closed state is treated as all state1915 behaves like group issues statistics1916 returns issues statistics1917 opened state is treated as all state1918 behaves like group issues statistics1919 returns issues statistics1920 when filtering by milestone and no state treated as all state1921 behaves like group issues statistics1922 returns issues statistics1923 when filtering by milestone and all state1924 behaves like group issues statistics1925 returns issues statistics1926 when filtering by milestone and closed state treated as all state1927 behaves like group issues statistics1928 returns issues statistics1929 when filtering by milestone and opened state treated as all state1930 behaves like group issues statistics1931 returns issues statistics1932 when user is a group member1933 also returns subgroups projects issues1934 also returns subgroups public projects issues filtered by milestone1935 issues_statistics1936 no state is treated as all state1937 behaves like group issues statistics1938 returns issues statistics1939 statistics when all state is passed1940 behaves like group issues statistics1941 returns issues statistics1942 closed state is treated as all state1943 behaves like group issues statistics1944 returns issues statistics1945 opened state is treated as all state1946 behaves like group issues statistics1947 returns issues statistics1948 when filtering by milestone and no state treated as all state1949 behaves like group issues statistics1950 returns issues statistics1951 when filtering by milestone and all state1952 behaves like group issues statistics1953 returns issues statistics1954 when filtering by milestone and closed state treated as all state1955 behaves like group issues statistics1956 returns issues statistics1957 when filtering by milestone and opened state treated as all state1958 behaves like group issues statistics1959 returns issues statistics1960 when returns issue merge_requests_count for different access levels1961 behaves like accessible merge requests count1962 returns anonymous accessible merge requests count1963 returns guest accessible merge requests count1964 returns reporter accessible merge requests count1965 returns admin accessible merge requests count1966 when user is unauthenticated1967 lists all issues in public projects1968 also returns subgroups public projects issues filtered by milestone1969 issues_statistics1970 no state is treated as all state1971 behaves like group issues statistics1972 returns issues statistics1973 statistics when all state is passed1974 behaves like group issues statistics1975 returns issues statistics1976 closed state is treated as all state1977 behaves like group issues statistics1978 returns issues statistics1979 opened state is treated as all state1980 behaves like group issues statistics1981 returns issues statistics1982 when filtering by milestone and no state treated as all state1983 behaves like group issues statistics1984 returns issues statistics1985 when filtering by milestone and all state1986 behaves like group issues statistics1987 returns issues statistics1988 when filtering by milestone and closed state treated as all state1989 behaves like group issues statistics1990 returns issues statistics1991 when filtering by milestone and opened state treated as all state1992 behaves like group issues statistics1993 returns issues statistics1994 when user is a group member1995 exposes known attributes1996 returns all group issues (including opened and closed)1997 returns group issues without confidential issues for non project members1998 returns group confidential issues for author1999 returns group confidential issues for assignee2000 returns group issues with confidential issues for project members2001 returns group confidential issues for admin2002 returns only confidential issues2003 returns only public issues2004 returns issues matching given search string for title2005 returns issues matching given search string for description2006 returns an array of issues found by iids2007 returns an empty array if iid does not exist2008 returns an empty array if no group issue matches labels2009 returns an array of group issues with any label2010 returns an array of group issues with any label with labels param as array2011 returns an array of group issues with no label2012 returns an array of group issues with no label with labels param as array2013 returns an empty array if no issue matches milestone2014 returns an empty array if milestone does not exist2015 returns an array of issues in given milestone2016 returns an array of issues matching state in milestone2017 returns an array of issues with no milestone2018 sorts ascending when requested2019 sorts by updated_at descending when requested2020 sorts by updated_at ascending when requested2021 labels parameter2022 returns an array of labeled group issues2023 returns an array of labeled group issues with labels param as array2024 returns an array of labeled group issues where all labels match2025 returns an array of labeled group issues where all labels match with labels param as array2026 with labeled issues2027 behaves like labeled issues with labels and label_name params2028 array of labeled issues when all labels match2029 behaves like returns label names2030 returns label names2031 array of labeled issues when all labels match with labels param as array2032 behaves like returns label names2033 returns label names2034 negation2035 array of labeled issues when all labels match with negation2036 behaves like returns negated label names2037 returns label names2038 array of labeled issues when all labels match with negation with label params as array2039 behaves like returns negated label names2040 returns label names2041 when with_labels_details provided2042 array of labeled issues when all labels match2043 behaves like returns basic label entity2044 returns basic label entity2045 array of labeled issues when all labels match with labels param as array2046 behaves like returns basic label entity2047 returns basic label entity2048 with archived projects2049 returns only non archived projects issues2050 returns issues from archived projects if non_archived it set to false2051 without sort params2052 sorts by created_at descending by default2053 with 2 issues with same created_at2054 page breaks first page correctly2055 page breaks second page correctly2056 issues_statistics2057 no state is treated as all state2058 behaves like group issues statistics2059 returns issues statistics2060 statistics when all state is passed2061 behaves like group issues statistics2062 returns issues statistics2063 closed state is treated as all state2064 behaves like group issues statistics2065 returns issues statistics2066 opened state is treated as all state2067 behaves like group issues statistics2068 returns issues statistics2069 when filtering by milestone and no state treated as all state2070 behaves like group issues statistics2071 returns issues statistics2072 when filtering by milestone and all state2073 behaves like group issues statistics2074 returns issues statistics2075 when filtering by milestone and closed state treated as all state2076 behaves like group issues statistics2077 returns issues statistics2078 when filtering by milestone and opened state treated as all state2079 behaves like group issues statistics2080 returns issues statistics2081 sort does not affect statistics2082 behaves like group issues statistics2083 returns issues statistics2084 filtering by assignee_username2085 returns issues with by assignee_username2086 returns issues by assignee_username as string2087 returns error when multiple assignees are passed2088 returns error when assignee_username and assignee_id are passed together2089 #to_reference2090 exposes reference path in context of group2091 referencing from parent group2092 exposes reference path in context of parent group2093API::Wikis2094 GET /projects/:id/wikis2095 when wiki is disabled2096 when user is guest2097 returns 404 Project Not Found2098 when user is developer2099 returns 403 Forbidden2100 when user is maintainer2101 returns 403 Forbidden2102 when wiki is available only for team members2103 when user is guest2104 returns 404 Project Not Found2105 when user is developer2106 return the empty list of wiki pages2107 when wiki has pages2108 returns the list of wiki pages without content2109 returns the list of wiki pages with content2110 when user is maintainer2111 return the empty list of wiki pages2112 when wiki has pages2113 returns the list of wiki pages without content2114 returns the list of wiki pages with content2115 when wiki is available for everyone with access2116 when user is guest2117 returns 404 Project Not Found2118 when user is developer2119 return the empty list of wiki pages2120 when wiki has pages2121 returns the list of wiki pages without content2122 returns the list of wiki pages with content2123 when user is maintainer2124 return the empty list of wiki pages2125 when wiki has pages2126 returns the list of wiki pages without content2127 returns the list of wiki pages with content2128 GET /projects/:id/wikis/:slug2129 when wiki is disabled2130 when user is guest2131 returns 404 Project Not Found2132 when user is developer2133 returns 403 Forbidden2134 when user is maintainer2135 returns 403 Forbidden2136 when wiki is available only for team members2137 when user is guest2138 returns 404 Project Not Found2139 when user is developer2140 behaves like returns wiki page2141 is expected to eq "Page 5"2142 when render param is false2143 behaves like returns wiki page2144 is expected to eq "Page 6"2145 when render param is true2146 behaves like returns wiki page2147 is expected to eq "Page 7"2148 when wiki page has versions2149 when version param is not present2150 retrieves the last version2151 when version param is set2152 retrieves the specific page version2153 when version param is not valid or inexistent2154 behaves like wiki API 404 Wiki Page Not Found2155 returns 404 Wiki Page Not Found2156 when page is not existing2157 returns 404 Wiki Page Not Found2158 when user is maintainer2159 behaves like returns wiki page2160 is expected to eq "Page 11"2161 when render param is false2162 behaves like returns wiki page2163 is expected to eq "Page 12"2164 when render param is true2165 behaves like returns wiki page2166 is expected to eq "Page 13"2167 when wiki page has versions2168 when version param is not present2169 retrieves the last version2170 when version param is set2171 retrieves the specific page version2172 when version param is not valid or inexistent2173 behaves like wiki API 404 Wiki Page Not Found2174 returns 404 Wiki Page Not Found2175 when page is not existing2176 returns 404 Wiki Page Not Found2177 when wiki is available for everyone with access2178 when user is guest2179 returns 404 Project Not Found2180 when user is developer2181 behaves like returns wiki page2182 is expected to eq "Page 18"2183 when render param is false2184 behaves like returns wiki page2185 is expected to eq "Page 19"2186 when render param is true2187 behaves like returns wiki page2188 is expected to eq "Page 20"2189 when wiki page has versions2190 when version param is not present2191 retrieves the last version2192 when version param is set2193 retrieves the specific page version2194 when version param is not valid or inexistent2195 behaves like wiki API 404 Wiki Page Not Found2196 returns 404 Wiki Page Not Found2197 when page is not existing2198 returns 404 Wiki Page Not Found2199 when user is maintainer2200 behaves like returns wiki page2201 is expected to eq "Page 24"2202 when render param is false2203 behaves like returns wiki page2204 is expected to eq "Page 25"2205 when render param is true2206 behaves like returns wiki page2207 is expected to eq "Page 26"2208 when wiki page has versions2209 when version param is not present2210 retrieves the last version2211 when version param is set2212 retrieves the specific page version2213 when version param is not valid or inexistent2214 behaves like wiki API 404 Wiki Page Not Found2215 returns 404 Wiki Page Not Found2216 when page is not existing2217 returns 404 Wiki Page Not Found2218 when content contains a reference2219 expands the reference in the content2220 POST /projects/:id/wikis2221 when wiki is disabled2222 when user is guest2223 returns 404 Project Not Found2224 when user is developer2225 returns 403 Forbidden2226 when user is maintainer2227 returns 403 Forbidden2228 when wiki is available only for team members2229 when user is guest2230 returns 404 Project Not Found2231 when user is developer2232 creates the wiki page2233 responds with validation error on empty title2234 responds with validation error on empty content2235 when user is maintainer2236 creates the wiki page2237 responds with validation error on empty title2238 responds with validation error on empty content2239 when wiki is available for everyone with access2240 when user is guest2241 returns 404 Project Not Found2242 when user is developer2243 creates the wiki page2244 responds with validation error on empty title2245 responds with validation error on empty content2246 with front matter title2247 save front matter2248 when user is maintainer2249 creates the wiki page2250 responds with validation error on empty title2251 responds with validation error on empty content2252 PUT /projects/:id/wikis/:slug2253 when wiki is disabled2254 when user is guest2255 returns 404 Project Not Found2256 when user is developer2257 returns 403 Forbidden2258 when user is maintainer2259 returns 403 Forbidden2260 when wiki is available only for team members2261 when user is guest2262 returns 404 Project Not Found2263 when user is developer2264 updates the wiki page2265 updates with wiki with missing title2266 updates with wiki with missing content2267 updates with wiki with missing format2268 when page is not existing2269 returns 404 Wiki Page Not Found2270 when user is maintainer2271 updates the wiki page2272 updates with wiki with missing title2273 updates with wiki with missing content2274 updates with wiki with missing format2275 when page is not existing2276 returns 404 Wiki Page Not Found2277 when wiki is available for everyone with access2278 when user is guest2279 returns 404 Project Not Found2280 when user is developer2281 updates the wiki page2282 updates with wiki with missing title2283 updates with wiki with missing content2284 updates with wiki with missing format2285 when page is not existing2286 returns 404 Wiki Page Not Found2287 with front matter title2288 save front matter2289 when user is maintainer2290 updates the wiki page2291 updates with wiki with missing title2292 updates with wiki with missing content2293 updates with wiki with missing format2294 when page is not existing2295 returns 404 Wiki Page Not Found2296 when wiki belongs to a group project2297 updates the wiki page2298 updates with wiki with missing title2299 updates with wiki with missing content2300 updates with wiki with missing format2301 DELETE /projects/:id/wikis/:slug2302 when wiki is disabled2303 when user is guest2304 returns 404 Project Not Found2305 when user is developer2306 returns 403 Forbidden2307 when user is maintainer2308 returns 403 Forbidden2309 when wiki is available only for team members2310 when user is guest2311 returns 404 Project Not Found2312 when user is developer2313 returns 403 Forbidden2314 when user is maintainer2315 returns 204 No Content2316 when wiki is available for everyone with access2317 when user is guest2318 returns 404 Project Not Found2319 when user is developer2320 returns 403 Forbidden2321 when user is maintainer2322 returns 204 No Content2323 when page is not existing2324 returns 404 Wiki Page Not Found2325 when there is an error deleting the page2326 returns 4222327 when wiki belongs to a group project2328 returns 204 No Content2329 POST /projects/:id/wikis/attachments2330 when wiki is disabled2331 when user is guest2332 returns 404 Project Not Found2333 when user is developer2334 returns 403 Forbidden2335 when user is maintainer2336 returns 403 Forbidden2337 when wiki is available only for team members2338 when user is guest2339 returns 404 Project Not Found2340 when user is developer2341 pushes attachment to the wiki repository2342 responds with validation error on empty file2343 responds with validation error on invalid temp file2344 is backward compatible with regular multipart uploads2345 when user is maintainer2346 pushes attachment to the wiki repository2347 responds with validation error on empty file2348 responds with validation error on invalid temp file2349 is backward compatible with regular multipart uploads2350 when wiki is available for everyone with access2351 when user is guest2352 returns 404 Project Not Found2353 when user is developer2354 pushes attachment to the wiki repository2355 responds with validation error on empty file2356 responds with validation error on invalid temp file2357 is backward compatible with regular multipart uploads2358 when user is maintainer2359 pushes attachment to the wiki repository2360 responds with validation error on empty file2361 responds with validation error on invalid temp file2362 is backward compatible with regular multipart uploads2363getting an issue list for a project2364 behaves like graphql issue list request spec2365 includes a web_url2366 includes discussion locked2367 behaves like a working graphql query2368 returns a successful response2369 filters2370 when filtering by state2371 when filtering by locked state2372 returns an error message2373 when filtering by assignees2374 when both assignee_username filters are provided2375 returns a mutually exclusive param error2376 when both assignee_username and assignee_wildcard_id filters are provided2377 returns a mutually exclusive param error2378 when filtering by assignee_wildcard_id2379 when filtering for all issues with assignees2380 returns all issues with assignees2381 when filtering for issues without assignees2382 returns all issues without assignees2383 when filtering by a negated argument2384 returns correctly filtered issues2385 when filtering by unioned arguments2386 when filtering by assignees2387 returns correctly filtered issues2388 when filtering by labels2389 returns correctly filtered issues2390 when argument is blank2391 does not raise an error2392 when feature flag is disabled2393 returns an error2394 when filtering by a blank negated argument2395 does not raise an error2396 when filtering by reaction emoji2397 value: "thumbsup", issue_list: lazy { voted_issues }2398 returns correctly filtered issues2399 value: "ANY", issue_list: lazy { voted_issues }2400 returns correctly filtered issues2401 value: "any", issue_list: lazy { voted_issues }2402 returns correctly filtered issues2403 value: "AnY", issue_list: lazy { voted_issues }2404 returns correctly filtered issues2405 value: "NONE", issue_list: lazy { no_award_issues }2406 returns correctly filtered issues2407 value: "thumbsdown", issue_list: lazy { [] }2408 returns correctly filtered issues2409 when filtering by search2410 behaves like query with a search term2411 returns only matching issuables2412 when filtering by confidentiality2413 when fetching confidential issues2414 returns only confidential issues2415 when user cannot see confidential issues2416 returns an empty list2417 when fetching non-confidential issues2418 returns only non-confidential issues2419 when user cannot see confidential issues2420 returns an empty list2421 sorting and pagination2422 when sorting by severity2423 when ascending2424 behaves like sorted paginated query2425 behaves like requires variables2426 shared example requires variables to be set2428 when sorting2429 sorts correctly2430 when paginating2431 paginates correctly2432 when descending2433 behaves like sorted paginated query2434 behaves like requires variables2435 shared example requires variables to be set2437 when sorting2438 sorts correctly2439 when paginating2440 paginates correctly2441 when sorting by priority2442 when ascending2443 behaves like sorted paginated query2444 behaves like requires variables2445 shared example requires variables to be set2447 when sorting2448 sorts correctly2449 when paginating2450 paginates correctly2451 when descending2452 behaves like sorted paginated query2453 behaves like requires variables2454 shared example requires variables to be set2456 when sorting2457 sorts correctly2458 when paginating2459 paginates correctly2460 when sorting by due date2461 when ascending2462 behaves like sorted paginated query2463 behaves like requires variables2464 shared example requires variables to be set2466 when sorting2467 sorts correctly2468 when paginating2469 paginates correctly2470 when descending2471 behaves like sorted paginated query2472 behaves like requires variables2473 shared example requires variables to be set2475 when sorting2476 sorts correctly2477 when paginating2478 paginates correctly2479 when sorting by relative position2480 when ascending2481 behaves like sorted paginated query2482 behaves like requires variables2483 shared example requires variables to be set2485 when sorting2486 sorts correctly2487 when paginating2488 paginates correctly2489 when last and sort params are present2490 fetches last elements without error2491 when sorting by label priority2492 when ascending2493 behaves like sorted paginated query2494 behaves like requires variables2495 shared example requires variables to be set2497 when sorting2498 sorts correctly2499 when paginating2500 paginates correctly2501 when descending2502 behaves like sorted paginated query2503 behaves like requires variables2504 shared example requires variables to be set2506 when sorting2507 sorts correctly2508 when paginating2509 paginates correctly2510 when sorting by milestone due date2511 when ascending2512 behaves like sorted paginated query2513 behaves like requires variables2514 shared example requires variables to be set2516 when sorting2517 sorts correctly2518 when paginating2519 paginates correctly2520 when descending2521 behaves like sorted paginated query2522 behaves like requires variables2523 shared example requires variables to be set2525 when sorting2526 sorts correctly2527 when paginating2528 paginates correctly2529 N+1 query checks2530 when requesting `user_notes_count` and `user_discussions_count`2531 prevents N+1 queries2532 when requesting `merge_requests_count`2533 prevents N+1 queries2534 when requesting `timelogs`2535 prevents N+1 queries2536 when requesting `closed_as_duplicate_of`2537 prevents N+1 queries2538 when award emoji votes2539 prevents N+1 queries2540 when requesting labels2541 prevents N+1 queries2542 when confidential issues exist2543 when user can see confidential issues2544 includes confidential issues2545 when user cannot see confidential issues2546 does not include confidential issues2547 when limiting the number of results2548 is expected to check permissions on the first issue only2549 behaves like a working graphql query2550 returns a successful response2551 only returns N issues2552 when no limit is provided2553 returns all issues2554 when the user does not have access to the issue2555 returns no issues2556 when fetching external participants2557 returns the email address2558 when user does not have access to view emails2559 obfuscates the email address2560 when fetching escalation status2561 returns the escalation status values2562 avoids N+1 queries2563 when fetching alert management alert2564 avoids N+1 queries2565 returns the alert data2566 returns the alerts data2567 when fetching customer_relations_contacts2568 avoids N+1 queries2569 when fetching labels2570 avoids N+1 queries2571 when fetching assignees2572 avoids N+1 queries2573 when selecting `related_merge_requests`2574 limits the field to 1 execution2575API::Ci::Runners2576 GET /runners2577 authorized user2578 returns response status and headers2579 returns user available runners2580 filters runners by scope2581 avoids filtering if scope is invalid2582 filters runners by type2583 does not filter by invalid type2584 does not filter by invalid status2585 filters runners by tag_list2586 with an inactive runner2587 filters runners by paused state2588 filters runners by status2589 unauthorized user2590 does not return runners2591 GET /runners/all2592 behaves like GET request permissions for admin mode2593 behaves like when admin2594 behaves like makes request2595 returns2596 behaves like makes request2597 returns2598 behaves like when user2599 returns2600 behaves like makes request2601 returns2602 authorized user2603 with admin privileges2604 returns response status and headers2605 returns all runners2606 filters runners by scope2607 filters runners by scope2608 avoids filtering if scope is invalid2609 filters runners by project type2610 filters runners by group type2611 does not filter by invalid type2612 does not filter by invalid status2613 filters runners by tag_list2614 with an inactive runner2615 filters runners by status2616 filters runners by status2617 with ci_runner_machines2618 filters runners by version_prefix when prefix is "15.0"2619 filters runners by version_prefix when prefix is "16"2620 filters runners by version_prefix when prefix is "25"2621 does not filter runners by version_prefix when prefix is invalid ("V15")2622 without admin privileges2623 does not return runners list2624 unauthorized user2625 does not return runners2626 GET /runners/:id2627 behaves like GET request permissions for admin mode2628 behaves like when admin2629 behaves like makes request2630 returns2631 behaves like makes request2632 returns2633 behaves like when user2634 returns2635 behaves like makes request2636 returns2637 admin user2638 returns 404 if runner does not exist2639 when runner is shared2640 returns runner's details2641 when runner is not shared2642 returns runner's details2643 returns the project's details for a project runner2644 when unused runner is present2645 deletes unused runner2646 when the runner is a group runner2647 returns the runner's details2648 runner project's administrative user2649 when runner is not shared2650 returns runner's details2651 when runner is shared2652 returns runner's details2653 other authorized user2654 does not return project runner's details2655 unauthorized user2656 does not return project runner's details2657 PUT /runners/:id2658 behaves like PUT request permissions for admin mode2659 behaves like when admin2660 behaves like makes request2661 returns2662 behaves like makes request2663 returns2664 behaves like when user2665 returns2666 behaves like makes request2667 returns2668 admin user2669 returns 404 if runner does not exist2670 single parameter update2671 runner description2672 runner active state2673 runner paused state2674 runner tag list2675 unrelated runner attribute on an existing runner with too many tags2676 runner untagged flag2677 runner unlocked flag2678 runner access level2679 runner maximum timeout2680 fails with no parameters2681 when runner is shared2682 updates runner2683 when runner is not shared2684 updates runner2685 authorized user2686 when runner is shared2687 does not update runner2688 when runner is not shared2689 does not update project runner without access to it2690 updates project runner with access to it2691 unauthorized user2692 does not delete project runner2693 DELETE /runners/:id2694 behaves like DELETE request permissions for admin mode2695 behaves like when admin2696 behaves like makes request2697 returns2698 behaves like makes request2699 returns2700 behaves like when user2701 returns2702 behaves like makes request2703 returns2704 admin user2705 returns 404 if runner does not exist2706 when runner is shared2707 deletes runner2708 behaves like 412 response2709 for a modified resource2710 returns 412 with a JSON error2711 for an unmodified resource2712 returns 204 with an empty body2713 when runner is not shared2714 deletes used project runner2715 authorized user2716 when runner is shared2717 does not delete runner2718 when runner is not shared2719 does not delete runner without access to it2720 does not delete project runner with more than one associated project2721 deletes project runner for one owned project2722 does not delete group runner with guest access2723 does not delete group runner with reporter access2724 does not delete group runner with developer access2725 does not delete group runner with maintainer access2726 deletes owned group runner with owner access2727 deletes inherited group runner with owner access2728 behaves like 412 response2729 for a modified resource2730 returns 412 with a JSON error2731 for an unmodified resource2732 returns 204 with an empty body2733 unauthorized user2734 does not delete project runner2735 POST /runners/:id/reset_authentication_token2736 behaves like POST request permissions for admin mode2737 behaves like when admin2738 behaves like makes request2739 returns2740 behaves like makes request2741 returns2742 behaves like when user2743 returns2744 behaves like makes request2745 returns2746 admin user2747 resets shared runner authentication token2748 returns 404 if runner does not exist2749 authorized user2750 does not reset project runner authentication token without access to it2751 resets project runner authentication token for owned project2752 does not reset group runner authentication token with guest access2753 does not reset group runner authentication token with reporter access2754 does not reset group runner authentication token with developer access2755 does not reset group runner authentication token with maintainer access2756 resets group runner authentication token with owner access2757 resets group runner authentication token with owner access with expiration time2758 unauthorized user2759 does not reset authentication token2760 GET /runners/:id/jobs2761 behaves like GET request permissions for admin mode2762 behaves like when admin2763 behaves like makes request2764 returns2765 behaves like makes request2766 returns2767 behaves like when user2768 returns2769 behaves like makes request2770 returns2771 admin user2772 avoids N+1 DB queries2773 batches loading of commits2774 when runner exists2775 when runner is shared2776 return jobs2777 when runner is a project runner2778 return jobs2779 when user does not have authorization to see all jobs2780 shows only jobs it has permission to see2781 when valid status is provided2782 return filtered jobs2783 when valid order_by is provided2784 when sort order is not specified2785 return jobs in descending order2786 when sort order is specified as asc2787 return jobs sorted in ascending order2788 when invalid status is provided2789 return 4002790 when invalid order_by is provided2791 return 4002792 when invalid sort is provided2793 return 4002794 when runner doesn't exist2795 returns 4042796 runner project's administrative user2797 when runner exists2798 when runner is shared2799 returns 4032800 when runner is a project runner2801 return jobs2802 when valid status is provided2803 return filtered jobs2804 when invalid status is provided2805 return 4002806 when runner doesn't exist2807 returns 4042808 other authorized user2809 does not return jobs2810 unauthorized user2811 does not return jobs2812 GET /projects/:id/runners2813 authorized user with maintainer privileges2814 returns response status and headers2815 returns all runners2816 filters runners by scope2817 avoids filtering if scope is invalid2818 filters runners by type2819 does not filter by invalid type2820 does not filter by invalid status2821 filters runners by tag_list2822 with an inactive runner2823 filters runners by status2824 filters runners by status2825 behaves like unauthorized access to runners list2826 authorized user without maintainer privileges2827 does not return group's runners2828 unauthorized user2829 does not return project's runners2830 GET /groups/:id/runners2831 authorized user with maintainer privileges2832 returns all runners2833 filters runners by tag_list2834 filter by type2835 returns record when valid and present2836 returns instance runners when instance_type is specified2837 returns empty result when type does not match2838 does not filter by invalid type2839 with an inactive runner2840 returns runners by paused state2841 filter runners by status2842 returns runners by valid status2843 does not filter by invalid status2844 behaves like unauthorized access to runners list2845 authorized user without maintainer privileges2846 does not return group's runners2847 unauthorized user2848 does not return project's runners2849 POST /projects/:id/runners2850 behaves like POST request permissions for admin mode2851 behaves like when admin2852 behaves like makes request2853 returns2854 behaves like makes request2855 returns2856 behaves like when user2857 returns2858 behaves like makes request2859 returns2860 authorized user2861 enables project runner2862 avoids changes when enabling already enabled runner2863 does not enable locked runner2864 does not enable shared runner2865 does not enable group runner2866 raises an error when no runner_id param is provided2867 user is admin2868 when project runner is used2869 enables any project runner2870 when it exceeds the application limits2871 does not enable project runner2872 user is not admin2873 does not enable runner without access to2874 authorized user without permissions2875 does not enable runner2876 unauthorized user2877 does not enable runner2878 DELETE /projects/:id/runners/:runner_id2879 authorized user2880 returns 404 is runner is not found2881 when runner have more than one associated projects2882 disables project's runner2883 behaves like 412 response2884 for a modified resource2885 returns 412 with a JSON error2886 for an unmodified resource2887 returns 204 with an empty body2888 when runner have one associated projects2889 does not disable project's runner2890 authorized user without permissions2891 does not disable project's runner2892 unauthorized user2893 does not disable project's runner2894Projects::CompareController2895 GET index2896 returns successfully2897 with incorrect parameters2898 returns successfully2899 with missing parameters2900 returns successfully2901 GET show2902 when the refs exist in the same project2903 when we set the white space param2904 shows some diffs with ignore whitespace change option2905 when we do not set the white space param2906 sets the diffs and commits ivars2907 when refs have CI::Pipeline2908 avoids N+1 queries2909 when the refs exist in different projects that the user can see2910 shows the diff2911 when comparing missing commits between source and target2912 when comparing them in the other direction2913 the commits are there2914 with straight mode true2915 the commits are empty, but the removed lines are visible as diffs2916 with straight mode false2917 the additional commits are not visible in diffs and commits2918 when the refs exist in different projects but the user cannot see2919 does not show the diff2920 when the target project is the default source but hidden to the user2921 does not show the diff2922 when the source ref does not exist2923 sets empty diff and commit ivars2924 when the target ref does not exist2925 sets empty diff and commit ivars2926 when the target ref is invalid2927 shows a flash message and redirects2928 when the from_ref and to_ref are the same2929 shows a message that refs are identical2930 when the source ref is invalid2931 shows a flash message and redirects2932 when the both refs are invalid2933 shows a flash message and redirects2934 when page is valid2935 only loads blobs in the current page2936 behaves like valid compare page2937 shows the diff2938 when from_ref is HEAD ref2939 behaves like valid compare page2940 shows the diff2941 when to_ref is HEAD ref2942 behaves like valid compare page2943 shows the diff2944 when page is not valid2945 does not return an error2946 GET diff_for_path2947 when the source and target refs exist in the same project2948 when the user has access target the project2949 when the path exists in the diff2950 disables diff notes2951 only renders the diffs for the path given2952 when the path does not exist in the diff2953 returns a 4042954 when the user does not have access target the project2955 returns a 4042956 when the source and target refs exist in different projects and the user can see2957 shows the diff for that path2958 when the source and target refs exist in different projects and the user cannot see2959 does not show the diff for that path2960 when the source ref does not exist2961 returns a 4042962 when the target ref does not exist2963 returns a 4042964 POST create2965 when sending valid params2966 without a from_project_id2967 redirects to the show page2968 with a from_project_id2969 redirects to the show page without interpreting from_project_id2970 when sending invalid params2971 from_ref: "", to_ref: "", from_project_id: "", expected_redirect_params: {}2972 redirects back to the index2973 from_ref: "main", to_ref: "", from_project_id: "", expected_redirect_params: {:from=>"main"}2974 redirects back to the index2975 from_ref: "", to_ref: "main", from_project_id: "", expected_redirect_params: {:to=>"main"}2976 redirects back to the index2977 from_ref: "", to_ref: "", from_project_id: "1", expected_redirect_params: {:from_project_id=>1}2978 redirects back to the index2979 from_ref: "main", to_ref: "", from_project_id: "1", expected_redirect_params: {:from=>"main", :from_project_id=>1}2980 redirects back to the index2981 from_ref: "", to_ref: "main", from_project_id: "1", expected_redirect_params: {:to=>"main", :from_project_id=>1}2982 redirects back to the index2983 from_ref: ["a"], to_ref: ["b"], from_project_id: ["c"], expected_redirect_params: {}2984 redirects back to the index2985 GET signatures2986 when the source and target refs exist2987 when the user has access to the project2988 returns only the commit with a signature2989 when the user has access to the project with straight compare2990 returns only the commit with a signature2991 when the user does not have access to the project2992 returns a 4042993 when the source ref does not exist2994 returns no signatures2995 when the target ref does not exist2996 returns no signatures2997API::GroupLabels2998 GET :id/labels2999 get current group labels3000 behaves like fetches labels3001 returns correct labels3002 when search param is provided3003 behaves like fetches labels3004 returns correct labels3005 and is subscribed3006 returns true3007 and is unsubscribed3008 returns false3009 when the with_counts parameter is set3010 includes counts in the response3011 when include_descendant_groups param is provided3012 behaves like fetches labels3013 returns correct labels3014 when search param is provided3015 behaves like fetches labels3016 returns correct labels3017 when only_group_labels param is false3018 behaves like fetches labels3019 returns correct labels3020 when search param is provided3021 behaves like fetches labels3022 returns correct labels3023 with subgroup labels3024 when the include_ancestor_groups parameter is not set3025 behaves like fetches labels3026 returns correct labels3027 when search param is provided3028 behaves like fetches labels3029 returns correct labels3030 when the include_ancestor_groups parameter is set to false3031 behaves like fetches labels3032 returns correct labels3033 when search param is provided3034 behaves like fetches labels3035 returns correct labels3036 GET :id/labels/:label_id3037 returns a single label for the group3038 POST /groups/:id/labels3039 returns created label when all params are given3040 returns created label when only required params are given3041 returns a 400 bad request if name not given3042 returns a 400 bad request if color is not given3043 returns 409 if label already exists3044 DELETE /groups/:id/labels (deprecated)3045 returns 204 for existing label3046 returns 404 for non existing label3047 returns 400 for wrong parameters3048 does not delete parent's group labels3049 behaves like 412 response3050 for a modified resource3051 returns 412 with a JSON error3052 for an unmodified resource3053 returns 204 with an empty body3054 DELETE /groups/:id/labels/:label_id3055 returns 204 for existing label3056 returns 404 for non existing label3057 does not delete parent's group labels3058 behaves like 412 response3059 for a modified resource3060 returns 412 with a JSON error3061 for an unmodified resource3062 returns 204 with an empty body3063 PUT /groups/:id/labels (deprecated)3064 returns 200 if name and colors and description are changed3065 does not update parent's group label3066 returns 404 if label does not exist3067 returns 400 if no label name given3068 returns 400 if no new parameters given3069 PUT /groups/:id/labels/:label_id3070 returns 200 if name and colors and description are changed3071 does not update parent's group label3072 returns 404 if label does not exist3073 returns 400 if no new parameters given3074 POST /groups/:id/labels/:label_id/subscribe3075 when label_id is a label title3076 subscribes to the label3077 when label_id is a label ID3078 subscribes to the label3079 when user is already subscribed to label3080 returns 3043081 when label ID is not found3082 returns 404 error3083 POST /groups/:id/labels/:label_id/unsubscribe3084 when label_id is a label title3085 unsubscribes from the label3086 when label_id is a label ID3087 unsubscribes from the label3088 when user is already unsubscribed from label3089 returns 3043090 when label ID is not found3091 returns 404 error3092Projects::Settings::IntegrationsController3093 behaves like Integrations::Actions3094 GET #edit3095 assigns the integration3096 behaves like unknown integration3097 returns 404 Not Found3098 PUT #update3099 updates the integration with the provided params and redirects to the form3100 when sending a password field3101 updates the integration with the password and other params3102 when sending a blank password field3103 ignores the password field and saves the other params3104 behaves like unknown integration3105 returns 404 Not Found3106 PUT #test3107 behaves like unknown integration3108 returns 404 Not Found3109 GET index3110 renders index with 200 status code3111 shows Slack Slash Commands and not the GitLab for Slack app3112 when the `slack_app_enabled` application setting is enabled3113 shows the GitLab for Slack app and not Slack Slash Commands3114 #test3115 renders 404 when the integration is not testable3116 returns success if test is successful3117 returns extra given data if test is successful3118 returns an error response if the test is not successful3119 returns extra given message if the test is not successful3120 returns an error response if a network exception is raised3121 returns error messages in JSON response if validations fail3122 when integration has a webhook3123 returns an error response if the webhook URL is changed to one that is blocked3124 ignores masked webhook param3125 creates an associated web hook record if web hook integration is configured for the first time3126 when the endpoint receives requests above the rate limit3127 prevents making test requests3128 PUT #update3129 as HTML3130 when update fails3131 renders the edit form3132 when param `active` is set to true3133 when redirect_to param is present3134 behaves like integration update3135 redirects to the correct url with a flash message3136 when redirect_to is an external domain3137 behaves like integration update3138 redirects to the correct url with a flash message3139 when redirect_to param is an empty string3140 behaves like integration update3141 redirects to the correct url with a flash message3142 when param `active` is set to false3143 behaves like integration update3144 redirects to the correct url with a flash message3145 when param `inherit_from_id` is set to empty string3146 sets inherit_from_id to nil3147 when param `inherit_from_id` is set to an instance integration3148 ignores submitted params and inherits instance settings3149 when param `inherit_from_id` is set to a group integration3150 ignores submitted params and inherits group settings3151 when param `inherit_from_id` is set to an unrelated group3152 ignores the param and saves the submitted settings3153 with chat notification integration3154 behaves like integration update3155 redirects to the correct url with a flash message3156 with masked token3157 does not update the webhook3158 behaves like integration update3159 redirects to the correct url with a flash message3160 with chat notification integration which masks channel params3161 behaves like integration update3162 redirects to the correct url with a flash message3163 with masked channel param3164 does not update the channel3165 behaves like integration update3166 redirects to the correct url with a flash message3167 as JSON3168 when update succeeds3169 returns success response3170 when update fails with missing password3171 returns JSON response errors3172 when update fails with invalid URL3173 returns JSON response with errors3174 GET #edit3175 with Jira service3176 with approved services3177 renders edit page3178Groups::Settings::IntegrationsController3179 behaves like Integrations::Actions3180 GET #edit3181 assigns the integration3182 behaves like unknown integration3183 returns 404 Not Found3184 PUT #update3185 updates the integration with the provided params and redirects to the form3186 when sending a password field3187 updates the integration with the password and other params3188 when sending a blank password field3189 ignores the password field and saves the other params3190 behaves like unknown integration3191 returns 404 Not Found3192 PUT #test3193 behaves like unknown integration3194 returns 404 Not Found3195 #index3196 when user is not owner3197 renders not_found3198 when user is owner3199 successfully displays the template3200 #edit3201 when user is not owner3202 renders not_found3203 when user is owner3204 asana3205 successfully displays the template3206 assembla3207 successfully displays the template3208 bamboo3209 successfully displays the template3210 bugzilla3211 successfully displays the template3212 buildkite3213 successfully displays the template3214 campfire3215 successfully displays the template3216 clickup3217 successfully displays the template3218 confluence3219 successfully displays the template3220 custom_issue_tracker3221 successfully displays the template3222 datadog3223 successfully displays the template3224 discord3225 successfully displays the template3226 drone_ci3227 successfully displays the template3228 emails_on_push3229 successfully displays the template3230 ewm3231 successfully displays the template3232 external_wiki3233 successfully displays the template3234 hangouts_chat3235 successfully displays the template3236 harbor3237 successfully displays the template3238 irker3239 successfully displays the template3240 jira3241 successfully displays the template3242 mattermost3243 successfully displays the template3244 mattermost_slash_commands3245 successfully displays the template3246 microsoft_teams3247 successfully displays the template3248 mock_ci3249 successfully displays the template3250 mock_monitoring3251 successfully displays the template3252 packagist3253 successfully displays the template3254 pipelines_email3255 successfully displays the template3256 pivotaltracker3257 successfully displays the template3258 prometheus3259 successfully displays the template3260 pumble3261 successfully displays the template3262 pushover3263 successfully displays the template3264 redmine3265 successfully displays the template3266 slack3267 successfully displays the template3268 slack_slash_commands3269 successfully displays the template3270 squash_tm3271 successfully displays the template3272 teamcity3273 successfully displays the template3274 telegram3275 successfully displays the template3276 unify_circuit3277 successfully displays the template3278 webex_teams3279 successfully displays the template3280 youtrack3281 successfully displays the template3282 zentao3283 successfully displays the template3284 #update3285 with valid params3286 updates the integration3287 with invalid params3288 does not update the integration3289 #reset3290 when user is not owner3291 renders not_found3292 when user is owner3293 returns 200 OK3294 deletes the integration and all inheriting integrations3295Query.runner(id)3296 for active runner3297 behaves like runner details fetch3298 retrieves expected fields3299 when tagList is not requested3300 does not retrieve tagList3301 with build running3302 behaves like runner details fetch3303 retrieves expected fields3304 for project runner3305 locked3306 is_locked: true3307 retrieves correct locked value3308 is_locked: false3309 retrieves correct locked value3310 jobCount3311 retrieves correct jobCount values3312 when JOB_COUNT_LIMIT is in effect3313 retrieves correct capped jobCount values3314 ownerProject3315 retrieves correct ownerProject.id values3316 jobs3317 with a job from a non-owned project3318 returns empty values for sensitive fields in non-owned jobs3319 a query fetching all fields3320 does not execute more queries per runner3321 for inactive runner3322 behaves like runner details fetch3323 retrieves expected fields3324 for registration type3325 when registered with registration token3326 behaves like runner details fetch3327 retrieves expected fields3328 when registered with authenticated user3329 behaves like runner details fetch3330 retrieves expected fields3331 for group runner request3332 retrieves groups field with expected value3333 ephemeralRegisterUrl3334 with an instance runner3335 with valid ephemeral registration3336 behaves like has register url3337 retrieves register url3338 when runner ephemeral registration has expired3339 behaves like has no register url3340 retrieves no register url3341 when runner has already been registered3342 behaves like has no register url3343 retrieves no register url3344 with a group runner3345 with valid ephemeral registration3346 behaves like has register url3347 retrieves register url3348 when request not from creator3349 behaves like has no register url3350 retrieves no register url3351 with a project runner3352 with valid ephemeral registration3353 behaves like has register url3354 retrieves register url3355 when request not from creator3356 behaves like has no register url3357 retrieves no register url3358 for runner with status3359 retrieves status fields with expected values3360 for multiple runners3361 requesting projects and counts for projects and jobs3362 retrieves expected fields3363 by regular user3364 on instance runner3365 behaves like retrieval by unauthorized user3366 returns null runner3367 on group runner3368 behaves like retrieval by unauthorized user3369 returns null runner3370 on project runner3371 behaves like retrieval by unauthorized user3372 returns null runner3373 by non-admin user3374 behaves like retrieval with no admin url3375 retrieves expected fields3376 by unauthenticated user3377 behaves like retrieval by unauthorized user3378 returns null runner3379 ephemeralAuthenticationToken3380 with request made by creator3381 with runner created in UI3382 with runner created in last hour3383 with no runner manager registered yet3384 behaves like an ephemeral_authentication_token3385 returns token in ephemeral_authentication_token field3386 with first runner manager already registered3387 behaves like a protected ephemeral_authentication_token3388 returns nil ephemeral_authentication_token3389 with runner created almost too long ago3390 behaves like an ephemeral_authentication_token3391 returns token in ephemeral_authentication_token field3392 with runner created too long ago3393 behaves like a protected ephemeral_authentication_token3394 returns nil ephemeral_authentication_token3395 with runner registered from command line3396 with runner created in last 1 hour3397 behaves like a protected ephemeral_authentication_token3398 returns nil ephemeral_authentication_token3399 when request is made by non-creator of the runner3400 with runner created in UI3401 behaves like a protected ephemeral_authentication_token3402 returns nil ephemeral_authentication_token3403 Query limits with jobs3404 when requesting individual fields3405 field: "detailedStatus { id detailsPath group icon text }"3406 does not execute more queries per job3407 field: "project { id name webUrl }"3408 does not execute more queries per job3409 field: "shortSha"3410 does not execute more queries per job3411 field: "browseArtifactsPath"3412 does not execute more queries per job3413 field: "commitPath"3414 does not execute more queries per job3415 field: "playPath"3416 does not execute more queries per job3417 field: "refPath"3418 does not execute more queries per job3419 field: "webPath"3420 does not execute more queries per job3421 field: "finishedAt"3422 does not execute more queries per job3423 field: "duration"3424 does not execute more queries per job3425 field: "queuedDuration"3426 does not execute more queries per job3427 field: "tags"3428 does not execute more queries per job3429 sorting and pagination3430 with project search term3431 set to empty string3432 with n = 13433 returns paged result3434 behaves like a working graphql query3435 returns a successful response3436 with n = 23437 returns non-paged result3438 set to partial match3439 with n = 13440 returns paged result with no additional pages3441 behaves like a working graphql query3442 returns a successful response3443Public Project Pages Access3444 Project should be public3445 #public?3446 is expected to be truthy3447 GET /projects/:id/pages_access3448 access depends on the level3449 pages_access_level: 0, with_user: "admin", admin_mode: false, expected_result: 4033450 correct return value3451 pages_access_level: 0, with_user: "owner", admin_mode: false, expected_result: 4033452 correct return value3453 pages_access_level: 0, with_user: "master", admin_mode: false, expected_result: 4033454 correct return value3455 pages_access_level: 0, with_user: "developer", admin_mode: false, expected_result: 4033456 correct return value3457 pages_access_level: 0, with_user: "reporter", admin_mode: false, expected_result: 4033458 correct return value3459 pages_access_level: 0, with_user: "guest", admin_mode: false, expected_result: 4033460 correct return value3461 pages_access_level: 0, with_user: "user", admin_mode: false, expected_result: 4033462 correct return value3463 pages_access_level: 0, with_user: nil, admin_mode: false, expected_result: 4033464 correct return value3465 pages_access_level: 30, with_user: "admin", admin_mode: false, expected_result: 2003466 correct return value3467 pages_access_level: 30, with_user: "owner", admin_mode: false, expected_result: 2003468 correct return value3469 pages_access_level: 30, with_user: "master", admin_mode: false, expected_result: 2003470 correct return value3471 pages_access_level: 30, with_user: "developer", admin_mode: false, expected_result: 2003472 correct return value3473 pages_access_level: 30, with_user: "reporter", admin_mode: false, expected_result: 2003474 correct return value3475 pages_access_level: 30, with_user: "guest", admin_mode: false, expected_result: 2003476 correct return value3477 pages_access_level: 30, with_user: "user", admin_mode: false, expected_result: 2003478 correct return value3479 pages_access_level: 30, with_user: nil, admin_mode: false, expected_result: 2003480 correct return value3481 pages_access_level: 20, with_user: "admin", admin_mode: false, expected_result: 2003482 correct return value3483 pages_access_level: 20, with_user: "owner", admin_mode: false, expected_result: 2003484 correct return value3485 pages_access_level: 20, with_user: "master", admin_mode: false, expected_result: 2003486 correct return value3487 pages_access_level: 20, with_user: "developer", admin_mode: false, expected_result: 2003488 correct return value3489 pages_access_level: 20, with_user: "reporter", admin_mode: false, expected_result: 2003490 correct return value3491 pages_access_level: 20, with_user: "guest", admin_mode: false, expected_result: 2003492 correct return value3493 pages_access_level: 20, with_user: "user", admin_mode: false, expected_result: 2003494 correct return value3495 pages_access_level: 20, with_user: nil, admin_mode: false, expected_result: 2003496 correct return value3497 pages_access_level: 10, with_user: "admin", admin_mode: true, expected_result: 2003498 correct return value3499 pages_access_level: 10, with_user: "owner", admin_mode: false, expected_result: 2003500 correct return value3501 pages_access_level: 10, with_user: "master", admin_mode: false, expected_result: 2003502 correct return value3503 pages_access_level: 10, with_user: "developer", admin_mode: false, expected_result: 2003504 correct return value3505 pages_access_level: 10, with_user: "reporter", admin_mode: false, expected_result: 2003506 correct return value3507 pages_access_level: 10, with_user: "guest", admin_mode: false, expected_result: 2003508 correct return value3509 pages_access_level: 10, with_user: "user", admin_mode: false, expected_result: 4033510 correct return value3511 pages_access_level: 10, with_user: nil, admin_mode: false, expected_result: 4033512 correct return value3513Projects::DeployKeysController3514 GET index3515 when html requested3516 redirects to project settings with the correct anchor3517 when json requested3518 when user has access to all projects where deploy keys are used3519 returns json in a correct format3520 when user has no access to all projects where deploy keys are used3521 returns json in a correct format3522 POST create3523 creates a new deploy key for the project3524 redirects to project settings with the correct anchor3525 when the deploy key has an invalid title3526 shows an alert with the validations errors3527 when the deploy key is not supported SSH public key3528 shows an alert with a help link3529 when the deploy key already exists3530 shows an alert with the validations errors3531 /enable/:id3532 with anonymous user3533 redirects to login3534 with user with no permission3535 returns 4043536 with user with permission3537 returns 3023538 returns 4043539 with admin3540 returns 3023541 /disable/:id3542 with anonymous user3543 redirects to login3544 with user with no permission3545 returns 4043546 with user with permission3547 returns 3023548 returns 4043549 with admin3550 returns 3023551 PUT update3552 with project maintainer3553 public deploy key attached to project3554 does not update the title of the deploy key3555 updates can_push of deploy_keys_project3556 with admin3557 public deploy key attached to project3558 updates the title of the deploy key3559 updates can_push of deploy_keys_project3560 when a different deploy key id param is injected3561 and that deploy key id exists3562 does not update the can_push attribute3563 and that deploy key id does not exist3564 returns 4043565 with admin as project maintainer3566 public deploy key attached to project3567 updates can_push of deploy_keys_project3568 admin mode disabled3569 does not update the title of the deploy key3570 admin mode enabled3571 updates the title of the deploy key3572Import::GiteaController3573 GET new3574 behaves like a GitHub-ish import controller: GET new3575 redirects to status if we already have a token3576 renders the :new page if no token is present in session3577 POST personal_access_token3578 behaves like a GitHub-ish import controller: POST personal_access_token3579 updates access token3580 strips access token with spaces3581 passes namespace_id param as query param if it was present3582 GET status3583 behaves like a GitHub-ish import controller: GET status3584 returns variables for json request3585 touches the etag cache store3586 handles an invalid access token3587 does not produce N+1 database queries3588 requests provider repos list3589 when user is not allowed to import projects3590 returns 4043591 when filtering3592 filters list of repositories by name3593 filters the list, ignoring the case of the name3594 when user input contains html3595 sanitizes user input3596 when the client returns a non-string name3597 does not raise an error3598 when namespace_id query param is provided3599 when user is allowed to create projects in this namespace3600 provides namespace to the template3601 when user is not allowed to create projects in this namespace3602 renders 4043603 when host url is local or not http3604 denies network request3605 denies network request3606 denies network request3607 when DNS Rebinding protection is enabled3608 when provided host url is using https3609 uses unchanged host url to send request to Gitea3610 when provided host url is using http3611 uses changed host url to send request to Gitea3612 POST create3613 behaves like a GitHub-ish import controller: POST create3614 returns 200 response when the project is imported successfully3615 returns 422 response with the base error when the project could not be imported3616 touches the etag cache store3617 when the repository owner is the provider user3618 when the provider user and GitLab user's usernames match3619 takes the current user's namespace3620 when the provider user and GitLab user's usernames don't match3621 takes the current user's namespace3622 when the repository owner is not the provider user3623 when a namespace with the provider user's username already exists3624 when the namespace is owned by the GitLab user3625 takes the existing namespace3626 when the namespace is not owned by the GitLab user3627 creates a project using user's namespace3628 when a namespace with the provider user's username doesn't exist3629 when current user can create namespaces3630 does not create the namespace3631 user has chosen a namespace and name for the project3632 takes the selected namespace and name3633 user has chosen an existing nested namespace and name for the project3634 takes the selected namespace and name3635 user has chosen a non-existent nested namespaces and name for the project3636 does not take the selected namespace and name3637 does not create namespaces3638 user has chosen existent and non-existent nested namespaces and name for the project3639 does not take the selected namespace and name3640 does not create the namespaces3641 does not create a new namespace under the user namespace3642 user can use a group without having permissions to create a group3643 takes the selected namespace and name3644 when user can not create projects in the chosen namespace3645 returns 422 response3646 behaves like project import rate limiter3647 when limit exceeds3648 notifies and redirects user3649 GET realtime_changes3650 behaves like a GitHub-ish import controller: GET realtime_changes3651 sets a Poll-Interval header3652Projects::WebIdeTerminalsController3653 GET show3654 behaves like terminal access rights3655 with admin3656 when admin mode is enabled3657 returns 2003658 when admin mode is disabled3659 returns 4043660 with owner3661 returns 2003662 with maintainer3663 returns 2003664 with developer3665 returns 4043666 with reporter3667 returns 4043668 with guest3669 returns 4043670 with non member3671 returns 4043672 behaves like when pipeline is not from a webide source3673 with admin3674 returns 4043675 POST check_config3676 behaves like terminal access rights3677 with admin3678 when admin mode is enabled3679 returns 2003680 when admin mode is disabled3681 returns 4043682 with owner3683 returns 2003684 with maintainer3685 returns 2003686 with developer3687 returns 4043688 with reporter3689 returns 4043690 with guest3691 returns 4043692 with non member3693 returns 4043694 when invalid config file3695 returns 4223696 POST create3697 when terminal job is created successfully3698 increases the web ide terminal counter3699 access rights3700 behaves like terminal access rights3701 with admin3702 when admin mode is enabled3703 returns 2003704 when admin mode is disabled3705 returns 4043706 with owner3707 returns 2003708 with maintainer3709 returns 2003710 with developer3711 returns 4043712 with reporter3713 returns 4043714 with guest3715 returns 4043716 with non member3717 returns 4043718 when branch does not exist3719 returns 4003720 behaves like web ide terminal usage counter3721 does not increase3722 when there is an error creating the job3723 returns 4003724 behaves like web ide terminal usage counter3725 does not increase3726 when the current build is nil3727 returns 4003728 behaves like web ide terminal usage counter3729 does not increase3730 POST cancel3731 behaves like terminal access rights3732 with admin3733 when admin mode is enabled3734 returns 2003735 when admin mode is disabled3736 returns 4043737 with owner3738 returns 2003739 with maintainer3740 returns 2003741 with developer3742 returns 4043743 with reporter3744 returns 4043745 with guest3746 returns 4043747 with non member3748 returns 4043749 behaves like when pipeline is not from a webide source3750 with admin3751 returns 4043752 when job is not cancelable3753 returns 4223754 POST retry3755 behaves like terminal access rights3756 with admin3757 when admin mode is enabled3758 returns 2003759 when admin mode is disabled3760 returns 4043761 with owner3762 returns 2003763 with maintainer3764 returns 2003765 with developer3766 returns 4043767 with reporter3768 returns 4043769 with guest3770 returns 4043771 with non member3772 returns 4043773 behaves like when pipeline is not from a webide source3774 with admin3775 returns 4043776 when job is not retryable3777 returns 4223778 when job is cancelled3779 returns 2003780 when job fails3781 returns 2003782 when job is successful3783 returns 2003784Projects::MergeRequests::DraftsController3785 GET #index3786 list merge request draft notes for current user3787 POST #create3788 creates a draft note3789 creates draft note with position3790 creates a draft note with quick actions3791 without permissions3792 does not allow draft note creation3793 in a thread3794 creates draft note as a reply3795 creates a draft note that will resolve a thread3796 cannot create more than one draft note per thread3797 commit_id is present3798 value is a commit sha3799 creates the draft note with commit ID3800 value is "undefined"3801 creates the draft note with nil commit ID3802 when the draft note is invalid3803 does not allow draft note creation3804 returns status 4223805 PUT #update3806 updates the draft3807 without permissions3808 does not allow editing draft note belonging to someone else3809 when the draft note is invalid3810 does not update the draft3811 returns status 4223812 POST #publish3813 publishes draft notes with position3814 does nothing if there are no draft notes3815 publishes a draft note with quick actions and applies them3816 publishes all draft notes for an MR3817 can publish just a single draft note3818 without permissions3819 when note belongs to someone else3820 behaves like action that does not allow publishing draft note3821 does not allow publishing draft note3822 when merge request discussion is locked3823 behaves like action that does not allow publishing draft note3824 does not allow publishing draft note3825 when PublishService errors3826 returns message and 500 response3827 when publishing drafts in a thread3828 resolves a thread if the draft note resolves it3829 unresolves a thread if the draft note unresolves it3830 publish with note3831 creates note3832 does not create note when note param is empty3833 tracks merge request activity3834 reviewer state3835 updates reviewers state3836 approves merge request3837 approve merge request3838 approves merge request3839 does not approve merge request3840 tracks merge request activity3841 when merge request is already approved by user3842 does return 2003843 DELETE #destroy3844 destroys the draft note when ID is given3845 without permissions3846 does not allow destroying a draft note belonging to someone else3847 without permissions3848 does not allow editing draft note belonging to someone else3849 DELETE #discard3850 deletes all DraftNotes belonging to a user in a Merge Request3851 without permissions3852 does not destroys a draft note belonging to someone else3853Admin::AbuseReportsController3854 DELETE #destroy3855 destroys the report3856 when passing the `remove_user` parameter3857 calls the `remove_user` method3858 GET #show3859 returns the requested report3860 PUT #update3861 invokes the Admin::AbuseReports::UpdateService3862 when the service response is a success3863 returns with a success status3864 when the service response is an error3865 returns the service response message with a failed status3866 GET #index3867 returns open reports by default3868 returns reports by specified status3869 labels does not introduce N+1 queries3870 PUT #moderate_user3871 invokes the Admin::AbuseReports::ModerateUserService3872 when the service response is a success3873 returns the service response message with a success status3874 when the service response is an error3875 returns the service response message with a failed status3876Dashboard::ProjectsController3877 #index3878 user logged in3879 orders the projects by name by default3880 assigns the correct all_user_projects3881 assigns the correct all_starred_projects3882 external authorization3883 works when the external authorization service is enabled3884 project sorting3885 behaves like set sort order from user preference3886 #set_sort_order_from_user_preference3887 when database is in read-only mode3888 does not update user preference3889 when database is not in read-only mode3890 updates user preference3891 with search and sort parameters3892 behaves like search and sort parameters3893 returns a single project with no ambiguous column errors3894 behaves like search and sort parameters3895 returns a single project with no ambiguous column errors3896 behaves like search and sort parameters3897 returns a single project with no ambiguous column errors3898 behaves like search and sort parameters3899 returns a single project with no ambiguous column errors3900 behaves like search and sort parameters3901 returns a single project with no ambiguous column errors3902 with archived project3903 does not display archived project3904 excludes archived project from all_user_projects3905 excludes archived project from all_starred_projects3906 with deleted project3907 does not display deleted project3908 json requests3909 GET /projects.json3910 is expected to respond with 2003911 GET /starred.json3912 returns success3913 does not include projects aimed for deletion3914 pagination3915 paginates the records3916 atom requests3917 #index3918 project pagination3919 does not paginate projects, even if normally restricted by pagination3920 rendering3921 renders all kinds of event without error3922 with deleted project3923 does not display deleted project3924Query.project(fullPath).pipelines3925 sha3926 returns all formats of the SHA3927 duration fields3928 includes the duration fields3929 .stages3930 is present if the user has guest access3931 is present if the user has reporter access3932 .groups3933 is present if the user has guest access3934 is present if the user has reporter access3935 .job3936 fetches the latest job with the given name3937 .jobs3938 limits the results3939 fetches all results3940 fetches the jobs without an N+13941 .job_artifacts3942 returns the job_artifacts of a pipeline3943 avoids N+1 queries3944 behaves like a working graphql query3945 returns a successful response3946 warningMessages3947 returns pipeline warnings3948 avoids N+1 queries3949 .jobs(securityReportTypes)3950 fetches the jobs matching the report type filter3951 upstream3952 returns the upstream pipeline of a pipeline3953 behaves like a working graphql query3954 returns a successful response3955 when fetching the upstream pipeline from the pipeline3956 avoids N+1 queries3957 downstream3958 returns the downstream pipelines of a pipeline3959 behaves like a working graphql query3960 returns a successful response3961 when fetching the downstream pipelines from the pipeline3962 avoids N+1 queries3963 ref_path3964 avoids N+1 queries3965 filtering3966 when filtered by updated_at3967 accepts filter params3968 behaves like a working graphql query3969 returns a successful response3970Projects::RawController3971 GET #show3972 regular filename3973 delivers ASCII file3974 makes a limited number of Gitaly request3975 behaves like project cache control headers3976 when project is public3977 returns cache_control public header to true3978 when project is private3979 returns cache_control public header to true3980 when project is internal3981 returns cache_control public header to true3982 behaves like content disposition headers3983 sets content disposition to inline3984 when inline param is false3985 sets content disposition to attachment3986 image header3987 leaves image content disposition3988 makes a limited number of Gitaly request3989 behaves like project cache control headers3990 when project is public3991 returns cache_control public header to true3992 when project is private3993 returns cache_control public header to true3994 when project is internal3995 returns cache_control public header to true3996 behaves like content disposition headers3997 sets content disposition to inline3998 when inline param is false3999 sets content disposition to attachment4000 with LFS files4001 makes a limited number of Gitaly request4002 behaves like a controller that can serve LFS files4003 when lfs is enabled4004 when the project is linked to the LfsObject4005 serves the file4006 and lfs uses object storage4007 responds with redirect to file4008 sets content disposition4009 when project is not linked to the LfsObject4010 does not serve the file4011 when the project is part of a fork network4012 when the project is the root of the fork network4013 behaves like a controller that correctly serves lfs files within a fork network4014 is expected not to eq #<Project id:1027 namespace756/project-1028>>4015 does not serve the file if no members are linked to the LfsObject4016 serves the file when the fork network root is linked to the LfsObject4017 serves the file when the fork network member is linked to the LfsObject4018 when the project is a downstream member of the fork network4019 behaves like a controller that correctly serves lfs files within a fork network4020 is expected not to eq #<Project id:1032 namespace761/project-1033>>4021 does not serve the file if no members are linked to the LfsObject4022 serves the file when the fork network root is linked to the LfsObject4023 serves the file when the fork network member is linked to the LfsObject4024 when lfs is not enabled4025 delivers ASCII file4026 behaves like project cache control headers4027 when project is public4028 returns cache_control public header to true4029 when project is private4030 returns cache_control public header to true4031 when project is internal4032 returns cache_control public header to true4033 when the endpoint receives requests above the limit4034 prevents from accessing the raw file4035 when receiving an external storage request4036 does not prevent from accessing the raw file4037 as a sessionless user4038 when no token is provided4039 redirects to sign in page4040 when a token param is present4041 when token is correct4042 calls the action normally4043 when user with expired password4044 redirects to sign in page4045 when password expiration is not applicable4046 when ldap user4047 calls the action normally4048 when token is incorrect4049 redirects to sign in page4050 when a token header is present4051 when token is correct4052 calls the action normally4053 when user with expired password4054 redirects to sign in page4055 when password expiration is not applicable4056 when ldap user4057 calls the action normally4058 when token is incorrect4059 redirects to sign in page4060 caching4061 sets appropriate caching headers4062 when a blob access by permalink4063 sets appropriate caching headers with longer max-age4064 when a public project has private repo4065 does not set public caching header4066 when If-None-Match header is set4067 returns a 304 status4068API::IssueLinks4069 GET /links4070 when unauthenticated4071 returns 4014072 when authenticated4073 returns related issues4074 returns multiple links without N + 14075 POST /links4076 when unauthenticated4077 returns 4014078 when authenticated4079 given target project not found4080 returns 4044081 given target issue not found4082 returns 4044083 when user does not have write access to given issue4084 returns 4034085 when trying to relate to a confidential issue4086 returns 4044087 when trying to relate to a private project issue4088 returns 4044089 when user has ability to create an issue link4090 returns 201 status and contains the expected link response4091 returns 201 when sending full path of target project4092 GET /links/:issue_link_id4093 when unauthenticated4094 when accessing an issue of a private project4095 returns 4014096 when accessing an issue of a public project4097 returns 4014098 when authenticated4099 when issue link does not exist4100 returns 4044101 when issue link does not belong to the specified issue4102 returns 4044103 when user has ability to read the issue link4104 returns 2004105 when user cannot read issue link4106 when the issue link targets an issue in a non-accessible project4107 returns 4044108 when issue link targets a non-accessible issue4109 returns 4044110 DELETE /links/:issue_link_id4111 when unauthenticated4112 returns 4014113 when authenticated4114 when user does not have write access to given issue link4115 returns 4044116 issue link not found4117 returns 4044118 when trying to delete a link with a private project issue4119 returns 4044120 when user has ability to delete the issue link4121 returns 2004122 returns 404 when the issue link does not belong to the specified issue4123Updating a Note4124 when the user does not have permission4125 does not update the Note4126 behaves like a mutation that returns a top-level access error4127 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"4128 when the user has permission4129 behaves like a Note mutation when the given resource id is not for a Note4130 behaves like a mutation that returns top-level errors4131 is expected to include /does not represent an instance of Note/4132 behaves like a Note mutation updates a note successfully4133 updates the Note4134 returns the updated Note4135 behaves like a Note mutation update with errors4136 when there are ActiveRecord validation errors4137 does not update the Note4138 returns the original Note4139 behaves like a mutation that returns errors in the response4140 is expected to contain exactly "Note can't be blank" and "Confidential can not be changed for existing notes"4141 behaves like a Note mutation update only with quick actions4142 when body only contains quick actions4143 returns a nil note and empty errors4144 for work item4145 behaves like a Note mutation updates a note successfully4146 updates the Note4147 returns the updated Note4148 behaves like a Note mutation update with errors4149 when there are ActiveRecord validation errors4150 does not update the Note4151 returns the original Note4152 behaves like a mutation that returns errors in the response4153 is expected to contain exactly "Note can't be blank" and "Confidential can not be changed for existing notes"4154 behaves like a Note mutation update only with quick actions4155 when body only contains quick actions4156 returns a nil note and empty errors4157 without notes widget4158 does not update the Note4159 behaves like a mutation that returns top-level errors4160 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"4161Oauth::ApplicationsController4162 project members4163 GET #new4164 is expected to respond with numeric status code ok4165 behaves like redirects to login page when the user is not signed in4166 is expected to redirect to "/users/sign_in"4167 behaves like redirects to 2fa setup page when the user requires it4168 when 2fa is set up on application level4169 is expected to redirect to "/-/profile/two_factor_auth"4170 when 2fa is set up on group level4171 is expected to redirect to "/-/profile/two_factor_auth"4172 DELETE #destroy4173 is expected to redirect to "http://test.host/oauth/applications"4174 behaves like redirects to login page when the user is not signed in4175 is expected to redirect to "/users/sign_in"4176 behaves like redirects to 2fa setup page when the user requires it4177 when 2fa is set up on application level4178 is expected to redirect to "/-/profile/two_factor_auth"4179 when 2fa is set up on group level4180 is expected to redirect to "/-/profile/two_factor_auth"4181 GET #edit4182 is expected to respond with numeric status code ok4183 behaves like redirects to login page when the user is not signed in4184 is expected to redirect to "/users/sign_in"4185 behaves like redirects to 2fa setup page when the user requires it4186 when 2fa is set up on application level4187 is expected to redirect to "/-/profile/two_factor_auth"4188 when 2fa is set up on group level4189 is expected to redirect to "/-/profile/two_factor_auth"4190 PUT #update4191 is expected to redirect to "http://test.host/oauth/applications/9"4192 behaves like redirects to login page when the user is not signed in4193 is expected to redirect to "/users/sign_in"4194 behaves like redirects to 2fa setup page when the user requires it4195 when 2fa is set up on application level4196 is expected to redirect to "/-/profile/two_factor_auth"4197 when 2fa is set up on group level4198 is expected to redirect to "/-/profile/two_factor_auth"4199 PUT #renew4200 is expected to respond with numeric status code ok4201 is expected to change `application.reload.secret`4202 returns the prefixed secret in json format4203 behaves like redirects to login page when the user is not signed in4204 is expected to redirect to "/users/sign_in"4205 behaves like redirects to 2fa setup page when the user requires it4206 when 2fa is set up on application level4207 is expected to redirect to "/-/profile/two_factor_auth"4208 when 2fa is set up on group level4209 is expected to redirect to "/-/profile/two_factor_auth"4210 when renew fails4211 is expected not to change `application.reload.secret`4212 is expected to respond with numeric status code unprocessable_entity4213 GET #show4214 is expected to respond with numeric status code ok4215 behaves like redirects to login page when the user is not signed in4216 is expected to redirect to "/users/sign_in"4217 behaves like redirects to 2fa setup page when the user requires it4218 when 2fa is set up on application level4219 is expected to redirect to "/-/profile/two_factor_auth"4220 when 2fa is set up on group level4221 is expected to redirect to "/-/profile/two_factor_auth"4222 GET #index4223 is expected to respond with numeric status code ok4224 when OAuth applications are disabled4225 is expected to respond with numeric status code ok4226 behaves like redirects to login page when the user is not signed in4227 is expected to redirect to "/users/sign_in"4228 behaves like redirects to 2fa setup page when the user requires it4229 when 2fa is set up on application level4230 is expected to redirect to "/-/profile/two_factor_auth"4231 when 2fa is set up on group level4232 is expected to redirect to "/-/profile/two_factor_auth"4233 POST #create4234 creates an application4235 redirects back to profile page if OAuth applications are disabled4236 the secret4237 is in the response4238 when redirect_uri is invalid4239 shows an error for a forbidden URI4240 when scopes are not present4241 shows an error for blank scopes4242 when scopes are invalid4243 shows an error for invalid scopes4244 behaves like redirects to login page when the user is not signed in4245 is expected to redirect to "/users/sign_in"4246 behaves like redirects to 2fa setup page when the user requires it4247 when 2fa is set up on application level4248 is expected to redirect to "/-/profile/two_factor_auth"4249 when 2fa is set up on group level4250 is expected to redirect to "/-/profile/two_factor_auth"4251 Helpers4252 current_user_mode available4253 includes Two-factor enforcement concern4254 locale4255 sets user's locale4256Groups::RunnersController4257 #edit4258 when user is owner4259 renders 200 for group runner4260 renders 404 for non-existing runner4261 renders 404 for instance runner4262 renders 200 for project runner4263 when user is maintainer4264 renders 404 for group runner4265 renders 404 for instance runner4266 renders 200 for project runner4267 when user is not maintainer4268 renders 404 for group runner4269 renders 404 for instance runner4270 renders 404 for project runner4271 #show4272 when user is maintainer4273 renders show with 200 status code4274 renders show with 200 status code instance runner4275 renders show with 200 status code project runner4276 when user is not maintainer4277 renders a 4044278 renders a 404 instance runner4279 renders a 404 project runner4280 #register4281 when user is owner4282 when runner can be registered after creation4283 renders a :register template4284 when runner cannot be registered after creation4285 returns :not_found4286 when user is not owner4287 when runner can be registered after creation4288 returns :not_found4289 #index4290 when the user is a maintainer4291 renders index with 200 status code4292 tracks the event4293 does not expose runner creation and registration variables4294 when the user is an owner4295 renders index with 200 status code4296 tracks the event4297 exposes runner creation and registration variables4298 when user is not maintainer4299 renders 4044300 does not track the event4301 #update4302 when user is owner4303 with group runner4304 behaves like updates the runner4305 updates the runner, ticks the queue, and redirects4306 with instance runner4307 behaves like rejects the update4308 does not update the runner4309 with project runner4310 behaves like updates the runner4311 updates the runner, ticks the queue, and redirects4312 when user is maintainer4313 with group runner4314 behaves like rejects the update4315 does not update the runner4316 with instance runner4317 behaves like rejects the update4318 does not update the runner4319 with project runner4320 behaves like updates the runner4321 updates the runner, ticks the queue, and redirects4322 when user is not maintainer4323 with group runner4324 behaves like rejects the update4325 does not update the runner4326 with instance runner4327 behaves like rejects the update4328 does not update the runner4329 with project runner4330 behaves like rejects the update4331 does not update the runner4332 #new4333 when user is owner4334 renders new with 200 status code4335 when user is not owner4336 renders a 4044337API::GroupImport4338 POST /groups/import4339 with object storage disabled4340 without a file from workhorse4341 rejects the request4342 without a workhorse header4343 rejects request without a workhorse header4344 when params from workhorse are correct4345 when user is authorized to create new group4346 creates new group and accepts request4347 creates private group4348 when importing to a parent group4349 creates new group and accepts request4350 when parent group is private or internal4351 imports public group4352 imports internal group4353 when parent group is invalid4354 returns 404 and does not create new group4355 when user is not an owner of parent group4356 returns 403 Forbidden HTTP status4357 when group creation failed4358 returns 400 HTTP status4359 when user is not authorized to create new group4360 forbids the request4361 when required params are missing4362 returns 400 HTTP status4363 returns 400 HTTP status4364 with object storage enabled4365 with direct upload enabled4366 accepts the request and stores the file4367 when user is authorized to create new group4368 creates new group and accepts request4369 creates private group4370 when importing to a parent group4371 creates new group and accepts request4372 when parent group is private or internal4373 imports public group4374 imports internal group4375 when parent group is invalid4376 returns 404 and does not create new group4377 when user is not an owner of parent group4378 returns 403 Forbidden HTTP status4379 when group creation failed4380 returns 400 HTTP status4381 when user is not authorized to create new group4382 forbids the request4383 when required params are missing4384 returns 400 HTTP status4385 returns 400 HTTP status4386 POST /groups/import/authorize4387 authorizes importing group with workhorse header4388 rejects requests that bypassed gitlab-workhorse4389 when using remote storage4390 when direct upload is enabled4391 responds with status 200, location of file remote store and object details4392 when direct upload is disabled4393 handles as a local file4394JwtController4395 POST /jwt/auth4396 returns 4044397 authenticating against container registry4398 existing service4399 is expected to respond with numeric status code ok4400 returning custom http code4401 is expected to respond with numeric status code http_version_not_supported4402 when using authenticated request4403 using CI token4404 project with enabled CI4405 is expected to have received new(#<Project id:1073 namespace803/project-1074>>, #<User id:1620 @user730>, #<ActionController::Parameters {"service"=>"container_registry", "auth_type"=>:build} permitted: true>) 1 time4406 behaves like user logging4407 logs username and ID4408 project with disabled CI4409 is expected to respond with numeric status code unauthorized4410 using deploy tokens4411 authenticates correctly4412 does not log a user4413 using personal access tokens4414 authenticates correctly4415 behaves like rejecting a blocked user4416 with blocked user4417 behaves like with invalid credentials4418 returns a generic error message4419 behaves like user logging4420 logs username and ID4421 behaves like a token that expires today4422 fails authentication4423 using User login4424 is expected to have received new(nil, #<User id:1634 @user739>, #<ActionController::Parameters {"service"=>"container_registry", "auth_type"=>:gitlab_or_ldap} permitted: true>) 1 time4425 does not cause session based checks to be activated4426 behaves like rejecting a blocked user4427 with blocked user4428 behaves like with invalid credentials4429 returns a generic error message4430 when passing a flat array of scopes4431 is expected to have received new(nil, #<User id:1637 @user742>, #<ActionController::Parameters {"service"=>"container_registry", "scopes"=>["scope1", "scope2"], "auth_type"=>:gitlab_or_ldap} permitted: true>) 1 time4432 behaves like user logging4433 logs username and ID4434 when passing a space-delimited list of scopes4435 is expected to have received new(nil, #<User id:1639 @user744>, #<ActionController::Parameters {"service"=>"container_registry", "scopes"=>["scope1", "scope2"], "auth_type"=>:gitlab_or_ldap} permitted: true>) 1 time4436 when user has 2FA enabled4437 without personal token4438 behaves like with invalid credentials4439 returns a generic error message4440 with personal token4441 accepts the authorization attempt4442 using invalid login4443 when internal auth is enabled4444 behaves like with invalid credentials4445 returns a generic error message4446 when internal auth is disabled4447 behaves like with invalid credentials4448 returns a generic error message4449 when using unauthenticated request4450 accepts the authorization attempt4451 allows read access4452 unknown service4453 is expected to respond with numeric status code not_found4454 authenticating against dependency proxy4455 with personal access token4456 behaves like with valid credentials4457 returns token successfully4458 behaves like a token that expires today4459 fails authentication4460 with user credentials token4461 behaves like with valid credentials4462 returns token successfully4463 with group deploy token4464 behaves like with valid credentials4465 returns token successfully4466 with project deploy token4467 behaves like returning response status4468 returns forbidden4469 with revoked group deploy token4470 behaves like returning response status4471 returns unauthorized4472 with group deploy token with insufficient scopes4473 behaves like returning response status4474 returns unauthorized4475 with invalid credentials4476 behaves like returning response status4477 returns unauthorized4478BulkDestroy4479 fails to destroy the artifact if a user not in a project4480 when the user is a developer in a project4481 fails to destroy the artifact4482 when the user is a maintainer in a project4483 destroys the artifact4484 and one artifact doesn't belong to the project4485 behaves like failing mutation4486 rejects the request4487 and multiple artifacts belong to the maintainer's project4488 destroys all artifacts4489 and one artifact belongs to a different maintainer's project4490 behaves like failing mutation4491 rejects the request4492 and not found4493 with one artifact4494 behaves like failing mutation4495 rejects the request4496 with all artifact4497 behaves like failing mutation4498 rejects the request4499 when empty request4500 with nil value4501 does nothing and returns empty answer4502 with empty array4503 raises argument error4504Creating the packages protection rule4505 with existing packages protection rule4506 returns an error4507 behaves like an erroneous response4508 does not create one package protection rule4509 when field `package_name_pattern` is different than existing one4510 behaves like a successful response4511 returns without error4512 returns the created packages protection rule4513 creates one package protection rule4514 when field `push_protected_up_to_access_level` is different than existing one4515 returns an error4516 behaves like an erroneous response4517 does not create one package protection rule4518 when feature flag ':packages_protected_packages' disabled4519 returns error of disabled feature flag4520 behaves like an erroneous response4521 does not create one package protection rule4522 when user does not have permission4523 user: developer4524 returns an error4525 behaves like an erroneous response4526 does not create one package protection rule4527 user: reporter4528 returns an error4529 behaves like an erroneous response4530 does not create one package protection rule4531 user: guest4532 returns an error4533 behaves like an erroneous response4534 does not create one package protection rule4535 user: anonymous4536 returns an error4537 behaves like an erroneous response4538 does not create one package protection rule4539 behaves like a successful response4540 returns without error4541 returns the created packages protection rule4542 creates one package protection rule4543 with invalid kwargs leading to error from graphql4544 returns error about required argument4545 behaves like an erroneous response4546 does not create one package protection rule4547 with invalid kwargs leading to error from business model4548 returns an error4549 behaves like an erroneous response4550 does not create one package protection rule4551API::Admin::BatchedBackgroundMigrations4552 GET /admin/batched_background_migrations/:id4553 fetches the batched background migration4554 behaves like GET request permissions for admin mode4555 behaves like when admin4556 behaves like makes request4557 returns4558 behaves like makes request4559 returns4560 behaves like when user4561 returns4562 behaves like makes request4563 returns4564 when the batched background migration does not exist4565 returns 4044566 when multiple database is enabled4567 uses the correct connection4568 when migration has completed jobs4569 calculates the progress using the CI database4570 when the database name does not exist4571 returns bad request4572 GET /admin/batched_background_migrations4573 behaves like GET request permissions for admin mode4574 behaves like when admin4575 behaves like makes request4576 returns4577 behaves like makes request4578 returns4579 behaves like when user4580 returns4581 behaves like makes request4582 returns4583 when is an admin user4584 returns batched background migrations4585 when multiple database is enabled4586 when CI database is provided4587 uses CI database connection4588 returns CI database records4589 when the database name does not exist4590 returns bad request4591 PUT /admin/batched_background_migrations/:id/resume4592 pauses the batched background migration4593 behaves like PUT request permissions for admin mode4594 behaves like when admin4595 behaves like makes request4596 returns4597 behaves like makes request4598 returns4599 behaves like when user4600 returns4601 behaves like makes request4602 returns4603 when the batched background migration does not exist4604 returns 4044605 when the migration is not paused4606 returns 4224607 when multiple database is enabled4608 uses the correct connection4609 when the database name does not exist4610 returns bad request4611 PUT /admin/batched_background_migrations/:id/pause4612 pauses the batched background migration4613 behaves like PUT request permissions for admin mode4614 behaves like when admin4615 behaves like makes request4616 returns4617 behaves like makes request4618 returns4619 behaves like when user4620 returns4621 behaves like makes request4622 returns4623 when the batched background migration does not exist4624 returns 4044625 when the migration is not active4626 returns 4224627 when multiple database is enabled4628 uses the correct connection4629 when the database name does not exist4630 returns bad request4631Admin::Clusters::IntegrationsController4632 POST create_or_update4633 behaves like #create_or_update action4634 authorization4635 behaves like a secure endpoint4636 it is allowed for admins only4637 is expected to be allowed for admin. Expected: 200,201,204,302 Got: 3024638 is expected to be denied for user. Expected: 401,404 Got: 4044639 is expected to be denied for external. Expected: 401,404 Got: 4044640 functionality4641 redirects on success4642 redirects on error4643HelpController4644 GET #index4645 with absolute url4646 keeps the URL absolute4647 with relative url4648 prefixes it with /help/4649 when url is an external link4650 does not change it4651 when relative url with external on same line4652 prefix it with /help/4653 when relative url with http:// in query4654 prefix it with /help/4655 when mailto URL4656 do not change it4657 when protocol-relative link4658 do not change it4659 restricted visibility set to public4660 redirects to sign_in path4661 when two factor is required4662 does not redirect to two factor auth4663 GET #drawers4664 when requested file exists4665 assigns variables4666 renders HTML4667 when requested file is missing4668 renders not found4669 GET #show4670 for Markdown formats4671 when requested file exists4672 assigns to @markdown4673 behaves like documentation pages local render4674 renders HTML4675 when two factor is required4676 does not redirect to two factor auth4677 when a custom help_page_documentation_url is set in database4678 behaves like documentation pages redirect4679 redirects user to custom documentation url with a specified version4680 when it is a pre-release4681 redirects user to custom documentation url without a version4682 when a custom help_page_documentation_url is set in configuration file4683 behaves like documentation pages redirect4684 redirects user to custom documentation url with a specified version4685 when it is a pre-release4686 redirects user to custom documentation url without a version4687 when gitlab_docs is disabled4688 behaves like documentation pages redirect4689 redirects user to custom documentation url with a specified version4690 when it is a pre-release4691 redirects user to custom documentation url without a version4692 when host is missing4693 behaves like documentation pages redirect4694 redirects user to custom documentation url with a specified version4695 when it is a pre-release4696 redirects user to custom documentation url without a version4697 when help_page_documentation_url is set in both db and configuration file4698 behaves like documentation pages redirect4699 redirects user to custom documentation url with a specified version4700 when it is a pre-release4701 redirects user to custom documentation url without a version4702 when help_page_documentation_url has a trailing slash4703 behaves like documentation pages redirect4704 redirects user to custom documentation url with a specified version4705 when it is a pre-release4706 redirects user to custom documentation url without a version4707 when requested file is missing4708 renders not found4709 for image formats4710 when requested file exists4711 renders the raw file4712 when requested file is missing4713 renders not found4714 for other formats4715 always renders not found4716Groups::VariablesController4717 GET #show4718 renders the variables as json4719 has only one variable4720 when the user is a maintainer4721 returns not found response4722 PATCH #update4723 with invalid new variable parameters4724 does not update the existing variable4725 does not create the new variable4726 returns a bad request response4727 with duplicate new variable parameters4728 does not update the existing variable4729 does not create the new variable4730 returns a bad request response4731 with valid new variable parameters4732 updates the existing variable4733 creates the new variable4734 returns a successful response4735 has all variables in response4736 with a deleted variable4737 destroys the variable4738 returns a successful response4739 has all variables in response4740 with missing variable4741 returns not found response4742 for variables of type file4743 creates new variable of type file4744 when the user is a maintainer4745 returns not found response4746 with external authorization enabled4747 GET #show4748 is successful4749 PATCH #update4750 is successful4751Updating the packages protection rule4752 behaves like a successful response4753 is expected to eq []4754 returns the updated package protection rule4755 is expected to have attributes {:package_name_pattern => "@my_scope/my_package-updated", :push_protected_up_to_access_level => "maintainer"}4756 when feature flag ':packages_protected_packages' disabled4757 returns error of disabled feature flag4758 behaves like an erroneous reponse4759 is expected to be blank4760 is expected not to change `package_protection_rule.reload.updated_at`4761 when current_user does not have permission4762 current_user: developer4763 is expected to include (a string matching /you don't have permission to perform this action/)4764 current_user: reporter4765 is expected to include (a string matching /you don't have permission to perform this action/)4766 current_user: guest4767 is expected to include (a string matching /you don't have permission to perform this action/)4768 current_user: anonymous4769 is expected to include (a string matching /you don't have permission to perform this action/)4770 with invalid input param `pushProtectedUpToAccessLevel`4771 is expected to include (a string matching /pushProtectedUpToAccessLevel can't be blank/)4772 behaves like an erroneous reponse4773 is expected to be blank4774 is expected not to change `package_protection_rule.reload.updated_at`4775 with invalid input param `packageNamePattern`4776 is expected to include (a string matching /packageNamePattern can't be blank/)4777 behaves like an erroneous reponse4778 is expected to be blank4779 is expected not to change `package_protection_rule.reload.updated_at`4780 with other existing package protection rule with same package_name_pattern4781 is expected to eq []4782 returns a blank package protection rule4783 includes error message in response4784Import::FogbugzController4785 POST #callback4786 attempts to contact Fogbugz server4787 preserves namespace_id query param on success4788 redirects to new page maintaining namespace_id when client raises standard error4789 redirects to new page form when client raises authentication exception4790 verify url4791 when host is localhost4792 does not allow requests4793 when host is on local network4794 does not allow requests4795 when host is ftp protocol4796 does not allow requests4797 POST #create_user_map4798 stores the user map in the session4799 preserves namespace_id query param4800 GET status4801 redirects to new page form when client is invalid4802 behaves like import controller status4803 returns variables for json request4804 when format is html4805 when namespace_id is present4806 when user cannot import projects4807 returns 4044808 when user can import projects4809 returns 2004810 POST create4811 returns the new project4812 returns an error when service reports an error4813 behaves like project import rate limiter4814 when limit exceeds4815 notifies and redirects user4816Query.group.mergeRequests4817 not passing any arguments4818 can find all merge requests in the group, excluding sub-groups4819 restricting by author4820 can find all merge requests with user as author4821 restricting by assignee4822 can find all merge requests assigned to user4823 passing include_subgroups: true4824 can find all merge requests in the group, including sub-groups4825 passing include_archived: true4826 can find all merge requests in the group, including from archived projects4827GroupTree4828 GET #index4829 behaves like returns filtered groups4830 filters groups4831 for subgroups4832 only renders root groups when no parent was given4833 contains only the subgroup when a parent was given4834 allows filtering for subgroups and includes the parents for rendering4835 does not include groups the user does not have access to4836 preloads parents regardless of pagination4837 json content4838 shows groups as json4839 nested groups4840 expands the tree when filtering4841Projects::Registry::TagsController4842 GET index4843 when user can control the registry4844 receive a list of tags4845 tracks the event4846 when user can read the registry4847 receive a list of tags4848 when user does not have access to registry4849 does not receive a list of tags4850 POST destroy4851 when user has access to registry4852 when there is matching tag present4853 makes it possible to delete regular tag4854 makes it possible to delete a tag that ends with a dot4855 tracks the event4856 POST bulk_destroy4857 when user has access to registry4858 when there is matching tag present4859 makes it possible to delete tags in bulk4860 tracks the event4861Setting milestone of a merge request4862 returns an error if the user is not allowed to update the merge request4863 sets the merge request milestone4864 when passing milestone_id nil as input4865 removes the merge request milestone4866 when passing an invalid milestone_id4867 does not set the milestone4868API::VsCode::Settings::VsCodeSettingsSync4869 GET /vscode/settings_sync/v1/resource/machines/latest4870 returns a list of machines4871 behaves like returns unauthorized when not authenticated4872 returns 401 for non-authenticated4873 behaves like returns 20x when authenticated4874 returns ok when authenticated4875 DELETE /vscode/settings_sync/v1/collection4876 returns unauthorized when not authenticated4877 when user has one or more setting resources4878 deletes all user setting resources4879 POST /vscode/settings_sync/v1/resource/:resource_name4880 returns unauthorized when not authenticated4881 returns 201 when a valid request is sent4882 creates a new record for the setting when the setting is not present4883 updates a record if the setting is already present4884 fails if required fields not passed4885 GET /vscode/settings_sync/v1/manifest4886 behaves like returns unauthorized when not authenticated4887 returns 401 for non-authenticated4888 behaves like returns 20x when authenticated4889 returns ok when authenticated4890 when no settings record is present4891 returns a session id4892 returns no latest keys4893 includes default machine id4894 when settings record is present4895 returns the latest keys4896 GET /vscode/settings_sync/v1/resource/:resource_name/:id4897 behaves like returns 20x when authenticated4898 returns no_content when authenticated4899 behaves like returns unauthorized when not authenticated4900 returns 401 for non-authenticated4901 when resource type is invalid4902 behaves like returns 4004903 returns 4004904 when settings with that type are not present4905 returns 204 no content and no content ETag header4906 when settings with that type are present4907 returns settings with the correct json content4908 GET /vscode/settings_sync/v1/resource/:resource_name/4909 when resource type is invalid4910 behaves like returns 4004911 returns 4004912 behaves like returns unauthorized when not authenticated4913 returns 401 for non-authenticated4914 behaves like returns 20x when authenticated4915 returns ok when authenticated4916 when settings with that type are not present4917 returns empty array response4918 when settings with that type are present4919 returns settings with the correct json content4920 when setting type is machine4921 created field is nil4922Starting a Jira Import4923 when the user does not have permission4924 with anonymous user4925 behaves like Jira import does not start4926 does not start the Jira import4927 behaves like a mutation that returns top-level errors4928 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"4929 with user without permissions4930 behaves like Jira import does not start4931 does not start the Jira import4932 behaves like a mutation that returns top-level errors4933 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"4934 when the user has permission4935 with project4936 when the project path is invalid4937 returns an an error4938 when project has no Jira integration4939 behaves like a mutation that returns errors in the response4940 is expected to contain exactly "Jira integration not configured."4941 when when project has Jira integration4942 when issues feature are disabled4943 behaves like a mutation that returns errors in the response4944 is expected to contain exactly "Cannot import because issues are not available in this project."4945 when jira_project_key not provided4946 behaves like a mutation that returns errors in the response4947 is expected to contain exactly "Unable to find Jira project to import data from."4948 when Jira import successfully scheduled4949 schedules a Jira import4950Destroying a package file4951 post graphql mutation4952 with valid id4953 user_role: :maintainer, shared_examples_name: "destroying the package file"4954 behaves like destroying the package file4955 marks the package file as pending destruction4956 behaves like returning response status4957 returns success4958 user_role: :developer, shared_examples_name: "denying the mutation request"4959 behaves like denying the mutation request4960 does not mark the package file as pending destruction4961 behaves like returning response status4962 returns success4963 user_role: :reporter, shared_examples_name: "denying the mutation request"4964 behaves like denying the mutation request4965 does not mark the package file as pending destruction4966 behaves like returning response status4967 returns success4968 user_role: :guest, shared_examples_name: "denying the mutation request"4969 behaves like denying the mutation request4970 does not mark the package file as pending destruction4971 behaves like returning response status4972 returns success4973 user_role: :anonymous, shared_examples_name: "denying the mutation request"4974 behaves like denying the mutation request4975 does not mark the package file as pending destruction4976 behaves like returning response status4977 returns success4978 with invalid id4979 behaves like denying the mutation request4980 does not mark the package file as pending destruction4981 behaves like returning response status4982 returns success4983 when an error occurs4984 returns the errors in the response4985query Jira import data4986 when user cannot read Jira import data4987 when anonymous user4988 is expected to be nil4989 when user developer4990 is expected to be nil4991 when user can access Jira import data4992 behaves like a working graphql query4993 returns a successful response4994 list of jira imports sorted ascending by scheduledAt time4995 retuns list of jira imports4996 jira imports pagination4997 first jira import4998 returns latest jira import data4999 lastest jira import5000 returns latest jira import data5001 jira import status5002 when user cannot access project5003 does not return import status5004 when user can access project5005 when import never ran5006 returns import status5007 when import finished5008 returns import status5009 when import running5010 returns import status5011API::Templates5012 the Template Entity5013 is expected to eq "Ruby"5014 is expected to include "*.gem"5015 the TemplateList Entity5016 is expected not to be nil5017 is expected to be nil5018 requesting gitignores5019 returns a list of available gitignore templates5020 requesting gitlab-ci-ymls5021 returns a list of available gitlab_ci_ymls5022 requesting gitlab-ci-yml for Ruby5023 adds a disclaimer on the top5024 the License Template Entity5025 returns a license template5026 GET templates/licenses5027 returns a list of available license templates5028 the popular parameter5029 with popular=15030 returns a list of available popular license templates5031 GET templates/licenses/:name5032 with :project and :fullname given5033 for the mit license5034 returns the license text5035 replaces placeholder values5036 for the agpl-3.0 license5037 returns the license text5038 replaces placeholder values5039 for the gpl-3.0 license5040 returns the license text5041 replaces placeholder values5042 for the gpl-2.0 license5043 returns the license text5044 replaces placeholder values5045 for the apache-2.0 license5046 returns the license text5047 replaces placeholder values5048 for an uknown license5049 returns a 4045050 with no :fullname given5051 with an authenticated user5052 replaces the copyright owner placeholder with the name of the current user5053Projects::FindFileController5054 GET #show5055 valid branch5056 is expected to respond with 2005057 invalid branch5058 is expected to respond with 4045059 GET #list5060 valid branch5061 returns an array of file path list5062 invalid branch5063 responds with status 4045064ConfirmationsController5065 #show5066 user is already confirmed5067 renders `new`5068 displays an error message5069 does not display the email of the user5070 sets the username and caller_id in the context5071 user accesses the link after the expiry of confirmation token has passed5072 renders `new`5073 displays an error message5074 does not display the email of the user5075 sets the username and caller_id in the context5076 with an invalid confirmation token5077 renders `new`5078 displays an error message5079 sets the the caller_id in the context5080 #create5081 when `email_confirmation_setting` is set to `soft`5082 when reCAPTCHA is disabled5083 successfully sends password reset when reCAPTCHA is not solved5084 when reCAPTCHA is enabled5085 successfully sends password reset when reCAPTCHA is solved5086 when the reCAPTCHA is not solved5087 displays an error5088 sets gon variables5089 when `email_confirmation_setting` is not set to `soft`5090 redirects to the users_almost_there path5091Admin::UsersController5092 PATCH #update5093 when admin changes user email5094 allows change user email5095 does not email the user with confirmation_instructions5096 PUT #untrust5097 trusts the user5098 when untrusting fails5099 displays a flash alert5100 PUT #block5101 when request format is :json5102 when user was blocked5103 returns 200 and json data with notice5104 when user was not blocked5105 returns 200 and json data with error5106 PUT #unlock5107 unlocks the user5108 PUT #trust5109 trusts the user5110 when setting trust fails5111 displays a flash alert5112Query current user todos5113 contains the expected ids5114 returns Todos for all target types5115 behaves like a working graphql query that returns data5116 contains data5117 behaves like a working graphql query5118 returns a successful response5119merge request content spec5120 GET cached_widget5121 behaves like cached widget request5122 avoids N+1 queries when multiple job artifacts are present5123 with non_public_artifacts disabled5124 behaves like cached widget request5125 avoids N+1 queries when multiple job artifacts are present5126PreferredLanguageSwitcher5127 when preferred language in cookies has been modified5128 with a valid value5129 keeps preferred language unchanged5130 with an invalid value5131 sets preferred_language to default5132 when first visit5133 sets preferred_language to default5134 when language param is valid5135 sets preferred_language accordingly5136 when language param is invalid5137 sets preferred_language to default5138 when browser preferred language is not english5139 with selectable language5140 sets preferred_language accordingly5141 with unselectable language5142 sets preferred_language to default5143 with empty string in language header5144 sets preferred_language to default5145 with language header without dashes5146 sets preferred_language accordingly5147 when language params and language header are both valid5148 sets preferred_language according to language params5149Marking all todos done5150 marks all pending todos as done5151 behaves as expected if there are no todos for the requesting user5152 when target_id is given5153 marks all pending todos for the target as done5154 when target does not exist5155 returns an error5156 when user is not logged in5157 behaves like a mutation that returns a top-level access error5158 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"5159API::Metrics::UserStarredDashboards5160 POST /projects/:id/metrics/user_starred_dashboards5161 with correct permissions5162 with invalid parameters5163 user is missing5164 returns 404 not found5165 project is missing5166 returns 404 not found5167 without correct permissions5168 returns 404 not found5169 when metrics dashboard feature is unavailable5170 returns 404 not found5171 DELETE /projects/:id/metrics/user_starred_dashboards5172 with correct permissions5173 with invalid parameters5174 user is missing5175 returns 404 not found5176 project is missing5177 returns 404 not found5178 without correct permissions5179 returns 404 not found5180 when metrics dashboard feature is unavailable5181 returns 404 not found5182Mutations::Achievements::DeleteUserAchievement5183 when the user does not have permission5184 does not delete any user achievements5185 behaves like a mutation that returns a top-level access error5186 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"5187 when the user has permission5188 when the params are invalid5189 returns the validation error5190 when the user_achievement_id is invalid5191 returns the relevant error5192 when the feature flag is disabled5193 returns the relevant error5194 when everything is ok5195 deletes an user achievement5196 returns the deleted user achievement5197Emails::WorkItems5198 #export_work_items_csv_email5199 behaves like export csv email5200 attachment has csv mime type5201 generates a useful filename5202 mentions number of objects and project name5203 doesn't need to mention truncation by default5204 when truncated5205 mentions that the csv has been truncated5206 mentions the number of objects written and expected5207ProjectUnauthorized5208 .on_routable_not_found5209 renders a 200 when the service allows access to the project5210 renders a 403 when the service denies access to the project5211 renders a 404 when the user cannot see the project at all5212JiraConnect::SubscriptionsController5213 GET /-/jira_connect/subscriptions5214 is expected to include "http://self-managed-gitlab.com/-/jira_connect/"5215 is expected to include "http://self-managed-gitlab.com/api/"5216 is expected to include "http://self-managed-gitlab.com/oauth/"5217 is expected to include "frame-ancestors 'self' https://*.atlassian.net https://*.jira.com"5218 with additional iframe ancestors5219 is expected to include "frame-ancestors 'self' https://*.atlassian.net https://*.jira.com http://localhost:* http://dev.gitlab.com"5220 with no self-managed instance configured5221 is expected not to include "http://self-managed-gitlab.com/-/jira_connect/"5222 is expected not to include "http://self-managed-gitlab.com/api/"5223 is expected not to include "http://self-managed-gitlab.com/oauth/"5224 when json format5225 allows cross-origin requests5226 OPTIONS /-/jira_connect/subscriptions5227 allows cross-origin requests5228 OPTIONS /-/jira_connect/subscriptions/:id5229 allows cross-origin requests5230 DELETE /-/jira_connect/subscriptions/:id5231 allows cross-origin requests5232Restoring many Todos5233 restores many todos5234 when using an invalid gid5235 contains the expected error5236getting Alert Management Alert Notes5237 includes expected data5238 returns the notes ordered by createdAt with sufficient content5239 performance5240 avoids N+1 queries5241 for non-system notes5242 includes expected data5243PipelineScheduleDelete5244 when unauthorized5245 behaves like a mutation on an unauthorized resource5246 behaves like a mutation that returns top-level errors5247 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"5248 when authorized5249 when success5250 is expected to eq []5251 when failure5252 when destroy fails5253 is expected to contain exactly "Failed to remove the pipeline schedule"5254 when pipeline schedule not found5255 is expected to eq "Internal server error: Couldn't find Ci::PipelineSchedule with 'id'=0"5256Explore::GroupsController5257 behaves like explore groups5258 renders group trees5259 includes public projects5260 restricted visibility level is public5261 redirects to login page5262 gitlab.com5263 behaves like explore groups5264 renders group trees5265 includes public projects5266 restricted visibility level is public5267 redirects to login page5268Mutations::Achievements::Update5269 when the user does not have permission5270 does not update the achievement5271 behaves like a mutation that returns a top-level access error5272 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"5273 when the user has permission5274 when the params are invalid5275 returns the validation error5276 when the achievement_id is invalid5277 returns the validation error5278 when the feature flag is disabled5279 returns the relevant permission error5280 with a new avatar5281 updates the achievement5282Toggling the resolve status of a discussion5283 when the user does not have permission5284 behaves like a mutation that returns a top-level access error5285 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"5286 when user has permission5287 returns the discussion without errors5288 when an error is encountered5289 behaves like a mutation that returns errors in the response5290 is expected to contain exactly "Discussion failed to be resolved"5291Groups::Registry::RepositoriesController5292 GET groups/:group_id/-/container_registries.json5293 avoids N+1 queries5294getting Issue counts by status5295 with issue count data5296 without project permissions5297 is expected to equal nil5298 behaves like a working graphql query5299 returns a successful response5300 with project permissions5301 returns the correct counts for each status5302 behaves like a working graphql query5303 returns a successful response5304RepositoryCheckMailer5305 .notify5306 emails all admins5307 email with I18n.default_locale5308 omits blocked admins5309 mentions the number of failed checks5310 with footer and header5311 behaves like appearance header and footer enabled5312 contains header and footer5313 behaves like appearance header and footer not enabled5314 does not contain header and footer5315query a single terraform state5316 returns terraform state data5317 behaves like a working graphql query5318 returns a successful response5319 unauthorized users5320 is expected to be nil5321query terraform states5322 returns terraform state data5323 returns count of terraform states5324 unauthorized users5325 is expected to be nil5326accepting a merge request5327 when the user is not allowed to accept a merge request5328 behaves like a mutation that returns a top-level access error5329 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"5330 when user has permissions to create a merge request5331 merges the merge request asynchronously5332getting CRM contacts5333 behaves like sorted paginated query5334 behaves like requires variables5335 shared example requires variables to be set5337 when sorting5338 sorts correctly5339 when paginating5340 paginates correctly5341Dashboard::LabelsController5342 #index5343 returns labels with unique titles for projects the user has a relationship with5344 behaves like disabled when using an external authorization service5345 works when the feature is not enabled5346 renders a 404 with a message when the feature is enabled5347Admin::LabelsController5348 DELETE #destroy5349 when current user has ability to destroy the label5350 removes the label5351 does not remove the label if it is locked5352 when label is succesfuly destroyed5353 redirects to the admin labels page5354 when current_user does not have ability to destroy the label5355 responds with status 4045356getting project information5357 when there is a current_user5358 is expected to include {"name" => "Sidney Jones1971", "namespace" => {"id" => "gid://gitlab/Namespaces::UserNamespace/3449"}}5359 behaves like a working graphql query that returns data5360 contains data5361 behaves like a working graphql query5362 returns a successful response5363 when there is no current_user5364 behaves like a working graphql query that returns no data5365 contains no data5366 behaves like a working graphql query5367 returns a successful response5368Update Environment Canary Ingress5369 when kubernetes accepted the patch request5370 updates successfully5371EmailRejectionMailer5372 #rejection5373 behaves like appearance header and footer enabled5374 contains header and footer5375 behaves like appearance header and footer not enabled5376 does not contain header and footer5377ProjectMember5378 behaves like a working graphql query5379 returns a successful response5380 behaves like a working membership object query5381 contains edge to expected project5382 contains correct access level5383Groups::DeployTokensController5384 PUT /groups/:group_path_with_namespace/-/deploy_tokens/:id/revoke5385 invokes the Groups::DeployTokens::RevokeService5386 redirects to group repository settings with correct anchor5387getting project information5388 logged in5389 kas is enabled5390 returns version, revision, kas_enabled, kas_version, kas_external_url5391 kas is disabled5392 returns version and revision5393 anonymous user5394 returns nothing5395Removing an HTTP Integration5396 removes the integration5397delete a terraform state5398 returns a successful response5399User sends malformed strings5400 raises a 400 error with a null byte5401 raises a 400 error with an invalid string5402 raises a 400 error with null bytes in the auth headers5403SandboxController5404 GET #mermaid5405 renders page without template5406Analytics::CycleAnalytics::ValueStreamActions5407 #namespace5408 raises NotImplementedError5409auto_explain log contains 1711 entries for main, writing to /builds/gitlab-org/gitlab/auto_explain/rspec-integration-pg14-single-redis-7-12.334.main.ndjson.gz5410took 33.8253817875411auto_explain log contains 1713 entries for ci, writing to /builds/gitlab-org/gitlab/auto_explain/rspec-integration-pg14-single-redis-7-12.334.ci.ndjson.gz5412took 33.9775160295413Knapsack report was generated. Preview:5414{5415 "spec/requests/api/merge_requests_spec.rb": 395.4066561499999,5416 "spec/requests/api/conan_project_packages_spec.rb": 208.27833551100002,5417 "spec/requests/api/discussions_spec.rb": 172.08384274900004,5418 "spec/controllers/projects/notes_controller_spec.rb": 124.55287114600014,5419 "spec/requests/api/issues/get_group_issues_spec.rb": 91.25227404399993,5420 "spec/requests/api/wikis_spec.rb": 83.0622886709998,5421 "spec/requests/api/graphql/project/issues_spec.rb": 64.54149132900011,5422 "spec/requests/api/ci/runners_spec.rb": 36.254702049000116,5423 "spec/controllers/projects/compare_controller_spec.rb": 43.80497156900037,5424 "spec/requests/api/group_labels_spec.rb": 38.81553295200001,5425 "spec/controllers/projects/settings/integrations_controller_spec.rb": 42.50291108500005,5426 "spec/controllers/groups/settings/integrations_controller_spec.rb": 31.055769908000002,5427 "spec/requests/api/graphql/ci/runner_spec.rb": 28.986519929000224,5428 "spec/requests/api/pages/public_access_spec.rb": 29.57926259900023,5429 "spec/controllers/projects/deploy_keys_controller_spec.rb": 30.486377823999646,5430 "spec/controllers/import/gitea_controller_spec.rb": 21.081007282999963,5431 "spec/controllers/projects/web_ide_terminals_controller_spec.rb": 17.565637531999982,5432 "spec/controllers/projects/merge_requests/drafts_controller_spec.rb": 20.036005136999847,5433 "spec/requests/admin/abuse_reports_controller_spec.rb": 25.657658145999903,5434 "spec/controllers/dashboard/projects_controller_spec.rb": 16.53915731500001,5435 "spec/requests/api/graphql/ci/pipelines_spec.rb": 18.41392405700026,5436 "spec/controllers/projects/raw_controller_spec.rb": 13.011516510999627,5437 "spec/requests/api/issue_links_spec.rb": 17.282141532999958,5438 "spec/requests/api/graphql/mutations/notes/update/note_spec.rb": 15.926843323999947,5439 "spec/controllers/oauth/applications_controller_spec.rb": 8.720617776999916,5440 "spec/controllers/groups/runners_controller_spec.rb": 11.977628426000138,5441 "spec/requests/api/group_import_spec.rb": 12.267027375999987,5442 "spec/requests/jwt_controller_spec.rb": 7.070146531000319,5443 "spec/requests/api/graphql/mutations/ci/job_artifact/bulk_destroy_spec.rb": 11.671591590999924,5444 "spec/requests/api/graphql/mutations/packages/protection/rule/create_spec.rb": 5.378780932000154,5445 "spec/requests/api/admin/batched_background_migrations_spec.rb": 6.334919502000048,5446 "spec/requests/admin/clusters/integrations_controller_spec.rb": 9.22193304800021,5447 "spec/controllers/help_controller_spec.rb": 5.594918512999811,5448 "spec/controllers/groups/variables_controller_spec.rb": 6.828301024000211,5449 "spec/requests/api/graphql/mutations/packages/protection/rule/update_spec.rb": 4.403119575999881,5450 "spec/controllers/import/fogbugz_controller_spec.rb": 7.0078181519998,5451 "spec/requests/api/graphql/group/merge_requests_spec.rb": 6.55996603199992,5452 "spec/controllers/concerns/group_tree_spec.rb": 8.725099505999879,5453 "spec/controllers/projects/registry/tags_controller_spec.rb": 6.890987841999959,5454 "spec/requests/api/graphql/mutations/merge_requests/set_milestone_spec.rb": 5.671499570999913,5455 "spec/requests/api/vs_code/settings/vs_code_settings_sync_spec.rb": 2.921566449999773,5456 "spec/requests/api/graphql/mutations/jira_import/start_spec.rb": 5.527624715000002,5457 "spec/requests/api/graphql/mutations/packages/destroy_file_spec.rb": 4.3518009539998275,5458 "spec/requests/api/graphql/project/jira_import_spec.rb": 4.134031613999923,5459 "spec/requests/api/templates_spec.rb": 2.055697194000004,5460 "spec/controllers/projects/find_file_controller_spec.rb": 4.375613541000348,5461 "spec/controllers/confirmations_controller_spec.rb": 2.73940641199988,5462 "spec/requests/admin/users_controller_spec.rb": 2.004010653000023,5463 "spec/requests/api/graphql/current_user/todos_query_spec.rb": 3.973437562000072,5464 "spec/requests/projects/merge_requests/content_spec.rb": 3.7279635559998496,5465 "spec/controllers/concerns/preferred_language_switcher_spec.rb": 2.4084544310003366,5466 "spec/requests/api/graphql/mutations/todos/mark_all_done_spec.rb": 3.874229000000014,5467 "spec/requests/api/metrics/user_starred_dashboards_spec.rb": 2.2481693099998665,5468 "spec/requests/api/graphql/mutations/achievements/delete_user_achievement_spec.rb": 2.1566423460003534,5469 "spec/mailers/emails/work_items_spec.rb": 1.8088571480002429,5470 "spec/controllers/concerns/project_unauthorized_spec.rb": 2.5658042430000023,5471 "spec/requests/jira_connect/subscriptions_controller_spec.rb": 1.80082382899991,5472 "spec/requests/api/graphql/mutations/todos/restore_many_spec.rb": 2.2182569649999095,5473 "spec/requests/api/graphql/project/alert_management/alert/notes_spec.rb": 2.78524469399963,5474 "spec/requests/api/graphql/mutations/ci/pipeline_schedule/delete_spec.rb": 1.3568130980002024,5475 "spec/controllers/explore/groups_controller_spec.rb": 1.8783107150002252,5476 "spec/requests/api/graphql/mutations/achievements/update_spec.rb": 1.7379561210000247,5477 "spec/requests/api/graphql/mutations/discussions/toggle_resolve_spec.rb": 2.161491565000233,5478 "spec/requests/groups/registry/repositories_controller_spec.rb": 1.9073859499999344,5479 "spec/requests/api/graphql/issue_status_counts_spec.rb": 2.1919446199999584,5480 "spec/mailers/repository_check_mailer_spec.rb": 1.641631917000268,5481 "spec/requests/api/graphql/project/terraform/state_spec.rb": 1.6780259120000665,5482 "spec/requests/api/graphql/project/terraform/states_spec.rb": 1.522480299000108,5483 "spec/requests/api/graphql/mutations/merge_requests/accept_spec.rb": 1.8728193970000575,5484 "spec/requests/api/graphql/crm/contacts_spec.rb": 1.3989907210002457,5485 "spec/controllers/dashboard/labels_controller_spec.rb": 1.4707388890001312,5486 "spec/controllers/admin/labels_controller_spec.rb": 1.2513975070000924,5487 "spec/requests/api/graphql/current_user_query_spec.rb": 0.8648708760001682,5488 "spec/requests/api/graphql/mutations/environments/canary_ingress/update_spec.rb": 1.3222477750000508,5489 "spec/mailers/email_rejection_mailer_spec.rb": 0.3089207550001447,5490 "spec/requests/api/graphql/user/project_member_query_spec.rb": 1.0321787060001952,5491 "spec/requests/groups/deploy_tokens_controller_spec.rb": 0.8588893670003017,5492 "spec/requests/api/graphql/metadata_query_spec.rb": 0.7681556030001957,5493 "spec/requests/api/graphql/mutations/alert_management/http_integration/destroy_spec.rb": 0.7771093819997077,5494 "spec/requests/api/graphql/terraform/state/delete_spec.rb": 0.7016474649999509,5495 "spec/requests/user_sends_malformed_strings_spec.rb": 0.22095033999994484,5496 "spec/requests/sandbox_controller_spec.rb": 0.24647812600005636,5497 "spec/controllers/concerns/analytics/cycle_analytics/value_stream_actions_spec.rb": 0.15398028299978255498}5499Knapsack global time execution for tests: 29m 57s5500Finished in 31 minutes 9 seconds (files took 40.55 seconds to load)55012514 examples, 0 failures5502Randomized with seed 81205503[TEST PROF INFO] Time spent in factories: 14:49.256 (47.48% of total time)5504RSpec exited with 0.5505No examples to retry, congrats!5507Running after script...5508$ echo -e "\e[0Ksection_start:`date +%s`:report_results_section[collapsed=true]\r\e[0KReport results"5516$ tooling/bin/push_job_metrics || true5517[job-metrics] Pushing job metrics file for the CI/CD job.5518[job-metrics] Pushed 4 CI job metric entries to InfluxDB.5520Not uploading cache ruby-gems-debian-bullseye-ruby-3.1-16 due to policy5522Uploading artifacts...5523auto_explain/: found 3 matching artifact files and directories 5524coverage/: found 5 matching artifact files and directories 5525crystalball/: found 2 matching artifact files and directories 5526WARNING: deprecations/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 5527knapsack/: found 4 matching artifact files and directories 5528rspec/: found 16 matching artifact files and directories 5529WARNING: tmp/capybara/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 5530log/*.log: found 16 matching artifact files and directories 5531WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/5597251441/artifacts?artifact_format=zip&artifact_type=archive&expire_in=31d new-url=https://gitlab.com5532WARNING: Retrying... context=artifacts-uploader error=request redirected5533Uploading artifacts as "archive" to coordinator... 201 Created id=5597251441 responseStatus=201 Created token=64_n6zZd5534Uploading artifacts...5535rspec/rspec-*.xml: found 1 matching artifact files and directories 5536WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/5597251441/artifacts?artifact_format=gzip&artifact_type=junit&expire_in=31d new-url=https://gitlab.com5537WARNING: Retrying... context=artifacts-uploader error=request redirected5538Uploading artifacts as "junit" to coordinator... 201 Created id=5597251441 responseStatus=201 Created token=64_n6zZd5540Job succeeded