rspec integration pg11 2/8
Passed Started
by
@ayufan
Kamil Trzciński
1Running with gitlab-runner 13.3.0-rc1 (669fc507)2 on docker-auto-scale-com 8a6210b84Using Docker executor with image registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.6-golang-1.14-git-2.28-lfs-2.9-chrome-84-node-12.x-yarn-1.21-postgresql-11-graphicsmagick-1.3.34 ...5Starting service postgres:11.6 ...6Pulling docker image postgres:11.6 ...7Using docker image sha256:2c963c0eb8c6efa49bb8352ea446f248d208d674cfc34fc9ea275b5f99f8dedd for postgres:11.6 ...8Starting service redis:4.0-alpine ...9Pulling docker image redis:4.0-alpine ...10Using docker image sha256:e3dd0e49bca555d559ca2e97f06a1efa108ebd230fddcb17606723994f18ae3b for redis:4.0-alpine ...11Waiting for services to be up and running...12Authenticating with credentials from job payload (GitLab Registry)13Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.6-golang-1.14-git-2.28-lfs-2.9-chrome-84-node-12.x-yarn-1.21-postgresql-11-graphicsmagick-1.3.34 ...14Using docker image sha256:cd688957c9207f55272d81be6d4908692d78233833e3f09a9c0899b2f24eb3ff for registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.6-golang-1.14-git-2.28-lfs-2.9-chrome-84-node-12.x-yarn-1.21-postgresql-11-graphicsmagick-1.3.34 ...16Running on runner-8a6210b8-project-278964-concurrent-0 via runner-8a6210b8-gsrm-1598364619-ba2cb037...18$ eval "$CI_PRE_CLONE_SCRIPT"19Downloading archived master...20Connecting to storage.googleapis.com (172.217.204.128:443)21saving to '/tmp/gitlab.tar.gz'22gitlab.tar.gz 3% |* | 37.8M 0:00:25 ETA23gitlab.tar.gz 40% |************ | 402M 0:00:02 ETA24gitlab.tar.gz 74% |*********************** | 749M 0:00:01 ETA25gitlab.tar.gz 100% |********************************| 1004M 0:00:00 ETA26'/tmp/gitlab.tar.gz' saved27Extracting tarball into /builds/gitlab-org/gitlab...28Fetching changes with git depth set to 20...29Reinitialized existing Git repository in /builds/gitlab-org/gitlab/.git/30Created fresh repository.31Checking out dbc1a472 as master...32Skipping Git submodules setup34Checking cache for rails-v2-3...35Downloading cache.zip from https://storage.googleapis.com/gitlab-com-runners-cache/project/278964/rails-v2-3 36Successfully extracted cache38Downloading artifacts for compile-test-assets (702959600)...39Downloading artifacts from coordinator... ok id=702959600 responseStatus=200 OK token=efr6uzds40Downloading artifacts for retrieve-tests-metadata (702959602)...41Downloading artifacts from coordinator... ok id=702959602 responseStatus=200 OK token=VgekGNeS42Downloading artifacts for setup-test-env (702959601)...43Downloading artifacts from coordinator... ok id=702959601 responseStatus=200 OK token=Fwwkf6XV44WARNING: tmp/tests/gitlab-shell/.gitlab_shell_secret: chmod tmp/tests/gitlab-shell/.gitlab_shell_secret: no such file or directory (suppressing repeats) 46$ [ "$FOSS_ONLY" = "1" ] && rm -rf ee/ qa/spec/ee/ qa/qa/specs/features/ee/ qa/qa/ee/ qa/qa/ee.rb47$ export GOPATH=$CI_PROJECT_DIR/.go48$ mkdir -p $GOPATH49$ source scripts/utils.sh50$ source scripts/prepare_build.sh51Bundler version 1.17.252$ bundle install --clean --without=production --without=development --jobs=2 --path=vendor --retry=3 --quiet53==> 'bundle install --clean --without=production --without=development --jobs=2 --path=vendor --retry=3 --quiet' succeeded in 1 seconds.54$ bundle check55Warning: the running version of Bundler (1.17.2) is older than the version that created the lockfile (1.17.3). We suggest you upgrade to the latest version of Bundler by running `gem install bundler`.56The Gemfile's dependencies are satisfied57==> 'bundle check' succeeded in 1 seconds.58$ bundle pristine pg59Warning: the running version of Bundler (1.17.2) is older than the version that created the lockfile (1.17.3). We suggest you upgrade to the latest version of Bundler by running `gem install bundler`.60Installing pg 1.2.2 with native extensions61==> 'bundle pristine pg' succeeded in 11 seconds.62$ gem install knapsack --no-document63Successfully installed knapsack-1.18.0641 gem installed65==> 'gem install knapsack --no-document' succeeded in 1 seconds.66$ setup_db_user_only67CREATE ROLE68GRANT69==> 'setup_db_user_only' succeeded in 0 seconds.70$ bundle exec rake db:drop db:create db:structure:load db:migrate gitlab:db:setup_ee71Dropped database 'gitlabhq_test'72Created database 'gitlabhq_test'73Dropped database 'gitlabhq_geo_test'74Created database 'gitlabhq_geo_test'75==> 'bundle exec rake db:drop db:create db:structure:load db:migrate gitlab:db:setup_ee' succeeded in 30 seconds.76$ run_timed_command "scripts/gitaly-test-build"77$ scripts/gitaly-test-build78Settings are listed in order of priority. The top value will be used.79retry80Set for your local app (/builds/gitlab-org/gitlab/tmp/tests/gitaly/ruby/.bundle/config/config): 381path82Set for your local app (/builds/gitlab-org/gitlab/tmp/tests/gitaly/ruby/.bundle/config/config): "/builds/gitlab-org/gitlab/vendor/gitaly-ruby"83jobs84Set for your local app (/builds/gitlab-org/gitlab/tmp/tests/gitaly/ruby/.bundle/config/config): 485app_config86Set via BUNDLE_APP_CONFIG: "/builds/gitlab-org/gitlab/tmp/tests/gitaly/ruby/.bundle/config"87gemfile88Set via BUNDLE_GEMFILE: "/builds/gitlab-org/gitlab/tmp/tests/gitaly/ruby/Gemfile"89flags90Set via BUNDLE_FLAGS: "--jobs=4 --retry=3 --quiet --path=/builds/gitlab-org/gitlab/vendor/gitaly-ruby"91silence_root_warning92Set via BUNDLE_SILENCE_ROOT_WARNING: true93go install -ldflags '-X gitlab.com/gitlab-org/gitaly/internal/version.version=13.3.0-rc5 -X gitlab.com/gitlab-org/gitaly/internal/version.buildtime=20200825.153228' -tags "tracer_static,tracer_static_jaeger,continuous_profiler_stackdriver" gitlab.com/gitlab-org/gitaly/cmd/praefect gitlab.com/gitlab-org/gitaly/cmd/gitaly-hooks gitlab.com/gitlab-org/gitaly/cmd/gitaly-blackbox gitlab.com/gitlab-org/gitaly/cmd/gitaly gitlab.com/gitlab-org/gitaly/cmd/gitaly-debug gitlab.com/gitlab-org/gitaly/cmd/gitaly-ssh gitlab.com/gitlab-org/gitaly/cmd/gitaly-wrapper94install /builds/gitlab-org/gitlab/tmp/tests/gitaly/_build/bin/praefect /builds/gitlab-org/gitlab/tmp/tests/gitaly/_build/bin/gitaly-hooks /builds/gitlab-org/gitlab/tmp/tests/gitaly/_build/bin/gitaly-blackbox /builds/gitlab-org/gitlab/tmp/tests/gitaly/_build/bin/gitaly /builds/gitlab-org/gitlab/tmp/tests/gitaly/_build/bin/gitaly-debug /builds/gitlab-org/gitlab/tmp/tests/gitaly/_build/bin/gitaly-ssh /builds/gitlab-org/gitlab/tmp/tests/gitaly/_build/bin/gitaly-wrapper /builds/gitlab-org/gitlab/tmp/tests/gitaly95Checking gitaly-ruby Gemfile...96Checking gitaly-ruby bundle...97Warning: the running version of Bundler (1.17.2) is older than the version that created the lockfile (1.17.3). We suggest you upgrade to the latest version of Bundler by running `gem install bundler`.98The Gemfile's dependencies are satisfied99Trying to connect to gitaly: ........ OK100Trying to connect to praefect: ........ OK101==> 'scripts/gitaly-test-build' succeeded in 46 seconds.102$ run_timed_command "scripts/gitaly-test-spawn"103$ scripts/gitaly-test-spawn104Checking gitaly-ruby Gemfile...105Checking gitaly-ruby bundle...106Warning: the running version of Bundler (1.17.2) is older than the version that created the lockfile (1.17.3). We suggest you upgrade to the latest version of Bundler by running `gem install bundler`.107The Gemfile's dependencies are satisfied108Trying to connect to gitaly: ........ OK109Trying to connect to praefect: ....... OK110==> 'scripts/gitaly-test-spawn' succeeded in 2 seconds.111$ source scripts/rspec_helpers.sh112$ rspec_paralellized_job "--tag ~quarantine --tag ~geo --tag ~level:migration"113KNAPSACK_TEST_FILE_PATTERN: spec/{controllers,mailers,requests}{,/**/}*_spec.rb114RSpec's reporter has already been initialized with #<IO:<STDERR>> as the deprecation stream, so your change to `deprecation_stream` will be ignored. You should configure it earlier for it to take effect, or use the `--deprecation-out` CLI option. (Called from /builds/gitlab-org/gitlab/spec/support/rspec.rb:12:in `block in <top (required)>')115Knapsack report generator started!116Run options:117 include {:focus=>true}118 exclude {:quarantine=>true, :geo=>true, :level=>"migration"}119All examples were filtered out; ignoring {:focus=>true}120==> Setting up gitlab-test bare repository in /builds/gitlab-org/gitlab/tmp/tests/gitlab-test_bare...121 /builds/gitlab-org/gitlab/tmp/tests/gitlab-test_bare set up in 0.042303689 seconds...122API::MergeRequests123 route shadowing124 does not occur125 GET /merge_requests126 when unauthenticated127 returns an array of all merge requests128 returns authentication error without any scope129 returns authentication error when scope is assigned-to-me130 returns authentication error when scope is assigned_to_me131 returns authentication error when scope is created-by-me132 when authenticated133 returns an array of all merge requests except unauthorized ones134 returns an array of no merge_requests when wip=yes135 returns an array of no merge_requests when wip=no136 does not return unauthorized merge requests137 returns an array of merge requests created by current user if no scope is given138 returns an array of merge requests assigned to the given user139 returns an array of merge requests with no assignee140 returns an array of merge requests with any assignee141 returns an array of merge requests assigned to me142 returns an array of merge requests assigned to me (kebab-case)143 returns an array of merge requests created by me144 returns an array of merge requests created by me (kebab-case)145 returns merge requests reacted by the authenticated user by the given emoji146 returns merge requests created before a specific date147 returns merge requests created after a specific date148 returns merge requests updated before a specific date149 returns merge requests updated after a specific date150 filter by author151 when only `author_id` is passed152 returns an array of merge requests authored by the given user153 when only `author_username` is passed154 returns an array of merge requests authored by the given user(by `author_username`)155 when both `author_id` and `author_username` are passed156 returns a 400157 source_branch param158 returns merge requests with the given source branch159 target_branch param160 returns merge requests with the given target branch161 search params162 returns merge requests matching given search string for title163 returns merge requests matching given search string for title and scoped in title164 returns an empty array if no merge request matches given search string for description and scoped in title165 returns merge requests for project matching given search string for description166 state param167 returns merge requests with the given state168 GET /projects/:id/merge_requests169 returns 404 for non public projects170 returns an array of no merge_requests when wip=yes171 returns merge_request by "iids" array172 behaves like merge requests list173 when unauthenticated174 returns merge requests for public projects175 when authenticated176 avoids N+1 queries177 returns an array of all merge_requests using simple mode178 returns an array of all merge_requests179 returns an array of open merge_requests180 returns an array of closed merge_requests181 returns an array of merged merge_requests182 matches V4 response schema183 returns an empty array if no issue matches milestone184 returns an empty array if milestone does not exist185 returns an array of merge requests in given milestone186 returns an array of merge requests matching state in milestone187 returns an array of labeled merge requests that are merged for a milestone188 when merge request is unchecked189 with merge status recheck projection190 checks mergeability asynchronously191 without merge status recheck projection192 does not enqueue a merge status recheck193 with labels194 returns an array of all merge_requests195 with labels_details196 returns labels with details197 avoids N+1 queries198 with labels199 returns an array of labeled merge requests200 returns an array of labeled merge requests where all labels match201 returns an empty array if no merge request matches labels202 returns an array of labeled merge requests where all labels match203 returns an array of merge requests with any label when filtering by any label204 returns an array of merge requests with any label when filtering by any label205 returns an array of merge requests with any label when filtering by any label206 returns an array of merge requests without a label when filtering by no label207 with ordering208 returns an array of merge_requests in ascending order209 returns an array of merge_requests in descending order210 returns an array of merge_requests ordered by updated_at211 returns an array of merge_requests ordered by created_at212 2 merge requests with equal created_at213 page breaks first page correctly214 page breaks second page correctly215 NOT params216 returns merge requests without any of the labels given217 returns merge requests without any of the milestones given218 returns merge requests without the author given219 returns merge requests without the assignee given220 source_branch param221 returns merge requests with the given source branch222 target_branch param223 returns merge requests with the given target branch224 a project which enforces all discussions to be resolved225 avoids N+1 queries226 GET /groups/:id/merge_requests227 behaves like merge requests list228 when unauthenticated229 returns merge requests for public projects230 when authenticated231 avoids N+1 queries232 returns an array of all merge_requests using simple mode233 returns an array of all merge_requests234 returns an array of open merge_requests235 returns an array of closed merge_requests236 returns an array of merged merge_requests237 matches V4 response schema238 returns an empty array if no issue matches milestone239 returns an empty array if milestone does not exist240 returns an array of merge requests in given milestone241 returns an array of merge requests matching state in milestone242 returns an array of labeled merge requests that are merged for a milestone243 when merge request is unchecked244 with merge status recheck projection245 checks mergeability asynchronously246 without merge status recheck projection247 does not enqueue a merge status recheck248 with labels249 returns an array of all merge_requests250 with labels_details251 returns labels with details252 avoids N+1 queries253 with labels254 returns an array of labeled merge requests255 returns an array of labeled merge requests where all labels match256 returns an empty array if no merge request matches labels257 returns an array of labeled merge requests where all labels match258 returns an array of merge requests with any label when filtering by any label259 returns an array of merge requests with any label when filtering by any label260 returns an array of merge requests with any label when filtering by any label261 returns an array of merge requests without a label when filtering by no label262 with ordering263 returns an array of merge_requests in ascending order264 returns an array of merge_requests in descending order265 returns an array of merge_requests ordered by updated_at266 returns an array of merge_requests ordered by created_at267 2 merge requests with equal created_at268 page breaks first page correctly269 page breaks second page correctly270 NOT params271 returns merge requests without any of the labels given272 returns merge requests without any of the milestones given273 returns merge requests without the author given274 returns merge requests without the assignee given275 source_branch param276 returns merge requests with the given source branch277 target_branch param278 returns merge requests with the given target branch279 when have subgroups280 behaves like merge requests list281 when unauthenticated282 returns merge requests for public projects283 when authenticated284 avoids N+1 queries285 returns an array of all merge_requests using simple mode286 returns an array of all merge_requests287 returns an array of open merge_requests288 returns an array of closed merge_requests289 returns an array of merged merge_requests290 matches V4 response schema291 returns an empty array if no issue matches milestone292 returns an empty array if milestone does not exist293 returns an array of merge requests in given milestone294 returns an array of merge requests matching state in milestone295 returns an array of labeled merge requests that are merged for a milestone296 when merge request is unchecked297 with merge status recheck projection298 checks mergeability asynchronously299 without merge status recheck projection300 does not enqueue a merge status recheck301 with labels302 returns an array of all merge_requests303 with labels_details304 returns labels with details305 avoids N+1 queries306 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 NOT params324 returns merge requests without any of the labels given325 returns merge requests without any of the milestones given326 returns merge requests without the author given327 returns merge requests without the assignee given328 source_branch param329 returns merge requests with the given source branch330 target_branch param331 returns merge requests with the given target branch332 #to_reference333 exposes reference path in context of group334 referencing from parent group335 exposes reference path in context of parent group336 with archived projects337 returns an array excluding merge_requests from archived projects338 with non_archived param set as false339 returns an array including merge_requests from archived projects340 GET /projects/:id/merge_requests/:merge_request_iid341 matches json schema342 exposes known attributes343 exposes description and title html when render_html is true344 exposes rebase_in_progress when include_rebase_in_progress is true345 returns the commits behind the target branch when include_diverged_commits_count is present346 returns a 404 error if merge_request_iid not found347 returns a 404 error if merge_request `id` is used instead of iid348 indicates if a user cannot merge the MR349 returns `checking` as its merge_status instead of `cannot_be_merged_rechecking`350 when author is not a member without any merged merge requests351 exposes first_contribution as true352 merge_request_metrics353 has fields from merge request metrics354 returns correct values355 head_pipeline356 when user can read the pipeline357 exposes pipeline information358 when user can not read the pipeline359 does not expose pipeline information360 Work in Progress361 returns merge request362 when a merge request has more than the changes limit363 returns a string indicating that more changes were made364 for forked projects365 includes the `allow_collaboration` field366 when merge request is unchecked367 checks mergeability asynchronously368 GET /projects/:id/merge_requests/:merge_request_iid/participants369 behaves like issuable participants endpoint370 returns participants371 returns a 404 when iid does not exist372 returns a 404 when id is used instead of iid373 GET /projects/:id/merge_requests/:merge_request_iid/commits374 returns a 200 when merge request is valid375 returns a 404 when merge_request_iid not found376 returns a 404 when merge_request id is used instead of iid377 GET /projects/:id/merge_requests/:merge_request_iid/:context_commits378 returns a 200 when merge request is valid379 returns a 404 when merge_request_iid not found380 GET /projects/:id/merge_requests/:merge_request_iid/changes381 returns the change information of the merge_request382 returns a 404 when merge_request_iid not found383 returns a 404 when merge_request id is used instead of iid384 GET /projects/:id/merge_requests/:merge_request_iid/pipelines385 when authorized386 returns a paginated array of corresponding pipelines387 exposes basic attributes388 returns 404 if MR does not exist389 when unauthorized390 returns 403391 POST /projects/:id/merge_requests/:merge_request_iid/pipelines392 when authorized393 creates and returns the new Pipeline394 when unauthorized395 responds with a blank 404396 when the merge request does not exist397 responds with a blank 404398 when the .gitlab-ci.yml file is invalid399 creates a failed pipeline400 POST /projects/:id/merge_requests401 support for deprecated assignee_id402 creates a new merge request403 creates a new merge request when assignee_id is empty404 filters assignee_id of unauthorized user405 single assignee restrictions406 creates a new project merge request with no more than one assignee407 between branches projects408 returns 422 when source_branch equals target_branch409 returns 400 when source_branch is missing410 returns 400 when target_branch is missing411 returns 400 when title is missing412 different labels413 creates merge request with special label names414 creates merge request with special label names as array415 empty label param does not add any labels416 empty label param as array does not add any labels, but only explicitly as json417 empty label param as array, does not add any labels418 array with one empty string element does not add labels419 array with multiple empty string elements, does not add labels420 behaves like creates merge request with labels421 returns merge_request422 behaves like creates merge request with labels423 returns merge_request424 behaves like creates merge request with labels425 returns merge_request426 with existing MR427 returns 409 when MR already exists for source/target428 accepts remove_source_branch parameter429 sets force_remove_source_branch to false430 sets force_remove_source_branch to true431 forked projects432 returns merge_request433 does not return 422 when source_branch equals target_branch434 returns 403 when target project has disabled merge requests435 returns 400 when source_branch is missing436 returns 400 when target_branch is missing437 returns 400 when title is missing438 allows setting `allow_collaboration`439 returns 201 when target_branch is specified and for the same project440 when target_branch and target_project_id is specified441 returns 422 if targeting a different fork442 returns 403 if targeting a different fork which user can not access443 PUT /projects/:id/merge_reuests/:merge_request_iid444 behaves like issuable update endpoint445 PUT /projects/:id/issues/:issue_id446 clears labels when labels param is nil447 updates the issuable with labels param as array448 POST /projects/:id/merge_requests/:merge_request_iid/context_commits449 when authenticated450 creates and returns the new context commit451 returns 400 when one or more shas are invalid452 returns 400 when the commits are empty453 returns 400 when params is empty454 returns 403 when creating new context commit for guest role455 returns 403 when creating new context commit for reporter role456 doesnt create when its already created457 returns 400 when the context commit is already created458 when unauthenticated459 returns 401 if user tries to create context commits460 DELETE /projects/:id/merge_requests/:merge_request_iid461 when the user is developer462 denies the deletion of the merge request463 when the user is project owner464 destroys the merge request owners can destroy465 returns 404 for an invalid merge request IID466 returns 404 if the merge request id is used instead of iid467 behaves like 412 response468 for a modified ressource469 returns 412 with a JSON error470 for an unmodified ressource471 returns 204 with an empty body472 DELETE /projects/:id/merge_requests/:merge_request_iid/context_commits473 when authenticated474 deletes context commit475 returns 400 when invalid commit sha is passed476 returns 400 when commits is empty477 returns 400 when no params is passed478 returns 403 when deleting existing context commit for guest role479 returns 403 when deleting existing context commit for reporter role480 when unauthenticated481 returns 401, unauthorised error482 PUT /projects/:id/merge_requests/:merge_request_iid/merge483 returns merge_request in case of success484 returns 406 if branch can't be merged485 returns 405 if merge_request is not open486 returns 405 if merge_request is a work in progress487 returns 405 if the build failed for a merge request that requires success488 returns 401 if user has no permissions to merge489 returns 409 if the SHA parameter doesn't match490 succeeds if the SHA parameter matches491 updates the MR's squash attribute492 does not merge if merge_when_pipeline_succeeds is passed and the pipeline has failed493 merges if the head pipeline already succeeded and `merge_when_pipeline_succeeds` is passed494 enables merge when pipeline succeeds if the pipeline is active495 enables merge when pipeline succeeds if the pipeline is active and only_allow_merge_if_pipeline_succeeds is true496 returns 404 for an invalid merge request IID497 returns 404 if the merge request id is used instead of iid498 the squash_commit_message param499 results in a specific squash commit message when set500 results in a default squash commit message when not set501 the should_remove_source_branch param502 removes the source branch when set503 with a merge request that has force_remove_source_branch enabled504 removes the source branch505 does not remove the source branch506 performing a ff-merge with squash507 records the squash commit SHA and returns it in the response508 GET /projects/:id/merge_requests/:merge_request_iid/merge_ref509 returns the generated ID from the merge service in case of success510 when merge-ref is not synced with merge status511 returns 200 if MR can be merged512 returns 400 if MR cannot be merged513 when user has no access to the MR514 returns 404515 when invalid merge request IID516 returns 404517 when merge request ID is used instead IID518 returns 404519 PUT /projects/:id/merge_requests/:merge_request_iid520 updates title and returns merge_request521 updates description and returns merge_request522 updates milestone_id and returns merge_request523 updates squash and returns merge_request524 returns merge_request with renamed target_branch525 returns merge_request that removes the source branch526 filters assignee_id of unauthorized user527 does not update state when title is empty528 does not update state when target_branch is empty529 returns 404 for an invalid merge request IID530 returns 404 if the merge request id is used instead of iid531 updates force_remove_source_branch properly532 sets to false533 sets to true534 with a merge request across forks535 is true for an authorized user536 is false for an unauthorized user537 to close a MR538 returns merge_request539 when updating labels540 allows special label names541 also accepts labels as an array542 empty label param removes labels543 label param as empty array, but only explicitly as json, removes labels544 empty label as array, removes labels545 array with one empty string element removes labels546 array with multiple empty string elements, removes labels547 with labels548 when adding labels, keeps existing labels and adds new549 when removing labels, only removes those specified550 when removing all labels, keeps no labels551 GET :id/merge_requests/:merge_request_iid/closes_issues552 returns the issue that will be closed on merge553 returns an empty array when there are no issues to be closed554 handles external issues555 returns 403 if the user has no access to the merge request556 returns 404 for an invalid merge request IID557 returns 404 if the merge request id is used instead of iid558 POST :id/merge_requests/:merge_request_iid/subscribe559 subscribes to a merge request560 returns 304 if already subscribed561 returns 404 if the merge request is not found562 returns 404 if the merge request id is used instead of iid563 returns 403 if user has no access to read code564 POST :id/merge_requests/:merge_request_iid/unsubscribe565 unsubscribes from a merge request566 returns 304 if not subscribed567 returns 404 if the merge request is not found568 returns 404 if the merge request id is used instead of iid569 returns 403 if user has no access to read code570 POST :id/merge_requests/:merge_request_iid/cancel_merge_when_pipeline_succeeds571 removes the merge_when_pipeline_succeeds status572 returns 404 if the merge request is not found573 returns 404 if the merge request id is used instead of iid574 PUT :id/merge_requests/:merge_request_iid/rebase575 returns 403 if the user cannot push to the branch576 returns 409 if a rebase is already in progress577 returns 409 if rebase can't lock the row578 when rebase can be performed579 enqueues a rebase of the merge request against the target branch580 when skip_ci parameter is set581 enqueues a rebase of the merge request with skip_ci flag set582 Time tracking583 POST /projects/:id/merge_requests/:merge_request_id/time_estimate584 sets the time estimate for merge_request585 with an unauthorized user586 behaves like an unauthorized API user587 is expected to eq 403588 behaves like API user with insufficient permissions589 with non member that is the author590 behaves like an unauthorized API user591 is expected to eq 403592 updating the current estimate593 when duration has a bad format594 does not modify the original estimate595 with a valid duration596 updates the estimate597 POST /projects/:id/merge_requests/:merge_request_id/reset_time_estimate598 resets the time estimate for merge_request599 with an unauthorized user600 behaves like an unauthorized API user601 is expected to eq 403602 behaves like API user with insufficient permissions603 with non member that is the author604 behaves like an unauthorized API user605 is expected to eq 403606 POST /projects/:id/merge_requests/:merge_request_id/add_spent_time607 add spent time for merge_request608 with an unauthorized user609 behaves like an unauthorized API user610 is expected to eq 403611 behaves like API user with insufficient permissions612 with non member that is the author613 behaves like an unauthorized API user614 is expected to eq 403615 when subtracting time616 subtracts time of the total spent time617 when time to subtract is greater than the total spent time618 does not modify the total time spent619 POST /projects/:id/merge_requests/:merge_request_id/reset_spent_time620 resets spent time for merge_request621 with an unauthorized user622 behaves like an unauthorized API user623 is expected to eq 403624 behaves like API user with insufficient permissions625 with non member that is the author626 behaves like an unauthorized API user627 is expected to eq 403628 GET /projects/:id/merge_requests/:merge_request_id/time_stats629 returns the time stats for merge_request630API::Notes631 when there are cross-reference system notes632 behaves like with cross-reference system notes633 returns only the note that the user should see634 avoids Git calls and N+1 SQL queries635 when noteable is an Issue636 behaves like noteable API637 GET /projects/:id/issues/:noteable_id/notes638 returns an array of notes639 returns a 404 error when noteable id not found640 returns 404 when not authorized641 sorting642 sorts by ascending order when requested643 sorts by updated_at in descending order when requested644 sorts by updated_at in ascending order when requested645 without sort params646 sorts by created_at in descending order by default647 fetches notes using parent path as id paremeter648 2 notes with equal created_at649 page breaks first page correctly650 page breaks second page correctly651 GET /projects/:id/issues/:noteable_id/notes/:note_id652 returns a note by id653 returns a 404 error if note not found654 POST /projects/:id/issues/:noteable_id/notes655 creates a new note656 creates a confidential note if confidential is set to true657 returns a 400 bad request error if body not given658 returns a 401 unauthorized error if user not authenticated659 creates an activity event when a note is created660 setting created_at661 by an admin662 sets the creation time on the new note663 by a project owner664 sets the creation time on the new note665 by a group owner666 sets the creation time on the new note667 by another user668 ignores the given creation time669 when the user is posting an award emoji on a noteable created by someone else670 creates a new note671 when the user is posting an award emoji on their own noteable672 creates a new note673 when user does not have access to read the noteable674 responds with 404675 PUT /projects/:id/issues/:noteable_id/notes/:note_id676 returns a 404 error when note id not found677 returns a 400 bad request error if body is empty678 when eveything is ok679 with multiple params present680 returns modified note681 updates the note682 when only body param is present683 updates only the note text684 when only confidential param is present685 updates only the note text686 DELETE /projects/:id/issues/:noteable_id/notes/:note_id687 deletes a note688 returns a 404 error when note id not found689 behaves like 412 response690 for a modified ressource691 returns 412 with a JSON error692 for an unmodified ressource693 returns 204 with an empty body694 when user does not have access to create noteable695 responds with resource not found error696 does not create new note697 when referencing other project698 GET /projects/:id/noteable/:noteable_id/notes699 current user cannot view the notes700 returns an empty array701 issue is confidential702 returns 404703 current user can view the note704 returns a non-empty array705 activity filters706 when not provided707 returns all the notes708 behaves like a notes request709 is a note array response710 when all_notes provided711 returns all the notes712 behaves like a notes request713 is a note array response714 when provided715 filter: "only_comments", count: 1, system_notable: false716 properly filters the returned notables717 behaves like a notes request718 is a note array response719 filter: "only_activity", count: 1, system_notable: true720 properly filters the returned notables721 behaves like a notes request722 is a note array response723 GET /projects/:id/noteable/:noteable_id/notes/:note_id724 current user cannot view the notes725 returns a 404 error726 when issue is confidential727 returns 404728 current user can view the note729 returns an issue note by id730 when noteable is a Snippet731 behaves like noteable API732 GET /projects/:id/snippets/:noteable_id/notes733 returns an array of notes734 returns a 404 error when noteable id not found735 returns 404 when not authorized736 sorting737 sorts by ascending order when requested738 sorts by updated_at in descending order when requested739 sorts by updated_at in ascending order when requested740 without sort params741 sorts by created_at in descending order by default742 fetches notes using parent path as id paremeter743 2 notes with equal created_at744 page breaks first page correctly745 page breaks second page correctly746 GET /projects/:id/snippets/:noteable_id/notes/:note_id747 returns a note by id748 returns a 404 error if note not found749 POST /projects/:id/snippets/:noteable_id/notes750 creates a new note751 creates a confidential note if confidential is set to true752 returns a 400 bad request error if body not given753 returns a 401 unauthorized error if user not authenticated754 creates an activity event when a note is created755 setting created_at756 by an admin757 sets the creation time on the new note758 by a project owner759 sets the creation time on the new note760 by a group owner761 sets the creation time on the new note762 by another user763 ignores the given creation time764 when the user is posting an award emoji on a noteable created by someone else765 creates a new note766 when the user is posting an award emoji on their own noteable767 creates a new note768 when user does not have access to read the noteable769 responds with 404770 PUT /projects/:id/snippets/:noteable_id/notes/:note_id771 returns a 404 error when note id not found772 returns a 400 bad request error if body is empty773 when eveything is ok774 with multiple params present775 returns modified note776 updates the note777 when only body param is present778 updates only the note text779 when only confidential param is present780 updates only the note text781 DELETE /projects/:id/snippets/:noteable_id/notes/:note_id782 deletes a note783 returns a 404 error when note id not found784 behaves like 412 response785 for a modified ressource786 returns 412 with a JSON error787 for an unmodified ressource788 returns 204 with an empty body789 when noteable is a Merge Request790 behaves like noteable API791 GET /projects/:id/merge_requests/:noteable_id/notes792 returns an array of notes793 returns a 404 error when noteable id not found794 returns 404 when not authorized795 sorting796 sorts by ascending order when requested797 sorts by updated_at in descending order when requested798 sorts by updated_at in ascending order when requested799 without sort params800 sorts by created_at in descending order by default801 fetches notes using parent path as id paremeter802 2 notes with equal created_at803 page breaks first page correctly804 page breaks second page correctly805 GET /projects/:id/merge_requests/:noteable_id/notes/:note_id806 returns a note by id807 returns a 404 error if note not found808 POST /projects/:id/merge_requests/:noteable_id/notes809 creates a new note810 creates a confidential note if confidential is set to true811 returns a 400 bad request error if body not given812 returns a 401 unauthorized error if user not authenticated813 creates an activity event when a note is created814 setting created_at815 by an admin816 sets the creation time on the new note817 by a project owner818 sets the creation time on the new note819 by a group owner820 sets the creation time on the new note821 by another user822 ignores the given creation time823 when the user is posting an award emoji on a noteable created by someone else824 creates a new note825 when the user is posting an award emoji on their own noteable826 creates a new note827 when user does not have access to read the noteable828 responds with 404829 PUT /projects/:id/merge_requests/:noteable_id/notes/:note_id830 returns a 404 error when note id not found831 returns a 400 bad request error if body is empty832 when eveything is ok833 with multiple params present834 returns modified note835 updates the note836 when only body param is present837 updates only the note text838 when only confidential param is present839 updates only the note text840 DELETE /projects/:id/merge_requests/:noteable_id/notes/:note_id841 deletes a note842 returns a 404 error when note id not found843 behaves like 412 response844 for a modified ressource845 returns 412 with a JSON error846 for an unmodified ressource847 returns 204 with an empty body848 a command only note849 returns 202 Accepted status850 does not actually create a new note851 does however create a system note about the change852 applies the commands853 reports the changes854 when the merge request discussion is locked855 when a user is a team member856 returns 200 status857 creates a new note858 when a user is not a team member859 returns 403 status860 does not create a new note861API::Releases862 GET /projects/:id/releases863 returns an upcoming_release status for a future release864 returns an upcoming_release status for a past release865 avoids N+1 queries866 when there are two releases867 returns 200 HTTP status868 returns releases ordered by released_at869 matches response schema870 returns rendered helper paths871 returns the merge requests and issues links, with correct query872 when tag does not exist in git repository873 returns the tag874 when tag contains a slash875 returns 200 HTTP status876 when user is a guest877 responds 200 OK878 does not expose tag, commit, source code or helper paths879 when project is public880 responds 200 OK881 exposes tag, commit, source code and helper paths882 when user is not a project member883 cannot find the project884 when project is public885 allows the request886 GET /projects/:id/releases/:tag_name887 when there is a release888 returns 200 HTTP status889 returns a release entry890 matches response schema891 contains source information as assets892 with evidence893 returns the evidence894 #collected_at895 when release has link asset896 contains link information as assets897 when link is internal898 has external false899 when user is a guest900 responds 403 Forbidden901 when project is public902 responds 200 OK903 exposes tag and commit904 when specified tag is not found in the project905 cannot find the release entry906 when user is not a project member907 cannot find the project908 when project is public909 allows the request910 when release is associated to a milestone911 matches schema912 exposes milestones913 returns issue stats for milestone914 when project restricts visibility of issues and merge requests915 does not expose milestones916 when project restricts visibility of issues917 exposes milestones918 POST /projects/:id/releases919 accepts the request920 creates a new release921 creates a new release without description922 sets the released_at to the current time if the released_at parameter is not provided923 sets the released_at to the value in the parameters if specified924 assumes the utc timezone for released_at if the timezone is not provided925 allows specifying a released_at with a local time zone926 matches response schema927 does not create a new tag928 when user is a reporter929 forbids the request930 when user is not a project member931 forbids the request932 when project is public933 forbids the request934 when create assets altogether935 when create one asset936 accepts the request937 creates an asset with specified parameters938 matches response schema939 when create two assets940 creates two assets with specified parameters941 when link names are duplicates942 recognizes as a bad request943 when using JOB-TOKEN auth944 when no token is provided945 returns a :not_found error946 when an invalid token is provided947 returns an :unauthorized error948 when a valid token is provided949 creates the release950 when tag does not exist in git repository951 creates a new tag952 creates a new release953 when tag name is HEAD954 returns a 400 error as failure on tag creation955 when tag name is empty956 returns a 400 error as failure on tag creation957 when release already exists958 returns an error as conflicted request959 PUT /projects/:id/releases/:tag_name960 accepts the request961 updates the description962 does not change other attributes963 matches response schema964 updates released_at965 when user tries to update sha966 does not allow the request967 when params is empty968 does not allow the request969 when there are no corresponding releases970 forbids the request971 when user is a reporter972 forbids the request973 when user is not a project member974 forbids the request975 when project is public976 forbids the request977 DELETE /projects/:id/releases/:tag_name978 accepts the request979 destroys the release980 does not remove a tag in repository981 matches response schema982 when there are no corresponding releases983 forbids the request984 when user is a reporter985 forbids the request986 when user is not a project member987 forbids the request988 when project is public989 forbids the request990ProjectsController991 updates Service Desk attributes992 GET new993 with an authenticated user994 when namespace_id param is present995 when user has access to the namespace996 renders the template997 when user does not have access to the namespace998 responds with status 404999 with the new_create_project_ui experiment enabled and the user is part of the control group1000 passes the right tracking parameters to the frontend1001 GET index1002 as a user1003 redirects to root page1004 as a guest1005 redirects to Explore page1006 GET #activity as JSON1007 when user has permission to see the event1008 returns count1009 design events are visible1010 returns correct count1011 when user has no permission to see the event1012 filters out invisible event1013 filters out invisible event when calculating the count1014 GET show1015 user not project member1016 user does not have access to project1017 does not initialize notification setting1018 user has access to project1019 and does not have notification setting1020 initializes notification as disabled1021 and has notification setting1022 shows current notification setting1023 when project repository is disabled1024 shows wiki homepage1025 shows issues list page if wiki is disabled1026 shows customize workflow page if wiki and issues are disabled1027 shows activity if enabled by user1028 when the storage is not available1029DEPRECATION WARNING: render file: should be given the absolute path to a file (called from render at /builds/gitlab-org/gitlab/app/controllers/application_controller.rb:134)1030 renders a 5031031 project with empty repo1032 with readme view set1033 renders the empty project view1034 with activity view set1035 renders the empty project view1036 with files view set1037 renders the empty project view1038 project with broken repo1039 with readme view set1040 renders the empty project view1041 with activity view set1042 renders the empty project view1043 with files view set1044 renders the empty project view1045 rendering default project view1046 renders the activity view1047 renders the files view1048 renders the readme view1049 when the url contains .atom1050 expects an error creating the project1051 when the project is pending deletions1052 renders a 404 error1053 redirection from http://someproject.git1054 redirects to project page (format.html)1055 when the project is forked and has a repository1056 does not increase the number of queries when the project is forked1057 GET edit1058 allows an admin user to access the page1059 sets the badge API endpoint1060 POST #archive1061 for a user with the ability to archive a project1062 archives the project1063 redirects to projects path1064 for a user that does not have the ability to archive a project1065 does not archive the project1066 returns 4041067 POST #unarchive1068 for a user with the ability to unarchive a project1069 unarchives the project1070 redirects to projects path1071 for a user that does not have the ability to unarchive a project1072 does not unarchive the project1073 returns 4041074 #housekeeping1075 when authenticated as owner1076 forces a full garbage collection1077 when authenticated as developer1078 does not execute housekeeping1079 #update1080 hashed storage1081 behaves like updating a project1082 updates Fast Forward Merge attributes1083 does not update namespace1084 when only renaming a project path1085 sets the repository to the right path after a rename1086 when project has container repositories with tags1087 does not allow to rename the project1088 legacy storage1089 behaves like updating a project1090 updates Fast Forward Merge attributes1091 does not update namespace1092 when only renaming a project path1093 sets the repository to the right path after a rename1094 when project has container repositories with tags1095 does not allow to rename the project1096 as maintainer1097 behaves like unauthorized when external service denies access1098 allows access when the authorization service allows it1099 allows access when the authorization service denies it1100 updates when the service allows access1101 does not update when the service rejects access1102 #transfer1103 updates namespace1104 when new namespace is empty1105 project namespace is not changed1106 #destroy1107 redirects to the dashboard1108 when the project is forked1109 closes all related merge requests1110 PUT #new_issuable_address for issue1111 has http status 2001112 changes the user incoming email token1113 changes projects new issue address1114 PUT #new_issuable_address for merge request1115 has http status 2001116 changes the user incoming email token1117 changes projects new merge request address1118 POST #toggle_star1119 toggles star if user is signed in1120 does nothing if user is not signed in1121 DELETE remove_fork1122 does nothing if user is not signed in1123 when signed in1124 with forked project1125 removes fork from project1126 when project not forked1127 does nothing if project was not forked1128 GET refs1129 gets a list of branches and tags1130 gets a list of branches, tags and commits1131 when preferred language is Japanese1132 gets a list of branches, tags and commits1133 when private project1134 as a guest1135 renders forbidden1136 POST #preview_markdown1137 renders json in a correct format1138 when not authorized1139 returns 4041140 state filter on references1141 renders JSON body with state filter for issues1142 renders JSON body with state filter for MRs1143 when path parameter is provided1144 renders JSON body with image links expanded1145 when path and ref parameters are provided1146 renders JSON body with image links expanded1147 #ensure_canonical_path1148 for a GET request1149 when requesting the canonical path1150 with exactly matching casing1151 loads the project1152 with different casing1153 redirects to the normalized path1154 when requesting a redirected path1155 redirects to the canonical path1156 redirects to the canonical path (testing non-show action)1157 for a POST request1158 when requesting the canonical path with different casing1159 does not 4041160 does not redirect to the correct casing1161 when requesting a redirected path1162 returns not found1163 for a DELETE request1164 when requesting the canonical path with different casing1165 does not 4041166 does not redirect to the correct casing1167 when requesting a redirected path1168 returns not found1169 project export1170 #export1171 when project export is enabled1172 returns 3021173 when project export is disabled1174 returns 4041175 when the endpoint receives requests above the limit1176 prevents requesting project export1177 #download_export1178 object storage enabled1179 when project export is enabled1180 returns 3021181 when project export is disabled1182 returns 4041183 when the endpoint receives requests above the limit1184 prevents requesting project export1185 #remove_export1186 when project export is enabled1187 returns 3021188 when project export is disabled1189 returns 4041190 #generate_new_export1191 when project export is enabled1192 returns 3021193 when project export is disabled1194 returns 4041195 when the endpoint receives requests above the limit1196 prevents requesting project export1197 private project with token authentication1198 behaves like authenticates sessionless user1199 doesn't log the user in otherwise1200 when the 'personal_access_token' param is populated with the personal access token1201 logs the user in1202 when the personal access token has no api scope1203 does not log the user in1204 when the 'PERSONAL_ACCESS_TOKEN' header is populated with the personal access token1205 logs the user in1206 public project with token authentication1207 behaves like authenticates sessionless user1208 when the 'personal_access_token' param is populated with the personal access token1209 logs the user in1210 does not log the user in if page is public1211 when the 'PERSONAL_ACCESS_TOKEN' header is populated with the personal access token1212 logs the user in1213 GET resolve1214 with an authenticated user1215 gives 404 for non-existing project1216 when user has access to the project1217 behaves like resolvable endpoint1218 redirects to the project page1219 when user has no access to the project1220 gives 404 for existing project1221 non authenticated user1222 gives 404 for private project1223 with a public project1224 behaves like resolvable endpoint1225 redirects to the project page1226API::Files1227 http headers1228 converts value into string1229 raises exception if value is an Enumerable1230 HEAD /projects/:id/repository/files/:file_path1231 when unauthenticated and project is public1232 behaves like repository files1233 returns 400 when file path is invalid1234 returns file attributes in headers1235 returns file by commit sha1236 behaves like when path is absolute1237 returns 400 when file path is absolute1238 when mandatory params are not given1239 responds with a 400 status1240 when file_path does not exist1241 responds with a 404 status1242 when file_path does not exist1243 responds with a 403 status1244 when unauthenticated and project is private1245 responds with a 404 status1246 when PATs are used1247 behaves like repository files1248 returns 400 when file path is invalid1249 returns file attributes in headers1250 returns file by commit sha1251 behaves like when path is absolute1252 returns 400 when file path is absolute1253 when mandatory params are not given1254 responds with a 400 status1255 when file_path does not exist1256 responds with a 404 status1257 when file_path does not exist1258 responds with a 403 status1259 when authenticated as a developer1260 behaves like repository files1261 returns 400 when file path is invalid1262 returns file attributes in headers1263 returns file by commit sha1264 behaves like when path is absolute1265 returns 400 when file path is absolute1266 when mandatory params are not given1267 responds with a 400 status1268 when file_path does not exist1269 responds with a 404 status1270 when file_path does not exist1271 responds with a 403 status1272 when authenticated as a guest1273 behaves like 403 response1274 returns 4031275 GET /projects/:id/repository/files/:file_path1276 when unauthenticated and project is public1277 behaves like repository files1278 returns 400 for invalid file path1279 returns file attributes as json1280DEPRECATION WARNING: Rails 6.1 will return Content-Type header without modification. If you want just the MIME type, please use `#media_type` instead. (called from block (4 levels) in <top (required)> at /builds/gitlab-org/gitlab/spec/requests/api/files_spec.rb:207)1281 returns json when file has txt extension1282 returns file by commit sha1283 returns raw file info1284 returns blame file info1285 sets inline content disposition by default1286 behaves like when path is absolute1287 returns 400 when file path is absolute1288 with filename with pathspec characters1289 returns JSON wth commit SHA1290 when mandatory params are not given1291 behaves like 400 response1292 returns 4001293 when file_path does not exist1294 behaves like 404 response1295 returns 4041296 when repository is disabled1297 behaves like 403 response1298 returns 4031299 when PATs are used1300 behaves like repository files1301 returns 400 for invalid file path1302 returns file attributes as json1303DEPRECATION WARNING: Rails 6.1 will return Content-Type header without modification. If you want just the MIME type, please use `#media_type` instead. (called from block (4 levels) in <top (required)> at /builds/gitlab-org/gitlab/spec/requests/api/files_spec.rb:207)1304 returns json when file has txt extension1305 returns file by commit sha1306 returns raw file info1307 returns blame file info1308 sets inline content disposition by default1309 behaves like when path is absolute1310 returns 400 when file path is absolute1311 with filename with pathspec characters1312 returns JSON wth commit SHA1313 when mandatory params are not given1314 behaves like 400 response1315 returns 4001316 when file_path does not exist1317 behaves like 404 response1318 returns 4041319 when repository is disabled1320 behaves like 403 response1321 returns 4031322 when unauthenticated and project is private1323 behaves like 404 response1324 returns 4041325 when authenticated as a developer1326 behaves like repository files1327 returns 400 for invalid file path1328 returns file attributes as json1329DEPRECATION WARNING: Rails 6.1 will return Content-Type header without modification. If you want just the MIME type, please use `#media_type` instead. (called from block (4 levels) in <top (required)> at /builds/gitlab-org/gitlab/spec/requests/api/files_spec.rb:207)1330 returns json when file has txt extension1331 returns file by commit sha1332 returns raw file info1333 returns blame file info1334 sets inline content disposition by default1335 behaves like when path is absolute1336 returns 400 when file path is absolute1337 with filename with pathspec characters1338 returns JSON wth commit SHA1339 when mandatory params are not given1340 behaves like 400 response1341 returns 4001342 when file_path does not exist1343 behaves like 404 response1344 returns 4041345 when repository is disabled1346 behaves like 403 response1347 returns 4031348 when authenticated as a guest1349 behaves like 403 response1350 returns 4031351 GET /projects/:id/repository/files/:file_path/blame1352 when unauthenticated and project is public1353 behaves like repository blame files1354 returns file attributes in headers1355 returns 400 when file path is invalid1356 returns blame file attributes as json1357 returns blame file info for files with dots1358 returns file by commit sha1359 behaves like when path is absolute1360 returns 400 when file path is absolute1361 when mandatory params are not given1362 behaves like 400 response1363 returns 4001364 when file_path does not exist1365 behaves like 404 response1366 returns 4041367 when commit does not exist1368 behaves like 404 response1369 returns 4041370 when repository is disabled1371 behaves like 403 response1372 returns 4031373 when unauthenticated and project is private1374 behaves like 404 response1375 returns 4041376 when authenticated as a developer1377 behaves like repository blame files1378 returns file attributes in headers1379 returns 400 when file path is invalid1380 returns blame file attributes as json1381 returns blame file info for files with dots1382 returns file by commit sha1383 behaves like when path is absolute1384 returns 400 when file path is absolute1385 when mandatory params are not given1386 behaves like 400 response1387 returns 4001388 when file_path does not exist1389 behaves like 404 response1390 returns 4041391 when commit does not exist1392 behaves like 404 response1393 returns 4041394 when repository is disabled1395 behaves like 403 response1396 returns 4031397 when authenticated as a guest1398 behaves like 403 response1399 returns 4031400 when PATs are used1401 returns blame file by commit sha1402 GET /projects/:id/repository/files/:file_path/raw1403 when unauthenticated and project is public1404 behaves like repository raw files1405 returns 400 when file path is invalid1406 returns raw file info1407 returns raw file info for files with dots1408 returns file by commit sha1409 sets no-cache headers1410 behaves like when path is absolute1411 returns 400 when file path is absolute1412 when mandatory params are not given1413 behaves like 400 response1414 returns 4001415 when file_path does not exist1416 behaves like 404 response1417 returns 4041418 when repository is disabled1419 behaves like 403 response1420 returns 4031421 when unauthenticated and project is private1422 behaves like 404 response1423 returns 4041424 when authenticated as a developer1425 behaves like repository raw files1426 returns 400 when file path is invalid1427 returns raw file info1428 returns raw file info for files with dots1429 returns file by commit sha1430 sets no-cache headers1431 behaves like when path is absolute1432 returns 400 when file path is absolute1433 when mandatory params are not given1434 behaves like 400 response1435 returns 4001436 when file_path does not exist1437 behaves like 404 response1438 returns 4041439 when repository is disabled1440 behaves like 403 response1441 returns 4031442 when authenticated as a guest1443 behaves like 403 response1444 returns 4031445 when PATs are used1446 returns file by commit sha1447 POST /projects/:id/repository/files/:file_path1448 returns 400 when file path is invalid1449 creates a new file in project repo1450 returns a 400 bad request if no mandatory params given1451 returns a 400 bad request if the commit message is empty1452 returns a 400 if editor fails to create file1453 behaves like when path is absolute1454 returns 400 when file path is absolute1455 with PATs1456 returns 403 with `read_repository` scope1457 returns 201 with `api` scope1458 when specifying an author1459DEPRECATION WARNING: Rails 6.1 will return Content-Type header without modification. If you want just the MIME type, please use `#media_type` instead. (called from block (4 levels) in <top (required)> at /builds/gitlab-org/gitlab/spec/requests/api/files_spec.rb:693)1460 creates a new file with the specified author1461 when the repo is empty1462 creates a new file in project repo1463 PUT /projects/:id/repository/files1464 updates existing file in project repo1465 returns a 400 bad request if the commit message is empty1466 returns a 400 bad request if update existing file with stale last commit id1467 updates existing file in project repo with accepts correct last commit id1468 returns 400 when file path is invalid1469 returns a 400 bad request if no params given1470 behaves like when path is absolute1471 returns 400 when file path is absolute1472 when specifying an author1473 updates a file with the specified author1474 DELETE /projects/:id/repository/files1475 returns 400 when file path is invalid1476 deletes existing file in project repo1477 returns a 400 bad request if no params given1478 returns a 400 bad request if the commit message is empty1479 returns a 400 if fails to delete file1480 behaves like when path is absolute1481 returns 400 when file path is absolute1482 when specifying an author1483 removes a file with the specified author1484 POST /projects/:id/repository/files with binary file1485 remains unchanged1486API::Jobs1487 GET /projects/:id/jobs1488 authorized user1489 returns project jobs1490 returns correct values1491 returns pipeline data1492 avoids N+1 queries1493 without artifacts and trace1494 returns no artifacts nor trace data1495 behaves like a job with artifacts and trace1496 with artifacts and trace1497 returns artifacts and trace data1498 filter project with one scope element1499 is expected to be a kind of Array1500 filter project with array of scope elements1501 is expected to be a kind of Array1502 respond 400 when scope contains invalid state1503 is expected to respond with numeric status code bad_request1504 unauthorized user1505 when user is not logged in1506 does not return project jobs1507 when user is guest1508 does not return project jobs1509 GET /projects/:id/pipelines/:pipeline_id/jobs1510 authorized user1511 returns pipeline jobs1512 returns correct values1513 returns pipeline data1514 avoids N+1 queries1515 behaves like a job with artifacts and trace1516 with artifacts and trace1517 returns artifacts and trace data1518 filter jobs with one scope element1519 is expected to be a kind of Array1520 filter jobs with array of scope elements1521 is expected to be a kind of Array1522 respond 400 when scope contains invalid state1523 is expected to respond with numeric status code bad_request1524 jobs in different pipelines1525 excludes jobs from other pipelines1526 when config source not ci1527 returns the specified pipeline1528 unauthorized user1529 when user is not logged in1530 does not return jobs1531 when user is guest1532 does not return jobs1533 GET /projects/:id/pipelines/:pipeline_id/bridges1534 authorized user1535 returns pipeline bridges1536 returns correct values1537 returns pipeline data1538 returns downstream pipeline data1539 avoids N+1 queries1540 filter bridges1541 with one scope element1542 skip_before_request1543 with array of scope elements1544 skip_before_request1545 respond 400 when scope contains invalid state1546 is expected to respond with numeric status code bad_request1547 bridges in different pipelines1548 excludes bridges from other pipelines1549 unauthorized user1550 when user is not logged in1551 does not return bridges1552 when user is guest1553 does not return bridges1554 when user has no read access for pipeline1555 does not return bridges1556 when user has no read_build access for project1557 does not return bridges1558 GET /projects/:id/jobs/:job_id1559 authorized user1560 returns specific job data1561 returns pipeline data1562 behaves like a job with artifacts and trace1563 with artifacts and trace1564 returns artifacts and trace data1565 unauthorized user1566 does not return specific job data1567 DELETE /projects/:id/jobs/:job_id/artifacts1568 when user is anonymous1569 does not delete artifacts1570 returns status 401 (unauthorized)1571 with developer1572 does not delete artifacts1573 returns status 403 (forbidden)1574 with authorized user1575 deletes artifacts1576 returns status 204 (no content)1577 GET /projects/:id/jobs/:job_id/artifacts/:artifact_path1578 when job has artifacts1579 when user is anonymous1580 when project is public1581 allows to access artifacts1582 when project is public with builds access disabled1583 rejects access to artifacts1584 when project is private1585 rejects access and hides existence of artifacts1586 when user is authorized1587 returns a specific artifact file for a valid path1588 when job does not have artifacts1589 does not return job artifact file1590 GET /projects/:id/jobs/:job_id/artifacts1591 normal authentication1592 job with artifacts1593 does not return job artifacts if not uploaded1594 when artifacts are stored locally1595 authorized user1596 behaves like downloads artifact1597 returns specific job artifacts1598 unauthorized user1599 does not return specific job artifacts1600 when artifacts are stored remotely1601 when proxy download is enabled1602 responds with the workhorse send-url1603 when proxy download is disabled1604 returns location redirect1605 authorized user1606 returns the file remote URL1607 unauthorized user1608 does not return specific job artifacts1609 GET /projects/:id/artifacts/:ref_name/download?job=name1610 when not logged in1611 does not find a resource in a private project1612 when logging as guest1613 gives 4031614 non-existing job1615 has no such ref1616 behaves like not found1617 is expected to respond with numeric status code not_found1618 has no such job1619 behaves like not found1620 is expected to respond with numeric status code not_found1621 find proper job1622 with regular branch1623 behaves like a valid file1624 when artifacts are stored locally1625 is expected to respond with numeric status code ok1626 is expected to include {"Content-Transfer-Encoding" => "binary", "Content-Disposition" => "attachment; filename=\"ci_build_artifacts.zip\"; filename*=UTF-8''ci_build_artifacts.zip"}1627 when artifacts are stored remotely1628 returns location redirect1629 with branch name containing slash1630 behaves like a valid file1631 when artifacts are stored locally1632 is expected to respond with numeric status code ok1633 is expected to include {"Content-Transfer-Encoding" => "binary", "Content-Disposition" => "attachment; filename=\"ci_build_artifacts.zip\"; filename*=UTF-8''ci_build_artifacts.zip"}1634 when artifacts are stored remotely1635 returns location redirect1636 GET id/jobs/artifacts/:ref_name/raw/*artifact_path?job=name1637 when job has artifacts1638 when user is anonymous1639 when project is public1640 allows to access artifacts1641 when project is public with builds access disabled1642 rejects access to artifacts1643 when project is private1644 rejects access and hides existence of artifacts1645 when user is authorized1646 returns a specific artifact file for a valid path1647 with branch name containing slash1648 returns a specific artifact file for a valid path1649 non-existing job1650 has no such ref1651 behaves like not found1652 is expected to respond with numeric status code not_found1653 has no such job1654 behaves like not found1655 is expected to respond with numeric status code not_found1656 when job does not have artifacts1657 does not return job artifact file1658 GET /projects/:id/jobs/:job_id/trace1659 authorized user1660 when trace is in ObjectStorage1661 returns specific job trace1662 when trace is artifact1663 returns specific job trace1664 when trace is file1665 returns specific job trace1666 unauthorized user1667 does not return specific job trace1668 POST /projects/:id/jobs/:job_id/cancel1669 authorized user1670 user with :update_build persmission1671 cancels running or pending job1672 user without :update_build permission1673 does not cancel job1674 unauthorized user1675 does not cancel job1676 POST /projects/:id/jobs/:job_id/retry1677 authorized user1678 user with :update_build permission1679 retries non-running job1680 user without :update_build permission1681 does not retry job1682 unauthorized user1683 does not retry job1684 POST /projects/:id/jobs/:job_id/erase1685 job is erasable1686 erases job content1687 updates job1688 job is not erasable1689 responds with forbidden1690 when a developer erases a build1691 when the build was created by the developer1692 is expected to respond with numeric status code created1693 when the build was created by the other1694 is expected to respond with numeric status code forbidden1695 POST /projects/:id/jobs/:job_id/artifacts/keep1696 artifacts did not expire1697 keeps artifacts1698 no artifacts1699 responds with not found1700 POST /projects/:id/jobs/:job_id/play1701 on an playable job1702 when user is authorized to trigger a manual action1703 plays the job1704 when user is not authorized to trigger a manual action1705 when user does not have access to the project1706 does not trigger a manual action1707 when user is not allowed to trigger the manual action1708 does not trigger a manual action1709 on a non-playable job1710 returns a status code 400, Bad Request1711API::Labels1712 GET /projects/:id/labels1713 returns all available labels to the project1714 when the with_counts parameter is set1715 includes counts in the response1716 when the include_ancestor_groups parameter is not set1717 returns all available labels for the project, parent group and ancestor groups1718 when the include_ancestor_groups parameter is set to false1719 returns all available labels for the project and the parent group only1720 POST /projects/:id/labels1721 returns created label when all params1722 returns created label when only required params1723 creates a prioritized label1724 returns a 400 bad request if name not given1725 returns a 400 bad request if color not given1726 returns 400 for invalid color1727 returns 400 for too long color code1728 returns 400 for invalid name1729 returns 409 if label already exists in group1730 returns 400 for invalid priority1731 returns 409 if label already exists in project1732 DELETE /projects/:id/labels1733 returns 404 for non existing label1734 returns 400 for wrong parameters1735 fails if label_id and name are given in params1736 behaves like label delete API1737 returns 204 for existing label (deprecated route)1738 returns 204 for existing label (rest route)1739 behaves like label delete API1740 returns 204 for existing label (deprecated route)1741 returns 204 for existing label (rest route)1742 behaves like 412 response1743 for a modified ressource1744 returns 412 with a JSON error1745 for an unmodified ressource1746 returns 204 with an empty body1747 PUT /projects/:id/labels1748 returns 404 if label does not exist1749 returns 404 if label by id does not exist1750 returns 400 if no label name and id is given1751 fails if label_id and name are given in params1752 when using name1753 behaves like label update API1754 returns 200 if name is changed (deprecated route)1755 returns 200 if colors is changed (deprecated route)1756 returns 200 if a priority is added (deprecated route)1757 returns 400 if no new parameters given (deprecated route)1758 returns 400 when color code is too short (deprecated route)1759 returns 400 for too long color code (deprecated route)1760 returns 400 for invalid priority (deprecated route)1761 returns 200 if name and colors and description are changed (deprecated route)1762 returns 400 for invalid name (deprecated route)1763 returns 200 if description is changed (deprecated route)1764 returns 200 if priority is changed (deprecated route)1765 returns 200 if name is changed (rest route)1766 returns 200 if colors is changed (rest route)1767 returns 200 if a priority is added (rest route)1768 returns 400 if no new parameters given (rest route)1769 returns 400 when color code is too short (rest route)1770 returns 400 for too long color code (rest route)1771 returns 400 for invalid priority (rest route)1772 returns 200 if name and colors and description are changed (rest route)1773 returns 400 for invalid name (rest route)1774 returns 200 if description is changed (rest route)1775 returns 200 if priority is changed (rest route)1776 returns 200 if a priority is removed (deprecated route)1777 returns 200 if a priority is removed (rest route)1778 when using label_id1779 behaves like label update API1780 returns 200 if name is changed (deprecated route)1781 returns 200 if colors is changed (deprecated route)1782 returns 200 if a priority is added (deprecated route)1783 returns 400 if no new parameters given (deprecated route)1784 returns 400 when color code is too short (deprecated route)1785 returns 400 for too long color code (deprecated route)1786 returns 400 for invalid priority (deprecated route)1787 returns 200 if name and colors and description are changed (deprecated route)1788 returns 400 for invalid name (deprecated route)1789 returns 200 if description is changed (deprecated route)1790 returns 200 if priority is changed (deprecated route)1791 returns 200 if name is changed (rest route)1792 returns 200 if colors is changed (rest route)1793 returns 200 if a priority is added (rest route)1794 returns 400 if no new parameters given (rest route)1795 returns 400 when color code is too short (rest route)1796 returns 400 for too long color code (rest route)1797 returns 400 for invalid priority (rest route)1798 returns 200 if name and colors and description are changed (rest route)1799 returns 400 for invalid name (rest route)1800 returns 200 if description is changed (rest route)1801 returns 200 if priority is changed (rest route)1802 returns 200 if a priority is removed (deprecated route)1803 returns 200 if a priority is removed (rest route)1804 PUT /projects/:id/labels/promote1805 returns 200 if label is promoted1806 returns 200 if group label already exists1807 returns 403 if guest promotes label1808 returns 404 if label does not exist1809 returns 400 if no label name given1810 POST /projects/:id/labels/:label_id/subscribe1811 when label_id is a label title1812 subscribes to the label1813 when label_id is a label ID1814 subscribes to the label1815 when user is already subscribed to label1816 returns 3041817 when label ID is not found1818 returns 404 error1819 POST /projects/:id/labels/:label_id/unsubscribe1820 when label_id is a label title1821 unsubscribes from the label1822 when label_id is a label ID1823 unsubscribes from the label1824 when user is already unsubscribed from label1825 returns 3041826 when label ID is not found1827 returns 404 error1828API::Services1829 GET /projects/:id/services1830 returns authentication error when unauthenticated1831 returns error when authenticated but user is not a project owner1832 project with services1833 returns a list of all active services1834 PUT /projects/:id/services/alerts1835 updates alerts settings1836 returns if required fields missing1837 DELETE /projects/:id/services/alerts1838 deletes alerts1839 GET /projects/:id/services/alerts1840 returns authentication error when unauthenticated1841 returns all properties of service alerts1842 returns error when authenticated but not a project owner1843 PUT /projects/:id/services/asana1844 updates asana settings1845 returns if required fields missing1846 DELETE /projects/:id/services/asana1847 deletes asana1848 GET /projects/:id/services/asana1849 returns authentication error when unauthenticated1850 returns all properties of service asana1851 returns error when authenticated but not a project owner1852 PUT /projects/:id/services/assembla1853 updates assembla settings1854 returns if required fields missing1855 DELETE /projects/:id/services/assembla1856 deletes assembla1857 GET /projects/:id/services/assembla1858 returns authentication error when unauthenticated1859 returns all properties of service assembla1860 returns error when authenticated but not a project owner1861 PUT /projects/:id/services/bamboo1862 updates bamboo settings1863 returns if required fields missing1864 DELETE /projects/:id/services/bamboo1865 deletes bamboo1866 GET /projects/:id/services/bamboo1867 returns authentication error when unauthenticated1868 returns all properties of service bamboo1869 returns error when authenticated but not a project owner1870 PUT /projects/:id/services/bugzilla1871 updates bugzilla settings1872 returns if required fields missing1873 DELETE /projects/:id/services/bugzilla1874 deletes bugzilla1875 GET /projects/:id/services/bugzilla1876 returns authentication error when unauthenticated1877 returns all properties of service bugzilla1878 returns error when authenticated but not a project owner1879 PUT /projects/:id/services/buildkite1880 updates buildkite settings1881 returns if required fields missing1882 DELETE /projects/:id/services/buildkite1883 deletes buildkite1884 GET /projects/:id/services/buildkite1885 returns authentication error when unauthenticated1886 returns all properties of service buildkite1887 returns error when authenticated but not a project owner1888 PUT /projects/:id/services/campfire1889 updates campfire settings1890 returns if required fields missing1891 DELETE /projects/:id/services/campfire1892 deletes campfire1893 GET /projects/:id/services/campfire1894 returns authentication error when unauthenticated1895 returns all properties of service campfire1896 returns error when authenticated but not a project owner1897 PUT /projects/:id/services/confluence1898 updates confluence settings1899 returns if required fields missing1900 DELETE /projects/:id/services/confluence1901 deletes confluence1902 GET /projects/:id/services/confluence1903 returns authentication error when unauthenticated1904 returns all properties of service confluence1905 returns error when authenticated but not a project owner1906 PUT /projects/:id/services/custom-issue-tracker1907 updates custom_issue_tracker settings1908 returns if required fields missing1909 DELETE /projects/:id/services/custom-issue-tracker1910 deletes custom_issue_tracker1911 GET /projects/:id/services/custom-issue-tracker1912 returns authentication error when unauthenticated1913 returns all properties of service custom_issue_tracker1914 returns error when authenticated but not a project owner1915 PUT /projects/:id/services/discord1916 updates discord settings1917 returns if required fields missing1918 DELETE /projects/:id/services/discord1919 deletes discord1920 GET /projects/:id/services/discord1921 returns authentication error when unauthenticated1922 returns all properties of service discord1923 returns error when authenticated but not a project owner1924 PUT /projects/:id/services/drone-ci1925 updates drone_ci settings1926 returns if required fields missing1927 DELETE /projects/:id/services/drone-ci1928 deletes drone_ci1929 GET /projects/:id/services/drone-ci1930 returns authentication error when unauthenticated1931 returns all properties of service drone_ci1932 returns error when authenticated but not a project owner1933 PUT /projects/:id/services/emails-on-push1934 updates emails_on_push settings1935 returns if required fields missing1936 DELETE /projects/:id/services/emails-on-push1937 deletes emails_on_push1938 GET /projects/:id/services/emails-on-push1939 returns authentication error when unauthenticated1940 returns all properties of service emails_on_push1941 returns error when authenticated but not a project owner1942 PUT /projects/:id/services/external-wiki1943 updates external_wiki settings1944 returns if required fields missing1945 DELETE /projects/:id/services/external-wiki1946 deletes external_wiki1947 GET /projects/:id/services/external-wiki1948 returns authentication error when unauthenticated1949 returns all properties of service external_wiki1950 returns error when authenticated but not a project owner1951 PUT /projects/:id/services/flowdock1952 updates flowdock settings1953 returns if required fields missing1954 DELETE /projects/:id/services/flowdock1955 deletes flowdock1956 GET /projects/:id/services/flowdock1957 returns authentication error when unauthenticated1958 returns all properties of service flowdock1959 returns error when authenticated but not a project owner1960 PUT /projects/:id/services/github1961 updates github settings1962 returns if required fields missing1963 DELETE /projects/:id/services/github1964 deletes github1965 GET /projects/:id/services/github1966 returns authentication error when unauthenticated1967 returns all properties of service github1968 returns error when authenticated but not a project owner1969 PUT /projects/:id/services/hangouts-chat1970 updates hangouts_chat settings1971 returns if required fields missing1972 DELETE /projects/:id/services/hangouts-chat1973 deletes hangouts_chat1974 GET /projects/:id/services/hangouts-chat1975 returns authentication error when unauthenticated1976 returns all properties of service hangouts_chat1977 returns error when authenticated but not a project owner1978 PUT /projects/:id/services/hipchat1979 updates hipchat settings1980 returns if required fields missing1981 DELETE /projects/:id/services/hipchat1982 deletes hipchat1983 GET /projects/:id/services/hipchat1984 returns authentication error when unauthenticated1985 returns all properties of service hipchat1986 returns error when authenticated but not a project owner1987 PUT /projects/:id/services/irker1988 updates irker settings1989 returns if required fields missing1990 DELETE /projects/:id/services/irker1991 deletes irker1992 GET /projects/:id/services/irker1993 returns authentication error when unauthenticated1994 returns all properties of service irker1995 returns error when authenticated but not a project owner1996 PUT /projects/:id/services/jenkins1997 updates jenkins settings1998 returns if required fields missing1999 DELETE /projects/:id/services/jenkins2000 deletes jenkins2001 GET /projects/:id/services/jenkins2002 returns authentication error when unauthenticated2003 returns all properties of service jenkins2004 returns error when authenticated but not a project owner2005 PUT /projects/:id/services/jira2006 updates jira settings2007 returns if required fields missing2008 DELETE /projects/:id/services/jira2009 deletes jira2010 GET /projects/:id/services/jira2011 returns authentication error when unauthenticated2012 returns all properties of service jira2013 returns error when authenticated but not a project owner2014 PUT /projects/:id/services/mattermost2015 updates mattermost settings2016 returns if required fields missing2017 DELETE /projects/:id/services/mattermost2018 deletes mattermost2019 GET /projects/:id/services/mattermost2020 returns authentication error when unauthenticated2021 returns all properties of service mattermost2022 returns error when authenticated but not a project owner2023 PUT /projects/:id/services/mattermost-slash-commands2024 updates mattermost_slash_commands settings2025 returns if required fields missing2026 DELETE /projects/:id/services/mattermost-slash-commands2027 deletes mattermost_slash_commands2028 GET /projects/:id/services/mattermost-slash-commands2029 returns authentication error when unauthenticated2030 returns all properties of service mattermost_slash_commands2031 returns error when authenticated but not a project owner2032 PUT /projects/:id/services/microsoft-teams2033 updates microsoft_teams settings2034 returns if required fields missing2035 DELETE /projects/:id/services/microsoft-teams2036 deletes microsoft_teams2037 GET /projects/:id/services/microsoft-teams2038 returns authentication error when unauthenticated2039 returns all properties of service microsoft_teams2040 returns error when authenticated but not a project owner2041 PUT /projects/:id/services/packagist2042 updates packagist settings2043 returns if required fields missing2044 DELETE /projects/:id/services/packagist2045 deletes packagist2046 GET /projects/:id/services/packagist2047 returns authentication error when unauthenticated2048 returns all properties of service packagist2049 returns error when authenticated but not a project owner2050 PUT /projects/:id/services/pipelines-email2051 updates pipelines_email settings2052 returns if required fields missing2053 DELETE /projects/:id/services/pipelines-email2054 deletes pipelines_email2055 GET /projects/:id/services/pipelines-email2056 returns authentication error when unauthenticated2057 returns all properties of service pipelines_email2058 returns error when authenticated but not a project owner2059 PUT /projects/:id/services/pivotaltracker2060 updates pivotaltracker settings2061 returns if required fields missing2062 DELETE /projects/:id/services/pivotaltracker2063 deletes pivotaltracker2064 GET /projects/:id/services/pivotaltracker2065 returns authentication error when unauthenticated2066 returns all properties of service pivotaltracker2067 returns error when authenticated but not a project owner2068 PUT /projects/:id/services/prometheus2069 updates prometheus settings2070 returns if required fields missing2071 DELETE /projects/:id/services/prometheus2072 deletes prometheus2073 GET /projects/:id/services/prometheus2074 returns authentication error when unauthenticated2075 returns all properties of service prometheus2076 returns error when authenticated but not a project owner2077 PUT /projects/:id/services/pushover2078 updates pushover settings2079 returns if required fields missing2080 DELETE /projects/:id/services/pushover2081 deletes pushover2082 GET /projects/:id/services/pushover2083 returns authentication error when unauthenticated2084 returns all properties of service pushover2085 returns error when authenticated but not a project owner2086 PUT /projects/:id/services/redmine2087 updates redmine settings2088 returns if required fields missing2089 DELETE /projects/:id/services/redmine2090 deletes redmine2091 GET /projects/:id/services/redmine2092 returns authentication error when unauthenticated2093 returns all properties of service redmine2094 returns error when authenticated but not a project owner2095 PUT /projects/:id/services/slack2096 updates slack settings2097 returns if required fields missing2098 DELETE /projects/:id/services/slack2099 deletes slack2100 GET /projects/:id/services/slack2101 returns authentication error when unauthenticated2102 returns all properties of service slack2103 returns error when authenticated but not a project owner2104 PUT /projects/:id/services/slack-slash-commands2105 updates slack_slash_commands settings2106 returns if required fields missing2107 DELETE /projects/:id/services/slack-slash-commands2108 deletes slack_slash_commands2109 GET /projects/:id/services/slack-slash-commands2110 returns authentication error when unauthenticated2111 returns all properties of service slack_slash_commands2112 returns error when authenticated but not a project owner2113 PUT /projects/:id/services/teamcity2114 updates teamcity settings2115 returns if required fields missing2116 DELETE /projects/:id/services/teamcity2117 deletes teamcity2118 GET /projects/:id/services/teamcity2119 returns authentication error when unauthenticated2120 returns all properties of service teamcity2121 returns error when authenticated but not a project owner2122 PUT /projects/:id/services/unify-circuit2123 updates unify_circuit settings2124 returns if required fields missing2125 DELETE /projects/:id/services/unify-circuit2126 deletes unify_circuit2127 GET /projects/:id/services/unify-circuit2128 returns authentication error when unauthenticated2129 returns all properties of service unify_circuit2130 returns error when authenticated but not a project owner2131 PUT /projects/:id/services/webex-teams2132 updates webex_teams settings2133 returns if required fields missing2134 DELETE /projects/:id/services/webex-teams2135 deletes webex_teams2136 GET /projects/:id/services/webex-teams2137 returns authentication error when unauthenticated2138 returns all properties of service webex_teams2139 returns error when authenticated but not a project owner2140 PUT /projects/:id/services/youtrack2141 updates youtrack settings2142 returns if required fields missing2143 DELETE /projects/:id/services/youtrack2144 deletes youtrack2145 GET /projects/:id/services/youtrack2146 returns authentication error when unauthenticated2147 returns all properties of service youtrack2148 returns error when authenticated but not a project owner2149 POST /projects/:id/services/:slug/trigger2150 Mattermost Service2151 no service is available2152 returns a not found message2153 the service exists2154 the service is not active2155 when the service is inactive2156 the service is active2157 returns status 2002158 when the project can not be found2159 returns a generic 4042160 Slack Service2161 returns status 2002162 Mattermost service2163 accepts a username for update2164 Microsoft Teams service2165 accepts branches_to_be_notified for update2166 accepts notify_only_broken_pipelines for update2167API::ProjectSnippets2168 GET /projects/:project_id/snippets/:id/user_agent_detail2169 exposes known attributes2170 respects project scoping2171 returns unauthorized for non-admin users2172 with snippets disabled2173 behaves like 403 response2174 returns 4032175 GET /projects/:project_id/snippets/2176 returns all snippets available to team member2177 hides private snippets from regular user2178 with snippets disabled2179 behaves like 403 response2180 returns 4032181 GET /projects/:project_id/snippets/:id2182 returns snippet json2183 returns 404 for invalid snippet id2184 with snippets disabled2185 behaves like 403 response2186 returns 4032187 behaves like snippet_multiple_files feature disabled2188 does not return files attributes2189 POST /projects/:project_id/snippets/2190 with an external user2191 that belongs to the project2192 creates a new snippet2193 that does not belong to the project2194 does not create a new snippet2195 with a regular user2196 creates a new snippet2197 behaves like project snippet repository actions2198 creates repository2199 commit the files to the repository2200 with an admin2201 creates a new snippet2202 returns 400 for missing parameters2203 returns 400 if title is blank2204 behaves like project snippet repository actions2205 creates repository2206 commit the files to the repository2207 behaves like snippet creation with files parameter2208 returns 400 if both files and content are provided2209 returns 400 when neither files or content are provided2210 path: ".gitattributes", content: "file content", status: :created, error: nil2211 responds correctly2212 path: "valid/path/file.rb", content: "file content", status: :created, error: nil2213 responds correctly2214 path: ".gitattributes", content: nil, status: :bad_request, error: "files[0][content] is empty"2215 responds correctly2216 path: ".gitattributes", content: "", status: :bad_request, error: "files[0][content] is empty"2217 responds correctly2218 path: "", content: "file content", status: :bad_request, error: "files[0][file_path] is empty"2219 responds correctly2220 path: nil, content: "file content", status: :bad_request, error: "files[0][file_path] should be a valid file path, files[0][file_path] is empty"2221 responds correctly2222 path: "../../etc/passwd", content: "file content", status: :bad_request, error: "files[0][file_path] should be a valid file path"2223 responds correctly2224 behaves like snippet creation without files parameter2225 allows file_name and content parameters2226 returns 400 if file_name and content are not both provided2227 returns 400 if content is blank2228 when save fails because the repository could not be created2229 returns 4002230 when the snippet is spam2231 when the snippet is private2232 creates the snippet2233 when the snippet is public2234 rejects the snippet2235 creates a spam log2236 with snippets disabled2237 behaves like 403 response2238 returns 4032239 PUT /projects/:project_id/snippets/:id/2240 updates snippet2241 updates snippet with content parameter2242 returns 404 for invalid snippet id2243 returns 400 for missing parameters2244 returns 400 if content is blank2245 returns 400 if title is blank2246 behaves like update with repository actions2247 when the repository exists2248 commits the changes to the repository2249 when the repository does not exist2250 when update attributes does not include file_name or content2251 does not create the repository2252 when update attributes include file_name or content2253 creates the repository2254 commits the file to the repository2255 when save fails due to a repository creation error2256 returns 4002257 does not save the changes to the snippet object2258 when the snippet is spam2259 when the snippet is private2260 creates the snippet2261 when the snippet is public2262 rejects the snippet2263 creates a spam log2264 when the private snippet is made public2265 rejects the snippet2266 creates a spam log2267 with snippets disabled2268 behaves like 403 response2269 returns 4032270 DELETE /projects/:project_id/snippets/:id/2271 deletes snippet2272 returns 404 for invalid snippet id2273 behaves like 412 response2274 for a modified ressource2275 returns 412 with a JSON error2276 for an unmodified ressource2277 returns 204 with an empty body2278 with snippets disabled2279 behaves like 403 response2280 returns 4032281 GET /projects/:project_id/snippets/:id/raw2282 returns raw text2283 returns 404 for invalid snippet id2284 with snippets disabled2285 behaves like 403 response2286 returns 4032287 behaves like snippet blob content2288 returns content from repository2289 when snippet repository is empty2290 returns content from database2291 GET /projects/:project_id/snippets/:id/files/:ref/:file_path/raw2292 behaves like raw snippet files2293 with no user2294 requires authentication2295 when not authorized2296 behaves like not found2297 returns 4042298 with an invalid snippet ID2299 behaves like not found2300 returns 4042301 with valid params2302 returns the raw file info2303 with invalid params2304 file_path: "%2Egitattributes", ref: "invalid-ref", status: :not_found, key: "message", message: "404 Reference Not Found"2305 is expected to respond with numeric status code not_found2306 is expected to eq "404 Reference Not Found"2307 file_path: "%2Egitattributes", ref: nil, status: :not_found, key: "error", message: "404 Not Found"2308 is expected to respond with numeric status code not_found2309 is expected to eq "404 Not Found"2310 file_path: "%2Egitattributes", ref: "", status: :not_found, key: "error", message: "404 Not Found"2311 is expected to respond with numeric status code not_found2312 is expected to eq "404 Not Found"2313 file_path: "doesnotexist.rb", ref: "master", status: :not_found, key: "message", message: "404 File Not Found"2314 is expected to respond with numeric status code not_found2315 is expected to eq "404 File Not Found"2316 file_path: "/does/not/exist.rb", ref: "master", status: :not_found, key: "error", message: "404 Not Found"2317 is expected to respond with numeric status code not_found2318 is expected to eq "404 Not Found"2319 file_path: "%2E%2E%2Fetc%2Fpasswd", ref: "master", status: :bad_request, key: "error", message: "file_path should be a valid file path"2320 is expected to respond with numeric status code bad_request2321 is expected to eq "file_path should be a valid file path"2322 file_path: "%2Fetc%2Fpasswd", ref: "master", status: :bad_request, key: "error", message: "file_path should be a valid file path"2323 is expected to respond with numeric status code bad_request2324 is expected to eq "file_path should be a valid file path"2325 file_path: "../../etc/passwd", ref: "master", status: :not_found, key: "error", message: "404 Not Found"2326 is expected to respond with numeric status code not_found2327 is expected to eq "404 Not Found"2328getting projects2329 behaves like a graphql namespace2330 includes the packages size if the user can read the statistics2331 behaves like a working graphql query2332 returns a successful response2333 with no user2334 finds only public projects2335 when the namespace is a user2336 behaves like a graphql namespace2337 includes the packages size if the user can read the statistics2338 behaves like a working graphql query2339 returns a successful response2340 with no user2341 finds only public projects2342 when not including subgroups2343 behaves like a graphql namespace2344 includes the packages size if the user can read the statistics2345 behaves like a working graphql query2346 returns a successful response2347 with no user2348 finds only public projects2349Groups::ChildrenController2350 GET #index2351 for projects2352 as a user2353 shows all children2354 being member of private subgroup2355 shows public and private children the user is member of2356 as a guest2357 shows the public children2358 for subgroups2359 as a user2360 shows all children2361 being member of private subgroup2362 shows public and private children the user is member of2363 as a guest2364 shows the public children2365 filtering children2366 expands the tree for matching projects2367 expands the tree for matching subgroups2368 merges the trees correctly2369 expands the tree upto a specified parent2370 returns an array with one element when only one result is matched2371 returns an empty array when there are no search results2372 succeeds if multiple pages contain matching subgroups2373 includes pagination headers2374 queries per rendered element2375 queries the expected amount for a group row2376 queries the expected amount for a project row2377 when rendering hierarchies2378 queries the expected amount when nested rows are increased for a group2379 queries the expected amount when a new group match is added2380 queries the expected amount when nested rows are increased for a project2381 pagination2382 with only projects2383 has projects on the first page2384 has projects on the second page2385 with subgroups and projects2386 contains all subgroups2387 contains the project and group on the second page2388 with a mixed first page2389 correctly calculates the counts2390 external authorization2391 works when external authorization service is enabled2392API::ProjectClusters2393 GET /projects/:id/clusters2394 non-authorized user2395 responds with 4032396 authorized user2397 includes pagination headers2398 only includes authorized clusters2399 GET /projects/:id/clusters/:cluster_id2400 non-authorized user2401 responds with 4032402 authorized user2403 returns specific cluster2404 returns cluster information2405 returns project information2406 returns kubernetes platform information2407 returns user information2408 returns GCP provider information2409 when cluster has no provider2410 does not include GCP provider info2411 with non-existing cluster2412 returns 4042413 POST /projects/:id/clusters/user2414 non-authorized user2415 responds with 4032416 authorized user2417 with valid params2418 creates a new Cluster::Cluster2419 when user does not indicate authorization type2420 defaults to RBAC2421 when user sets authorization type as ABAC2422 creates an ABAC cluster2423 current user does not have access to management_project_id2424 responds with 4002425 returns validation errors2426 with invalid params2427 does not create a new Clusters::Cluster2428 non-authorized user2429 responds with 4032430 POST /projects/:id/clusters/user with multiple clusters2431 when another cluster exists2432 responds with 2012433 allows multiple clusters to be associated to project2434 PUT /projects/:id/clusters/:cluster_id2435 non-authorized user2436 responds with 4032437 authorized user2438 with valid params2439 updates cluster attributes2440 with invalid params2441 does not update cluster attributes2442 returns validation errors2443 current user does not have access to management_project_id2444 returns validation errors2445 with a GCP cluster2446 when user tries to change GCP specific fields2447 returns validation error2448 when user tries to change namespace2449 responds with 2002450 with an user cluster2451 updates platform kubernetes attributes2452 with a cluster that does not belong to user2453 responds with 4042454 DELETE /projects/:id/clusters/:cluster_id2455 non-authorized user2456 responds with 4032457 authorized user2458 deletes the cluster2459 with a cluster that does not belong to user2460 responds with 4042461Projects::EnvironmentsController2462 GET index2463 when a request for the HTML is made2464 responds with status code 2002465 expires etag cache to force reload environments list2466 when requesting JSON response for folders2467 with default parameters2468 responds with a flat payload describing available environments2469 sets the polling interval header2470 when a folder-based nested structure is requested2471 responds with a payload containing the latest environment for each folder2472 when requesting available environments scope2473 responds with a payload describing available environments2474 contains values describing environment scopes sizes2475 when requesting stopped environments scope2476 responds with a payload describing stopped environments2477 contains values describing environment scopes sizes2478 GET folder2479 when using default format2480 responds with HTML2481 when using JSON format2482 sorts the subfolders lexicographically2483 GET show2484 with valid id2485 responds with a status code 2002486 with invalid id2487 responds with a status code 4042488 GET edit2489 responds with a status code 2002490 PATCH #update2491 responds with a 3022492 PATCH #stop2493 when env not available2494 returns 4042495 when stop action2496 returns action url2497 when no stop action2498 returns env url2499 POST #cancel_auto_stop2500 when environment is set as auto-stop2501 behaves like successful response for #cancel_auto_stop2502 when request is html2503 redirects to show page2504 expires etag caching2505 when request is js2506 responds as ok2507 expires etag caching2508 when user is reporter2509 shows NOT Found2510 when environment is not set as auto-stop2511 behaves like failed response for #cancel_auto_stop2512 when request is html2513 redirects to show page2514 when request is js2515 responds as unprocessable entity2516 GET #terminal2517 with valid id2518 responds with a status code 2002519 loads the terminals for the environment2520 with invalid id2521 responds with a status code 4042522 GET #terminal_websocket_authorize2523 with valid workhorse signature2524 and valid id2525 returns the first terminal for the environment2526 and invalid id2527 returns 4042528 with invalid workhorse signature2529 aborts with an exception2530 GET #metrics_redirect2531 redirects to metrics dashboard page2532 GET #metrics2533 when environment has no metrics2534 redirects to metrics dashboard page2535 when requesting metrics as JSON2536 returns a metrics JSON document2537 when environment has some metrics2538 returns a metrics JSON document2539 permissions2540 checks :metrics_dashboard ability2541 with anonymous user and public dashboard visibility2542 redirects to metrics dashboard page2543 GET #additional_metrics2544 when environment has no metrics2545 when requesting metrics as JSON2546 returns a metrics JSON document2547 when environment has some metrics2548 returns a metrics JSON document2549 when time params are missing2550 raises an error when window params are missing2551 when only one time param is provided2552 raises an error when start is missing2553 raises an error when end is missing2554 permissions2555 checks :metrics_dashboard ability2556 with anonymous user and public dashboard visibility2557 does not fail2558 GET #metrics_dashboard2559 behaves like the default dashboard2560 behaves like includes all dashboards2561 includes info for all findable dashboard2562 behaves like GET #metrics_dashboard for dashboard2563 returns correct dashboard2564 behaves like GET #metrics_dashboard correctly formatted response2565 returns a json object with the correct keys2566 behaves like dashboard can be specified2567 when dashboard is specified2568 behaves like error response2569 behaves like GET #metrics_dashboard correctly formatted response2570 returns a json object with the correct keys2571 when the project dashboard is available2572 behaves like the specified dashboard2573 behaves like includes all dashboards2574 includes info for all findable dashboard2575 behaves like GET #metrics_dashboard for dashboard2576 returns correct dashboard2577 behaves like GET #metrics_dashboard correctly formatted response2578 returns a json object with the correct keys2579 when the dashboard cannot not be processed2580 behaves like error response2581 behaves like GET #metrics_dashboard correctly formatted response2582 returns a json object with the correct keys2583 when the specified dashboard is the default dashboard2584 behaves like the default dashboard2585 behaves like includes all dashboards2586 includes info for all findable dashboard2587 behaves like GET #metrics_dashboard for dashboard2588 returns correct dashboard2589 behaves like GET #metrics_dashboard correctly formatted response2590 returns a json object with the correct keys2591 behaves like dashboard can be embedded2592 when the embedded flag is included2593 behaves like the default dynamic dashboard2594 behaves like specified dashboard embed2595 contains only the specified charts2596 behaves like 200 response2597 behaves like GET #metrics_dashboard correctly formatted response2598 returns a json object with the correct keys2599 when incomplete dashboard params are provided2600 behaves like the default dynamic dashboard2601 behaves like specified dashboard embed2602 contains only the specified charts2603 behaves like 200 response2604 behaves like GET #metrics_dashboard correctly formatted response2605 returns a json object with the correct keys2606 when invalid params are provided2607 behaves like the default dynamic dashboard2608 behaves like specified dashboard embed2609 contains only the specified charts2610 behaves like 200 response2611 behaves like GET #metrics_dashboard correctly formatted response2612 returns a json object with the correct keys2613 when the dashboard is correctly specified2614 behaves like error response2615 behaves like GET #metrics_dashboard correctly formatted response2616 returns a json object with the correct keys2617 and exists2618 behaves like specified dashboard embed2619 contains only the specified charts2620 behaves like 200 response2621 behaves like GET #metrics_dashboard correctly formatted response2622 returns a json object with the correct keys2623 with anonymous user and public dashboard visibility2624 behaves like the default dashboard2625 behaves like includes all dashboards2626 includes info for all findable dashboard2627 behaves like GET #metrics_dashboard for dashboard2628 returns correct dashboard2629 behaves like GET #metrics_dashboard correctly formatted response2630 returns a json object with the correct keys2631 permissions2632 checks :metrics_dashboard ability2633 GET #search2634 responds with status code 2002635 returns matched results2636 when query is review2637 returns matched results2638 when query is empty2639 returns matched results2640 when query is review/patch-32641 responds with status code 2042642 when query is partially matched in the middle of environment name2643 responds with status code 2042644 when query contains a wildcard character2645 prevents wildcard injection2646 when query matches case insensitively2647 returns matched results2648Projects::DeployKeysController2649 GET index2650 when html requested2651 redirects to project settings with the correct anchor2652 when json requested2653 when user has access to all projects where deploy keys are used2654 returns json in a correct format2655 when user has no access to all projects where deploy keys are used2656 returns json in a correct format2657 POST create2658 creates a new deploy key for the project2659 redirects to project settings with the correct anchor2660 when the deploy key is invalid2661 shows an alert with the validations errors2662 /enable/:id2663 with anonymous user2664 redirects to login2665 with user with no permission2666 returns 4042667 with user with permission2668 returns 3022669 returns 4042670 with admin2671 returns 3022672 /disable/:id2673 with anonymous user2674 redirects to login2675 with user with no permission2676 returns 4042677 with user with permission2678 returns 3022679 returns 4042680 with admin2681 returns 3022682 PUT update2683 with project maintainer2684 public deploy key attached to project2685 does not update the title of the deploy key2686 updates can_push of deploy_keys_project2687 with admin2688 public deploy key attached to project2689 updates the title of the deploy key2690 updates can_push of deploy_keys_project2691 when a different deploy key id param is injected2692 and that deploy key id exists2693 does not update the can_push attribute2694 and that deploy key id does not exist2695 returns 4042696 with admin as project maintainer2697 public deploy key attached to project2698 updates can_push of deploy_keys_project2699 admin mode disabled2700 does not update the title of the deploy key2701 admin mode enabled2702 updates the title of the deploy key2703Import::GiteaController2704 GET new2705 behaves like a GitHub-ish import controller: GET new2706 redirects to status if we already have a token2707 renders the :new page if no token is present in session2708 POST personal_access_token2709 behaves like a GitHub-ish import controller: POST personal_access_token2710 updates access token2711 strips access token with spaces2712 GET status2713 behaves like a GitHub-ish import controller: GET status2714 returns variables for json request2715 does not show already added project2716 touches the etag cache store2717 handles an invalid access token2718 does not produce N+1 database queries2719 requests provider repos list2720 when filtering2721 filters list of repositories by name2722 when user input contains html2723 sanitizes user input2724 when host url is local or not http2725 denies network request2726 denies network request2727 denies network request2728 POST create2729 behaves like a GitHub-ish import controller: POST create2730 returns 200 response when the project is imported successfully2731 returns 422 response with the base error when the project could not be imported2732 touches the etag cache store2733 when the repository owner is the provider user2734 when the provider user and GitLab user's usernames match2735 takes the current user's namespace2736 when the provider user and GitLab user's usernames don't match2737 takes the current user's namespace2738 when the repository owner is not the provider user2739 when a namespace with the provider user's username already exists2740 when the namespace is owned by the GitLab user2741 takes the existing namespace2742 when the namespace is not owned by the GitLab user2743 creates a project using user's namespace2744 when a namespace with the provider user's username doesn't exist2745 when current user can create namespaces2746 creates the namespace2747 takes the new namespace2748 when current user can't create namespaces2749 doesn't create the namespace2750 takes the current user's namespace2751 user has chosen a namespace and name for the project2752 takes the selected namespace and name2753 takes the selected name and default namespace2754 user has chosen an existing nested namespace and name for the project2755 takes the selected namespace and name2756 user has chosen a non-existent nested namespaces and name for the project2757 takes the selected namespace and name2758 creates the namespaces2759 new namespace has the right parent2760 user has chosen existent and non-existent nested namespaces and name for the project2761 takes the selected namespace and name2762 creates the namespaces2763 does not create a new namespace under the user namespace2764 user cannot create a subgroup inside a group is not a member of2765 does not take the selected namespace and name2766 does not create the namespaces2767 user can use a group without having permissions to create a group2768 takes the selected namespace and name2769 when user can not create projects in the chosen namespace2770 returns 422 response2771 behaves like project import rate limiter2772 when limit exceeds2773 notifies and redirects user2774 GET realtime_changes2775 behaves like a GitHub-ish import controller: GET realtime_changes2776 sets a Poll-Interval header2777Updating the container expiration policy2778 post graphql mutation2779 with existing container expiration policy2780 user_role: :maintainer, shared_examples_name: "accepting the mutation request updating the container expiration policy"2781 behaves like accepting the mutation request updating the container expiration policy2782 behaves like updating the container expiration policy attributes2783 updates the container expiration policy2784 behaves like not creating the container expiration policy2785 doesn't create the container expiration policy2786 behaves like returning a success2787 returns the updated container expiration policy2788 behaves like returning response status2789 returns success2790 behaves like rejecting invalid regex for2791 for field name_regex2792 returns an error2793 behaves like returning response status2794 returns success2795 behaves like not creating the container expiration policy2796 doesn't create the container expiration policy2797 behaves like rejecting invalid regex for2798 for field name_regex_keep2799 returns an error2800 behaves like returning response status2801 returns success2802 behaves like not creating the container expiration policy2803 doesn't create the container expiration policy2804 user_role: :developer, shared_examples_name: "accepting the mutation request updating the container expiration policy"2805 behaves like accepting the mutation request updating the container expiration policy2806 behaves like updating the container expiration policy attributes2807 updates the container expiration policy2808 behaves like not creating the container expiration policy2809 doesn't create the container expiration policy2810 behaves like returning a success2811 returns the updated container expiration policy2812 behaves like returning response status2813 returns success2814 behaves like rejecting invalid regex for2815 for field name_regex2816 returns an error2817 behaves like returning response status2818 returns success2819 behaves like not creating the container expiration policy2820 doesn't create the container expiration policy2821 behaves like rejecting invalid regex for2822 for field name_regex_keep2823 returns an error2824 behaves like returning response status2825 returns success2826 behaves like not creating the container expiration policy2827 doesn't create the container expiration policy2828 user_role: :reporter, shared_examples_name: "denying the mutation request"2829 behaves like denying the mutation request2830 returns no response2831 behaves like not creating the container expiration policy2832 doesn't create the container expiration policy2833 behaves like returning response status2834 returns success2835 user_role: :guest, shared_examples_name: "denying the mutation request"2836 behaves like denying the mutation request2837 returns no response2838 behaves like not creating the container expiration policy2839 doesn't create the container expiration policy2840 behaves like returning response status2841 returns success2842 user_role: :anonymous, shared_examples_name: "denying the mutation request"2843 behaves like denying the mutation request2844 returns no response2845 behaves like not creating the container expiration policy2846 doesn't create the container expiration policy2847 behaves like returning response status2848 returns success2849 without existing container expiration policy2850 user_role: :maintainer, shared_examples_name: "accepting the mutation request creating the container expiration policy"2851 behaves like accepting the mutation request creating the container expiration policy2852 behaves like creating the container expiration policy2853 behaves like updating the container expiration policy attributes2854 creates a new container expiration policy2855 updates the container expiration policy2856 behaves like returning a success2857 returns the updated container expiration policy2858 behaves like returning response status2859 returns success2860 behaves like returning a success2861 returns the updated container expiration policy2862 behaves like returning response status2863 returns success2864 behaves like rejecting invalid regex for2865 for field name_regex2866 returns an error2867 behaves like returning response status2868 returns success2869 behaves like not creating the container expiration policy2870 doesn't create the container expiration policy2871 behaves like rejecting invalid regex for2872 for field name_regex_keep2873 returns an error2874 behaves like returning response status2875 returns success2876 behaves like not creating the container expiration policy2877 doesn't create the container expiration policy2878 user_role: :developer, shared_examples_name: "accepting the mutation request creating the container expiration policy"2879 behaves like accepting the mutation request creating the container expiration policy2880 behaves like creating the container expiration policy2881 behaves like updating the container expiration policy attributes2882 creates a new container expiration policy2883 updates the container expiration policy2884 behaves like returning a success2885 returns the updated container expiration policy2886 behaves like returning response status2887 returns success2888 behaves like returning a success2889 returns the updated container expiration policy2890 behaves like returning response status2891 returns success2892 behaves like rejecting invalid regex for2893 for field name_regex2894 returns an error2895 behaves like returning response status2896 returns success2897 behaves like not creating the container expiration policy2898 doesn't create the container expiration policy2899 behaves like rejecting invalid regex for2900 for field name_regex_keep2901 returns an error2902 behaves like returning response status2903 returns success2904 behaves like not creating the container expiration policy2905 doesn't create the container expiration policy2906 user_role: :reporter, shared_examples_name: "denying the mutation request"2907 behaves like denying the mutation request2908 returns no response2909 behaves like not creating the container expiration policy2910 doesn't create the container expiration policy2911 behaves like returning response status2912 returns success2913 user_role: :guest, shared_examples_name: "denying the mutation request"2914 behaves like denying the mutation request2915 returns no response2916 behaves like not creating the container expiration policy2917 doesn't create the container expiration policy2918 behaves like returning response status2919 returns success2920 user_role: :anonymous, shared_examples_name: "denying the mutation request"2921 behaves like denying the mutation request2922 returns no response2923 behaves like not creating the container expiration policy2924 doesn't create the container expiration policy2925 behaves like returning response status2926 returns success2927API::GroupLabels2928 GET :id/labels2929 returns all available labels for the group2930 when the with_counts parameter is set2931 includes counts in the response2932 GET :subgroup_id/labels2933 when the include_ancestor_groups parameter is not set2934 returns all available labels for the group and ancestor groups2935 when the include_ancestor_groups parameter is set to false2936 returns all available labels for the group but not for ancestor groups2937 GET :id/labels/:label_id2938 returns a single label for the group2939 POST /groups/:id/labels2940 returns created label when all params are given2941 returns created label when only required params are given2942 returns a 400 bad request if name not given2943 returns a 400 bad request if color is not given2944 returns 409 if label already exists2945 DELETE /groups/:id/labels (deprecated)2946 returns 204 for existing label2947 returns 404 for non existing label2948 returns 400 for wrong parameters2949 does not delete parent's group labels2950 behaves like 412 response2951 for a modified ressource2952 returns 412 with a JSON error2953 for an unmodified ressource2954 returns 204 with an empty body2955 DELETE /groups/:id/labels/:label_id2956 returns 204 for existing label2957 returns 404 for non existing label2958 does not delete parent's group labels2959 behaves like 412 response2960 for a modified ressource2961 returns 412 with a JSON error2962 for an unmodified ressource2963 returns 204 with an empty body2964 PUT /groups/:id/labels (deprecated)2965 returns 200 if name and colors and description are changed2966 does not update parent's group label2967 returns 404 if label does not exist2968 returns 400 if no label name given2969 returns 400 if no new parameters given2970 PUT /groups/:id/labels/:label_id2971 returns 200 if name and colors and description are changed2972 does not update parent's group label2973 returns 404 if label does not exist2974 returns 400 if no new parameters given2975 POST /groups/:id/labels/:label_id/subscribe2976 when label_id is a label title2977 subscribes to the label2978 when label_id is a label ID2979 subscribes to the label2980 when user is already subscribed to label2981 returns 3042982 when label ID is not found2983 returns 404 error2984 POST /groups/:id/labels/:label_id/unsubscribe2985 when label_id is a label title2986 unsubscribes from the label2987 when label_id is a label ID2988 unsubscribes from the label2989 when user is already unsubscribed from label2990 returns 3042991 when label ID is not found2992 returns 404 error2993API::Environments2994 GET /projects/:id/environments2995 as member of the project2996 returns project environments2997 when filtering2998 returns environment by name2999 returns no environment by non-existent name3000 returns environments by name_like3001 returns no environment by non-existent name_like3002 as non member3003 returns a 404 status code3004 POST /projects/:id/environments3005 as a member3006 creates a environment with valid params3007 requires name to be passed3008 returns a 400 if environment already exists3009 returns a 400 if slug is specified3010 a non member3011 rejects the request3012 returns a 400 when the required params are missing3013 PUT /projects/:id/environments/:environment_id3014 returns a 200 if name and external_url are changed3015 won't allow slug to be changed3016 won't update the external_url if only the name is passed3017 returns a 404 if the environment does not exist3018 DELETE /projects/:id/environments/:environment_id3019 as a maintainer3020 rejects the requests in environment isn't stopped3021 returns a 200 for stopped environment3022 returns a 404 for non existing id3023 behaves like 412 response3024 for a modified ressource3025 returns 412 with a JSON error3026 for an unmodified ressource3027 returns 204 with an empty body3028 a non member3029 rejects the request3030 POST /projects/:id/environments/:environment_id/stop3031 as a maintainer3032 returns a 404 for non existing id3033 with a stoppable environment3034 returns a 2003035 actually stops the environment3036 a non member3037 rejects the request3038 GET /projects/:id/environments/:environment_id3039 as member of the project3040 returns project environments3041 as non member3042 returns a 404 status code3043API::PagesDomains3044 GET /pages/domains3045 when pages is disabled3046 behaves like 404 response3047 returns 4043048 when pages is enabled3049 when authenticated as an admin3050 returns paginated all pages domains3051 when authenticated as a non-member3052 behaves like 403 response3053 returns 4033054 GET /projects/:project_id/pages/domains3055 when pages is disabled3056 behaves like 404 response3057 returns 4043058 when user is a maintainer3059 behaves like get pages domains3060 returns paginated pages domains3061 when user is a developer3062 behaves like 403 response3063 returns 4033064 when user is a reporter3065 behaves like 403 response3066 returns 4033067 when user is a guest3068 behaves like 403 response3069 returns 4033070 when user is not a member3071 behaves like 404 response3072 returns 4043073 GET /projects/:project_id/pages/domains/:domain3074 when domain is vacant3075 behaves like 404 response3076 returns 4043077 when user is a maintainer3078 behaves like get pages domain3079 returns pages domain3080 returns pages domain with project path3081 returns pages domain with a certificate3082 returns pages domain with an expired certificate3083 returns pages domain with letsencrypt3084 when user is a developer3085 behaves like 403 response3086 returns 4033087 when user is a reporter3088 behaves like 403 response3089 returns 4033090 when user is a guest3091 behaves like 403 response3092 returns 4033093 when user is not a member3094 behaves like 404 response3095 returns 4043096 POST /projects/:project_id/pages/domains3097 when user is a maintainer3098 behaves like post pages domains3099 creates a new pages domain3100 creates a new secure pages domain3101 creates domain with letsencrypt enabled3102 creates domain with letsencrypt enabled and provided certificate3103 fails to create pages domain without key3104 fails to create pages domain with key missmatch3105 when user is a developer3106 behaves like 403 response3107 returns 4033108 when user is a reporter3109 behaves like 403 response3110 returns 4033111 when user is a guest3112 behaves like 403 response3113 returns 4033114 when user is not a member3115 behaves like 404 response3116 returns 4043117 PUT /projects/:project_id/pages/domains/:domain3118 when domain is vacant3119 behaves like 404 response3120 returns 4043121 when user is a maintainer3122 behaves like put pages domain3123 updates pages domain removing certificate3124 updates pages domain adding certificate3125 updates pages domain adding certificate with letsencrypt3126 updates pages domain enabling letsencrypt3127 updates pages domain disabling letsencrypt while preserving the certificate3128 updates pages domain with expired certificate3129 updates pages domain with expired certificate not updating key3130 updates certificate source to user_provided if is changed3131 fails to update pages domain adding certificate without key3132 fails to update pages domain adding certificate with missing chain3133 fails to update pages domain with key missmatch3134 when user is a developer3135 behaves like 403 response3136 returns 4033137 when user is a reporter3138 behaves like 403 response3139 returns 4033140 when user is a guest3141 behaves like 403 response3142 returns 4033143 when user is not a member3144 behaves like 404 response3145 returns 4043146 DELETE /projects/:project_id/pages/domains/:domain3147 when domain is vacant3148 behaves like 404 response3149 returns 4043150 when user is a maintainer3151 behaves like delete pages domain3152 deletes a pages domain3153 when user is a developer3154 behaves like 403 response3155 returns 4033156 when user is a reporter3157 behaves like 403 response3158 returns 4033159 when user is a guest3160 behaves like 403 response3161 returns 4033162 when user is not a member3163 behaves like 404 response3164 returns 4043165Projects::StarrersController3166 GET index3167 N+1 queries3168 avoids N+1s loading users3169 when project is public3170 when no user is logged in3171 with no searching3172 only users with public profiles are visible3173 starrers counts are correct3174 when searching by user3175 only users with public profiles are visible3176 starrers counts are correct3177 when public user is logged in3178 with no searching3179 their star is also visible3180 starrers counts are correct3181 when searching by user3182 only users with public profiles are visible3183 starrers counts are correct3184 when private user is logged in3185 with no searching3186 their star is also visible3187 starrers counts are correct3188 when searching by user3189 only users with public profiles are visible3190 starrers counts are correct3191 when admin is logged in3192 with no searching3193 all users are visible3194 starrers counts are correct3195 when searching by user3196 public and private starrers are visible3197 starrers counts are correct3198 when project is private3199 starrers are not visible for non logged in users3200 when user is logged in3201 only users with public profiles are visible3202 starrers counts are correct3203Projects::Ci::LintsController3204 GET #show3205 with enough privileges3206 is expected to be successful3207 renders show page3208 retrieves project3209 without enough privileges3210 responds with 4043211 POST #create3212 with a valid gitlab-ci.yml3213 using legacy validation (YamlProcessor)3214 runs validations through YamlProcessor3215 behaves like returns a successful validation3216 returns successfully3217 render show page3218 retrieves project3219 using dry_run mode3220 runs validations through Ci::CreatePipelineService3221 behaves like returns a successful validation3222 returns successfully3223 render show page3224 retrieves project3225 when dry_run feature flag is disabled3226 runs validations through YamlProcessor3227 behaves like returns a successful validation3228 returns successfully3229 render show page3230 retrieves project3231 with an invalid gitlab-ci.yml3232 assigns result with errors3233 with dry_run mode3234 assigns result with errors3235 without enough privileges3236 responds with 4043237Dashboard::MilestonesController3238 #index3239 returns group and project milestones to which the user belongs3240 returns closed group and project milestones to which the user belongs3241 searches legacy project milestones by title when search_title is given3242 searches group milestones by title when search_title is given3243 shows counts of open and closed group and project milestones to which the user belongs to3244 external authorization3245 behaves like disabled when using an external authorization service3246 works when the feature is not enabled3247 renders a 404 with a message when the feature is enabled3248Projects::PerformanceMonitoring::DashboardsController3249 POST #create3250 authenticated user3251 project with repository feature3252 with rights to push to the repository3253 valid parameters3254 delegates cloning to ::Metrics::Dashboard::CloneDashboardService3255 request format json3256 returns services response3257 Metrics::Dashboard::CloneDashboardService failure3258 returns json with failure message3259 param commit_message is missing3260 responds with bad request status and error message3261 param file_name is missing3262 responds with bad request status and error message3263 param dashboard is missing3264 responds with bad request status and error message3265 param branch_name is missing3266 responds with bad request status and error message3267 without rights to push to repository3268 responds with :forbidden status code3269 project without repository feature3270 responds with :not_found status code3271 PUT #update3272 authenticated user3273 project with repository feature3274 with rights to push to the repository3275 valid parameters3276 request format json3277 returns path to new file3278 UpdateDashboardService failure3279 returns json with failure message3280 missing branch3281 raises responds with :bad_request status code and error message3282 without rights to push to repository3283 responds with :forbidden status code3284 project without repository feature3285 responds with :not_found status code3286Projects::Environments::SampleMetricsController3287 GET #query3288 when the file is not found3289 returns a 4043290 when the sample data is found3291 returns JSON with a message and a 200 status code3292Knapsack report was generated. Preview:3293{3294 "spec/requests/api/merge_requests_spec.rb": 334.3573615550995,3295 "spec/requests/api/notes_spec.rb": 95.78141021728516,3296 "spec/requests/api/releases_spec.rb": 77.6811888217926,3297 "spec/controllers/projects_controller_spec.rb": 68.437251329422,3298 "spec/requests/api/files_spec.rb": 56.65901064872742,3299 "spec/requests/api/jobs_spec.rb": 46.59989857673645,3300 "spec/requests/api/labels_spec.rb": 37.35848093032837,3301 "spec/requests/api/services_spec.rb": 33.73446488380432,3302 "spec/requests/api/project_snippets_spec.rb": 28.235632181167603,3303 "spec/requests/api/graphql/namespace/projects_spec.rb": 19.815821170806885,3304 "spec/controllers/groups/children_controller_spec.rb": 22.735734224319458,3305 "spec/requests/api/project_clusters_spec.rb": 16.715394973754883,3306 "spec/controllers/projects/environments_controller_spec.rb": 18.011045932769775,3307 "spec/controllers/projects/deploy_keys_controller_spec.rb": 16.541812896728516,3308 "spec/controllers/import/gitea_controller_spec.rb": 14.014161109924316,3309 "spec/requests/api/graphql/mutations/container_expiration_policy/update_spec.rb": 11.524455785751343,3310 "spec/requests/api/group_labels_spec.rb": 12.472500085830688,3311 "spec/requests/api/environments_spec.rb": 11.942697048187256,3312 "spec/requests/api/pages_domains_spec.rb": 8.484442949295044,3313 "spec/controllers/projects/starrers_controller_spec.rb": 10.079819679260254,3314 "spec/controllers/projects/ci/lints_controller_spec.rb": 9.388967752456665,3315 "spec/controllers/dashboard/milestones_controller_spec.rb": 9.078088760375977,3316 "spec/controllers/projects/performance_monitoring/dashboards_controller_spec.rb": 4.264218330383301,3317 "spec/controllers/projects/environments/sample_metrics_controller_spec.rb": 0.281412124633789063318}3319Knapsack global time execution for tests: 16m 04s3320Finished in 20 minutes 44 seconds (files took 56.95 seconds to load)33211738 examples, 0 failures3322Tue Aug 25 15:55:08 UTC 20203324Not uploading cache rails-v2-3 due to policy3326Uploading artifacts...3327coverage/: found 5 matching files and directories 3328knapsack/: found 3 matching files and directories 3329rspec_flaky/: found 4 matching files and directories 3330rspec_profiling/: found 2 matching files and directories 3331WARNING: tmp/capybara/: no matching files 3332tmp/memory_test/: found 2 matching files and directories 3333log/*.log: found 15 matching files and directories 3334Uploading artifacts as "archive" to coordinator... ok id=702959679 responseStatus=201 Created token=2MhX2uVs3335Uploading artifacts...3336junit_rspec.xml: found 1 matching files and directories 3337Uploading artifacts as "junit" to coordinator... ok id=702959679 responseStatus=201 Created token=2MhX2uVs3338Job succeeded