rspec-ee integration pg12 3/4
Passed Started
by
@gitlab-bot

🤖 GitLab Bot 🤖
1Running with gitlab-runner 15.1.0~beta.20.g62206bb2 (62206bb2)2 on blue-2.shared-gitlab-org.runners-manager.gitlab.com/default NL4gfoBe3 feature flags: FF_USE_FASTZIP:true6Using Docker executor with image registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-2.7.patched-golang-1.17-node-16.14-postgresql-12:rubygems-3.2-git-2.36-lfs-2.9-chrome-101-yarn-1.22-graphicsmagick-1.3.36 ...7Starting service postgres:12 ...8Pulling docker image postgres:12 ...9Using docker image sha256:ac3b8cd6a8b42e839456256bc514d6230b5a2538c738b3d522e1384a2a172b96 for postgres:12 with digest postgres@sha256:e6ffad42c91a4d5a29257a27ac4e160c3ae7196696b37bf2e80410024ed95951 ...10Starting service redis:6.0-alpine ...11Pulling docker image redis:6.0-alpine ...12Using docker image sha256:09401fed2a421bf0019f96dcec70c85f82ec7b76beb1ae589547b0dc302d6b76 for redis:6.0-alpine with digest redis@sha256:217a9db40a914cc3f6206a143a4d750da0607500cc013a147a4979e08e40beff ...13Starting service elasticsearch:7.17.0 ...14Pulling docker image elasticsearch:7.17.0 ...15Using docker image sha256:6fe993d6e7ed5e00a18f9b146d867b77559bf9948e6596bbf880ddbefeec46f7 for elasticsearch:7.17.0 with digest elasticsearch@sha256:332c6d416808f6e9a2cbcbe0170d9a9bb14bfe772180d37de5084c223dd8948b ...16Waiting for services to be up and running (timeout 30 seconds)...17Authenticating with credentials from job payload (GitLab Registry)18Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-2.7.patched-golang-1.17-node-16.14-postgresql-12:rubygems-3.2-git-2.36-lfs-2.9-chrome-101-yarn-1.22-graphicsmagick-1.3.36 ...19Using docker image sha256:1c23a0bd0711f9f7944305c4b25ce8e4301c16167671a7873aad77579270806d for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-2.7.patched-golang-1.17-node-16.14-postgresql-12:rubygems-3.2-git-2.36-lfs-2.9-chrome-101-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-2.7.patched-golang-1.17-node-16.14-postgresql-12@sha256:d0052322332df372b949caf19e910c0ce6859c1e7ed29ff609ebec91b1dead87 ...21Running on runner-nl4gfobe-project-278964-concurrent-0 via runner-nl4gfobe-shared-gitlab-org-1656403152-1d56559f...23$ eval "$CI_PRE_CLONE_SCRIPT"24Fetching changes with git depth set to 20...25Initialized empty Git repository in /builds/gitlab-org/gitlab/.git/26Created fresh repository.27remote: Enumerating objects: 113684, done. 28remote: Counting objects: 100% (113684/113684), done. 29remote: Compressing objects: 100% (80120/80120), done. 30remote: Total 113684 (delta 47013), reused 73436 (delta 29194), pack-reused 0 31Receiving objects: 100% (113684/113684), 107.95 MiB | 25.46 MiB/s, done.32Resolving deltas: 100% (47013/47013), done.34 * [new ref] refs/pipelines/574770947 -> refs/pipelines/57477094735Checking out f470b997 as refs/merge-requests/90613/merge...36Skipping Git submodules setup37$ git remote set-url origin "${CI_REPOSITORY_URL}"39Checking cache for ruby-gems-debian-bullseye-ruby-2.7-10...40cache.zip is up to date 41Successfully extracted cache42Checking cache for gitaly-ruby-gems-debian-bullseye-ruby-2.7-10...43cache.zip is up to date 44Successfully extracted cache46Downloading artifacts for compile-test-assets (2649391517)...47Downloading artifacts from coordinator... ok id=2649391517 responseStatus=200 OK token=zxj_Xazq48Downloading artifacts for detect-tests (2649391533)...49Downloading artifacts from coordinator... ok id=2649391533 responseStatus=200 OK token=zxj_Xazq50Downloading artifacts for retrieve-tests-metadata (2649391540)...51Downloading artifacts from coordinator... ok id=2649391540 responseStatus=200 OK token=zxj_Xazq52Downloading artifacts for setup-test-env (2649391527)...53Downloading artifacts from coordinator... ok id=2649391527 responseStatus=200 OK token=zxj_Xazq55Using docker image sha256:1c23a0bd0711f9f7944305c4b25ce8e4301c16167671a7873aad77579270806d for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-2.7.patched-golang-1.17-node-16.14-postgresql-12:rubygems-3.2-git-2.36-lfs-2.9-chrome-101-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-2.7.patched-golang-1.17-node-16.14-postgresql-12@sha256:d0052322332df372b949caf19e910c0ce6859c1e7ed29ff609ebec91b1dead87 ...56$ echo $FOSS_ONLY57$ [ "$FOSS_ONLY" = "1" ] && rm -rf ee/ qa/spec/ee/ qa/qa/specs/features/ee/ qa/qa/ee/ qa/qa/ee.rb58$ export GOPATH=$CI_PROJECT_DIR/.go59$ mkdir -p $GOPATH60$ source scripts/utils.sh61$ source scripts/prepare_build.sh623.2.3363Bundler version 2.2.3364Successfully installed bundler-2.3.15651 gem installed66production:development67Settings are listed in order of priority. The top value will be used.68clean69Set for your local app (/builds/gitlab-org/gitlab/.bundle/config): true70frozen71Set via BUNDLE_FROZEN: true72install_flags73Set via BUNDLE_INSTALL_FLAGS: "--jobs=$(nproc) --retry=3 --quiet"74path75Set for your local app (/builds/gitlab-org/gitlab/.bundle/config): "/builds/gitlab-org/gitlab/vendor"76without77Set via BUNDLE_WITHOUT: [:production, :development]78$ bundle install --jobs=$(nproc) --retry=3 --quiet && bundle check79Don't run Bundler as root. Bundler can ask for sudo if it is needed, and80installing your bundle as root will break this application for all non-root81users on this machine.82The Gemfile's dependencies are satisfied83==> 'bundle install --jobs=$(nproc) --retry=3 --quiet && bundle check' succeeded in 2 seconds.84$ bundle pristine pg85Installing pg 1.3.5 with native extensions86==> 'bundle pristine pg' succeeded in 9 seconds.87Using decomposed database config (config/database.yml.decomposed-postgresql)88$ setup_db_user_only89CREATE ROLE90GRANT91==> 'setup_db_user_only' succeeded in 0 seconds.92$ bundle exec rake db:drop db:create db:schema:load db:migrate93Dropped database 'gitlabhq_test'94Dropped database 'gitlabhq_test_ci'95Dropped database 'gitlabhq_geo_test'96Created database 'gitlabhq_test'97Created database 'gitlabhq_test_ci'98Created database 'gitlabhq_geo_test'99==> 'bundle exec rake db:drop db:create db:schema:load db:migrate' succeeded in 35 seconds.100$ setup_db_praefect101SELECT pg_catalog.set_config('search_path', '', false);102CREATE DATABASE praefect_test ENCODING 'UTF8';103==> 'setup_db_praefect' succeeded in 0 seconds.104$ run_timed_command "gem install knapsack --no-document"105$ gem install knapsack --no-document106Successfully installed knapsack-4.0.01071 gem installed108==> 'gem install knapsack --no-document' succeeded in 1 seconds.109$ run_timed_command "scripts/gitaly-test-spawn"110$ scripts/gitaly-test-spawn111find: ‘/builds/gitlab-org/gitlab/tmp/tests/gitaly/cmd’: No such file or directory112Don't run Bundler as root. Bundler can ask for sudo if it is needed, and113installing your bundle as root will break this application for all non-root114users on this machine.115Using abstract_type 0.0.7116Using concurrent-ruby 1.1.10117Using i18n 1.10.0118Using minitest 5.15.0119Using tzinfo 2.0.4120Using zeitwerk 2.5.4121Using activesupport 6.1.4.7122Using builder 3.2.4123Using erubi 1.10.0124Using mini_portile2 2.8.0125Using racc 1.6.0126Using nokogiri 1.13.6 (x86_64-linux)127Using rails-dom-testing 2.0.3128Using crass 1.0.6129Using loofah 2.16.0130Using rails-html-sanitizer 1.4.2131Using actionview 6.1.4.7132Using rack 2.2.3133Using rack-test 1.1.0134Using actionpack 6.1.4.7135Using ice_nine 0.11.2136Using thread_safe 0.3.6137Using memoizable 0.4.2138Using adamantium 0.2.0139Using public_suffix 4.0.6140Using addressable 2.7.0141Using ast 2.4.2142Using binding_ninja 0.2.3143Using bundler 2.3.15144Using charlock_holmes 0.7.7145Using coderay 1.1.2146Using equalizer 0.0.11147Using concord 0.1.5148Using diff-lcs 1.3149Using dotenv 2.7.6150Using escape_utils 1.2.1151Using factory_bot 5.0.2152Using multipart-post 2.1.1153Using faraday 1.0.1154Using ffi 1.15.3155Using json 2.5.1156Using gemojione 3.3.0157Using mini_mime 1.0.2158Using rugged 1.2.0159Using github-linguist 7.12.1160Using github-markup 1.7.0161Using mime-types-data 3.2020.1104162Using mime-types 3.3.1163Using gitlab-gollum-rugged_adapter 0.4.4.4.gitlab.1164Using rouge 3.27.0165Using sanitize 6.0.0166Using stringex 2.8.5167Using gitlab-gollum-lib 4.2.7.10.gitlab.2168Using google-protobuf 3.19.1 (x86_64-linux)169Using googleapis-common-protos-types 1.3.0170Using grpc 1.42.0 (x86_64-linux)171Using opentracing 0.5.0172Using thrift 0.15.0173Using jaeger-client 1.1.0174Using pg_query 2.1.1175Using redis 4.4.0176Using gitlab-labkit 0.21.2177Using rubyzip 2.3.2178Using thor 1.1.0179Using tomlrb 2.0.1180Using with_env 1.1.0181Using rexml 3.2.5182Using xml-simple 1.1.9183Using gitlab-license_finder 6.14.2.1184Using gitlab-markup 1.7.1185Using grpc-tools 1.42.0186Using sawyer 0.8.2187Using octokit 4.20.0188Using reverse_markdown 1.4.0189Using licensee 9.14.1190Using method_source 0.9.2191Using msgpack 1.3.3192Using optimist 3.0.1193Using parallel 1.19.2194Using parser 3.0.3.2195Using procto 0.0.3196Using unparser 0.4.7197Using proc_to_ast 0.1.0198Using pry 0.12.2199Using rainbow 3.0.0200Using rbtrace 0.4.14201Using rdoc 6.3.2202Using regexp_parser 1.8.1203Using rspec-support 3.8.0204Using rspec-core 3.8.0205Using rspec-expectations 3.8.3206Using rspec-mocks 3.8.0207Using rspec 3.8.0208Using rspec-parameterized 0.4.2209Using rubocop-ast 0.2.0210Using ruby-progressbar 1.10.1211Using unicode-display_width 1.7.0212Using rubocop 0.86.0213Using sentry-raven 3.0.4214Using timecop 0.9.1215Bundle complete! 22 Gemfile dependencies, 100 gems now installed.216Gems in the groups 'production' and 'development' were not installed.217Bundled gems are installed into `/builds/gitlab-org/gitlab/vendor/gitaly-ruby`218Checking gitaly-ruby Gemfile...219Checking gitaly-ruby bundle...220The Gemfile's dependencies are satisfied221Trying to connect to gitaly: ......................................... OK222Trying to connect to gitaly2: ......................................................... OK223Starting Praefect with in-memory election strategyTrying to connect to praefect: ........ OK224==> 'scripts/gitaly-test-spawn' succeeded in 12 seconds.225$ source ./scripts/rspec_helpers.sh226$ rspec_paralellized_job "--tag ~quarantine --tag ~level:migration"227SKIP_FLAKY_TESTS_AUTOMATICALLY: true228RETRY_FAILED_TESTS_IN_NEW_PROCESS: true229KNAPSACK_GENERATE_REPORT: true230FLAKY_RSPEC_GENERATE_REPORT: true231KNAPSACK_TEST_FILE_PATTERN: {ee/}spec/{commands,controllers,mailers,requests}{,/**/}*_spec.rb232KNAPSACK_LOG_LEVEL: debug233KNAPSACK_REPORT_PATH: knapsack/rspec-ee_integration_pg12_3_4_report.json234FLAKY_RSPEC_SUITE_REPORT_PATH: rspec/flaky/report-suite.json235FLAKY_RSPEC_REPORT_PATH: rspec/flaky/all_rspec-ee_integration_pg12_3_4_report.json236NEW_FLAKY_RSPEC_REPORT_PATH: rspec/flaky/new_rspec-ee_integration_pg12_3_4_report.json237SKIPPED_FLAKY_TESTS_REPORT_PATH: rspec/flaky/skipped_flaky_tests_rspec-ee_integration_pg12_3_4_report.txt238RETRIED_TESTS_REPORT_PATH: rspec/flaky/retried_tests_rspec-ee_integration_pg12_3_4_report.txt239CRYSTALBALL: 240Knapsack node specs:241ee/spec/requests/api/members_spec.rb242ee/spec/requests/api/visual_review_discussions_spec.rb243ee/spec/requests/git_http_geo_spec.rb244ee/spec/requests/api/graphql/geo/registries_spec.rb245ee/spec/requests/api/geo_nodes_spec.rb246ee/spec/controllers/boards/lists_controller_spec.rb247ee/spec/requests/api/ldap_group_links_spec.rb248ee/spec/requests/api/merge_request_approval_rules_spec.rb249ee/spec/controllers/groups/epic_issues_controller_spec.rb250ee/spec/requests/api/graphql/group/epics_spec.rb251ee/spec/controllers/projects/boards_controller_spec.rb252ee/spec/requests/projects/merge_requests_controller_spec.rb253ee/spec/requests/api/internal/kubernetes_spec.rb254ee/spec/controllers/boards/issues_controller_spec.rb255ee/spec/requests/api/vulnerability_issue_links_spec.rb256ee/spec/requests/api/group_boards_spec.rb257ee/spec/requests/api/status_checks_spec.rb258ee/spec/requests/api/project_approval_settings_spec.rb259ee/spec/controllers/projects/merge_requests/creations_controller_spec.rb260ee/spec/requests/groups/epics/epic_links_controller_spec.rb261ee/spec/controllers/projects/audit_events_controller_spec.rb262ee/spec/controllers/ldap/omniauth_callbacks_controller_spec.rb263ee/spec/requests/api/graphql/iteration_spec.rb264ee/spec/controllers/groups/epic_boards_controller_spec.rb265ee/spec/requests/api/merge_request_approval_settings_spec.rb266ee/spec/controllers/projects/clusters_controller_spec.rb267ee/spec/requests/projects/security/dast_site_profiles_controller_spec.rb268ee/spec/controllers/registrations/groups_controller_spec.rb269ee/spec/controllers/groups/analytics/productivity_analytics_controller_spec.rb270ee/spec/controllers/admin/clusters_controller_spec.rb271ee/spec/requests/api/graphql/mutations/audit_events/external_audit_event_destinations/update_spec.rb272ee/spec/controllers/projects/feature_flag_issues_controller_spec.rb273ee/spec/requests/projects/on_demand_scans_controller_spec.rb274ee/spec/requests/api/graphql/mutations/epics/update_spec.rb275ee/spec/controllers/groups/issues_controller_spec.rb276ee/spec/requests/api/graphql/mutations/audit_events/external_audit_event_destinations/create_spec.rb277ee/spec/requests/api/invitations_spec.rb278ee/spec/controllers/projects/pipelines_controller_spec.rb279ee/spec/controllers/registrations/welcome_controller_spec.rb280ee/spec/controllers/groups/analytics/cycle_analytics_controller_spec.rb281ee/spec/controllers/projects/path_locks_controller_spec.rb282ee/spec/requests/groups/epics/related_epic_links_controller_spec.rb283ee/spec/controllers/admin/projects_controller_spec.rb284ee/spec/controllers/groups/groups_controller_spec.rb285ee/spec/controllers/groups/security/policies_controller_spec.rb286ee/spec/mailers/ci_minutes_usage_mailer_spec.rb287ee/spec/controllers/ee/dashboard/projects_controller_spec.rb288ee/spec/requests/api/graphql/projects/compliance_frameworks_spec.rb289ee/spec/controllers/projects/security/vulnerability_report_controller_spec.rb290ee/spec/controllers/ee/projects/variables_controller_spec.rb291ee/spec/requests/api/graphql/mutations/boards/epics/create_spec.rb292ee/spec/requests/api/dependencies_spec.rb293ee/spec/requests/api/commits_spec.rb294ee/spec/requests/api/graphql/mutations/boards/create_spec.rb295ee/spec/requests/api/graphql/project/incident_management/oncall_schedules_spec.rb296ee/spec/controllers/projects/insights_controller_spec.rb297ee/spec/requests/api/graphql/group/dast_profile_schedule_spec.rb298ee/spec/requests/api/ci/variables_spec.rb299ee/spec/requests/api/analytics/project_deployment_frequency_spec.rb300ee/spec/requests/api/geo_replication_spec.rb301ee/spec/controllers/groups/scim_oauth_controller_spec.rb302ee/spec/controllers/groups/seat_usage_controller_spec.rb303ee/spec/controllers/groups/saml_group_links_controller_spec.rb304ee/spec/requests/api/graphql/mutations/iterations/cadences/create_spec.rb305ee/spec/requests/groups/roadmap_controller_spec.rb306ee/spec/controllers/projects/deploy_keys_controller_spec.rb307ee/spec/controllers/groups/issues_analytics_controller_spec.rb308ee/spec/requests/api/analytics/code_review_analytics_spec.rb309ee/spec/controllers/admin/geo/settings_controller_spec.rb310ee/spec/requests/api/graphql/mutations/vulnerabilities/finding_dismiss_spec.rb311ee/spec/requests/api/graphql/project/code_coverage_summary_spec.rb312ee/spec/requests/api/graphql/mutations/projects/set_compliance_framework_spec.rb313ee/spec/requests/api/graphql/mutations/security_policy/create_security_policy_project_spec.rb314ee/spec/controllers/admin/push_rules_controller_spec.rb315ee/spec/requests/api/graphql/mutations/dast_site_validations/create_spec.rb316ee/spec/requests/api/dora/metrics_spec.rb317ee/spec/requests/api/graphql/ci/runner_spec.rb318ee/spec/requests/api/graphql/mutations/requirements_management/update_requirement_spec.rb319ee/spec/controllers/admin/users_controller_spec.rb320ee/spec/requests/api/graphql/mutations/projects/lock_path_spec.rb321ee/spec/requests/api/graphql/mutations/dast/profiles/run_spec.rb322ee/spec/requests/api/graphql/mutations/iterations/cadences/update_spec.rb323ee/spec/requests/api/graphql/vulnerabilities/description_spec.rb324ee/spec/requests/api/group_milestones_spec.rb325ee/spec/requests/api/graphql/project/dast_scanner_profiles_spec.rb326ee/spec/requests/api/graphql/project/pipeline/security_report_finding_spec.rb327ee/spec/controllers/ee/sent_notifications_controller_spec.rb328ee/spec/requests/api/graphql/mutations/incident_management/oncall_rotation/update_spec.rb329ee/spec/requests/api/graphql/mutations/notes/create/note_spec.rb330ee/spec/controllers/groups/iteration_cadences_controller_spec.rb331ee/spec/requests/api/graphql/mutations/boards/lists/update_limit_metrics_spec.rb332ee/spec/controllers/groups/todos_controller_spec.rb333ee/spec/requests/api/graphql/boards/epic_lists/update_spec.rb334ee/spec/requests/api/graphql/mutations/boards/lists/create_spec.rb335ee/spec/requests/api/graphql/geo/geo_node_spec.rb336ee/spec/requests/api/graphql/vulnerabilities/identifiers_spec.rb337ee/spec/controllers/concerns/geo_instrumentation_spec.rb338ee/spec/requests/groups/labels_spec.rb339ee/spec/controllers/projects/incident_management/oncall_schedules_controller_spec.rb340ee/spec/requests/callout_spec.rb341ee/spec/requests/api/graphql/mutations/dast/profiles/delete_spec.rb342ee/spec/requests/ee/projects/deploy_tokens_controller_spec.rb343ee/spec/controllers/projects/pages_controller_spec.rb344ee/spec/requests/api/graphql/mutations/releases/update_spec.rb345ee/spec/controllers/profiles_controller_spec.rb346ee/spec/controllers/groups/ldaps_controller_spec.rb347ee/spec/requests/api/graphql/iterations/cadences_spec.rb348ee/spec/requests/api/graphql/vulnerabilities/external_issue_links_spec.rb349ee/spec/controllers/groups/usage_quotas_controller_spec.rb350ee/spec/requests/api/graphql/mutations/boards/epic_lists/create_spec.rb351ee/spec/requests/api/graphql/vulnerabilities/scanner_spec.rb352ee/spec/requests/api/graphql/app_sec/fuzzing/coverage/corpus_type_spec.rb353ee/spec/controllers/boards/users_controller_spec.rb354ee/spec/requests/api/ldap_spec.rb355ee/spec/requests/api/graphql/mutations/incident_management/issuable_resource_link/destroy_spec.rb356ee/spec/mailers/license_mailer_spec.rb357ee/spec/controllers/ee/omniauth_callbacks_controller_spec.rb358ee/spec/mailers/ee/emails/profile_spec.rb359ee/spec/controllers/groups/runners_controller_spec.rb360ee/spec/requests/api/v3/github_spec.rb361ee/spec/controllers/profiles/slacks_controller_spec.rb362ee/spec/requests/omniauth_kerberos_spnego_spec.rb363ee/spec/mailers/emails/group_memberships_spec.rb364ee/spec/requests/admin/subscriptions_controller_spec.rb365ee/spec/requests/api/graphql/mutations/gitlab_subscriptions/activate_spec.rb366ee/spec/requests/groups/contribution_analytics_spec.rb367ee/spec/requests/api/integrations_spec.rb368ee/spec/controllers/profiles/keys_controller_spec.rb369ee/spec/mailers/emails/epics_spec.rb370Filter specs:371Running specs:372Running all node tests without filter373ee/spec/requests/api/members_spec.rb374ee/spec/requests/api/visual_review_discussions_spec.rb375ee/spec/requests/git_http_geo_spec.rb376ee/spec/requests/api/graphql/geo/registries_spec.rb377ee/spec/requests/api/geo_nodes_spec.rb378ee/spec/controllers/boards/lists_controller_spec.rb379ee/spec/requests/api/ldap_group_links_spec.rb380ee/spec/requests/api/merge_request_approval_rules_spec.rb381ee/spec/controllers/groups/epic_issues_controller_spec.rbKnapsack report generator started!382DEPRECATION WARNING: /builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/activerecord-6.1.4.7/lib/active_record/connection_adapters/postgresql_adapter.rb:78: warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call383/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/pg-1.3.5/lib/pg.rb:68: warning: The called method `connect' is defined here384 (called from new_client at /builds/gitlab-org/gitlab/config/initializers/00_connection_logger.rb:21)385WARNING: Shared example group agent token tracking was defined without a block and will have no effect. Please define a block or remove the definition.. Called from /builds/gitlab-org/gitlab/ee/spec/requests/api/internal/kubernetes_spec.rb:82:in `block (3 levels) in <top (required)>'.386WARNING: Shared example group agent token tracking was defined without a block and will have no effect. Please define a block or remove the definition.. Called from /builds/gitlab-org/gitlab/ee/spec/requests/api/internal/kubernetes_spec.rb:380:in `block (2 levels) in <top (required)>'.387Run options: exclude {:quarantine=>true, :level=>"migration"}388==> /builds/gitlab-org/gitlab/tmp/tests/gitlab-test_bare set up in 0.052586787 seconds...389Test environment set up in 0.547639315 seconds390API::Members391 group members endpoints for group with minimal access feature392 GET /groups/:id/members393 returns user with minimal access when feature is available394 does not return user with minimal access when feature is unavailable395 POST /groups/:id/members396 when minimal access license is not available397 does not create a member398 when minimal access license is available399 creates a member400 cannot be assigned to subgroup401 PUT /groups/:id/members/:user_id402 when minimal access role is available403 updates the member404 when minimal access role is not available405 does not update the member406 DELETE /groups/:id/members/:user_id407 when minimal access role is available408 deletes the member409 when minimal access role is not available410 does not delete the member411 GET /groups/:id/members/:user_id412 when minimal access role is available413 shows the member414 when minimal access role is not available415 does not show the member416 group members endpoint for group managed accounts417 GET /groups/:id/members418 behaves like members response with exposed emails419 is expected to include (a hash including {"email" => "user9@example.org"})420 behaves like members response with hidden emails421 is expected not to include (a hash including {"email" => "user11@example.org"})422 GET /groups/:id/members/:user_id423 with group managed account member424 behaves like member response with exposed email425 is expected to include {"email" => "user15@example.org"}426 with a regular member427 behaves like member response with hidden email428 is expected not to have key "email"429 GET /groups/:id/members/all430 parent group431 behaves like members response with exposed emails432 is expected to include (a hash including {"email" => "user21@example.org"})433 behaves like members response with hidden emails434 is expected not to include (a hash including {"email" => "user25@example.org"})435 child group436 behaves like members response with exposed emails437 is expected to include (a hash including {"email" => "user33@example.org"})438 behaves like members response with hidden emails439 is expected not to include (a hash including {"email" => "user37@example.org"})440 GET /groups/:id/members/all/:user_id441 with group managed account member442 behaves like member response with exposed email443 is expected to include {"email" => "user41@example.org"}444 with regular member445 behaves like member response with hidden email446 is expected not to have key "email"447 with group managed account child group member448 behaves like member response with exposed email449 is expected to include {"email" => "user53@example.org"}450 with child group regular member451 behaves like member response with hidden email452 is expected not to have key "email"453 project members endpoint for group managed accounts454 GET /projects/:id/members455 behaves like members response with exposed emails456 is expected to include (a hash including {"email" => "user63@example.org"})457 behaves like members response with hidden emails458 is expected not to include (a hash including {"email" => "user67@example.org"})459 GET /projects/:id/members/:user_id460 with group managed account member461 behaves like member response with exposed email462 is expected to include {"email" => "user73@example.org"}463 with a regular member464 behaves like member response with hidden email465 is expected not to have key "email"466 GET /project/:id/members/all467 parent group project468 behaves like members response with exposed emails469 is expected to include (a hash including {"email" => "user83@example.org"})470 behaves like members response with hidden emails471 is expected not to include (a hash including {"email" => "user91@example.org"})472 child group project473 behaves like members response with exposed emails474 is expected to include (a hash including {"email" => "user105@example.org"})475 behaves like members response with hidden emails476 is expected not to include (a hash including {"email" => "user113@example.org"})477 GET /projects/:id/members/all/:user_id478 with group managed account member479 behaves like member response with hidden email480 is expected not to have key "email"481 with regular member482 behaves like member response with hidden email483 is expected not to have key "email"484 with group managed account child group member485 behaves like member response with exposed email486 is expected to include {"email" => "user141@example.org"}487 with child group regular member488 behaves like member response with hidden email489 is expected not to have key "email"490 billable member endpoints491 GET /groups/:id/billable_members492 with sub group and projects493 returns paginated billable users494 when the current user does not have the :admin_group_member ability495 is a bad request496 with search params provided497 returns the relevant billable users498 with search and sort params provided499 accepts only sorting options defined in a list500 does not accept query string not defined in a list501 when a specific sorting is provided502 returns the relevant billable users503 with include_awaiting_members is true504 includes awaiting users505 with non owner506 returns error507 when group can not be found508 returns error509 with non-root group510 returns error511 email512 when members have a public_email513 is expected to include (a hash including {"email" => "public@email.com"})514 when members have no public_email515 is expected to include (a hash including {"email" => nil})516 GET /groups/:id/billable_members/:user_id/memberships517 returns memberships for the billable group member518 returns not found when the user does not exist519 returns not found when the group does not exist520 returns not found when the user is not billable521 returns bad request if the user cannot admin group members522 returns bad request if the group is a subgroup523 excludes memberships outside the requested group hierarchy524 includes subgroup memberships525 includes project memberships526 includes awaiting memberships527 paginates results528 PUT /groups/:id/members/:user_id/state529 when the current user has insufficient rights530 returns 400531 when authenticated as an owner532 forwards the error from the service533 when setting the user to be active534 is successful535 when setting the user to be awaiting536 is successful537 with invalid parameters538 returns a relevant error message539 with a group that does not exist540 returns a relevant error message541 with a group that is a sub-group542 returns a relevant error message543 with a user that does not exist544 returns a relevant error message545 with a user that is not a member of the group546 returns a relevant error message547 DELETE /groups/:id/billable_members/:user_id548 when the current user has insufficient rights549 returns 400550 when authenticated as an owner551 with a user that is a GroupMember552 behaves like successful deletion553 deletes the member554 with a user that is only a ProjectMember555 behaves like successful deletion556 deletes the member557 with a user that is not a member558 returns a relevant error message559 without LDAP560 POST /projects/:id/members561 group membership locked562 project in a group563 returns a 405 method not allowed error when group membership lock is enabled564 GET /groups/:id/members565 matches json schema566 when the flag gitlab_employee_badge is on and we are on gitlab.com567 includes is_gitlab_employee in the response568 when the flag gitlab_employee_badge is off569 does not include is_gitlab_employee in the response570 when we are not on gitlab.com571 does not include is_gitlab_employee in the response572 when a group has SAML provider configured573 and current_user is group owner574 returns a list of users with group SAML identities info575 allows to filter by linked identity presence576 and current_user is not an owner577 returns a list of users without group SAML identities info578 ignores filter by linked identity presence579 with is_using_seat580 with show_seat_info set to true581 returns a list of users that contains the is_using_seat attribute582 with show_seat_info set to false583 behaves like seat information not included584 returns a list of users that does not contain the is_using_seat attribute585 with no show_seat_info set586 behaves like seat information not included587 returns a list of users that does not contain the is_using_seat attribute588 behaves like POST /:source_type/:id/members589 with :source_type == projects590 creates an audit event while creating a new member591 does not create audit event if creating a new member fails592 behaves like POST /:source_type/:id/members593 with :source_type == groups594 creates an audit event while creating a new member595 does not create audit event if creating a new member fails596 group with LDAP group link597 GET /groups/:id/members/:user_id598 does not contain an override attribute for non-LDAP users in the response599 contains an override attribute for ldap users in the response600 PUT /groups/:id/members/:user_id601 succeeds when access_level is modified after override has been set602 fails when access level is modified without an override603 POST /groups/:id/members604 returns a forbidden response605 POST /groups/:id/members/:user_id/override606 succeeds when override is set on an LDAP user607 fails when override is set for a non-ldap user608 DELETE /groups/:id/members/:user_id/override with LDAP links609 succeeds when override is already set on an LDAP user610 returns 403 when override is set for a non-ldap user611 group with pending members612 PUT /groups/:id/members/:member_id/approve613 with invalid params614 when a subgroup is used615 returns a bad request response616 when no group is found617 returns a not found response618 when the current user does not have the :admin_group_member ability619 returns a bad request response620 when the current user has permission to approve621 when the member is not found622 returns not found response623 when the activation fails due to no pending members to activate624 returns a bad request response625 when the member is a root group member626 behaves like successful activation627 activates the member628 when the member is a subgroup member629 behaves like successful activation630 activates the member631 when the member is a project member632 behaves like successful activation633 activates the member634 when the member is an invited user635 behaves like successful activation636 activates the member637 PUT /groups/:id/members/approve_all638 when the current user is not authorized639 returns a bad request response640 when the current user is authorized641 when the group ID is a subgroup642 returns a bad request response643 when params are valid644 approves all pending members645 when activation fails646 returns a bad request response647 GET /groups/:id/pending_members648 when the current user is not authorized649 returns a bad request response650 when the current user is authorized651 returns only pending members652 includes activated invited members653 returns only one membership per user654 paginates the response655 when the group ID is a subgroup656 returns a bad request response657 filtering project and group members658 for group sources659 behaves like filtered results660 for active members661 returns only active members662 for awaiting members663 returns only awaiting members664 for project sources665 behaves like filtered results666 for active members667 returns only active members668 for awaiting members669 returns only awaiting members670API::VisualReviewDiscussions671 when project is public672 behaves like accepting request without authentication673 behaves like handling merge request feedback674 creates a new note675 tracks a visual review feedback event676 with notes_create_service_tracking feature flag disabled677 does not track any events678 the API response679 responds with a status 201 Created680 returns the persisted note body681 returns the name of the Visual Review Bot assigned as the author682 returns the id of the merge request as the parent noteable_id683 returns a current time stamp instead of the provided one684 with no message body685 returns a 400 bad request error if body not given686 with an invalid project ID687 does not create a new note688 the API response689 responds with a status 404690 with an invalid merge request IID691 does not create a new note692 the API response693 responds with a status 404694 when anonymous_visual_review_feedback feature flag is disabled695 does not create a new note696 the API response697 responds 403698 returns error messaging specifying that the feature is disabled699 behaves like accepting request with authentication700 behaves like handling merge request feedback701 creates a new note702 tracks a visual review feedback event703 with notes_create_service_tracking feature flag disabled704 does not track any events705 the API response706 responds with a status 201 Created707 returns the persisted note body including user details708 returns the name of the Visual Review Bot assigned as the author709 returns the id of the merge request as the parent noteable_id710 returns a current time stamp instead of the provided one711 with no message body712 returns a 400 bad request error if body not given713 with an invalid project ID714 does not create a new note715 the API response716 responds with a status 404717 with an invalid merge request IID718 does not create a new note719 the API response720 responds with a status 404721 when anonymous_visual_review_feedback feature flag is disabled722 does not create a new note723 the API response724 responds 403725 returns error messaging specifying that the feature is disabled726 when project is private727 behaves like accepting request with authentication728 behaves like handling merge request feedback729 creates a new note730 tracks a visual review feedback event731 with notes_create_service_tracking feature flag disabled732 does not track any events733 the API response734 responds with a status 201 Created735 returns the persisted note body including user details736 returns the name of the Visual Review Bot assigned as the author737 returns the id of the merge request as the parent noteable_id738 returns a current time stamp instead of the provided one739 with no message body740 returns a 400 bad request error if body not given741 with an invalid project ID742 does not create a new note743 the API response744 responds with a status 404745 with an invalid merge request IID746 does not create a new note747 the API response748 responds with a status 404749 when anonymous_visual_review_feedback feature flag is disabled750 does not create a new note751 the API response752 responds 403753 returns error messaging specifying that the feature is disabled754 behaves like rejecting request without authentication755 returns a 404 project not found756 and authenticated user has no project access757 returns a 404 project not found758 when project is internal759 behaves like accepting request with authentication760 behaves like handling merge request feedback761 creates a new note762 tracks a visual review feedback event763 with notes_create_service_tracking feature flag disabled764 does not track any events765 the API response766 responds with a status 201 Created767 returns the persisted note body including user details768 returns the name of the Visual Review Bot assigned as the author769 returns the id of the merge request as the parent noteable_id770 returns a current time stamp instead of the provided one771 with no message body772 returns a 400 bad request error if body not given773 with an invalid project ID774 does not create a new note775 the API response776 responds with a status 404777 with an invalid merge request IID778 does not create a new note779 the API response780 responds with a status 404781 when anonymous_visual_review_feedback feature flag is disabled782 does not create a new note783 the API response784 responds 403785 returns error messaging specifying that the feature is disabled786 behaves like rejecting request without authentication787 returns a 404 project not found788 and authenticated user has no project access789 behaves like handling merge request feedback790 creates a new note791 tracks a visual review feedback event792 with notes_create_service_tracking feature flag disabled793 does not track any events794 the API response795 responds with a status 201 Created796 returns the persisted note body including user details797 returns the name of the Visual Review Bot assigned as the author798 returns the id of the merge request as the parent noteable_id799 returns a current time stamp instead of the provided one800 with no message body801 returns a 400 bad request error if body not given802 with an invalid project ID803 does not create a new note804 the API response805 responds with a status 404806 with an invalid merge request IID807 does not create a new note808 the API response809 responds with a status 404810 when anonymous_visual_review_feedback feature flag is disabled811 does not create a new note812 the API response813 responds 403814 returns error messaging specifying that the feature is disabled815Git HTTP requests (Geo)816 when current node is a secondary817 GET info_refs818 git pull819 when the repository exists820 but has not successfully synced821 behaves like a Geo 302 redirect to Primary822 valid Geo JWT token823 returns a redirect response824 when terms are enforced825 behaves like a Geo 302 redirect to Primary826 valid Geo JWT token827 returns a redirect response828 and has successfully synced829 behaves like a Geo git request830 post-dated Geo JWT token831 is expected to respond with numeric status code unauthorized832 expired Geo JWT token833 is expected to respond with numeric status code unauthorized834 invalid Geo JWT token835 is expected to respond with numeric status code unauthorized836 no Geo JWT token837 is expected to respond with numeric status code unauthorized838 Geo is unlicensed839 is expected to respond with numeric status code forbidden840 behaves like a Geo 200 git request841 valid Geo JWT token842 returns an OK response with JSON data843 when terms are enforced844 behaves like a Geo git request845 post-dated Geo JWT token846 is expected to respond with numeric status code unauthorized847 expired Geo JWT token848 is expected to respond with numeric status code unauthorized849 invalid Geo JWT token850 is expected to respond with numeric status code unauthorized851 no Geo JWT token852 is expected to respond with numeric status code unauthorized853 Geo is unlicensed854 is expected to respond with numeric status code forbidden855 behaves like a Geo 200 git request856 valid Geo JWT token857 returns an OK response with JSON data858 when the repository does not exist859 behaves like a Geo 302 redirect to Primary860 valid Geo JWT token861 returns a redirect response862 when terms are enforced863 behaves like a Geo 302 redirect to Primary864 valid Geo JWT token865 returns a redirect response866 when the project does not exist867 behaves like a Geo 302 redirect to Primary868 valid Geo JWT token869 returns a redirect response870 when terms are enforced871 behaves like a Geo 302 redirect to Primary872 valid Geo JWT token873 returns a redirect response874 git push875 behaves like a Geo 302 redirect to Primary876 valid Geo JWT token877 returns a redirect response878 POST git_upload_pack879 when the repository exists880 behaves like a Geo git request881 post-dated Geo JWT token882 is expected to respond with numeric status code unauthorized883 expired Geo JWT token884 is expected to respond with numeric status code unauthorized885 invalid Geo JWT token886 is expected to respond with numeric status code unauthorized887 no Geo JWT token888 is expected to respond with numeric status code unauthorized889 Geo is unlicensed890 is expected to respond with numeric status code forbidden891 behaves like a Geo 200 git request892 valid Geo JWT token893 returns an OK response with JSON data894 when terms are enforced895 behaves like a Geo git request896 post-dated Geo JWT token897 is expected to respond with numeric status code unauthorized898 expired Geo JWT token899 is expected to respond with numeric status code unauthorized900 invalid Geo JWT token901 is expected to respond with numeric status code unauthorized902 no Geo JWT token903 is expected to respond with numeric status code unauthorized904 Geo is unlicensed905 is expected to respond with numeric status code forbidden906 behaves like a Geo 200 git request907 valid Geo JWT token908 returns an OK response with JSON data909 when the repository does not exist910 behaves like a Geo 302 redirect to Primary911 valid Geo JWT token912 returns a redirect response913 when terms are enforced914 behaves like a Geo 302 redirect to Primary915 valid Geo JWT token916 returns a redirect response917 git-lfs918 Batch API919 POST /namespace/repo.git/info/lfs/objects/batch920 operation upload921 with a valid git-lfs version922 behaves like a Geo 302 redirect to Primary923 valid Geo JWT token924 returns a redirect response925 with an invalid git-lfs version926 description: "outdated", version: "git-lfs/2.4.1"927 that is description: "outdated", version: "git-lfs/2.4.1"928 is forbidden929 description: "unknown", version: "git-lfs"930 that is description: "unknown", version: "git-lfs"931 is forbidden932 operation download933 when the repository exists934 is handled by the secondary935 when the repository does not exist936 behaves like a Geo 302 redirect to Primary937 valid Geo JWT token938 returns a redirect response939 description: "outdated", version: "git-lfs/2.4.1"940 with an description: "outdated", version: "git-lfs/2.4.1" git-lfs version941 is handled by the secondary942 description: "unknown", version: "git-lfs"943 with an description: "unknown", version: "git-lfs" git-lfs version944 is handled by the secondary945 Transfer API946 GET /namespace/repo.git/gitlab-lfs/objects/<oid>947 when the repository exists948 behaves like a Geo 200 git-lfs request949 valid Geo JWT token950 returns an OK response with binary data951 when the repository does not exist952 behaves like a Geo 302 redirect to Primary953 valid Geo JWT token954 returns a redirect response955 Locks API956 description: "create", path: "info/lfs/locks", args: {}957 POST description: "create", path: "info/lfs/locks", args: {}958 behaves like a Geo 302 redirect to Primary959 valid Geo JWT token960 returns a redirect response961 description: "verify", path: "info/lfs/locks/verify", args: {}962 POST description: "verify", path: "info/lfs/locks/verify", args: {}963 behaves like a Geo 302 redirect to Primary964 valid Geo JWT token965 returns a redirect response966 description: "unlock", path: "info/lfs/locks/1/unlock", args: {:id=>1}967 POST description: "unlock", path: "info/lfs/locks/1/unlock", args: {:id=>1}968 behaves like a Geo 302 redirect to Primary969 valid Geo JWT token970 returns a redirect response971 when current node is the primary972 POST git_receive_pack973 when HTTP redirected from a secondary node974 stores the secondary node ID so the internal API post_receive request can generate the replication lag message975 when proxying an SSH request from a secondary node976 when gl_id is provided in JWT token977 but is invalid978 geo_gl_id: "key-999"979 returns a 403980 geo_gl_id: "key-1"981 returns a 403982 geo_gl_id: "key-999"983 returns a 403984 geo_gl_id: "junk"985 returns a 403986 geo_gl_id: "junk-1"987 returns a 403988 geo_gl_id: "kkey-1"989 returns a 403990 and is valid991 but the user has no access992 returns a 404993 but the user does not have push access994 returns a 403995 and the user has push access996 returns a 200997 repository does not exist998 is expected to respond with numeric status code not_found999 invalid scope1000 invalid scope of Geo JWT token1001 is expected to respond with numeric status code unauthorized1002 returns correct error1003 Geo JWT token scopes for wiki and repository are not interchangeable1004 for a repository but using a wiki scope1005 is expected to respond with numeric status code unauthorized1006 returns correct error1007 for a wiki but using a repository scope1008 is expected to respond with numeric status code unauthorized1009 returns correct error1010 IP allowed settings1011 returns unauthorized error1012 returns success response1013Gets registries1014 behaves like gets registries for1015 returns registries1016 behaves like a working graphql query1017 returns a successful response1018 when paginating1019 supports cursor-based pagination1020 returns the correct page of registries1021 when the feature is enabled by default1022 when the feature is disabled1023 behaves like a working graphql query1024 returns a successful response1025 when the feature is disabled by default1026 when the feature is disabled1027 errors when requesting registries (PENDING: Skipping since Geo::MergeRequestDiffReplicator is enabled by default)1028 behaves like gets registries for1029 returns registries1030 behaves like a working graphql query1031 returns a successful response1032 when paginating1033 supports cursor-based pagination1034 returns the correct page of registries1035 when the feature is enabled by default1036 when the feature is disabled1037 behaves like a working graphql query1038 returns a successful response1039 when the feature is disabled by default1040 when the feature is disabled1041 errors when requesting registries (PENDING: Skipping since Geo::PackageFileReplicator is enabled by default)1042 behaves like gets registries for1043 returns registries1044 behaves like a working graphql query1045 returns a successful response1046 when paginating1047 supports cursor-based pagination1048 returns the correct page of registries1049 when the feature is enabled by default1050 when the feature is disabled1051 behaves like a working graphql query1052 returns a successful response1053 when the feature is disabled by default1054 when the feature is disabled1055 errors when requesting registries (PENDING: Skipping since Geo::SnippetRepositoryReplicator is enabled by default)1056 behaves like gets registries for1057 returns registries1058 behaves like a working graphql query1059 returns a successful response1060 when paginating1061 supports cursor-based pagination1062 returns the correct page of registries1063 when the feature is enabled by default1064 when the feature is disabled1065 behaves like a working graphql query1066 returns a successful response1067 when the feature is disabled by default1068 when the feature is disabled1069 errors when requesting registries (PENDING: Skipping since Geo::TerraformStateVersionReplicator is enabled by default)1070 behaves like gets registries for1071 returns registries1072 behaves like a working graphql query1073 returns a successful response1074 when paginating1075 supports cursor-based pagination1076 returns the correct page of registries1077 when the feature is enabled by default1078 when the feature is disabled1079 behaves like a working graphql query1080 returns a successful response1081 when the feature is disabled by default1082 when the feature is disabled1083 errors when requesting registries (PENDING: Skipping since Geo::GroupWikiRepositoryReplicator is enabled by default)1084 behaves like gets registries for1085 returns registries1086 behaves like a working graphql query1087 returns a successful response1088 when paginating1089 supports cursor-based pagination1090 returns the correct page of registries1091 when the feature is enabled by default1092 when the feature is disabled1093 behaves like a working graphql query1094 returns a successful response1095 when the feature is disabled by default1096 when the feature is disabled1097 errors when requesting registries (PENDING: Skipping since Geo::PipelineArtifactReplicator is enabled by default)1098 behaves like gets registries for1099 returns registries1100 behaves like a working graphql query1101 returns a successful response1102 when paginating1103 supports cursor-based pagination1104 returns the correct page of registries1105 when the feature is enabled by default1106 when the feature is disabled1107 behaves like a working graphql query1108 returns a successful response1109 when the feature is disabled by default1110 when the feature is disabled1111 errors when requesting registries (PENDING: Skipping since Geo::PagesDeploymentReplicator is enabled by default)1112 behaves like gets registries for1113 returns registries1114 behaves like a working graphql query1115 returns a successful response1116 when paginating1117 supports cursor-based pagination1118 returns the correct page of registries1119 when the feature is enabled by default1120 when the feature is disabled1121 behaves like a working graphql query1122 returns a successful response1123 when the feature is disabled by default1124 when the feature is disabled1125 errors when requesting registries (PENDING: Skipping since Geo::UploadReplicator is enabled by default)1126 behaves like gets registries for1127 returns registries1128 behaves like a working graphql query1129 returns a successful response1130 when paginating1131 supports cursor-based pagination1132 returns the correct page of registries1133 when the feature is enabled by default1134 when the feature is disabled1135 behaves like a working graphql query1136 returns a successful response1137 when the feature is disabled by default1138 when the feature is disabled1139 errors when requesting registries (PENDING: Skipping since Geo::JobArtifactReplicator is enabled by default)1140API::GeoNodes1141 POST /geo_nodes1142 denies access if not admin1143 returns rendering error if params are missing1144 delegates the creation of the Geo node to Geo::NodeCreateService1145 GET /geo_nodes1146 retrieves the Geo nodes if admin is logged in1147 denies access if not admin1148 GET /geo_nodes/:id1149 retrieves the Geo nodes if admin is logged in1150 denies access if not admin1151 behaves like 404 response1152 returns 4041153 GET /geo_nodes/status1154 retrieves all Geo nodes statuses if admin is logged in1155 returns only one record if only one record exists1156 denies access if not admin1157 GET /geo_nodes/:id/status1158 retrieves the Geo nodes status if admin is logged in1159 fetches the current node status from redis1160 shows the database-held response if current node status exists in the database, but not redis1161 the secondary shows 404 response if current node status does not exist in database or redis yet1162 the primary shows 404 response if secondary node status does not exist in database yet1163 denies access if not admin1164 behaves like 404 response1165 returns 4041166 POST /geo_nodes/:id/repair1167 denies access if not admin1168 returns 200 for the primary node1169 returns 200 when node does not need repairing1170 repairs a secondary with oauth application missing1171 behaves like 404 response1172 returns 4041173 PUT /geo_nodes/:id1174 denies access if not admin1175 updates the parameters1176 can update primary1177 cannot disable a primary1178 behaves like 404 response1179 returns 4041180 auth with geo node token1181 enables the secondary node1182 disables the secondary node1183 returns bad request if you try to update the primary1184 responds with 401 when IP is not allowed1185 responds 401 if auth header is bad1186 DELETE /geo_nodes/:id1187 denies access if not admin1188 deletes the node1189 returns 500 if Geo Node could not be deleted1190 behaves like 404 response1191 returns 4041192 GET /geo_nodes/current/failures1193 primary node1194 forbids requests1195 secondary node1196 fetches the current node failures1197 does not show any registry when there is no failure1198 denies access if not admin1199 wiki type1200 only shows wiki failures1201 repository type1202 only shows repository failures1203 nonexistent type1204 returns a bad request1205 verification failures1206 fetches the current node checksum failures1207 does not show any registry when there is no failure1208 wiki type1209 only shows wiki verification failures1210 repository type1211 only shows repository failures1212 checksum mismatch failures1213 fetches the checksum mismatch failures from current node1214 does not show any registry when there is no failure1215 wiki type1216 only shows wiki checksum mismatch failures1217 repository type1218 only shows repository checksum mismatch failures1219Boards::ListsController1220 GET index1221 returns a successful 200 response1222 returns a list of board lists1223 with unauthorized user1224 returns a forbidden 403 response1225 POST create1226 with valid params1227 for label lists1228 returns a successful 200 response1229 for iteration lists1230 when license is available1231 returns a successful 200 response1232 when license is unavailable1233 returns an error1234 with max issue count1235 with licensed wip limits1236 returns the created list1237 without licensed wip limits1238 ignores max issue count1239 with max issue weight1240 with licensed wip limits1241 returns the created list1242 without licensed wip limits1243 ignores max issue count1244 with limit metric1245 with licensed wip limits1246 fails with an unknown limit metric1247 behaves like a limit metric response1248 returns the created list with expected limit_metric1249 behaves like a limit metric response1250 returns the created list with expected limit_metric1251 behaves like a limit metric response1252 returns the created list with expected limit_metric1253 behaves like a limit metric response1254 returns the created list with expected limit_metric1255 behaves like a limit metric response1256 returns the created list with expected limit_metric1257 without licensed wip limits1258 ignores limit metric setting1259 with invalid params1260 when label is empty1261 returns an unprocessable entity 422 response1262 when label that does not belongs to group1263 returns an unprocessable entity 422 response1264 with unauthorized user1265 returns a forbidden 403 response1266 PATCH update1267 when updating max limits1268 returns a successful 200 response when max issue count should be updated1269 does not overwrite existing weight when max issue count is provided1270 does not overwrite existing count when max issue weight is provided1271 fails if negative max_issue_count is provided1272 fails if negative max_issue_weight is provided1273 multiple fields update behavior1274 behaves like a list update request1275 updates fields as expected1276 behaves like a list update request1277 updates fields as expected1278 behaves like a list update request1279 updates fields as expected1280 behaves like a list update request1281 updates fields as expected1282 behaves like a list update request1283 updates fields as expected1284 behaves like a list update request1285 updates fields as expected1286 behaves like a list update request1287 updates fields as expected1288 behaves like a list update request1289 updates fields as expected1290 behaves like a list update request1291 updates fields as expected1292 behaves like a list update request1293 updates fields as expected1294 behaves like a list update request1295 updates fields as expected1296 behaves like a list update request1297 updates fields as expected1298 behaves like a list update request1299 updates fields as expected1300 behaves like a list update request1301 updates fields as expected1302 when wip limits are not licensed1303 fails to update max issue count with expected status1304 fails to update max issue weight with expected status1305 with valid position1306 returns a successful 200 response1307 moves the list to the desired position1308 with invalid position1309 returns an unprocessable entity 422 response1310 with invalid list id1311 returns a not found 404 response1312 with unauthorized user1313 returns a 422 unprocessable entity response1314 DELETE destroy1315 with valid list id1316 returns a successful 200 response1317 removes list from board1318 with invalid list id1319 returns a not found 404 response1320 with unauthorized user1321 returns a forbidden 403 response1322API::LdapGroupLinks1323 GET /groups/:id/ldap_group_links1324 when unauthenticated1325 returns authentication error1326 when a less priviledged user1327 returns forbidden1328 when owner of the group1329 returns ldap group links1330 returns error if no ldap group links found1331 POST /groups/:id/ldap_group_links1332 adding a group link via CN1333 behaves like creates LDAP group link1334 when unauthenticated1335 returns authentication error1336 when a less priviledged user1337 does not allow less priviledged user to add LDAP group link1338 when owner of the group1339 returns ok and add ldap group link1340 returns error if LDAP group link already exists1341 returns a 400 error when CN or filter is not given1342 returns a 400 error when group access is not given1343 returns a 422 error when group access is not valid1344 adding a group link via filter1345 feature is available1346 behaves like creates LDAP group link1347 when unauthenticated1348 returns authentication error1349 when a less priviledged user1350 does not allow less priviledged user to add LDAP group link1351 when owner of the group1352 returns ok and add ldap group link1353 returns error if LDAP group link already exists1354 returns a 400 error when CN or filter is not given1355 returns a 400 error when group access is not given1356 returns a 422 error when group access is not valid1357 feature is not available1358 returns 4041359 DELETE /groups/:id/ldap_group_links/:cn1360 when unauthenticated1361 returns authentication error1362 when a less priviledged user1363 does not remove the LDAP group link1364 when owner of the group1365 removes ldap group link1366 returns 404 if LDAP group cn not used for a LDAP group link1367 DELETE /groups/:id/ldap_group_links/:provider/:cn1368 when unauthenticated1369 returns authentication error1370 when a less priviledged user1371 does not remove the LDAP group link1372 when owner of the group1373 returns 404 if LDAP group cn not used for a LDAP group link for the specified provider1374 removes ldap group link1375 DELETE /groups/:id/ldap_group_links1376 deleting a group link via CN and provider1377 behaves like deletes LDAP group link1378 when unauthenticated1379 returns authentication error1380 when a less priviledged user1381 does not remove the LDAP group link1382 when owner of the group1383 removes ldap group link1384 behaves like group link is not found1385 when owner of the group1386 returns 404 if LDAP input not used for a LDAP group link1387 deleting a group link via filter and provider1388 feature is available1389 behaves like deletes LDAP group link1390 when unauthenticated1391 returns authentication error1392 when a less priviledged user1393 does not remove the LDAP group link1394 when owner of the group1395 removes ldap group link1396 behaves like group link is not found1397 when owner of the group1398 returns 404 if LDAP input not used for a LDAP group link1399 feature is not available1400 returns 4041401API::MergeRequestApprovalRules1402 GET /projects/:id/merge_requests/:merge_request_iid/approval_rules/:approval_rule_id1403 behaves like getting approval rule/s1404 user cannot read merge request1405 responds with 4031406 use can read merge request1407 matches the response schema1408 groups contain private groups1409 current_user cannot see private group1410 hides private group1411 current_user can see private group1412 shows private group1413 has existing merge request rule that overrides a project-level rule1414 includes source_rule1415 GET /projects/:id/merge_requests/:merge_request_iid/approval_rules1416 behaves like getting approval rule/s1417 user cannot read merge request1418 responds with 4031419 use can read merge request1420 matches the response schema1421 groups contain private groups1422 current_user cannot see private group1423 hides private group1424 current_user can see private group1425 shows private group1426 has existing merge request rule that overrides a project-level rule1427 includes source_rule1428 use can read merge request1429 returns the correct amount of rules1430 POST /projects/:id/merge_requests/:merge_request_iid/approval_rules1431 behaves like a protected API endpoint for merge request approval rule action1432 disable_overriding_approvers_per_merge_request is set to true1433 responds with 4031434 disable_overriding_approvers_per_merge_request is set to false1435 user cannot update merge request1436 responds with 4031437 when user can update merge request and approval rules can be overridden1438 matches the response schema1439 users are passed1440 includes users1441 groups are passed1442 includes groups1443 approval_project_rule_id is passed1444 with blank approver params1445 copies the attributes from the project rule except approvers1446 with omitted approver params1447 copies the attributes from the project rule except approvals_required1448 PUT /projects/:id/merge_requests/:merge_request_iid/approval_rules/:approval_rule_id1449 behaves like a protected API endpoint for merge request approval rule action1450 disable_overriding_approvers_per_merge_request is set to true1451 responds with 4031452 disable_overriding_approvers_per_merge_request is set to false1453 user cannot update merge request1454 responds with 4031455 when user can update merge request and approval rules can be overridden1456 matches the response schema1457 behaves like a protected API endpoint that only allows action on regular merge request approval rule1458 approval rule is not a regular type1459 responds with 4031460 users are passed1461 changes users1462 groups are passed1463 changes groups1464 remove_hidden_groups is passed1465 when set to true1466 removes the existing private group1467 when set to false1468 does not remove the existing private group1469 DELETE /projects/:id/merge_requests/:merge_request_iid/approval_rules/:approval_rule_id1470 behaves like a protected API endpoint for merge request approval rule action1471 disable_overriding_approvers_per_merge_request is set to true1472 responds with 4031473 disable_overriding_approvers_per_merge_request is set to false1474 user cannot update merge request1475 responds with 4031476 when user can update merge request and approval rules can be overridden1477 responds with 2041478 behaves like a protected API endpoint that only allows action on regular merge request approval rule1479 approval rule is not a regular type1480 responds with 4031481Groups::EpicIssuesController1482 GET #index1483 behaves like unlicensed epics action1484 returns 403 status1485 when epics feature is enabled1486 when user has access to epic1487 returns status 2001488 returns the correct json1489 when user does not have access to epic1490 returns 404 status1491 POST #create1492 behaves like unlicensed epics action1493 returns 403 status1494 when epics feature is enabled1495 when user has permissions to create requested association1496 returns correct response for the correct issue reference1497 creates a new EpicIssue record1498 when user does not have permissions to create requested association1499 returns correct response for the correct issue reference1500 does not create a new EpicIssue record1501 DELETE #destroy1502 behaves like unlicensed epics action1503 returns 403 status1504 when epics feature is enabled1505 when user has permissions to delete the link1506 returns status 2001507 destroys the link1508 when user does not have permissions to delete the link1509 returns status 4031510 does not destroy the link1511 when the epic from the association does not equal epic from the path1512 returns status 4041513 does not destroy the link1514 when the epic_issue record does not exists1515 returns status 4041516 PUT #update1517 behaves like unlicensed epics action1518 returns 403 status1519 when epics feature is enabled1520 when user has permissions to admin the epic1521 returns status 2001522 updates the issue position value1523 when user does not have permissions to admin the epic1524 returns status 4031525 when the epic from the association does not equal epic from the path1526 returns status 4041527 when the epic_issue record does not exists1528 returns status 4041529Epics through GroupQuery1530 Get list of epics from a group1531 when the request is correct1532 returns epics successfully1533 behaves like a working graphql query1534 returns a successful response1535 with multiple epics1536 sorts by created_at descending by default1537 has upvote/downvote information1538 with sort and pagination1539 with start_date_asc1540 behaves like sorted paginated query1541 behaves like requires variables1542 shared example requires variables to be set1544 when sorting1545 sorts correctly1546 when paginating1547 paginates correctly1548 when last and sort params are present1549 fetches last elements without error1550 with start_date_desc1551 behaves like sorted paginated query1552 behaves like requires variables1553 shared example requires variables to be set1555 when sorting1556 sorts correctly1557 when paginating1558 paginates correctly1559 when last and sort params are present1560 fetches last elements without error1561 with end_date_asc1562 behaves like sorted paginated query1563 behaves like requires variables1564 shared example requires variables to be set1566 when sorting1567 sorts correctly1568 when paginating1569 paginates correctly1570 when last and sort params are present1571 fetches last elements without error1572 with end_date_desc1573 behaves like sorted paginated query1574 behaves like requires variables1575 shared example requires variables to be set1577 when sorting1578 sorts correctly1579 when paginating1580 paginates correctly1581 when last and sort params are present1582 fetches last elements without error1583 with created_at_asc1584 behaves like sorted paginated query1585 behaves like requires variables1586 shared example requires variables to be set1588 when sorting1589 sorts correctly1590 when paginating1591 paginates correctly1592 when last and sort params are present1593 fetches last elements without error1594 with created_at_desc1595 behaves like sorted paginated query1596 behaves like requires variables1597 shared example requires variables to be set1599 when sorting1600 sorts correctly1601 when paginating1602 paginates correctly1603 when last and sort params are present1604 fetches last elements without error1605 with updated_at_asc1606 behaves like sorted paginated query1607 behaves like requires variables1608 shared example requires variables to be set1610 when sorting1611 sorts correctly1612 when paginating1613 paginates correctly1614 when last and sort params are present1615 fetches last elements without error1616 with updated_at_desc1617 behaves like sorted paginated query1618 behaves like requires variables1619 shared example requires variables to be set1621 when sorting1622 sorts correctly1623 when paginating1624 paginates correctly1625 when last and sort params are present1626 fetches last elements without error1627 can admin epics1628 when permission is absent1629 returns false for adminEpic1630 when permission is present1631 returns true for adminEpic1632 query performance1633 avoids n+1 queries when loading parent field1634 with negated filters1635 returns only matching epics1636 with top_level_hierarchy_only argument1637 returns only top level matching epics when set as `true`1638 returns all matching epics when set as `false1639 filter1640 with search params1641 returns only matching epics1642 when error requests1643 when epics feature is disabled1644 returns empty1645 when epics feature is enabled1646 returns a nil group for a user without permissions to see the group1647 Get epic from a group1648 when the request is correct1649 returns an epic successfully1650 behaves like a working graphql query1651 returns a successful response1652 N+1 query checks1653 when requesting `user_notes_count`1654 prevents N+1 queries1655 when requesting `user_discussions_count`1656 prevents N+1 queries1657 when requesting related epics fields1658 when requesting `blocked`1659 prevents N+1 queries1660 when requesting blocked_by_count1661 prevents N+1 queries1662 when requesting blocking_count1663 prevents N+1 queries1664 Get related epic links fields1665 returns correct field values1666Projects::BoardsController1667 GET index1668 returns a list of project boards including milestones1669 behaves like redirects to last visited board1670 when multiple boards are disabled1671 renders first board1672 when multiple boards are enabled1673 redirects to latest visited board1674 behaves like pushes wip limits to frontend1675 self-hosted with correct license1676 is enabled for all groups if the license is correct1677 on .com1678 for group with correct plan1679 is enabled1680 for group with incorrect or no plan1681 is not enabled1682 GET recent1683 behaves like returns recently visited boards1684 returns last 4 visited boards1685 unauthenticated1686 returns a 3021687 GET show1688 behaves like multiple issue boards show1689 when multiple issue boards is enabled1690 lets user view board11691 lets user view board21692 when multiple issue boards is disabled1693 let user view the default shown board1694 renders 200 when project board is not the default1695 POST create1696 with the multiple issue boards available1697 with valid params1698 returns a successful 200 response1699 returns the created board1700 valid board is created1701 with invalid params1702 returns an unprocessable entity 422 response1703 with unauthorized user1704 returns a not found 404 response1705 PATCH update1706 with valid params1707 returns a successful 200 response1708 returns the updated board1709 updates board with valid params1710 with invalid params1711 returns an unprocessable entity 422 response1712 with invalid board id1713 returns a not found 404 response1714 with unauthorized user1715 returns a not found 404 response1716 DELETE destroy1717 with valid board id1718 redirects to the issue boards page1719 removes board from project1720 with invalid board id1721 returns a not found 404 response1722 with unauthorized user1723 returns a not found 404 response1724Projects::MergeRequestsController1725 GET #show1726 when the user has developer access1727 publishes the security_reports_mr_widget_prompt experiment1728 when the user does not have developer access1729 does not publish the security_reports_mr_widget_prompt experiment1730 when the project is not licensed for sast1731 does not publish the security_reports_mr_widget_prompt experiment1732 when the project has disabled the security and compliance features1733 does not publish the security_reports_mr_widget_prompt experiment1734 when the the user is a guest1735 does not publish the security_reports_mr_widget_prompt experiment1736 GET #edit1737 when the project requires code owner approval1738 does not cause an extra queries when code owner rules are present1739 does not cause extra queries when multiple code owner rules are present1740 GET #index1741 avoids N+11742API::Internal::Kubernetes1743 GET /internal/kubernetes/project_info1744 returns 401 if Authorization header not sent1745 returns 401 if Authorization is for non-existent agent1746 not authenticated1747 returns 4011748 kubernetes_agent_internal_api feature flag disabled1749 returns 4041750 an agent is found1751 project is public1752 returns expected data1753 repository is for project members only1754 returns 4041755 project is private1756 returns 4041757 and agent belongs to project1758 returns 2001759 project is internal1760 returns 4041761 project does not exist1762 returns 4041763 project does not have access to the feature1764 returns 4041765 PUT /internal/kubernetes/modules/starboard_vulnerability1766 returns 401 if Authorization header not sent1767 returns 401 if Authorization is for non-existent agent1768 not authenticated1769 returns 4011770 kubernetes_agent_internal_api feature flag disabled1771 returns 4041772 is authenticated for an agent1773 returns ok when a vulnerability is created1774 accepts the same payload twice1775 responds with the created vulnerability's UUID1776 when payload is invalid1777 returns bad request1778 when required parameters are missing1779 missing_param: :vulnerability1780 returns bad request1781 missing_param: :scanner1782 returns bad request1783 when feature is not available1784 returns forbidden for non licensed project1785 POST /internal/kubernetes/modules/starboard_vulnerability/scan_result1786 returns 401 if Authorization header not sent1787 returns 401 if Authorization is for non-existent agent1788 not authenticated1789 returns 4011790 kubernetes_agent_internal_api feature flag disabled1791 returns 4041792 is authenticated for an agent1793 returns ok1794 resolves undetected vulnerabilities1795 marks undetected vulnerabilities as resolved on default branch1796 does not resolve vulnerabilities with other report types1797 does not resolve other projects' vulnerabilities1798 when payload is invalid1799 returns bad request1800 when feature is not available1801 returns forbidden for non licensed project1802 GET /internal/kubernetes/modules/starboard_vulnerability/scan_execution_policies1803 returns 401 if Authorization header not sent1804 returns 401 if Authorization is for non-existent agent1805 not authenticated1806 returns 4011807 kubernetes_agent_internal_api feature flag disabled1808 returns 4041809 when security_orchestration_policies is not licensed1810 returns 4041811 when security_orchestration_policies is licensed1812 when policies are present1813 returns expected data1814 when policies are empty1815 returns empty array1816Boards::IssuesController1817 GET index1818 with invalid board id1819 returns a not found 404 response1820 when list id is present1821 with valid list id1822 returns issues that have the list label applied1823 returns blocked status for each issue where the blocking issue is still opened1824 with search param1825 returns matching issues1826 with invalid list id1827 returns a not found 404 response1828 when list id is missing1829 returns opened issues without board labels applied1830 with search param1831 returns matching issues using optimized search1832 with unauthorized user1833 returns a forbidden 403 response1834 POST create1835 with valid params1836 returns a successful 200 response1837 returns the created issue1838 with invalid params1839 when title is nil1840 returns an unprocessable entity 422 response1841 when list does not belongs to project board1842 returns a not found 404 response1843 with invalid board id1844 returns a not found 404 response1845 with invalid list id1846 returns a not found 404 response1847 with unauthorized user1848 returns a forbidden 403 response1849 PATCH update1850 with valid params1851 returns a successful 200 response1852 moves issue to the desired list1853 with invalid params1854 returns a unprocessable entity 422 response for invalid lists1855 returns a not found 404 response for invalid board id1856 returns a not found 404 response for invalid issue id1857 with unauthorized user1858 returns a forbidden 403 response1859API::VulnerabilityIssueLinks1860 GET /vulnerabilities/:id/issue_links1861 with an authorized user with proper permissions1862 when linked issue is not confidential and available for the user1863 gets the list of visible issue links1864 when there is an additional confidential issue linked1865 gets the list of visible issue links1866 does not return confidential issue in the response1867 when link is created to issue in the inaccessible project1868 gets the list of visible issue links1869 does not return issue from inaccessible project1870 behaves like responds with "not found" for an unknown vulnerability ID1871 is expected to respond with numeric status code not_found1872 behaves like forbids access to vulnerability API endpoint in case of disabled features1873 when security dashboard feature is not available1874 responds with 403 Forbidden1875 permissions1876 is expected to be allowed for :admin1877 is expected to be allowed for :owner1878 is expected to be allowed for :maintainer1879 is expected to be allowed for :developer1880 is expected to be allowed for :auditor1881 is expected to be denied for :reporter1882 is expected to be denied for :guest1883 is expected to be denied for :anonymous1884 POST /vulnerabilities/:id/issue_links1885 with an authorized user with proper permissions1886 with valid params1887 creates a new vulnerability-issue link1888 when issue is from different project1889 when target_project_id is invalid1890 responds with "not found" and specific error message1891 when user does not have access to the project1892 responds with "not found" and specific error message1893 when user is authorized with proper permissions to the project1894 creates a new vulnerability-issue link1895 with unknown issue ID1896 responds with "not found" and specific error message1897 when a link between these issue and vulnerability already exists1898 responds with "conflict" status code and specific error message1899 when a "created" link for a vulnerability already exists1900 responds with "conflict" status code and specific error message1901 when trying to relate a confidential issue of the same project1902 creates a new vulnerability-issue link1903 behaves like responds with "not found" for an unknown vulnerability ID1904 is expected to respond with numeric status code not_found1905 behaves like forbids access to vulnerability API endpoint in case of disabled features1906 when security dashboard feature is not available1907 responds with 403 Forbidden1908 permissions1909 is expected to be allowed for :admin1910 is expected to be allowed for :owner1911 is expected to be allowed for :maintainer1912 is expected to be allowed for :developer1913 is expected to be denied for :auditor1914 is expected to be denied for :reporter1915 is expected to be denied for :guest1916 is expected to be denied for :anonymous1917 DELETE /vulnerabilities/:id/issue_links/:issue_link_id1918 with an authorized user with proper permissions1919 with valid params1920 deletes the specified vulnerability-issue link1921 with link to an issue that the current user cannot see1922 deletes the link without disclosing the linked issue1923 with unknown issue link ID1924 responds with "not found" and specific error message1925 behaves like responds with "not found" for an unknown vulnerability ID1926 is expected to respond with numeric status code not_found1927 behaves like forbids access to vulnerability API endpoint in case of disabled features1928 when security dashboard feature is not available1929 responds with 403 Forbidden1930 permissions1931 is expected to be allowed for :admin1932 is expected to be allowed for :owner1933 is expected to be allowed for :maintainer1934 is expected to be allowed for :developer1935 is expected to be denied for :auditor1936 is expected to be denied for :reporter1937 is expected to be denied for :guest1938 is expected to be denied for :anonymous1939API::GroupBoards1940 behaves like group and project boards1941 avoids N+1 queries1942 GET /groups/:id/boards1943 when unauthenticated1944 returns authentication error1945 when authenticated1946 returns the issue boards1947 GET /groups/:id/boards/:board_id1948 get a single board by id1949 PUT /groups/:id/boards/:board_id1950 updates the board name1951 updates the issue board booleans1952 GET /groups/:id/boards/:board_id/lists1953 returns issue board lists1954 returns 404 if board not found1955 GET /groups/:id/boards/:board_id/lists/:list_id1956 returns a list1957 returns 404 if list not found1958 POST /groups/:id/boards/lists1959 creates a new issue board list for labels1960 returns 400 when creating a new list if label_id is invalid1961 returns 403 for members with guest role1962 PUT /groups/:id/boards/:board_id/lists/:list_id to update only position1963 updates a list1964 returns 404 error if list id not found1965 returns 403 for members with guest role1966 DELETE /groups/:id/boards/lists/:list_id1967 rejects a non member from deleting a list1968 rejects a user with guest role from deleting a list1969 returns 404 error if list id not found1970 when the user is parent owner1971 deletes the list if an admin requests it1972 behaves like 412 response1973 for a modified ressource1974 returns 412 with a JSON error1975 for an unmodified ressource1976 returns 204 with an empty body1977 behaves like multiple and scoped issue boards1978 multiple issue boards1979 POST /groups/:id/boards1980 creates a board1981 PUT /groups/:id/boards/:board_id1982 updates a board1983 does not remove missing attributes from the board1984 allows removing optional attributes1985 DELETE /groups/:id/boards/:board_id1986 deletes a board1987 with the scoped_issue_board-feature available1988 returns the milestone when the `scoped_issue_board` feature is enabled1989 hides the milestone when the `scoped_issue_board` feature is disabled1990 POST /groups/:id/boards/:board_id/lists1991 behaves like milestone board list1992 when milestone_id is sent1993 returns 400 if milestone is not found1994 returns 400 if milestone list feature is not available1995 creates a milestone list if milestone is found1996 behaves like assignee board list1997 when assignee_id is sent1998 returns 400 if user is not found1999 returns 400 if assignee list feature is not available2000 creates an assignee list if user is found2001 behaves like iteration board list2002 when iteration_id is sent2003 returns 400 if iteration is not found2004 returns 400 if not licensed2005 creates an iteration list if iteration is found2006API::StatusChecks2007 GET :id/merge_requests/:merge_request_iid/status_checks2008 when current_user has access2009 when merge request has received status check responses2010 returns a 2002011 returns the total number of status checks for the MRs project2012 has the correct status values2013 POST :id/:merge_requests/:merge_request_iid/status_check_responses2014 permissions2015 user_permissions: :maintainer, applies_to_target_project: true, expected_status: :created2016 returns the correct status2017 user_permissions: :maintainer, applies_to_target_project: false, expected_status: :not_found2018 returns the correct status2019 user_permissions: :developer, applies_to_target_project: true, expected_status: :created2020 returns the correct status2021 user_permissions: :developer, applies_to_target_project: false, expected_status: :not_found2022 returns the correct status2023 user_permissions: :guest, applies_to_target_project: true, expected_status: :forbidden2024 returns the correct status2025 user_permissions: :guest, applies_to_target_project: false, expected_status: :not_found2026 returns the correct status2027 when user has access2028 when external status check ID does not belong to the requested project2029 returns a not found status2030 when sha is not the source branch HEAD2031 does not create a new approval2032 returns a conflict error2033 when user is not authenticated2034 returns an unauthorized status2035 DELETE projects/:id/external_status_checks/:check_id2036 deletes the specified rule2037 when feature is disabled, unlicensed or user has permission2038 licensed: false, project_owner: false, status: :not_found2039 returns the correct status code2040 licensed: false, project_owner: true, status: :unauthorized2041 returns the correct status code2042 licensed: true, project_owner: false, status: :not_found2043 returns the correct status code2044 licensed: true, project_owner: true, status: :success2045 returns the correct status code2046 POST projects/:id/external_status_checks2047 successfully creating new external approval rule2048 creates a new external approval rule2049 with protected branches2050 returns expected status code2051 creates protected branch records2052 responds with expected JSON2053 when feature is disabled, unlicensed or user has permission2054 licensed: false, project_owner: false, status: :not_found2055 returns the correct status code2056 licensed: false, project_owner: true, status: :unauthorized2057 returns the correct status code2058 licensed: true, project_owner: false, status: :not_found2059 returns the correct status code2060 licensed: true, project_owner: true, status: :created2061 returns the correct status code2062 GET projects/:id/external_status_checks2063 responds with expected JSON2064 paginates correctly2065 when feature is disabled, unlicensed or user has permission2066 licensed: false, project_owner: false, status: :not_found2067 returns the correct status code2068 licensed: false, project_owner: true, status: :unauthorized2069 returns the correct status code2070 licensed: true, project_owner: false, status: :not_found2071 returns the correct status code2072 licensed: true, project_owner: true, status: :success2073 returns the correct status code2074 PUT projects/:id/external_status_checks/:check_id2075 successfully updating external approval rule2076 updates an approval rule2077 responds with correct http status2078 when referencing a protected branch outside of the project2079 is invalid2080 with protected branches2081 returns expected status code2082 creates protected branch records2083 responds with expected JSON2084 when feature is disabled, unlicensed or user has permission2085 licensed: false, project_owner: false, status: :not_found2086 returns the correct status code2087 licensed: false, project_owner: true, status: :unauthorized2088 returns the correct status code2089 licensed: true, project_owner: false, status: :not_found2090 returns the correct status code2091 licensed: true, project_owner: true, status: :success2092 returns the correct status code2093API::ProjectApprovalSettings2094 GET /projects/:id/approval_settings2095 when the request is correct2096 matches the response schema2097 when target_branch is specified2098 filters the rules returned by target branch2099 private group filtering2100 excludes private groups if user has no access2101 includes private groups if user has access2102 report_approver rules2103 includes report_approver rules2104 when project is archived2105 when user has normal permissions2106 returns 4032107 when user has project admin permissions2108 allows access2109 POST /projects/:id/approval_settings/rules2110 behaves like an API endpoint for creating project approval rule2111 when missing parameters2112 returns 400 status2113 when user is without access2114 returns 4032115 when the request is correct2116 returns 201 status2117 changes settings properly2118 when protected_branch_ids param is present2119 creates approval rule associated to specified protected branches2120 with rule_type set to report_approver2121 without report_type2122 returns a error http status2123 when creating a approval rule for each report_type2124 rule_name: "License-Check", report_type: :license_scanning2125 specifies `report_rule` and `report_type`2126 rule_name: "Coverage-Check", report_type: :code_coverage2127 specifies `report_rule` and `report_type`2128 with valid scanners2129 returns 201 status2130 with valid severity_levels2131 returns 201 status2132 with vulnerabilities_allowed2133 returns 201 status2134 PUT /projects/:id/approval_settings/:approval_rule_id2135 behaves like an API endpoint for updating project approval rule2136 as a project admin2137 behaves like a user with access2138 sets approvers2139 when protected_branch_ids param is present2140 associates approval rule to specified protected branches2141 with valid scanners2142 returns 200 status2143 with valid severity_levels2144 returns 200 status2145 when approver already exists2146 when sending json data2147 removes all approvers if empty params are given2148 with vulnerabilities_allowed2149 returns 200 status2150 as a global admin2151 behaves like a user with access2152 sets approvers2153 when protected_branch_ids param is present2154 associates approval rule to specified protected branches2155 with valid scanners2156 returns 200 status2157 with valid severity_levels2158 returns 200 status2159 when approver already exists2160 when sending json data2161 removes all approvers if empty params are given2162 with vulnerabilities_allowed2163 returns 200 status2164 as a random user2165 returns 4032166 DELETE /projects/:id/approval_settings/rules/:approval_rule_id2167 behaves like an API endpoint for deleting project approval rule2168 destroys2169 when approval rule not found2170 returns not found2171 when user is not eligible to delete2172 returns forbidden2173Projects::MergeRequests::CreationsController2174 GET #new2175 default templates2176 when a template has been set via project settings2177 does not select a default template2178 when a template has not been set via project settings2179 selects a default template2180 POST #create2181 disables query limiting2182 the approvals_before_merge param2183 when it is less than the one in the target project2184 sets the param to the project value2185 creates the merge request2186 when it is equal to the one in the target project2187 sets the param to the correct value2188 creates the merge request2189 when it is greater than the one in the target project2190 saves the param in the merge request2191 creates the merge request2192 when the target project is a fork of a deleted project2193 uses the default from the target project2194 creates the merge request2195 overriding approvers per MR2196 enabled2197 does create approval rules2198 disabled2199 does not create approval rules2200Groups::Epics::EpicLinksController2201 GET #index2202 behaves like unlicensed subepics action2203 returns 403 status2204 when epics are enabled2205 when user has access to epic2206 returns the correct JSON response2207 when user does not have access to epic2208 returns 404 status2209 POST #create2210 behaves like unlicensed subepics action2211 returns 403 status2212 when subepics are enabled2213 when user has permissions to create requested association2214 returns correct response for the correct issue reference2215 updates a parent for the referenced epic2216 when user does not have permissions to create requested association2217 returns 403 status2218 does not update parent attribute2219 PUT #update2220 behaves like unlicensed subepics action2221 returns 403 status2222 when subepics are enabled2223 when user has permissions to reorder epics2224 returns status 2002225 updates the epic position2226 when move_before_id is not a sibling epic2227 returns status 4042228 when user does not have permissions to reorder epics2229 returns status 4032230 DELETE #destroy2231 behaves like unlicensed subepics action2232 returns 403 status2233 when epics are enabled2234 when user has permissions to update the parent epic2235 returns status 2002236 destroys the link2237 when user does not have permissions to update the parent epic2238 returns status 4042239 does not destroy the link2240 when the epic does not have any parent2241 returns status 4042242 when user has permissions to update the parent epic but epics feature is disabled2243 does not destroy the link2244Projects::AuditEventsController2245 GET #index2246 when authorized as auditor2247 tracks search event2248 behaves like when audit_events feature is available2249 renders index with 200 status code2250 invokes AuditLogFinder with correct arguments2251 behaves like AuditLogFinder params2252 has the correct params2253 author2254 when no author entity type is specified2255 behaves like AuditLogFinder params2256 has the correct params2257 when the author entity type is specified2258 behaves like AuditLogFinder params2259 has the correct params2260 ordering2261 when no sort order is specified2262 behaves like orders by id descending2263 orders by id descending2264 when sorting by latest events first2265 behaves like orders by id descending2266 orders by id descending2267 when sorting by oldest events first2268 orders by id ascending2269 when sorting by an unsupported sort order2270 behaves like orders by id descending2271 orders by id descending2272 when invalid date2273 created_before: "invalid-date", created_after: nil2274 returns an error2275 created_before: nil, created_after: true2276 returns an error2277 created_before: "2021-13-10", created_after: nil2278 returns an error2279 created_before: nil, created_after: "2021-02-31"2280 returns an error2281 created_before: "2021-03-31", created_after: "2021-02-31"2282 returns an error2283 when date range is greater than limit2284 behaves like a date range error is returned2285 created_after: "2021-01-01", created_before: "2021-02-02"2286 returns an error2287 created_after: "2022-01-31", created_before: nil2288 returns an error2289 behaves like pagination2290 sets instance variables2291 paginates audit events, without casting a count query2292 behaves like when audit_events feature is not available2293 renders 4042294 when authorized as maintainer2295 tracks search event2296 behaves like when audit_events feature is available2297 renders index with 200 status code2298 invokes AuditLogFinder with correct arguments2299 behaves like AuditLogFinder params2300 has the correct params2301 author2302 when no author entity type is specified2303 behaves like AuditLogFinder params2304 has the correct params2305 when the author entity type is specified2306 behaves like AuditLogFinder params2307 has the correct params2308 ordering2309 when no sort order is specified2310 behaves like orders by id descending2311 orders by id descending2312 when sorting by latest events first2313 behaves like orders by id descending2314 orders by id descending2315 when sorting by oldest events first2316 orders by id ascending2317 when sorting by an unsupported sort order2318 behaves like orders by id descending2319 orders by id descending2320 when invalid date2321 created_before: "invalid-date", created_after: nil2322 returns an error2323 created_before: nil, created_after: true2324 returns an error2325 created_before: "2021-13-10", created_after: nil2326 returns an error2327 created_before: nil, created_after: "2021-02-31"2328 returns an error2329 created_before: "2021-03-31", created_after: "2021-02-31"2330 returns an error2331 when date range is greater than limit2332 behaves like a date range error is returned2333 created_after: "2021-01-01", created_before: "2021-02-02"2334 returns an error2335 created_after: "2022-01-31", created_before: nil2336 returns an error2337 behaves like pagination2338 sets instance variables2339 paginates audit events, without casting a count query2340 behaves like when audit_events feature is not available2341 renders 4042342 authorized as user without admin project permission2343 returns only events by current user2344 unauthorized2345 renders 4042346Ldap::OmniauthCallbacksController2347 displays LDAP sync flash on first sign in2348 skips LDAP sync flash on subsequent sign ins2349 access denied2350 logs a failure event2351Querying an Iteration2352 when the user has access to the iteration2353 is expected to include {"title" => nil}2354 behaves like a working graphql query2355 returns a successful response2356 when `report` field is included2357 when fullPath argument is not provided2358 current_user: group_member, expected_scope_count: 42359 is expected to include {"burnupTimeSeries" => [{"scopeCount" => 4}]}2360 current_user: project1_member, expected_scope_count: 42361 is expected to include {"burnupTimeSeries" => [{"scopeCount" => 4}]}2362 when fullPath argument is provided2363 when current user has authorized access to one or more projects under the namespace2364 scope: group, current_user: group_member, expected_scope_count: 42365 is expected to include {"burnupTimeSeries" => [{"scopeCount" => 4}]}2366 scope: group, current_user: project1_member, expected_scope_count: 42367 is expected to include {"burnupTimeSeries" => [{"scopeCount" => 4}]}2368 scope: project1, current_user: group_member, expected_scope_count: 22369 is expected to include {"burnupTimeSeries" => [{"scopeCount" => 2}]}2370 scope: project1, current_user: project1_member, expected_scope_count: 22371 is expected to include {"burnupTimeSeries" => [{"scopeCount" => 2}]}2372 scope: project2, current_user: project2_member, expected_scope_count: 12373 is expected to include {"burnupTimeSeries" => [{"scopeCount" => 1}]}2374 scope: project2, current_user: group_member, expected_scope_count: 12375 is expected to include {"burnupTimeSeries" => [{"scopeCount" => 1}]}2376 scope: subgroup, current_user: group_member, expected_scope_count: 12377 is expected to include {"burnupTimeSeries" => [{"scopeCount" => 1}]}2378 scope: subgroup, current_user: subgroup_member, expected_scope_count: 12379 is expected to include {"burnupTimeSeries" => [{"scopeCount" => 1}]}2380 when current user cannot access the given namespace2381 scope: other_group, current_user: group_member2382 raises an exception2383 scope: project1, current_user: subgroup_member2384 raises an exception2385 scope: project1, current_user: project2_member2386 raises an exception2387 scope: project2, current_user: project1_member2388 raises an exception2389 scope: subgroup, current_user: project1_member2390 raises an exception2391 when the user does not have access to the iteration2392 is expected to be nil2393 behaves like a working graphql query2394 returns a successful response2395 when ID argument is missing2396 raises an exception2397 scoped path2398 inside a project context2399 group-owned iteration2400 behaves like scoped path2401 is expected to include {"scopedPath" => "/group384/project578/-/iterations/4", "scopedUrl" => /\/group384\/project578\/-\/iterations\/4$/, "webPath" => "/groups/group384/-/iterations/4", "webUrl" => /\/groups\/group384\/-\/iterations\/4$/}2402 when given a raw model id (backward compatibility)2403 is expected to include {"scopedPath" => "/group384/project578/-/iterations/4", "scopedUrl" => /\/group384\/project578\/-\/iterations\/4$/, "webPath" => "/groups/group384/-/iterations/4", "webUrl" => /\/groups\/group384\/-\/iterations\/4$/}2404 inside a group context2405 group-owned iteration2406 behaves like scoped path2407 is expected to include {"scopedPath" => "/groups/group384/-/iterations/4", "scopedUrl" => /\/groups\/group384\/-\/iterations\/4$/, "webPath" => "/groups/group384/-/iterations/4", "webUrl" => /\/groups\/group384\/-\/iterations\/4$/}2408 when given a raw model id (backward compatibility)2409 is expected to include {"scopedPath" => "/groups/group384/-/iterations/4", "scopedUrl" => /\/groups\/group384\/-\/iterations\/4$/, "webPath" => "/groups/group384/-/iterations/4", "webUrl" => /\/groups\/group384\/-\/iterations\/4$/}2410 group-owned iteration2411 behaves like scoped path2412 is expected to include {"scopedPath" => "/groups/group384/group387/-/iterations/4", "scopedUrl" => /\/groups\/group384\/group387\/-\/iterations\/4$/, "webPath" => "/groups/group384/-/iterations/4", "webUrl" => /\/groups\/group384\/-\/iterations\/4$/}2413 when given a raw model id (backward compatibility)2414 is expected to include {"scopedPath" => "/groups/group384/group388/-/iterations/4", "scopedUrl" => /\/groups\/group384\/group388\/-\/iterations\/4$/, "webPath" => "/groups/group384/-/iterations/4", "webUrl" => /\/groups\/group384\/-\/iterations\/4$/}2415 root context2416 group-owned iteration2417 behaves like scoped path2418 is expected to include {"scopedPath" => "/groups/group384/-/iterations/4", "scopedUrl" => /\/groups\/group384\/-\/iterations\/4$/, "webPath" => "/groups/group384/-/iterations/4", "webUrl" => /\/groups\/group384\/-\/iterations\/4$/}2419 when given a raw model id (backward compatibility)2420 is expected to include {"scopedPath" => "/groups/group384/-/iterations/4", "scopedUrl" => /\/groups\/group384\/-\/iterations\/4$/, "webPath" => "/groups/group384/-/iterations/4", "webUrl" => /\/groups\/group384\/-\/iterations\/4$/}2421 project-owned iteration2422 behaves like scoped path2423 is expected to include {"scopedPath" => "/groups/group384/-/iterations/4", "scopedUrl" => /\/groups\/group384\/-\/iterations\/4$/, "webPath" => "/groups/group384/-/iterations/4", "webUrl" => /\/groups\/group384\/-\/iterations\/4$/}2424 when given a raw model id (backward compatibility)2425 is expected to include {"scopedPath" => "/groups/group384/-/iterations/4", "scopedUrl" => /\/groups\/group384\/-\/iterations\/4$/, "webPath" => "/groups/group384/-/iterations/4", "webUrl" => /\/groups\/group384\/-\/iterations\/4$/}2426Groups::EpicBoardsController2427 GET index2428 with epics disabled2429 does not create a new board when group does not have one2430 returns a not found 404 response2431 with authorized user2432 creates a new board when group does not have one2433 returns correct response2434 with multiple boards2435 redirects to latest visited board2436 with unauthorized user2437 does not create a new board when group does not have one2438 returns a not found 404 response2439 with non-logged-in user and public group2440 creates a new board when group does not have one2441 returns a 200 response2442 json request2443 is not supported2444 behaves like pushes wip limits to frontend2445 self-hosted with correct license2446 is enabled for all groups if the license is correct2447 on .com2448 for group with correct plan2449 is enabled2450 for group with incorrect or no plan2451 is not enabled2452 behaves like tracking unique hll events2453 tracks unique event2454 GET show2455 with epics disabled2456 returns a not found 404 response2457 json request2458 is not supported2459 when format is HTML2460 renders template2461 with unauthorized user2462 returns a not found 404 response2463 when group is public2464 when user is signed out2465 does not save visit2466 when user is signed in2467 saves the visit2468 when epic board does not belong to group2469 returns a not found 404 response2470 behaves like disabled when using an external authorization service2471 works when the feature is not enabled2472 renders a 404 with a message when the feature is enabled2473 behaves like tracking unique hll events2474 tracks unique event2475API::MergeRequestApprovalSettings2476 GET /groups/:id/merge_request_approval_settings2477 when the user is authorised2478 matches the response schema2479 allow_author_approval values2480 behaves like resolvable2481 instance_prevents_approval: true, group_allows_approval: true, value: false, locked: true, inherited_from: "instance"2482 has the correct value2483 has the correct locked status2484 has the correct inheritance2485 instance_prevents_approval: true, group_allows_approval: false, value: false, locked: true, inherited_from: "instance"2486 has the correct value2487 has the correct locked status2488 has the correct inheritance2489 instance_prevents_approval: false, group_allows_approval: true, value: true, locked: false, inherited_from: nil2490 has the correct value2491 has the correct locked status2492 has the correct inheritance2493 instance_prevents_approval: false, group_allows_approval: false, value: false, locked: false, inherited_from: nil2494 has the correct value2495 has the correct locked status2496 has the correct inheritance2497 allow_committer_approval values2498 behaves like resolvable2499 instance_prevents_approval: true, group_allows_approval: true, value: false, locked: true, inherited_from: "instance"2500 has the correct value2501 has the correct locked status2502 has the correct inheritance2503 instance_prevents_approval: true, group_allows_approval: false, value: false, locked: true, inherited_from: "instance"2504 has the correct value2505 has the correct locked status2506 has the correct inheritance2507 instance_prevents_approval: false, group_allows_approval: true, value: true, locked: false, inherited_from: nil2508 has the correct value2509 has the correct locked status2510 has the correct inheritance2511 instance_prevents_approval: false, group_allows_approval: false, value: false, locked: false, inherited_from: nil2512 has the correct value2513 has the correct locked status2514 has the correct inheritance2515 allow_overrides_to_approver_list_per_merge_request values2516 behaves like resolvable2517 instance_prevents_approval: true, group_allows_approval: true, value: false, locked: true, inherited_from: "instance"2518 has the correct value2519 has the correct locked status2520 has the correct inheritance2521 instance_prevents_approval: true, group_allows_approval: false, value: false, locked: true, inherited_from: "instance"2522 has the correct value2523 has the correct locked status2524 has the correct inheritance2525 instance_prevents_approval: false, group_allows_approval: true, value: true, locked: false, inherited_from: nil2526 has the correct value2527 has the correct locked status2528 has the correct inheritance2529 instance_prevents_approval: false, group_allows_approval: false, value: false, locked: false, inherited_from: nil2530 has the correct value2531 has the correct locked status2532 has the correct inheritance2533 when the group does not have existing settings2534 returns in-memory default settings2535 when the user is not authorised2536 returns 403 status2537 PUT /groups/:id/merge_request_approval_setting2538 when the user is authorised2539 returns 200 status with correct response body2540 matches the response schema2541 when update fails2542 returns 400 status2543 when invalid params2544 returns 400 status with error message2545 when the user is not authorised2546 returns 403 status2547 GET /projects/:id/merge_request_approval_settings2548 matches the response schema2549 when the project does not have existing settings2550 returns in-memory default settings2551 PUT /projects/:id/merge_request_approval_settings2552 matches the response schema and updates the params2553Projects::ClustersController2554 behaves like cluster metrics2555 GET #metrics2556 functionality2557 can query Prometheus2558 queries cluster metrics2559 when response has content2560 returns prometheus query response2561 when response has no content2562 returns prometheus query response2563 without Prometheus2564 returns not found2565 cannot query Prometheus2566 returns not found2567 security2568 is allowed for admin when admin mode enabled2569 is denied for admin when admin mode disabled2570 is expected to be allowed for owner. Expected: 200,201,204,302 Got: 2042571 is expected to be allowed for maintainer. Expected: 200,201,204,302 Got: 2042572 is expected to be denied for developer. Expected: 401,404 Got: 4042573 is expected to be denied for reporter. Expected: 401,404 Got: 4042574 is expected to be denied for guest. Expected: 401,404 Got: 4042575 is expected to be denied for user. Expected: 401,404 Got: 4042576 is expected to be denied for external. Expected: 401,404 Got: 4042577Projects::Security::DastSiteProfilesController2578 GET #new2579 behaves like a GET request2580 when the "Security & Compliance" feature is disabled2581 is expected to respond with numeric status code not_found2582 feature available2583 user authorized2584 can access page2585 user not authorized2586 sees a 404 error2587 feature not available2588 license doesnt't support the feature2589 sees a 404 error2590 GET #edit2591 behaves like a GET request2592 when the "Security & Compliance" feature is disabled2593 is expected to respond with numeric status code not_found2594 feature available2595 user authorized2596 can access page2597 user not authorized2598 sees a 404 error2599 feature not available2600 license doesnt't support the feature2601 sees a 404 error2602 feature available and user authorized2603 record exists2604 includes a serialized dast_profile in the response body2605 record does not exist2606 sees a 404 error2607Registrations::GroupsController2608 GET #new2609 behaves like Registrations::GroupsController GET #new2610 with an unauthenticated user2611 is expected to respond with numeric status code redirect2612 is expected to redirect to "/users/sign_in"2613 with an authenticated user2614 when on .com2615 is expected to respond with numeric status code ok2616 is expected to render template new2617 assigns the group variable to a new Group with the default group visibility2618 tracks an event for the combined_registration experiment2619 user without the ability to create a group2620 is expected to respond with numeric status code not_found2621 when not on .com2622 is expected to respond with numeric status code not_found2623 behaves like hides email confirmation warning2624 with an unconfirmed email address present2625 is expected not to set confirm warning for "unconfirmed@gitlab.com"2626 without an unconfirmed email address present2627 is expected not to set confirm warning for "user1823@example.org"2628 POST #create2629 with an unauthenticated user2630 is expected to respond with numeric status code redirect2631 is expected to redirect to "/users/sign_in"2632 with an authenticated user2633 when on .com2634 behaves like hides email confirmation warning2635 with an unconfirmed email address present2636 is expected not to set confirm warning for "unconfirmed@gitlab.com"2637 without an unconfirmed email address present2638 is expected not to set confirm warning for "user1826@example.org"2639 when group can be created2640 creates a group2641 passes group_params to Groups::CreateService2642 when the user is `setup_for_company: true`2643 passes `setup_for_company: true` to the Groups::CreateService2644 when in trial onboarding - apply_trial_for_trial_onboarding_flow2645 when trial can be applied2646 with redirection to projects page2647 is expected to redirect to "/users/sign_up/projects/new?namespace_id=2827&trial=false&trial_onboarding_flow=true"2648 when failing to apply trial2649 is expected to render template new2650 when not in the trial onboarding - registration_onboarding_flow2651 when trial_during_signup - trial_during_signup_flow2652 when a user chooses a trial - create_lead_and_apply_trial_flow2653 when successfully creating a lead and applying trial2654 tracks for the combined_registration experiment2655 with redirection to projects page2656 is expected to redirect to "/users/sign_up/projects/new?namespace_id=2828&trial=true"2657 when failing to create a lead and apply trial2658 is expected to render template new2659 when user chooses no trial2660 redirects user to projects page2661 does not call trial creation methods2662 when the group cannot be created2663 does not create a group2664 does not call call the successful flow2665 is expected to respond with numeric status code ok2666 is expected to render template new2667 when not on .com2668 is expected to respond with numeric status code not_found2669Groups::Analytics::ProductivityAnalyticsController2670 usage counter2671 increments usage counter2672 doesn't increment the usage counter when JSON request is sent2673 GET show2674 when user is not authorized to view productivity analytics2675 renders 403, forbidden error2676 when feature is not licensed2677 renders forbidden error2678 when the feature is licensed2679 behaves like tracking unique visits2680 tracks unique visit if the format is HTML2681 tracks unique visit if DNT is not enabled2682 does not track unique visit if DNT is enabled2683 does not track unique visit if the format is JSON2684 when user is an auditor2685 allows access2686 GET show.json2687 when feature is not licensed2688 renders forbidden error2689 when invalid params are given2690 returns 422, unprocessable_entity2691 without group_id specified2692 renders 403, forbidden2693 with non-existing group_id2694 renders 404, not_found2695 with non-existing project_id2696 renders 404, not_found2697 with group specified2698 for list of MRs2699 serializes whatever analytics returns with ProductivityAnalyticsMergeRequestEntity2700 sets pagination headers2701 when project from a sub-group is requested2702 succeeds2703 for scatterplot charts2704 renders whatever analytics returns for scatterplot2705 for histogram charts2706 renders whatever analytics returns for histogram2707Admin::ClustersController2708 behaves like cluster metrics2709 GET #metrics2710 functionality2711 can query Prometheus2712 queries cluster metrics2713 when response has content2714 returns prometheus query response2715 when response has no content2716 returns prometheus query response2717 without Prometheus2718 returns not found2719 cannot query Prometheus2720 returns not found2721 GET environments2722 functionality2723 responds successfully2724 security2725 is expected to be allowed for admin. Expected: 200,201,204,302 Got: 2002726 is expected to be denied for user. Expected: 401,404 Got: 4042727 is expected to be denied for external. Expected: 401,404 Got: 4042728 GET show2729 expires etag cache to force reload environments list2730Update an external audit event destination2731 when feature is licensed2732 when current user is a group owner but destination belongs to another group2733 behaves like a mutation on an unauthorized resource2734 behaves like a mutation that returns top-level errors2735 is expected to contain exactly "The resource that you are attempting to access does not exist or you don't have permission to perform this action"2736 behaves like a mutation that does not update a destination2737 does not destroy the destination2738 does not audit the update2739 when current user is a group owner of a different group2740 behaves like a mutation on an unauthorized resource2741 behaves like a mutation that returns top-level errors2742 is expected to contain exactly "The resource that you are attempting to access does not exist or you don't have permission to perform this action"2743 behaves like a mutation that does not update a destination2744 does not destroy the destination2745 does not audit the update2746 when current user is a group owner2747 updates the destination2748 audits the update2749 when current user is a group maintainer2750 behaves like a mutation that does not update a destination2751 does not destroy the destination2752 does not audit the update2753 when current user is a group developer2754 behaves like a mutation that does not update a destination2755 does not destroy the destination2756 does not audit the update2757 when current user is a group guest2758 behaves like a mutation that does not update a destination2759 does not destroy the destination2760 does not audit the update2761 when feature is unlicensed2762 does not destroy the destination2763 behaves like a mutation on an unauthorized resource2764 behaves like a mutation that returns top-level errors2765 is expected to contain exactly "The resource that you are attempting to access does not exist or you don't have permission to perform this action"2766Projects::FeatureFlagIssuesController2767 GET #index2768 returns linked issues2769 does not return linked issues for a reporter2770 orders by feature_flag_issue id2771 returns the correct relation_path when the feature flag is linked to multiple issues2772 returns the correct relation_path when multiple feature flags are linked to an issue2773 returns the correct relation_path when there are multiple linked feature flags and issues2774 does not make N+1 queries2775 returns only issues readable by the user2776 when feature flag related issues feature is unlicensed2777 does not return linked issues2778 POST #create2779 creates a link between the feature flag and the issue2780 creates a link for the correct feature flag when there are multiple feature flags and projects2781 creates a cross project link for a project in the same namespace2782 creates a cross project link for a project in another namespace2783 does not create a link for a reporter2784 does not create a cross project link when the user is not a member of the issue's project2785 does not create a cross project link when the user is a guest of the issue's project2786 does not create a link when the user cannot read the issue2787 when feature flag related issues feature is unlicensed2788 does not create a link between the feature flag and the issue2789 DELETE #destroy2790 unlinks the issue from the feature flag2791 does not unlink the issue for a reporter2792 when feature flag related issues feature is unlicensed2793 does not unlink the issue2794Projects::OnDemandScansController2795 GET #index2796 behaves like on-demand scans page2797 when the "Security & Compliance" feature is disabled2798 is expected to respond with numeric status code not_found2799 feature available2800 user authorized2801 can access page2802 user not authorized2803 sees a 404 error2804 feature not available2805 sees a 404 error if the license doesn't support the feature2806 GET #new2807 behaves like on-demand scans page2808 when the "Security & Compliance" feature is disabled2809 is expected to respond with numeric status code not_found2810 feature available2811 user authorized2812 can access page2813 user not authorized2814 sees a 404 error2815 feature not available2816 sees a 404 error if the license doesn't support the feature2817 GET #edit2818 behaves like on-demand scans page2819 when the "Security & Compliance" feature is disabled2820 is expected to respond with numeric status code not_found2821 feature available2822 user authorized2823 can access page2824 user not authorized2825 sees a 404 error2826 feature not available2827 sees a 404 error if the license doesn't support the feature2828 feature available and user can access page2829 dast_profile exists in the database2830 includes a serialized dast_profile in the response body2831 dast_profile does not exist in the database2832 sees a 404 error2833Mutations::Epics::Update2834 when the user does not have permission2835 does not update the epic2836 behaves like a mutation that returns a top-level access error2837 is expected to contain exactly "The resource that you are attempting to access does not exist or you don't have permission to perform this action"2838 when the user has permission2839 when epics are disabled2840 behaves like a mutation that returns top-level errors2841 is expected to contain exactly "The resource that you are attempting to access does not exist or you don't have permission to perform this action"2842 when epics are enabled2843 updates the epic2844 when closing the epic2845 closes open epic2846 when reopening the epic2847 allows epic to be reopend2848 when changing labels of the epic2849 adds and removes labels correctly2850 when labels are added2851 adds labels correctly and keeps the title ordering2852 when there are ActiveRecord validation errors2853 does not update the epic2854 behaves like a mutation that returns errors in the response2855 is expected to contain exactly "Title can't be blank"2856 when the list of attributes is empty2857 behaves like a mutation that returns top-level errors2858 is expected to contain exactly "The list of epic attributes is empty"2859Groups::IssuesController2860 POST #bulk_update2861 when group bulk edit feature is not enabled2862 returns 404 status2863 when group bulk edit feature is enabled2864 when user has permissions to bulk update issues2865 returns status 2002866 updates issues milestone and epic2867 when params are incorrect2868 returns 422 status2869 when user does not have permissions to bulk update issues2870 returns status 4042871 does not update issues milestone or epic2872Create an external audit event destination2873 when feature is licensed2874 when current user is a group owner2875 resolves group by full path2876 creates the destination2877 audits the creation2878 when destination is invalid2879 returns correct errors2880 behaves like a mutation that does not create a destination2881 does not destroy the destination2882 does not audit the creation2883 when group is a subgroup2884 behaves like a mutation that does not create a destination2885 does not destroy the destination2886 does not audit the creation2887 when current user is a group maintainer2888 behaves like a mutation that does not create a destination2889 does not destroy the destination2890 does not audit the creation2891 when current user is a group developer2892 behaves like a mutation that does not create a destination2893 does not destroy the destination2894 does not audit the creation2895 when current user is a group guest2896 behaves like a mutation that does not create a destination2897 does not destroy the destination2898 does not audit the creation2899 when feature is unlicensed2900 does not create the destination2901 behaves like a mutation on an unauthorized resource2902 behaves like a mutation that returns top-level errors2903 is expected to contain exactly "The resource that you are attempting to access does not exist or you don't have permission to perform this action"2904API::Invitations EE Invitations2905 POST /groups/:id/invitations2906 behaves like member creation audit event2907 creates an audit event while creating a new member2908 does not create audit event if creating a new member fails2909 behaves like admin signup restrictions email error - denylist2910 behaves like restricted email error2911 returns an http error response and the validation message2912 when the group is restricted by admin signup restrictions2913 behaves like admin signup restrictions email error - allowlist2914 behaves like restricted email error2915 returns an http error response and the validation message2916 behaves like admin signup restrictions email error - email restrictions2917 behaves like restricted email error2918 returns an http error response and the validation message2919 when the group is restricted by group signup restriction - allowed domains for signup2920 behaves like restricted email error2921 returns an http error response and the validation message2922 POST /projects/:id/invitations2923 behaves like member creation audit event2924 creates an audit event while creating a new member2925 does not create audit event if creating a new member fails2926 with group membership locked2927 returns an error and exception message when group membership lock is enabled2928 when the project is restricted by admin signup restrictions2929 behaves like admin signup restrictions email error - denylist2930 behaves like restricted email error2931 returns an http error response and the validation message2932 when the group is restricted by admin signup restrictions2933 behaves like admin signup restrictions email error - allowlist2934 behaves like restricted email error2935 returns an http error response and the validation message2936 behaves like admin signup restrictions email error - email restrictions2937 behaves like restricted email error2938 returns an http error response and the validation message2939 group with LDAP group link2940 POST /groups/:id/invitations2941 returns a forbidden response2942 PUT /groups/:id/invitations/:email2943 returns a forbidden response2944 DELETE /groups/:id/invitations/:email2945 returns a forbidden response2946Projects::PipelinesController2947 GET security2948 with a sast artifact2949 with feature enabled2950 redirects to the pipeline page with the security tab query param2951 with feature disabled2952 is expected to redirect to "/namespace551/project613/-/pipelines/53"2953 without sast artifact2954 with feature enabled2955 is expected to redirect to "/namespace551/project613/-/pipelines/53"2956 with feature disabled2957 is expected to redirect to "/namespace551/project613/-/pipelines/53"2958 GET codequality_report2959 redirects to pipeline path with dag tab query param2960 GET licenses2961 with a license scanning artifact2962 with feature enabled2963 redirects to the pipeline page with the licenses tab query param2964 with feature enabled json2965 will return license scanning report in json format2966 will return mit license allowed status2967 will return sorted by name2968 returns a JSON representation of the license data2969 approval_status2970 is expected to eq "allowed"2971 when not authorized2972 is expected to respond with numeric status code not_found2973 with feature disabled2974 is expected to redirect to "/namespace551/project613/-/pipelines/53"2975 with feature disabled json2976 will not return report2977 without license scanning artifact2978 with feature enabled2979 is expected to redirect to "/namespace551/project613/-/pipelines/53"2980 with feature enabled json2981 will return 4042982 with feature disabled2983 is expected to redirect to "/namespace551/project613/-/pipelines/53"2984 with feature disabled json2985 will return 4042986Registrations::WelcomeController2987 #show2988 publishes combined_registration experiment data to the client2989 #continuous_onboarding_getting_started2990 without a signed in user2991 is expected to redirect to "/users/sign_in"2992 with an owner user signed in2993 is expected to render template continuous_onboarding_getting_started2994 sets the correct session key2995 with a non-owner user signed in2996 is expected to respond with numeric status code not_found2997 #trial_getting_started2998 without a signed in user2999 is expected to redirect to "/users/sign_in"3000 with an owner user signed in3001 is expected to render template trial_getting_started3002 with a non-owner user signed3003 is expected to respond with numeric status code not_found3004 #trial_onboarding_board3005 without a signed in user3006 is expected to redirect to "/users/sign_in"3007 with a non-owner user signin3008 is expected to respond with numeric status code not_found3009 with an owner user signs in3010 gitlab onboarding project is not imported yet3011 redirects to the boards path3012 gitlab onboarding project is imported yet3013 redirects to the board path3014 #update3015 without a signed in user3016 is expected to redirect to "/users/sign_up"3017 with a signed in user3018 email updates3019 when not on gitlab.com3020 when the user opted in3021 sets the email_opted_in field3022 when the user opted out3023 sets the email_opted_in field3024 when on gitlab.com3025 when registration_objective field is provided3026 sets the registration_objective3027 when setup for company is false3028 when the user opted in3029 sets the email_opted_in fields3030 when user opted out3031 does not set the rest of the email_opted_in fields3032 when setup for company is true3033 sets email_opted_in fields3034 redirection3035 when signup_onboarding is not enabled3036 is expected to redirect to "/dashboard/projects"3037 when signup_onboarding is enabled3038 when joining_project is "true"3039 is expected to redirect to "/dashboard/projects"3040 when joining_project is "false"3041 when combined_registration is candidate variant3042 is expected to redirect to "/users/sign_up/groups_projects/new"3043 when setup_for_company is "true"3044 is expected to redirect to "/users/sign_up/company/new?jobs_to_be_done_other=_jobs_to_be_done_other_®istration_objective=code_storage&role=software_developer"3045 when setup_for_company is "false"3046 is expected to redirect to "/users/sign_up/groups/new"3047 when in subscription flow3048 is expected not to redirect to "/users/sign_up/groups/new"3049 when in invitation flow3050 is expected not to redirect to "/users/sign_up/groups/new"3051 when in trial flow3052 is expected not to redirect to "/users/sign_up/groups/new"3053Groups::Analytics::CycleAnalyticsController3054 GET show3055 when the license is available3056 succeeds3057 increments usage counter3058 renders `show` template when feature flag is enabled3059 when the initial, default value stream is requested3060 renders the default in memory value stream3061 when invalid name is given3062 renders 404 error3063 tracking events3064 tracks redis hll event3065 tracks snowplow event3066 when the license is missing3067 renders 403 error3068 when non-existent group is given3069 renders 404 error3070 with group and value stream params3071 builds request params with group and value stream3072 GET use_aggregated_backend3073 when the license is not available3074 renders 403 error3075 when the license is available3076 succeeds3077 when non-existent group is given3078 renders 404 error3079 when the aggregation record is already created3080 succeeds3081Projects::PathLocksController3082 GET #index3083 displays the lock paths3084 when the user does not have access3085 does not allow access3086 POST #toggle3087 when LFS is enabled3088 when locking a file3089 locks the file3090 locks the file in LFS3091 tries to create the PathLock only once3092 when locking a directory3093 locks the directory3094 does not locks the directory through LFS3095 when file does not exist3096 locks the file3097 does not lock the file in LFS3098 when unlocking a file3099 with files3100 unlocks the file3101 unlocks the file in LFS3102 when file does not exist3103 unlocks the file3104 does not unlock the file in LFS3105 when unlocking a directory3106 unlocks the directory3107 does not call the LFS unlock service3108 when LFS is not enabled3109 locks the file3110 doesn't lock the file in LFS3111 unlocks the file3112 when the user does not have access3113 does not allow access3114Groups::Epics::RelatedEpicLinksController3115 GET /*group_id/:group_id/epics/:epic_id/related_epic_links3116 returns JSON response3117 avoids N+1 queries3118 behaves like a not available action3119 when related_epics are not available3120 returns not_found error3121 DELETE /*group_id/:group_id/epics/:epic_id/related_epic_links/:link_id3122 deletes related epic link3123 behaves like a not available action3124 when related_epics are not available3125 returns not_found error3126 when related epic link id is not valid3127 returns 4043128 when related epic link does not belong to epic3129 does not delete related epic link3130 POST /groups/*group_id/-/epics/:epic_id/related_epic_links3131 with success3132 returns JSON response3133 delegates the creation of the related epic link to Epics::RelatedEpicLinks::CreateService3134 creates a new Epic::RelatedEpicLink record3135 returns correct relation path in response3136 with failure3137 when unauthorized3138 returns 4033139 when failing service result3140 returns failure JSON3141 behaves like a not available action3142 when related_epics are not available3143 returns not_found error3144Admin::ProjectsController3145 GET /projects/:id3146 includes Geo Status widget partial3147 when Geo is enabled and is a secondary node3148 renders Geo Status widget3149 displays a different read-only message based on skip_readonly_message3150 without Geo enabled3151 doesnt render Geo Status widget3152GroupsController3153 external authorization3154 with external authorization service enabled3155 PUT #update3156 no license3157 does not update the file_template_project_id successfully3158 with license3159 updates the file_template_project_id successfully3160 with insights feature3161 updates insight project_id successfully3162 removes insight successfully3163 with sso enforcement enabled3164 without SAML session3165 prevents access to group resources3166 with active SAML session3167 allows access to group resources3168 "group information content" preference behaviour3169 GET #show3170 with user having proper permissions and feature enabled3171 with group view set as default3172 renders the expected template3173 with group view set to security dashboard3174 in HTML format3175 redirects to the security dashboard3176 in Atom format3177 does not redirect to the security dashboard3178 GET #details3179 with user having proper permissions and feature enabled3180 with group view set to security dashboard3181 does not redirect to the security dashboard3182Groups::Security::PoliciesController3183 GET #edit3184 with authorized user3185 when feature is licensed3186 when feature is disabled3187 returns 4043188 when feature is enabled3189 renders the edit page3190 when type is missing3191 redirects to #index3192 when type is invalid3193 redirects to #index3194 when id does not exist3195 returns 4043196 when there is no policy configuration3197 redirects to #index3198 when policy yaml file does not exist3199 redirects to project page3200 when policy yaml is invalid3201 redirects to policy file3202 when feature is not licensed3203 returns 4043204 with unauthorized user3205 returns 4043206 with anonymous user3207 returns 4043208 GET #index3209 user_role: :reporter, license: true, feature: true, status: :not_found3210 is expected to respond with numeric status code not_found3211 user_role: :developer, license: true, feature: false, status: :not_found3212 is expected to respond with numeric status code not_found3213 user_role: :developer, license: false, feature: true, status: :not_found3214 is expected to respond with numeric status code not_found3215 user_role: :developer, license: false, feature: false, status: :not_found3216 is expected to respond with numeric status code not_found3217 user_role: :developer, license: true, feature: true, status: :ok3218 is expected to respond with numeric status code ok3219CiMinutesUsageMailer3220 #notify3221 when it is a group3222 behaves like mail format3223 is expected to have subject of "Action required: There are no remaining Pipeline minutes for group457"3224 is expected to be bcc'd to ["bob@example.com", "john@example.com"]3225 is expected to have body including "/group459"3226 is expected to have body including "has run out of Shared Runner Pipeline minutes"3227 is expected to have body including "http://localhost/-/subscriptions/buy_minutes?selected_group=3118"3228 when it is a namespace3229 behaves like mail format3230 is expected to have subject of "Action required: There are no remaining Pipeline minutes for Sidney Jones2037"3231 is expected to be bcc'd to ["bob@example.com", "john@example.com"]3232 is expected to have body including "/namespace569"3233 is expected to have body including "has run out of Shared Runner Pipeline minutes"3234 is expected to have body including "http://localhost/-/subscriptions/buy_minutes?selected_group=3123"3235 #notify_limit3236 when it is a group3237 behaves like mail format3238 is expected to have subject of "Action required: Less than 30% of Pipeline minutes remain for group462"3239 is expected to be bcc'd to ["bob@example.com", "john@example.com"]3240 is expected to have body including "/group464"3241 is expected to have body including "has 30% or less Shared Runner Pipeline minutes"3242 is expected to have body including "http://localhost/-/subscriptions/buy_minutes?selected_group=3128"3243 when it is a namespace3244 behaves like mail format3245 is expected to have subject of "Action required: Less than 30% of Pipeline minutes remain for Sidney Jones2042"3246 is expected to be bcc'd to ["bob@example.com", "john@example.com"]3247 is expected to have body including "/namespace574"3248 is expected to have body including "has 30% or less Shared Runner Pipeline minutes"3249 is expected to have body including "http://localhost/-/subscriptions/buy_minutes?selected_group=3133"3250Dashboard::ProjectsController3251 #removed3252 when licensed3253 for admin users3254 returns success3255 paginates the records3256 returns projects marked for deletion3257 for non-admin users3258 returns success3259 paginates the records3260 for should_check_namespace_plan3261 should_check_namespace_plan: false, removed_projects_count: 33262 accounts total removable projects3263 should_check_namespace_plan: true, removed_projects_count: 23264 accounts total removable projects3265 when not licensed3266 behaves like returns not found3267 is expected to respond with numeric status code not_found3268getting compliance frameworks for a collection of projects3269 querying a single project3270 avoids N+1 queries3271 contains the expected compliance framework3272 projects can have a compliance framework3273 contains the correct number of compliance frameworks3274 projects that share the same compliance framework3275 shares the same compliance framework id3276Projects::Security::VulnerabilityReportController3277 when the "Security & Compliance" feature is disabled3278 is expected to respond with numeric status code not_found3279 behaves like SecurityDashboardsPermissions3280 access for all actions3281 when security dashboard feature is disabled3282 returns 4043283 when security dashboard feature is enabled3284 when user has guest access3285 denies access3286 when user has developer access3287 grants access3288 GET #index3289 when project has no vulnerabilities3290 renders empty state3291 when project has vulnerabilities3292 renders dashboard with vulnerability metadata3293Projects::VariablesController3294 PATCH #update3295 when creating variable3296 logs audit event3297 logs variable creation3298 when updating variable protection3299 logs audit event3300 logs variable protection update3301 when destroying variable3302 logs audit event3303 logs variable destruction3304Mutations::Boards::Epics::Create3305 when the user does not have permission3306 behaves like a mutation that returns a top-level access error3307 is expected to contain exactly "The resource that you are attempting to access does not exist or you don't have permission to perform this action"3308 behaves like does not create an epic3309 is expected not to change `Board.count`3310 when the user has permission3311 when all arguments are given3312 when everything is ok3313 creates the epic3314 returns the created epic3315 when arguments are nil resulting in a top level error3316 behaves like does not create an epic3317 is expected not to change `Board.count`3318 behaves like a mutation that returns top-level errors3319 is expected to include /boardId \(Expected value to not be null\)/3320 when argument is blank resulting in an ActiveRecord error3321 returns an error3322 behaves like does not create an epic3323 is expected not to change `Board.count`3324 when arguments are missing3325 behaves like a mutation that returns top-level errors3326 is expected to include /boardId \(Expected value to not be null\)/3327 behaves like does not create an epic3328 is expected not to change `Board.count`3329API::Dependencies3330 GET /projects/:id/dependencies3331 behaves like a gitlab tracking event3332 creates a gitlab tracking event view_dependencies3333 with an authorized user with proper permissions3334 returns paginated dependencies3335 returns vulnerabilities info3336 with nil package_manager3337 returns no dependencies3338 with filter options3339 returns yarn dependencies3340 with wrong key3341 returns error message3342 with pagination params3343 returns paginated dependencies3344 without permissions to see vulnerabilities3345 returns empty vulnerabilities3346 with authorized user without read permissions3347 responds with 403 Forbidden3348 with no project access3349 responds with 404 Not Found3350API::Commits3351 POST /projects/:id/repository/commits3352 create3353 a new file that does not match a codeowners entry3354 creates the commit3355 a new file that matches a codeowner entry3356 when codeowners are required3357 behaves like handling the codeowners interaction3358 does not create a new validator3359 delete3360 a deleted file that does not match a codeowner entry3361 creates the commit3362 a deleted file that matches a codeowner entry3363 behaves like handling the codeowners interaction3364 does not create a new validator3365 move3366 a deleted file that does not match a codeowner entry3367 creates the commit3368 a moved file that matches a codeowner entry3369 behaves like handling the codeowners interaction3370 does not create a new validator3371 POST :id/repository/commits/:sha/cherry_pick3372 no file in the cherry-picked commit matches a codeowner entry3373 cherry-picks the ref commit3374 a file in the cherry-picked commit matches a codeowner entry3375 when codeowners are required3376 behaves like handling the codeowners interaction3377 does not create a new validator3378 with an exceeded namespace storage limit3379 rejects the request3380 POST :id/repository/commits/:sha/revert3381 no file in the revert commit matches a codeowner entry3382 reverts the ref commit3383 a file in the revert commit matches a codeowner entry3384 when codeowners are required3385 behaves like handling the codeowners interaction3386 does not create a new validator3387 with an exceeded namespace storage limit3388 rejects the request3389Mutations::Boards::Create3390 behaves like boards create mutation3391 when the user does not have permission3392 does not create the board3393 behaves like a mutation that returns a top-level access error3394 is expected to contain exactly "The resource that you are attempting to access does not exist or you don't have permission to perform this action"3395 when the user has permission3396 when the parent (project_path or group_path) param is given3397 when everything is ok3398 creates the board3399 returns the created board3400 when hide_backlog_list parameter is true3401 returns the board with correct hide_backlog_list field3402 when hide_closed_list parameter is true3403 returns the board with correct hide_closed_list field3404 when the Boards::CreateService returns an error response3405 does not create a board3406 returns an error3407 when neither project_path nor group_path param is given3408 does not create the board3409 behaves like a mutation that returns top-level errors3410 is expected to contain exactly "Exactly one of group_path or project_path arguments is required"3411 when the user has permission to create a board3412 sets cadence_id on creation3413getting Incident Management on-call schedules3414 without project permissions3415 is expected to be nil3416 behaves like a working graphql query3417 returns a successful response3418 with project permissions3419 with unavailable feature3420 is expected to be empty3421 behaves like a working graphql query3422 returns a successful response3423 without on-call schedules3424 is expected to be empty3425 behaves like a working graphql query3426 returns a successful response3427 with on-call schedules3428 returns the correct properties of the on-call schedule3429 behaves like a working graphql query3430 returns a successful response3431 with an array of iids given3432 is expected to eq 13433 is expected to eq "1"3434 behaves like a working graphql query3435 returns a successful response3436Projects::InsightsController3437 when insights configuration project cannot be read by current user3438 GET #show.html3439 behaves like 404 status3440 returns 404 status3441 GET #show.json3442 behaves like 404 status3443 returns 404 status3444 POST #query3445 behaves like 404 status3446 returns 404 status3447 when insights configuration project can be read by current user3448 GET #show.html3449 behaves like 200 status3450 returns 200 status3451 GET #show.json3452 behaves like 200 status3453 returns 200 status3454 POST #query.json3455 behaves like 200 status3456 returns 200 status3457 GET #show3458 behaves like tracking unique visits3459 tracks unique visit if the format is HTML3460 tracks unique visit if DNT is not enabled3461 does not track unique visit if DNT is enabled3462 does not track unique visit if the format is JSON3463Query.group(fullPath).projects.dastProfiles.dastProfileSchedule3464 when a user has access to dast_profile_schedule3465 returns a dast_profile_schedule3466 behaves like query dastProfiles.dastProfileSchedule shared examples3467 avoids N+1 queries3468API::Ci::Variables3469 POST /projects/:id/variables3470 logs audit event3471 logs variable creation3472 PUT /projects/:id/variables/:key3473 logs audit event3474 logs variable protection update3475 DELETE /projects/:id/variables/:key3476 logs audit event3477 logs variable destruction3478API::Analytics::ProjectDeploymentFrequency3479 when user has access to the project3480 returns `ok`3481 with params: from 2017 to 20193482 returns `bad_request` with expected message3483 with params: from 2019 to 20173484 returns `bad_request` with expected message3485 with params: from 2020/04/02 to request time3486 returns the expected deployment frequencies3487 with params: from 2020/02/01 to 2020/04/01 by all3488 returns the expected deployment frequencies3489 with params: from 2020/02/01 to 2020/04/01 by month3490 returns the expected deployment frequencies3491 with params: from 2020/02/01 to 2020/04/01 by day3492 returns the expected deployment frequencies3493 with params: invalid interval3494 returns `bad_request`3495 with params: missing from3496 returns `bad_request`3497 when user does not have access to the project3498 returns `not_found`3499 when feature is not available in plan3500 when user has access to the project3501 returns `forbidden`3502 when user does not have access to the project3503 returns `not_found`3504API::GeoReplication3505 GET /geo_replication/designs3506 retrieves the designs if admin is logged in3507 retrieves the designs according to search term3508 denies access if not admin3509 PUT /geo_replication/designs/:id/resync3510 marks registry record for resync3511 denies access if not admin3512 POST /geo_replication/designs/resync3513 marks registry record for resync3514 denies access if not admin3515Groups::ScimOauthController3516 when the feature is configured3517 POST #create3518 without token3519 creates a new SCIM token record3520 json3521 shows the token3522 shows the url3523 with token3524 does not create a new SCIM token record3525 updates the token3526 json3527 shows the token3528 shows the url3529Groups::SeatUsageController3530 GET show3531 when authorized3532 when html format3533 redirects to /groups/%{group_id}/-/seat_usage3534 responds with 404 Not Found if the group is not top-level group3535 when csv format3536 responds with 404 Not Found if the group is not top-level group3537 when the group is a top-level group3538 when export is successful3539 streams the csv with 200 status code3540 when export fails3541 sets alert message and redirects3542 when unauthorized3543 when html format3544 renders 403 when user is not an owner3545 when csv format3546 renders 403 when user is not an owner3547Groups::SamlGroupLinksController3548 #index3549 behaves like checks authorization3550 renders 404 when the user is not authorized3551 when the SAML provider is enabled3552 responds with 2003553 #create3554 behaves like checks authorization3555 renders 404 when the user is not authorized3556 when the SAML provider is enabled3557 with valid parameters3558 responds with success3559 creates the group link3560 with missing parameters3561 displays an error3562 #destroy3563 behaves like checks authorization3564 renders 404 when the user is not authorized3565 when the SAML provider is enabled3566 with an existent group link3567 responds with success3568 removes the group link3569 with a non-existent group link3570 renders 4043571Creating an iteration cadence3572 when the user does not have permission3573 does not create iteration cadence3574 behaves like a mutation that returns a top-level access error3575 is expected to contain exactly "The resource that you are attempting to access does not exist or you don't have permission to perform this action"3576 when the user has permission3577 when iterations feature is disabled3578 behaves like a mutation that returns top-level errors3579 is expected to contain exactly "The resource that you are attempting to access does not exist or you don't have permission to perform this action"3580 when iterations feature is enabled3581 creates the iteration cadence for a group3582 when creating a manual iteration cadence3583 behaves like a mutation that returns errors in the response3584 is expected to contain exactly "Manual iteration cadences are deprecated. Only automatic iteration cadences are allowed."3585 when iteration_cadences feature flag is disabled3586 behaves like a mutation that returns errors in the response3587 is expected to contain exactly "Operation not allowed"3588 when there are ActiveRecord validation errors3589 does not create the iteration cadence3590 behaves like a mutation that returns errors in the response3591 is expected to contain exactly "Iterations in advance can't be blank", "Start date can't be blank", and "Title can't be blank"3592 when required arguments are missing3593 returns error about required argument3594 does not create the iteration cadence3595Groups::RoadmapController3596 GET /groups/*namespace_id/-/roadmap3597 guest3598 renders without persisting layout3599 logged in3600 not specifying layout3601 renders without persisting layout3602 specifying invalid layout3603 renders without persisting layout3604 specifying layout3605 persists roadmap_layout if different than current layout3606Projects::DeployKeysController3607 POST create3608 records an audit event3609 /enable/:id3610 with user with permission3611 records an audit event3612 returns 4043613 /disable/:id3614 with admin3615 records an audit event3616Groups::IssuesAnalyticsController3617 behaves like issue analytics controller3618 GET #show3619 when issue analytics is not available for license3620 renders 4043621 when user does not have permission to read the resource3622 renders 4043623 when issue analytics is available for license3624 as HTML3625 renders show template3626 as JSON3627 renders new chart data as JSON3628 when new issue analytics data format is disabled3629 renders chart data as JSON3630 when user cannot view issues3631 does not count issues which user cannot view3632 GET #show3633 behaves like tracking unique visits3634 tracks unique visit if the format is HTML3635 tracks unique visit if DNT is not enabled3636 does not track unique visit if DNT is enabled3637 does not track unique visit if the format is JSON3638API::Analytics::CodeReviewAnalytics3639 GET code_review3640 is successful3641 with merge requests present3642 returns list of open MRs with pagination headers3643 with label & milestone filters3644 applies filter3645 with negation filters3646 applies filter3647 with any label filter present3648 applies filter3649 when user has no authorization3650 is not authorized3651 when feature is not available in plan3652 is not_authorized3653 when project_id is not specified3654 is not found3655Admin::Geo::SettingsController3656 #show3657 without a valid license3658 does not redirects to the 403 page3659 does show license alert3660 with a valid license3661 does not show license alert3662 #update3663 with a valid license3664 sets the geo node property in ApplicationSetting3665 redirects the update to the referer3666Dismissing a Vulnerabilities::Finding object3667 when the user does not have permission3668 does not dismiss the Finding3669 behaves like a mutation that returns a top-level access error3670 is expected to contain exactly "The resource that you are attempting to access does not exist or you don't have permission to perform this action"3671 when the user has permission3672 when security_dashboard is disabled3673 behaves like a mutation that returns top-level errors3674 is expected to contain exactly "The resource that you are attempting to access does not exist or you don't have permission to perform this action"3675 when security_dashboard is enabled3676DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.3677DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.3678 dismisses the Finding3679 when comment is given3680DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.3681DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.3682 saves the comment3683 when dismissal reason is given3684DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.3685DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.3686 saves the dismissal reason3687Getting code coverage summary in a project3688 behaves like a working graphql query3689 returns a successful response3690 when project has coverage3691 for the default branch3692 contains code coverage summary data3693 not for the default branch3694 returns nil3695 when project does not have coverage3696 returns nil3697Set project compliance framework3698 #resolve3699 when feature is not available3700 behaves like a mutation that returns top-level errors3701 is expected to contain exactly "The resource that you are attempting to access does not exist or you don't have permission to perform this action"3702 when feature is available3703 behaves like a working GraphQL mutation3704 with a personal access token3705 behaves like prevents access to the mutation3706 does not resolve the mutation3707 behaves like allows access to the mutation3708 behaves like a working graphql query3709 returns a successful response3710 returns data3711 with an OAuth token3712 behaves like prevents access to the mutation3713 does not resolve the mutation3714 behaves like allows access to the mutation3715 behaves like a working graphql query3716 returns a successful response3717 returns data3718Creates and assigns scan execution policy project to a project/namespace3719 for project3720 behaves like creates security policy project3721 when licensed feature is available3722 when user is an owner of the container3723 creates and assigns the security policy project3724 when user is not an owner3725 behaves like a mutation that returns top-level errors3726 is expected to contain exactly "The resource that you are attempting to access does not exist or you don't have permission to perform this action"3727 when feature is not licensed3728 behaves like a mutation that returns top-level errors3729 is expected to contain exactly "The resource that you are attempting to access does not exist or you don't have permission to perform this action"3730 for namespace3731 behaves like creates security policy project3732 when licensed feature is available3733 when user is an owner of the container3734 creates and assigns the security policy project3735 when user is not an owner3736 behaves like a mutation that returns top-level errors3737 is expected to contain exactly "The resource that you are attempting to access does not exist or you don't have permission to perform this action"3738 when feature is not licensed3739 behaves like a mutation that returns top-level errors3740 is expected to contain exactly "The resource that you are attempting to access does not exist or you don't have permission to perform this action"3741Admin::PushRulesController3742 #update3743 updates sample push rule3744 links push rule with application settings3745 push rules unlicensed3746 returns 4043747 #show3748 returns 2003749 push rules unlicensed3750 returns 4043751Creating a DAST Site Token3752 behaves like an on-demand scan mutation when user cannot run an on-demand scan3753 when a user does not have access to the project3754 behaves like a mutation that returns a top-level access error3755 is expected to contain exactly "The resource that you are attempting to access does not exist or you don't have permission to perform this action"3756 when a user does not have access to run a dast scan on the project3757 behaves like a mutation that returns a top-level access error3758 is expected to contain exactly "The resource that you are attempting to access does not exist or you don't have permission to perform this action"3759 behaves like an on-demand scan mutation when user can run an on-demand scan3760 returns an empty errors array3761 returns the dast_site_validation id3762 creates a new dast_site_validation3763 when on demand scan licensed feature is not available3764 behaves like a mutation that returns a top-level access error3765 is expected to contain exactly "The resource that you are attempting to access does not exist or you don't have permission to perform this action"3766API::Dora::Metrics3767 GET /projects/:id/dora/metrics3768 metric: :deployment_frequency, value1: 1, value2: 23769 returns data3770 metric: :lead_time_for_changes, value1: 3, value2: 43771 returns data3772 metric: :time_to_restore_service, value1: 5, value2: 63773 returns data3774 metric: :change_failure_rate, value1: 7, value2: 43775 returns data3776 with multiple metrics3777 returns combined data3778 backwards compatibility for environment_tier3779 returns combined data3780 when user is guest3781 returns authorization error3782 GET /groups/:id/dora/metrics3783 metric: :deployment_frequency, value1: 1, value2: 23784 returns data3785 metric: :lead_time_for_changes, value1: 3, value2: 43786 returns data3787 metric: :time_to_restore_service, value1: 5, value2: 63788 returns data3789 metric: :change_failure_rate, value1: 7, value2: 43790 returns data3791 with multiple metrics3792 returns combined data3793 backwards compatibility for environment_tier3794 returns combined data3795 when user is guest3796 returns authorization error3797Query.runner(id)3798 upgradeStatus3799 requested by non-paid user3800 with RunnerUpgradeCheck returning :available3801 behaves like runner details fetch operation returning expected upgradeStatus3802 retrieves expected fields3803 requested on an instance with runner_upgrade_management3804 with RunnerUpgradeCheck returning :not_available3805 behaves like runner details fetch operation returning expected upgradeStatus3806 retrieves expected fields3807 with RunnerUpgradeCheck returning :available3808 behaves like runner details fetch operation returning expected upgradeStatus3809 retrieves expected fields3810 with RunnerUpgradeCheck returning :recommended3811 behaves like runner details fetch operation returning expected upgradeStatus3812 retrieves expected fields3813 requested by paid user3814 with RunnerUpgradeCheck returning :not_available3815 behaves like runner details fetch operation returning expected upgradeStatus3816 retrieves expected fields3817 with RunnerUpgradeCheck returning :available3818 behaves like runner details fetch operation returning expected upgradeStatus3819 retrieves expected fields3820 with RunnerUpgradeCheck returning :recommended3821 behaves like runner details fetch operation returning expected upgradeStatus3822 retrieves expected fields3823Updating a Requirement3824 when the user does not have permission3825 behaves like requirement update fails3826 does not update requirement3827 behaves like a mutation that returns a top-level access error3828 is expected to contain exactly "The resource that you are attempting to access does not exist or you don't have permission to perform this action"3829 when the user has permission3830 when requirements are disabled3831 behaves like requirement update fails3832 does not update requirement3833 behaves like a mutation that returns a top-level access error3834 is expected to contain exactly "The resource that you are attempting to access does not exist or you don't have permission to perform this action"3835 when requirements are enabled3836DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.3837DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.3838 updates the requirement3839 when there are ActiveRecord validation errors3840DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.3841DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.3842 does not update the requirement3843 behaves like a mutation that returns errors in the response3844DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.3845DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.3846 is expected to contain exactly "Title can't be blank"3847 when there are no update params3848 behaves like a mutation that returns top-level errors3849 is expected to contain exactly "At least one of title, state, last_test_report_state, description is required"3850Admin::UsersController3851 GET #index3852 eager loads obstacles to user deletion3853 POST update3854 updating name3855 when `disable_name_update_for_users` feature is available3856 when the ability to update their name is disabled for users3857 behaves like admin can update the name of a user3858 updates the name3859 when the ability to update their name is not disabled for users3860 behaves like admin can update the name of a user3861 updates the name3862 when `disable_name_update_for_users` feature is not available3863 behaves like admin can update the name of a user3864 updates the name3865 POST #reset_runner_minutes3866 when the reset is successful3867 redirects to group path3868 when the reset is not successful3869 redirects back to group edit page3870 POST #impersonate3871 enqueues a new worker3872Lock/unlock project's file path3873 when the user does not have permission3874 does not create requirement3875 behaves like a mutation that returns a top-level access error3876 is expected to contain exactly "The resource that you are attempting to access does not exist or you don't have permission to perform this action"3877 when the user has permission3878 creates the path lock3879 when there are validation errors3880 behaves like a mutation that returns errors in the response3881 is expected to contain exactly "You have no permissions"3882Running a DAST Profile3883 behaves like an on-demand scan mutation when user cannot run an on-demand scan3884 when a user does not have access to the project3885 behaves like a mutation that returns a top-level access error3886 is expected to contain exactly "The resource that you are attempting to access does not exist or you don't have permission to perform this action"3887 when a user does not have access to run a dast scan on the project3888 behaves like a mutation that returns a top-level access error3889 is expected to contain exactly "The resource that you are attempting to access does not exist or you don't have permission to perform this action"3890 behaves like an on-demand scan mutation when user can run an on-demand scan3891 returns an empty errors array3892 returns a pipeline_url containing the correct path3893 when on demand scan licensed feature is not available3894 behaves like a mutation that returns a top-level access error3895 is expected to contain exactly "The resource that you are attempting to access does not exist or you don't have permission to perform this action"3896 when pipeline creation fails3897 behaves like a mutation that returns errors in the response3898 is expected to contain exactly "full error messages"3899Updating an iteration cadence3900 when the user does not have permission3901 does not update the iteration cadence3902 behaves like a mutation that returns a top-level access error3903 is expected to contain exactly "The resource that you are attempting to access does not exist or you don't have permission to perform this action"3904 when the user has permission3905 when iterations feature is disabled3906 behaves like a mutation that returns top-level errors3907 is expected to contain exactly "The resource that you are attempting to access does not exist or you don't have permission to perform this action"3908 when iterations feature is enabled3909 updates the iteration cadence3910 when iteration_cadences feature flag is disabled3911 behaves like a mutation that returns errors in the response3912 is expected to contain exactly "Operation not allowed"3913 when there are ActiveRecord validation errors3914 does not update the iteration cadence3915 behaves like a mutation that returns errors in the response3916 is expected to contain exactly "Title can't be blank"3917 when required arguments are missing3918 returns error about required argument3919Query.vulnerabilities.description3920 when vulnerability has no description and finding has description3921 returns finding information3922 when vulnerability has description and finding has description3923 returns finding information3924API::GroupMilestones3925 matches V4 EE-specific response schema for a list of issues3926 behaves like group and project milestone burndowns3927 GET /groups/:id/milestones/:milestone_id/burndown_events3928 returns burndown events list3929 returns 404 when user is not authorized to read milestone3930Query.project(fullPath).dastScannerProfiles3931 when a user does not have access to the project3932 project response3933 is expected to be nil3934 when the user can run a dast scan3935 dast scanner profiles3936 is expected to be empty3937 when a user has access to multiple projects3938 dast scanner profiles3939 returns only the dast_scanner_profile for the requested project3940 when a user has access dast_scanner_profiles3941 dast scanner profiles3942 is expected not to be empty3943 first dast scanner profile id3944 is expected to eq "gid://gitlab/DastScannerProfile/11"3945Query.project(fullPath).pipeline(iid).securityReportFindings3946 when the required features are enabled3947 when user is member of the project3948 returns all the vulnerability findings3949 returns all the queried fields3950 when user is not a member of the project3951 returns no vulnerability findings3952 when the required features are disabled3953 returns no vulnerability findings3954SentNotificationsController3955 Unsubscribing from an epic3956 unsubscribes the user3957 sets the flash message3958 redirects to the merge request page3959getting Incident Management on-call shifts3960 updating name only3961 updates the rotation3962 removing participants3963 updates the rotation and removes participants3964 adding participants3965 updates the rotation and adds participants3966 errors3967 user cannot be found3968 raises an error3969Adding a Note to an Epic3970 when the user does not have permission3971 behaves like a Note mutation when the user does not have permission3972 behaves like a Note mutation that does not create a Note3973 is expected not to change `Note.count`3974 behaves like a mutation that returns top-level errors3975 is expected to contain exactly "The resource that you are attempting to access does not exist or you don't have permission to perform this action"3976 when the user has permission3977 behaves like a Note mutation with confidential notes3978 returns a Note with confidentiality enabled3979 behaves like a Note mutation that creates a Note3980 is expected to change `Note.count` by 13981Groups::IterationCadencesController3982 behaves like accessing iteration cadences3983 index3984 feature_flag_available: false, role: :developer, status: :not_found3985 behaves like returning response status3986 returns not_found3987 feature_flag_available: true, role: :none, status: :not_found3988 behaves like returning response status3989 returns not_found3990 feature_flag_available: true, role: :guest, status: :success3991 behaves like returning response status3992 returns success3993 feature_flag_available: true, role: :developer, status: :success3994 behaves like returning response status3995 returns success3996Update list limit metrics3997 returns an error if the list cannot be found3998 updates the list limit metrics for limit metric all_metrics3999 updates the list limit metrics for limit metric issue_count4000 updates the list limit metrics for limit metric issue_weights4001 the current_user is not allowed to update the issue4002 returns an error4003 the list_id is not a valid ListID4004 behaves like an invalid argument to the mutation4005 behaves like a mutation that returns top-level errors4006 is expected to contain exactly (include "invalid value for listId")4007Groups::TodosController4008 POST create4009 when epic is not confidential4010 when epics are available4011 behaves like todos actions4012 when authorized4013 creates todo4014 returns todo path and pending count4015 when not authorized for project/group4016 does not create todo for resource that user has no access to4017 does not create todo when user is not logged in4018 when epics are not available4019 behaves like todo for inaccessible resource4020 does not create todo because resource can not be found4021 when the user can not access confidential epic in public group4022 behaves like todo for inaccessible resource4023 does not create todo because resource can not be found4024Update of an existing epic board list4025 behaves like a GraphQL request to update board list4026 the user is not allowed to read board lists4027 behaves like a mutation that returns a top-level access error4028 is expected to contain exactly "The resource that you are attempting to access does not exist or you don't have permission to perform this action"4029 when user has permissions to admin board lists4030 updates the list position and collapsed state4031 when user has permissions to read board lists4032 updates the list collapsed state but not the list position4033Create a milestone or assignee board list4034 the user is not allowed to read board lists4035 behaves like a mutation that returns a top-level access error4036 is expected to contain exactly "The resource that you are attempting to access does not exist or you don't have permission to perform this action"4037 when user has permissions to admin board lists4038 milestone list4039 creates the list4040 assignee list4041 creates the list4042Getting the current Geo node4043 returns the current GeoNode4044 behaves like a working graphql query4045 returns a successful response4046 connection fields4047 when selectiveSyncNamespaces is queried4048 returns selective sync namespaces4049 supports cursor-based pagination4050Query.vulnerabilities.identifiers4051 returns a vulnerability identifiers4052GeoInstrumentation4053 .track_geo_proxy_event4054 when the request is not proxied4055 does not track an event4056 when the request is proxied4057 when logged in4058 tracks a HLL event for unique geo proxied requests4059 when not logged in4060 does not track an event4061view audit events4062 GET /groups/:group/-/audit_events4063 returns 200 response4064 avoids N+1 DB queries4065Projects::IncidentManagement::OncallSchedulesController4066 GET #index4067 with read permissions4068 renders index with 200 status code4069 with admin permissions4070 renders index with 200 status code4071 unauthorized4072 responds with 4044073 with unavailable feature4074 responds with 4044075callout alerts4076 new_user_signups_cap_reached4077 when cap reached4078 behaves like a visible alert4079 shows the alert4080 when cap not reached4081 behaves like a hidden alert4082 does not show the alert4083 when user is not admin4084 behaves like a hidden alert4085 does not show the alert4086Deleting a DAST Profile4087 behaves like an on-demand scan mutation when user cannot run an on-demand scan4088 when a user does not have access to the project4089 behaves like a mutation that returns a top-level access error4090 is expected to contain exactly "The resource that you are attempting to access does not exist or you don't have permission to perform this action"4091 when a user does not have access to run a dast scan on the project4092 behaves like a mutation that returns a top-level access error4093 is expected to contain exactly "The resource that you are attempting to access does not exist or you don't have permission to perform this action"4094 behaves like an on-demand scan mutation when user can run an on-demand scan4095 returns an empty errors array4096 deletes the dast_profile4097 when on demand scan licensed feature is not available4098 behaves like a mutation that returns a top-level access error4099 is expected to contain exactly "The resource that you are attempting to access does not exist or you don't have permission to perform this action"4100Projects::DeployTokensController4101 PUT /:project_path_with_namespace/-/deploy_tokens/:id/revoke4102 creates an audit event4103 behaves like sends correct event type in audit event stream4104 sends correct event type in audit event stream4105Projects::PagesController4106 when max_pages_size param is specified4107 when user is an admin4108 when admin mode is enabled4109 updates max_pages_size4110 when admin mode is disabled4111 does not update max_pages_size4112 when user is not an admin4113 does not update max_pages_size4114Updating an existing release4115 when the provided milestones include a group milestone4116 when the group milestone association feature is licensed4117 returns no errors4118 updates a release with both project and group milestone associations4119 when the group milestone association feature is not licensed4120 returns an error-as-data field with a message about an invalid license4121ProfilesController4122 PUT update4123 updating name4124 when `disable_name_update_for_users` feature is available4125 when the ability to update thier name is not disabled for users4126 behaves like a user can update their name4127 updates their name4128 behaves like a user can update their name4129 updates their name4130 when the ability to update their name is disabled for users4131 as a regular user4132 does not update their name4133 as an admin in admin mode4134 behaves like a user can update their name4135 updates their name4136 when `disable_name_update_for_users` feature is not available4137 behaves like a user can update their name4138 updates their name4139 behaves like a user can update their name4140 updates their name4141Groups::LdapsController4142 POST #sync4143 transitions to the pending state4144 notifies user that the group is already pending4145 returns an error if the group does not validate4146getting iterations4147 query for iteration cadence4148 returns all group cadences4149 by global id4150 fetching cadences from group level4151 behaves like returns cadence by id4152 returns cadence4153 from a different group4154 behaves like returns cadence by id4155 returns cadence4156 fetching cadences from project level4157 behaves like returns cadence by id4158 returns cadence4159Query.vulnerabilities.externalIssueLinks4160 when queried for the first time with reactive caching4161 schedules a background job to fetch data from Jira4162 returns null as value for externalIssue4163 when queried without reactive caching4164 returns a list of all VulnerabilityExternalIssueLink4165Groups::UsageQuotasController4166 GET #index4167 behaves like seat count alert4168 when the namespace qualifies for the alert4169 sets the seat_count_data4170 when the feature flag is disabled4171 sets the seat_count_data to nil4172 when the namespace does not qualify for the alert4173 sets the seat_count_data to nil4174 GET #pending_members4175 renders the pending members index4176 when user cap feature is unavailable4177 returns 4044178Create a label or backlog board list4179 behaves like board lists create request4180 the user is not allowed to read board lists4181 behaves like a mutation that returns a top-level access error4182 is expected to contain exactly "The resource that you are attempting to access does not exist or you don't have permission to perform this action"4183 when user has permissions to admin board lists4184 backlog list4185 creates the list4186 label list4187 creates the list4188Query.vulnerabilities.scanner4189 returns a vulnerability scanner4190Query.project(fullPath).corpuses4191 when the user can read corpus for the project4192 returns corpus and package4193 when the user cannot read corpus for the project4194 returns nil4195Boards::UsersController4196 GET index4197 with authorized user4198 returns a list of all members of board parent4199 with unauthorized user4200 with private group board4201 behaves like unauthorized board user listing4202 returns a forbidden 403 response4203 with private project board4204 behaves like unauthorized board user listing4205 returns a forbidden 403 response4206API::Ldap4207 GET /ldap/groups4208 when unauthenticated4209 returns authentication error4210 when authenticated as user4211 returns authentication error4212 when group owners are allowed to manage LDAP4213 returns an array of ldap groups4214 when authenticated as admin4215 returns an array of ldap groups4216 GET /ldap/ldapmain/groups4217 when unauthenticated4218 returns authentication error4219 when authenticated as user4220 returns authentication error4221 when group owners are allowed to manage LDAP4222 returns an array of ldap groups4223 when authenticated as admin4224 returns an array of ldap groups4225Removing an issuable resource link4226 removes the issuable resource link4227 when feature flag is disabled4228 returns nil4229LicenseMailer4230 #approaching_active_user_count_limit4231 when license is present4232 is expected to have subject of "Your subscription is nearing its user limit"4233 is expected to be bcc'd to ["admin@example.com", "another_admin@example.com"]4234 is expected to have body including "your subscription GitLab Enterprise Edition Starter"4235 is expected to have body including "You have 20 active users"4236 is expected to have body including "the user limit of 21"4237 when license is not present4238 does not send email4239OmniauthCallbacksController4240 when sign in fails4241 audits provider failed login when licensed4242 does not audit provider failed login when unlicensed4243EE::Emails::Profile4244 #policy_revoked_personal_access_tokens_email4245 is sent to the user4246 has the correct subject4247 mentions the access tokens were revoke4248 includes a link to personal access tokens page4249 includes the email reason4250Groups::RunnersController4251 #index4252 enables runner_upgrade_management_for_namespace licensed feature4253 #show4254 enables runner_upgrade_management_for_namespace licensed feature4255API::V3::Github4256 GET /repos/:namespace/:project/pulls4257 returns status 2004258 group_ip_restriction4259 returns 404 for request from ip not in the range4260Profiles::SlacksController4261 GET edit4262 renders4263 assigns projects4264 assigns disabled_projects4265OmniAuth Kerberos SPNEGO4266 asks for an SPNEGO token4267 when an SPNEGO token is provided4268 passes the token to spnego_negotiate!4269 when the final SPNEGO token is provided4270 redirects to the omniauth callback4271 stores the users principal name in the session4272 send the final SPNEGO response4273Emails::GroupMemberships4274 #user_cap_reached4275 is expected to have subject of "Exported group membership list"4276 is expected to be delivered to ["user2438@example.org"]4277 contains one attachment4278Admin::SubscriptionsController4279 GET /subscriptions4280 when the user is not admin4281 responds with 4044282 when the user an admin4283 renders the Activation Form4284Activate a subscription4285 persists license key4286contribution analytics4287 redirects from -/analytics to -/analytics/value_stream_analytics4288API::Integrations4289 Slack application Service4290 returns status 2004291Profiles::KeysController4292 #create4293 logs the audit event4294Emails::Epics4295 adds email methods to Notify4296Knapsack report was generated. Preview:4297{4298 "ee/spec/requests/api/members_spec.rb": 133.81293120099872,4299 "ee/spec/requests/api/visual_review_discussions_spec.rb": 112.27112525600023,4300 "ee/spec/requests/git_http_geo_spec.rb": 64.82223912299924,4301 "ee/spec/requests/api/graphql/geo/registries_spec.rb": 75.67445232000136,4302 "ee/spec/requests/api/geo_nodes_spec.rb": 63.96730239899989,4303 "ee/spec/controllers/boards/lists_controller_spec.rb": 57.089806305999446,4304 "ee/spec/requests/api/ldap_group_links_spec.rb": 45.41226008599915,4305 "ee/spec/requests/api/merge_request_approval_rules_spec.rb": 41.49116031599988,4306 "ee/spec/controllers/groups/epic_issues_controller_spec.rb": 31.061759666001308,4307 "ee/spec/requests/api/graphql/group/epics_spec.rb": 30.575138979998883,4308 "ee/spec/controllers/projects/boards_controller_spec.rb": 28.624353503999373,4309 "ee/spec/requests/projects/merge_requests_controller_spec.rb": 29.19373812500089,4310 "ee/spec/requests/api/internal/kubernetes_spec.rb": 20.651946894999128,4311 "ee/spec/controllers/boards/issues_controller_spec.rb": 29.230767332999676,4312 "ee/spec/requests/api/vulnerability_issue_links_spec.rb": 22.770464718998483,4313 "ee/spec/requests/api/group_boards_spec.rb": 19.453085137000016,4314 "ee/spec/requests/api/status_checks_spec.rb": 16.316809523999837,4315 "ee/spec/requests/api/project_approval_settings_spec.rb": 19.9809580809997,4316 "ee/spec/controllers/projects/merge_requests/creations_controller_spec.rb": 20.369600583999272,4317 "ee/spec/requests/groups/epics/epic_links_controller_spec.rb": 18.161647296999945,4318 "ee/spec/controllers/projects/audit_events_controller_spec.rb": 14.751469242000894,4319 "ee/spec/controllers/ldap/omniauth_callbacks_controller_spec.rb": 23.019804958999885,4320 "ee/spec/requests/api/graphql/iteration_spec.rb": 12.937815596998917,4321 "ee/spec/controllers/groups/epic_boards_controller_spec.rb": 12.45443041100043,4322 "ee/spec/requests/api/merge_request_approval_settings_spec.rb": 12.610983140000826,4323 "ee/spec/controllers/projects/clusters_controller_spec.rb": 16.824556368999765,4324 "ee/spec/requests/projects/security/dast_site_profiles_controller_spec.rb": 11.915947887000584,4325 "ee/spec/controllers/registrations/groups_controller_spec.rb": 7.05358956300006,4326 "ee/spec/controllers/groups/analytics/productivity_analytics_controller_spec.rb": 10.483394855998995,4327 "ee/spec/controllers/admin/clusters_controller_spec.rb": 11.941980255998715,4328 "ee/spec/requests/api/graphql/mutations/audit_events/external_audit_event_destinations/update_spec.rb": 8.933023993000461,4329 "ee/spec/controllers/projects/feature_flag_issues_controller_spec.rb": 11.035228018999987,4330 "ee/spec/requests/projects/on_demand_scans_controller_spec.rb": 8.977473069999178,4331 "ee/spec/requests/api/graphql/mutations/epics/update_spec.rb": 9.146329729001081,4332 "ee/spec/controllers/groups/issues_controller_spec.rb": 9.005711138999686,4333 "ee/spec/requests/api/graphql/mutations/audit_events/external_audit_event_destinations/create_spec.rb": 8.929640543999994,4334 "ee/spec/requests/api/invitations_spec.rb": 7.543450039000163,4335 "ee/spec/controllers/projects/pipelines_controller_spec.rb": 7.472646334001183,4336 "ee/spec/controllers/registrations/welcome_controller_spec.rb": 9.553083550999872,4337 "ee/spec/controllers/groups/analytics/cycle_analytics_controller_spec.rb": 8.891420556001322,4338 "ee/spec/controllers/projects/path_locks_controller_spec.rb": 7.878243376999308,4339 "ee/spec/requests/groups/epics/related_epic_links_controller_spec.rb": 10.831707653000194,4340 "ee/spec/controllers/admin/projects_controller_spec.rb": 6.15078594499937,4341 "ee/spec/controllers/groups/groups_controller_spec.rb": 10.869389478999437,4342 "ee/spec/controllers/groups/security/policies_controller_spec.rb": 7.494083163001051,4343 "ee/spec/mailers/ci_minutes_usage_mailer_spec.rb": 6.157374005000747,4344 "ee/spec/controllers/ee/dashboard/projects_controller_spec.rb": 6.67889939899942,4345 "ee/spec/requests/api/graphql/projects/compliance_frameworks_spec.rb": 4.824276327000916,4346 "ee/spec/controllers/projects/security/vulnerability_report_controller_spec.rb": 6.311255454000275,4347 "ee/spec/controllers/ee/projects/variables_controller_spec.rb": 4.883347222999873,4348 "ee/spec/requests/api/graphql/mutations/boards/epics/create_spec.rb": 5.248419818000912,4349 "ee/spec/requests/api/dependencies_spec.rb": 5.551777577000394,4350 "ee/spec/requests/api/commits_spec.rb": 5.962085858000137,4351 "ee/spec/requests/api/graphql/mutations/boards/create_spec.rb": 5.319075163000889,4352 "ee/spec/requests/api/graphql/project/incident_management/oncall_schedules_spec.rb": 4.540233846999399,4353 "ee/spec/controllers/projects/insights_controller_spec.rb": 3.3287344700001995,4354 "ee/spec/requests/api/graphql/group/dast_profile_schedule_spec.rb": 5.215448240000114,4355 "ee/spec/requests/api/ci/variables_spec.rb": 5.110276717001398,4356 "ee/spec/requests/api/analytics/project_deployment_frequency_spec.rb": 5.333257181999215,4357 "ee/spec/requests/api/geo_replication_spec.rb": 6.7184995070001605,4358 "ee/spec/controllers/groups/scim_oauth_controller_spec.rb": 4.629485991001275,4359 "ee/spec/controllers/groups/seat_usage_controller_spec.rb": 4.023144013001001,4360 "ee/spec/controllers/groups/saml_group_links_controller_spec.rb": 3.7842310390005878,4361 "ee/spec/requests/api/graphql/mutations/iterations/cadences/create_spec.rb": 5.835228837000614,4362 "ee/spec/requests/groups/roadmap_controller_spec.rb": 5.2030277919984655,4363 "ee/spec/controllers/projects/deploy_keys_controller_spec.rb": 5.756013952999638,4364 "ee/spec/controllers/groups/issues_analytics_controller_spec.rb": 6.187615103001008,4365 "ee/spec/requests/api/analytics/code_review_analytics_spec.rb": 4.868899564000458,4366 "ee/spec/controllers/admin/geo/settings_controller_spec.rb": 6.200045571998999,4367 "ee/spec/requests/api/graphql/mutations/vulnerabilities/finding_dismiss_spec.rb": 3.3791320769996673,4368 "ee/spec/requests/api/graphql/project/code_coverage_summary_spec.rb": 4.500001209000402,4369 "ee/spec/requests/api/graphql/mutations/projects/set_compliance_framework_spec.rb": 5.229910018999362,4370 "ee/spec/requests/api/graphql/mutations/security_policy/create_security_policy_project_spec.rb": 4.377497018000213,4371 "ee/spec/controllers/admin/push_rules_controller_spec.rb": 2.782076777999464,4372 "ee/spec/requests/api/graphql/mutations/dast_site_validations/create_spec.rb": 4.923126960000445,4373 "ee/spec/requests/api/dora/metrics_spec.rb": 4.128803515000982,4374 "ee/spec/requests/api/graphql/ci/runner_spec.rb": 6.320524574000956,4375 "ee/spec/requests/api/graphql/mutations/requirements_management/update_requirement_spec.rb": 4.396335737001209,4376 "ee/spec/controllers/admin/users_controller_spec.rb": 3.047895878999043,4377 "ee/spec/requests/api/graphql/mutations/projects/lock_path_spec.rb": 2.7506597809988307,4378 "ee/spec/requests/api/graphql/mutations/dast/profiles/run_spec.rb": 5.900360373001604,4379 "ee/spec/requests/api/graphql/mutations/iterations/cadences/update_spec.rb": 3.355931419000626,4380 "ee/spec/requests/api/graphql/vulnerabilities/description_spec.rb": 3.3111478709997755,4381 "ee/spec/requests/api/group_milestones_spec.rb": 5.2341970389989,4382 "ee/spec/requests/api/graphql/project/dast_scanner_profiles_spec.rb": 3.49180264899951,4383 "ee/spec/requests/api/graphql/project/pipeline/security_report_finding_spec.rb": 3.135956363999867,4384 "ee/spec/controllers/ee/sent_notifications_controller_spec.rb": 1.8462665629995172,4385 "ee/spec/requests/api/graphql/mutations/incident_management/oncall_rotation/update_spec.rb": 2.7589699199997995,4386 "ee/spec/requests/api/graphql/mutations/notes/create/note_spec.rb": 2.3309835489999386,4387 "ee/spec/controllers/groups/iteration_cadences_controller_spec.rb": 1.5647490909996122,4388 "ee/spec/requests/api/graphql/mutations/boards/lists/update_limit_metrics_spec.rb": 2.751992010000322,4389 "ee/spec/controllers/groups/todos_controller_spec.rb": 2.996030852998956,4390 "ee/spec/requests/api/graphql/boards/epic_lists/update_spec.rb": 2.333780218001266,4391 "ee/spec/requests/api/graphql/mutations/boards/lists/create_spec.rb": 2.682477475000269,4392 "ee/spec/requests/api/graphql/geo/geo_node_spec.rb": 1.64637775600022,4393 "ee/spec/requests/api/graphql/vulnerabilities/identifiers_spec.rb": 1.5786028209986398,4394 "ee/spec/controllers/concerns/geo_instrumentation_spec.rb": 1.206989156000418,4395 "ee/spec/requests/groups/labels_spec.rb": 1.0056966809988808,4396 "ee/spec/controllers/projects/incident_management/oncall_schedules_controller_spec.rb": 2.7030807539995294,4397 "ee/spec/requests/callout_spec.rb": 1.548469583000042,4398 "ee/spec/requests/api/graphql/mutations/dast/profiles/delete_spec.rb": 2.0891816559997096,4399 "ee/spec/requests/ee/projects/deploy_tokens_controller_spec.rb": 1.3044139909998194,4400 "ee/spec/controllers/projects/pages_controller_spec.rb": 2.603205250999963,4401 "ee/spec/requests/api/graphql/mutations/releases/update_spec.rb": 2.134611743000278,4402 "ee/spec/controllers/profiles_controller_spec.rb": 2.3067469710003934,4403 "ee/spec/controllers/groups/ldaps_controller_spec.rb": 2.294386042000042,4404 "ee/spec/requests/api/graphql/iterations/cadences_spec.rb": 2.8549736630011466,4405 "ee/spec/requests/api/graphql/vulnerabilities/external_issue_links_spec.rb": 2.8332880639991345,4406 "ee/spec/controllers/groups/usage_quotas_controller_spec.rb": 1.876393521000864,4407 "ee/spec/requests/api/graphql/mutations/boards/epic_lists/create_spec.rb": 1.3531622069986042,4408 "ee/spec/requests/api/graphql/vulnerabilities/scanner_spec.rb": 1.1199633729993366,4409 "ee/spec/requests/api/graphql/app_sec/fuzzing/coverage/corpus_type_spec.rb": 0.8947664579991397,4410 "ee/spec/controllers/boards/users_controller_spec.rb": 1.4402984510015813,4411 "ee/spec/requests/api/ldap_spec.rb": 0.8270965729989257,4412 "ee/spec/requests/api/graphql/mutations/incident_management/issuable_resource_link/destroy_spec.rb": 1.283979111998633,4413 "ee/spec/mailers/license_mailer_spec.rb": 0.5605656610005099,4414 "ee/spec/controllers/ee/omniauth_callbacks_controller_spec.rb": 0.5881746499999281,4415 "ee/spec/mailers/ee/emails/profile_spec.rb": 0.5009589149995008,4416 "ee/spec/controllers/groups/runners_controller_spec.rb": 1.0852242350010783,4417 "ee/spec/requests/api/v3/github_spec.rb": 1.2925977310005692,4418 "ee/spec/controllers/profiles/slacks_controller_spec.rb": 0.4831030160003138,4419 "ee/spec/requests/omniauth_kerberos_spnego_spec.rb": 0.7055315910001809,4420 "ee/spec/mailers/emails/group_memberships_spec.rb": 0.6468228850008018,4421 "ee/spec/requests/admin/subscriptions_controller_spec.rb": 0.8745285700006207,4422 "ee/spec/requests/api/graphql/mutations/gitlab_subscriptions/activate_spec.rb": 0.513801944000079,4423 "ee/spec/requests/groups/contribution_analytics_spec.rb": 0.6033679290012515,4424 "ee/spec/requests/api/integrations_spec.rb": 0.49434913500044786,4425 "ee/spec/controllers/profiles/keys_controller_spec.rb": 0.26768947200071125,4426 "ee/spec/mailers/emails/epics_spec.rb": 0.099369642999590724427}4428Knapsack global time execution for tests: 23m 30s4429Pending: (Failures listed here are expected and do not affect your suite's status)4430 1) Gets registries behaves like gets registries for when the feature is disabled by default when the feature is disabled errors when requesting registries4431 # Skipping since Geo::MergeRequestDiffReplicator is enabled by default4432 # ./ee/spec/support/shared_examples/requests/api/graphql/geo/registries_shared_examples.rb:1444433 2) Gets registries behaves like gets registries for when the feature is disabled by default when the feature is disabled errors when requesting registries4434 # Skipping since Geo::PackageFileReplicator is enabled by default4435 # ./ee/spec/support/shared_examples/requests/api/graphql/geo/registries_shared_examples.rb:1444436 3) Gets registries behaves like gets registries for when the feature is disabled by default when the feature is disabled errors when requesting registries4437 # Skipping since Geo::SnippetRepositoryReplicator is enabled by default4438 # ./ee/spec/support/shared_examples/requests/api/graphql/geo/registries_shared_examples.rb:1444439 4) Gets registries behaves like gets registries for when the feature is disabled by default when the feature is disabled errors when requesting registries4440 # Skipping since Geo::TerraformStateVersionReplicator is enabled by default4441 # ./ee/spec/support/shared_examples/requests/api/graphql/geo/registries_shared_examples.rb:1444442 5) Gets registries behaves like gets registries for when the feature is disabled by default when the feature is disabled errors when requesting registries4443 # Skipping since Geo::GroupWikiRepositoryReplicator is enabled by default4444 # ./ee/spec/support/shared_examples/requests/api/graphql/geo/registries_shared_examples.rb:1444445 6) Gets registries behaves like gets registries for when the feature is disabled by default when the feature is disabled errors when requesting registries4446 # Skipping since Geo::PipelineArtifactReplicator is enabled by default4447 # ./ee/spec/support/shared_examples/requests/api/graphql/geo/registries_shared_examples.rb:1444448 7) Gets registries behaves like gets registries for when the feature is disabled by default when the feature is disabled errors when requesting registries4449 # Skipping since Geo::PagesDeploymentReplicator is enabled by default4450 # ./ee/spec/support/shared_examples/requests/api/graphql/geo/registries_shared_examples.rb:1444451 8) Gets registries behaves like gets registries for when the feature is disabled by default when the feature is disabled errors when requesting registries4452 # Skipping since Geo::UploadReplicator is enabled by default4453 # ./ee/spec/support/shared_examples/requests/api/graphql/geo/registries_shared_examples.rb:1444454 9) Gets registries behaves like gets registries for when the feature is disabled by default when the feature is disabled errors when requesting registries4455 # Skipping since Geo::JobArtifactReplicator is enabled by default4456 # ./ee/spec/support/shared_examples/requests/api/graphql/geo/registries_shared_examples.rb:1444457Finished in 23 minutes 34 seconds (files took 1 minute 1.99 seconds to load)44581740 examples, 0 failures, 9 pending4459RSpec exited with 0.4460No examples to retry, congrats!4462Not uploading cache ruby-gems-debian-bullseye-ruby-2.7-10 due to policy4463Not uploading cache gitaly-ruby-gems-debian-bullseye-ruby-2.7-10 due to policy4465Uploading artifacts...4466coverage/: found 5 matching files and directories 4467crystalball/: found 2 matching files and directories 4468WARNING: deprecations/: no matching files. Ensure that the artifact path is relative to the working directory 4469knapsack/: found 3 matching files and directories 4470rspec/: found 8 matching files and directories 4471WARNING: tmp/capybara/: no matching files. Ensure that the artifact path is relative to the working directory 4472log/*.log: found 17 matching files and directories 4473WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/2649391976/artifacts?artifact_format=zip&artifact_type=archive&expire_in=31d new-url=https://gitlab.com4474WARNING: Retrying... context=artifacts-uploader error=request redirected4475Uploading artifacts as "archive" to coordinator... 201 Created id=2649391976 responseStatus=201 Created token=zxj_Xazq4476Uploading artifacts...4477rspec/junit_rspec.xml: found 1 matching files and directories 4478WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/2649391976/artifacts?artifact_format=gzip&artifact_type=junit&expire_in=31d new-url=https://gitlab.com4479WARNING: Retrying... context=artifacts-uploader error=request redirected4480Uploading artifacts as "junit" to coordinator... 201 Created id=2649391976 responseStatus=201 Created token=zxj_Xazq4482Job succeeded