rspec unit pg11 7/20
Passed Started
by
@gitlab-bot

🤖 GitLab Bot 🤖
1Running with gitlab-runner 13.3.1 (738bbe5a)2 on prm-com-gitlab-org ae3bfce24Using Docker executor with image registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.6-golang-1.14-git-2.28-lfs-2.9-chrome-84-node-12.x-yarn-1.21-postgresql-11-graphicsmagick-1.3.34 ...5Starting service postgres:11.6 ...6Pulling docker image postgres:11.6 ...7Using docker image sha256:2c963c0eb8c6efa49bb8352ea446f248d208d674cfc34fc9ea275b5f99f8dedd for postgres:11.6 ...8Starting service redis:4.0-alpine ...9Pulling docker image redis:4.0-alpine ...10Using docker image sha256:e3dd0e49bca555d559ca2e97f06a1efa108ebd230fddcb17606723994f18ae3b for redis:4.0-alpine ...11Waiting for services to be up and running...12Authenticating with credentials from job payload (GitLab Registry)13Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.6-golang-1.14-git-2.28-lfs-2.9-chrome-84-node-12.x-yarn-1.21-postgresql-11-graphicsmagick-1.3.34 ...14Using docker image sha256:cd688957c9207f55272d81be6d4908692d78233833e3f09a9c0899b2f24eb3ff for registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.6-golang-1.14-git-2.28-lfs-2.9-chrome-84-node-12.x-yarn-1.21-postgresql-11-graphicsmagick-1.3.34 ...16Running on runner-ae3bfce2-project-278964-concurrent-0 via runner-ae3bfce2-prm-1598710704-5e1646f0...18$ eval "$CI_PRE_CLONE_SCRIPT"19Downloading archived master...20Connecting to storage.googleapis.com (172.217.193.128:443)21saving to '/tmp/gitlab.tar.gz'22gitlab.tar.gz 9% |** | 94.1M 0:00:09 ETA23gitlab.tar.gz 46% |************** | 466M 0:00:02 ETA24gitlab.tar.gz 84% |*************************** | 852M 0:00:00 ETA25gitlab.tar.gz 100% |********************************| 1007M 0:00:00 ETA26'/tmp/gitlab.tar.gz' saved27Extracting tarball into /builds/gitlab-org/gitlab...28Fetching changes with git depth set to 20...29Reinitialized existing Git repository in /builds/gitlab-org/gitlab/.git/30Created fresh repository.31Checking out 4e12f87c as master...32Skipping Git submodules setup34Checking cache for rails-v2-3...35cache.zip is up to date 36Successfully extracted cache38Downloading artifacts for compile-test-assets (710020301)...39Downloading artifacts from coordinator... ok id=710020301 responseStatus=200 OK token=dz2RyhAg40Downloading artifacts for retrieve-tests-metadata (710020310)...41Downloading artifacts from coordinator... ok id=710020310 responseStatus=200 OK token=LNgn8mU-42Downloading artifacts for setup-test-env (710020306)...43Downloading artifacts from coordinator... ok id=710020306 responseStatus=200 OK token=wSxhzuKE44WARNING: tmp/tests/gitlab-shell/.gitlab_shell_secret: chmod tmp/tests/gitlab-shell/.gitlab_shell_secret: no such file or directory (suppressing repeats) 46$ [ "$FOSS_ONLY" = "1" ] && rm -rf ee/ qa/spec/ee/ qa/qa/specs/features/ee/ qa/qa/ee/ qa/qa/ee.rb47$ export GOPATH=$CI_PROJECT_DIR/.go48$ mkdir -p $GOPATH49$ source scripts/utils.sh50$ source scripts/prepare_build.sh51Bundler version 1.17.252$ bundle install --clean --without=production --without=development --jobs=2 --path=vendor --retry=3 --quiet53==> 'bundle install --clean --without=production --without=development --jobs=2 --path=vendor --retry=3 --quiet' succeeded in 1 seconds.54$ bundle check55Warning: the running version of Bundler (1.17.2) is older than the version that created the lockfile (1.17.3). We suggest you upgrade to the latest version of Bundler by running `gem install bundler`.56The Gemfile's dependencies are satisfied57==> 'bundle check' succeeded in 1 seconds.58$ bundle pristine pg59Warning: the running version of Bundler (1.17.2) is older than the version that created the lockfile (1.17.3). We suggest you upgrade to the latest version of Bundler by running `gem install bundler`.60Installing pg 1.2.2 with native extensions61==> 'bundle pristine pg' succeeded in 9 seconds.62$ gem install knapsack --no-document63Successfully installed knapsack-1.18.0641 gem installed65==> 'gem install knapsack --no-document' succeeded in 1 seconds.66$ setup_db_user_only67CREATE ROLE68GRANT69==> 'setup_db_user_only' succeeded in 0 seconds.70$ bundle exec rake db:drop db:create db:structure:load db:migrate gitlab:db:setup_ee71Dropped database 'gitlabhq_test'72Created database 'gitlabhq_test'73Dropped database 'gitlabhq_geo_test'74Created database 'gitlabhq_geo_test'75==> 'bundle exec rake db:drop db:create db:structure:load db:migrate gitlab:db:setup_ee' succeeded in 29 seconds.76$ run_timed_command "scripts/gitaly-test-build"77$ scripts/gitaly-test-build78Settings are listed in order of priority. The top value will be used.79retry80Set for your local app (/builds/gitlab-org/gitlab/tmp/tests/gitaly/ruby/.bundle/config/config): 381path82Set for your local app (/builds/gitlab-org/gitlab/tmp/tests/gitaly/ruby/.bundle/config/config): "/builds/gitlab-org/gitlab/vendor/gitaly-ruby"83jobs84Set for your local app (/builds/gitlab-org/gitlab/tmp/tests/gitaly/ruby/.bundle/config/config): 485app_config86Set via BUNDLE_APP_CONFIG: "/builds/gitlab-org/gitlab/tmp/tests/gitaly/ruby/.bundle/config"87gemfile88Set via BUNDLE_GEMFILE: "/builds/gitlab-org/gitlab/tmp/tests/gitaly/ruby/Gemfile"89flags90Set via BUNDLE_FLAGS: "--jobs=4 --retry=3 --quiet --path=/builds/gitlab-org/gitlab/vendor/gitaly-ruby"91silence_root_warning92Set via BUNDLE_SILENCE_ROOT_WARNING: true93go install -ldflags '-X gitlab.com/gitlab-org/gitaly/internal/version.version=13.3.0-rc5 -X gitlab.com/gitlab-org/gitaly/internal/version.buildtime=20200829.162954' -tags "tracer_static,tracer_static_jaeger,continuous_profiler_stackdriver" gitlab.com/gitlab-org/gitaly/cmd/praefect gitlab.com/gitlab-org/gitaly/cmd/gitaly-hooks gitlab.com/gitlab-org/gitaly/cmd/gitaly-blackbox gitlab.com/gitlab-org/gitaly/cmd/gitaly gitlab.com/gitlab-org/gitaly/cmd/gitaly-debug gitlab.com/gitlab-org/gitaly/cmd/gitaly-ssh gitlab.com/gitlab-org/gitaly/cmd/gitaly-wrapper94install /builds/gitlab-org/gitlab/tmp/tests/gitaly/_build/bin/praefect /builds/gitlab-org/gitlab/tmp/tests/gitaly/_build/bin/gitaly-hooks /builds/gitlab-org/gitlab/tmp/tests/gitaly/_build/bin/gitaly-blackbox /builds/gitlab-org/gitlab/tmp/tests/gitaly/_build/bin/gitaly /builds/gitlab-org/gitlab/tmp/tests/gitaly/_build/bin/gitaly-debug /builds/gitlab-org/gitlab/tmp/tests/gitaly/_build/bin/gitaly-ssh /builds/gitlab-org/gitlab/tmp/tests/gitaly/_build/bin/gitaly-wrapper /builds/gitlab-org/gitlab/tmp/tests/gitaly95Checking gitaly-ruby Gemfile...96Checking gitaly-ruby bundle...97Warning: the running version of Bundler (1.17.2) is older than the version that created the lockfile (1.17.3). We suggest you upgrade to the latest version of Bundler by running `gem install bundler`.98The Gemfile's dependencies are satisfied99Trying to connect to gitaly: ........ OK100Trying to connect to praefect: ....... OK101==> 'scripts/gitaly-test-build' succeeded in 43 seconds.102$ run_timed_command "scripts/gitaly-test-spawn"103$ scripts/gitaly-test-spawn104Checking gitaly-ruby Gemfile...105Checking gitaly-ruby bundle...106Warning: the running version of Bundler (1.17.2) is older than the version that created the lockfile (1.17.3). We suggest you upgrade to the latest version of Bundler by running `gem install bundler`.107The Gemfile's dependencies are satisfied108Trying to connect to gitaly: ....... OK109Trying to connect to praefect: ....... OK110==> 'scripts/gitaly-test-spawn' succeeded in 2 seconds.111$ source scripts/rspec_helpers.sh112$ rspec_paralellized_job "--tag ~quarantine --tag ~geo --tag ~level:migration"113KNAPSACK_TEST_FILE_PATTERN: spec/{bin,channels,config,db,dependencies,factories,finders,frontend,graphql,haml_lint,helpers,initializers,javascripts,lib,models,policies,presenters,rack_servers,replicators,routing,rubocop,serializers,services,sidekiq,support_specs,tasks,uploaders,validators,views,workers,elastic_integration,tooling}{,/**/}*_spec.rb114Knapsack report generator started!115RSpec's reporter has already been initialized with #<IO:<STDERR>> as the deprecation stream, so your change to `deprecation_stream` will be ignored. You should configure it earlier for it to take effect, or use the `--deprecation-out` CLI option. (Called from /builds/gitlab-org/gitlab/spec/support/rspec.rb:12:in `block in <top (required)>')116Run options:117 include {:focus=>true}118 exclude {:quarantine=>true, :geo=>true, :level=>"migration"}119All examples were filtered out; ignoring {:focus=>true}120==> Setting up gitlab-test bare repository in /builds/gitlab-org/gitlab/tmp/tests/gitlab-test_bare...121 /builds/gitlab-org/gitlab/tmp/tests/gitlab-test_bare set up in 0.037251478 seconds...122ProjectPolicy123 does not include the read_issue permission when the issue author is not a member of the private project124 with no project feature125 returns false126 behaves like model with wiki policies127 container_level: :public, access_level: :enabled, membership: :admin, access: :all128 allows actions based on membership129 container_level: :public, access_level: :enabled, membership: :maintainer, access: :maintainer130 allows actions based on membership131 container_level: :public, access_level: :enabled, membership: :developer, access: :developer132 allows actions based on membership133 container_level: :public, access_level: :enabled, membership: :reporter, access: :reporter134 allows actions based on membership135 container_level: :public, access_level: :enabled, membership: :guest, access: :guest136 allows actions based on membership137 container_level: :public, access_level: :enabled, membership: :non_member, access: :guest138 allows actions based on membership139 container_level: :public, access_level: :enabled, membership: :anonymous, access: :guest140 allows actions based on membership141 container_level: :public, access_level: :private, membership: :admin, access: :all142 allows actions based on membership143 container_level: :public, access_level: :private, membership: :maintainer, access: :maintainer144 allows actions based on membership145 container_level: :public, access_level: :private, membership: :developer, access: :developer146 allows actions based on membership147 container_level: :public, access_level: :private, membership: :reporter, access: :reporter148 allows actions based on membership149 container_level: :public, access_level: :private, membership: :guest, access: :guest150 allows actions based on membership151 container_level: :public, access_level: :private, membership: :non_member, access: nil152 allows actions based on membership153 container_level: :public, access_level: :private, membership: :anonymous, access: nil154 allows actions based on membership155 container_level: :public, access_level: :disabled, membership: :admin, access: nil156 allows actions based on membership157 container_level: :public, access_level: :disabled, membership: :maintainer, access: nil158 allows actions based on membership159 container_level: :public, access_level: :disabled, membership: :developer, access: nil160 allows actions based on membership161 container_level: :public, access_level: :disabled, membership: :reporter, access: nil162 allows actions based on membership163 container_level: :public, access_level: :disabled, membership: :guest, access: nil164 allows actions based on membership165 container_level: :public, access_level: :disabled, membership: :non_member, access: nil166 allows actions based on membership167 container_level: :public, access_level: :disabled, membership: :anonymous, access: nil168 allows actions based on membership169 container_level: :internal, access_level: :enabled, membership: :admin, access: :all170 allows actions based on membership171 container_level: :internal, access_level: :enabled, membership: :maintainer, access: :maintainer172 allows actions based on membership173 container_level: :internal, access_level: :enabled, membership: :developer, access: :developer174 allows actions based on membership175 container_level: :internal, access_level: :enabled, membership: :reporter, access: :reporter176 allows actions based on membership177 container_level: :internal, access_level: :enabled, membership: :guest, access: :guest178 allows actions based on membership179 container_level: :internal, access_level: :enabled, membership: :non_member, access: :guest180 allows actions based on membership181 container_level: :internal, access_level: :enabled, membership: :anonymous, access: nil182 allows actions based on membership183 container_level: :internal, access_level: :private, membership: :admin, access: :all184 allows actions based on membership185 container_level: :internal, access_level: :private, membership: :maintainer, access: :maintainer186 allows actions based on membership187 container_level: :internal, access_level: :private, membership: :developer, access: :developer188 allows actions based on membership189 container_level: :internal, access_level: :private, membership: :reporter, access: :reporter190 allows actions based on membership191 container_level: :internal, access_level: :private, membership: :guest, access: :guest192 allows actions based on membership193 container_level: :internal, access_level: :private, membership: :non_member, access: nil194 allows actions based on membership195 container_level: :internal, access_level: :private, membership: :anonymous, access: nil196 allows actions based on membership197 container_level: :internal, access_level: :disabled, membership: :admin, access: nil198 allows actions based on membership199 container_level: :internal, access_level: :disabled, membership: :maintainer, access: nil200 allows actions based on membership201 container_level: :internal, access_level: :disabled, membership: :developer, access: nil202 allows actions based on membership203 container_level: :internal, access_level: :disabled, membership: :reporter, access: nil204 allows actions based on membership205 container_level: :internal, access_level: :disabled, membership: :guest, access: nil206 allows actions based on membership207 container_level: :internal, access_level: :disabled, membership: :non_member, access: nil208 allows actions based on membership209 container_level: :internal, access_level: :disabled, membership: :anonymous, access: nil210 allows actions based on membership211 container_level: :private, access_level: :private, membership: :admin, access: :all212 allows actions based on membership213 container_level: :private, access_level: :private, membership: :maintainer, access: :maintainer214 allows actions based on membership215 container_level: :private, access_level: :private, membership: :developer, access: :developer216 allows actions based on membership217 container_level: :private, access_level: :private, membership: :reporter, access: :reporter218 allows actions based on membership219 container_level: :private, access_level: :private, membership: :guest, access: :guest220 allows actions based on membership221 container_level: :private, access_level: :private, membership: :non_member, access: nil222 allows actions based on membership223 container_level: :private, access_level: :private, membership: :anonymous, access: nil224 allows actions based on membership225 container_level: :private, access_level: :disabled, membership: :admin, access: nil226 allows actions based on membership227 container_level: :private, access_level: :disabled, membership: :maintainer, access: nil228 allows actions based on membership229 container_level: :private, access_level: :disabled, membership: :developer, access: nil230 allows actions based on membership231 container_level: :private, access_level: :disabled, membership: :reporter, access: nil232 allows actions based on membership233 container_level: :private, access_level: :disabled, membership: :guest, access: nil234 allows actions based on membership235 container_level: :private, access_level: :disabled, membership: :non_member, access: nil236 allows actions based on membership237 container_level: :private, access_level: :disabled, membership: :anonymous, access: nil238 allows actions based on membership239 issues feature240 when the feature is disabled241 does not include the issues permissions242 disables boards and lists permissions243 when external tracker configured244 does not include the issues permissions245 merge requests feature246 disallows all permissions when the feature is disabled247 for a guest in a private project248 disallows the guest from reading the merge request and merge request iid249 pipeline feature250 for unconfirmed user251 disallows to modify pipelines252 for confirmed user253 allows modify pipelines254 builds feature255 when builds are disabled256 disallows all permissions except pipeline when the feature is disabled257 when builds are disabled only for some users258 disallows pipeline and commit_status permissions259 repository feature260 when user is a project member261 when it is disabled262 disallows all permissions263 when user is some other user264 when access level is private265 disallows all permissions266 behaves like project policies as anonymous267 abilities for public projects268 when a project has pending invites269 does not grant owner access270 behaves like archived project policies271 when the project is archived272 disables write actions on all relevant project features273 disables some other important write actions274 does not disable other abilities275 abilities for non-public projects276 is expected to be banned277 behaves like project policies as guest278 abilities for non-public projects279 is expected not to be allowed :set_note_created_at280 behaves like deploy token does not get confused with user281 is expected not to be allowed :set_note_created_at282 behaves like archived project policies283 when the project is archived284 disables write actions on all relevant project features285 disables some other important write actions286 does not disable other abilities287 public builds enabled288 is expected to be allowed :read_pipeline289 when public builds disabled290 is expected not to be allowed :read_pipeline291 when builds are disabled292 is expected to be allowed :read_pipeline293 behaves like project policies as reporter294 abilities for non-public projects295 is expected not to be allowed :set_note_created_at296 behaves like deploy token does not get confused with user297 is expected not to be allowed :set_note_created_at298 behaves like archived project policies299 when the project is archived300 disables write actions on all relevant project features301 disables some other important write actions302 does not disable other abilities303 behaves like project policies as developer304 abilities for non-public projects305 is expected not to be allowed :set_note_created_at306 behaves like deploy token does not get confused with user307 is expected not to be allowed :set_note_created_at308 behaves like archived project policies309 when the project is archived310 disables write actions on all relevant project features311 disables some other important write actions312 does not disable other abilities313 behaves like project policies as maintainer314 abilities for non-public projects315 is expected not to be allowed :set_note_created_at316 behaves like deploy token does not get confused with user317 is expected not to be allowed :set_note_created_at318 behaves like archived project policies319 when the project is archived320 disables write actions on all relevant project features321 disables some other important write actions322 does not disable other abilities323 behaves like project policies as owner324 abilities for non-public projects325 is expected to be allowed :set_note_created_at326 behaves like deploy token does not get confused with user327 is expected not to be allowed :set_note_created_at328 behaves like archived project policies329 when the project is archived330 disables write actions on all relevant project features331 disables some other important write actions332 does not disable other abilities333 behaves like project policies as admin with admin mode334 abilities for non-public projects335 is expected to be allowed :set_note_created_at336 deploy token does not get confused with user337 is expected not to be allowed :set_note_created_at338 behaves like archived project policies339 when the project is archived340 disables write actions on all relevant project features341 disables some other important write actions342 does not disable other abilities343 abilities for all project visibility344 behaves like project private features with read_all_resources ability345 for public projects346 allows the download_code ability347 for internal projects348 allows the download_code ability349 for private projects350 allows the download_code ability351 behaves like project policies as admin without admin mode352 abilities for non-public projects353 is expected to be banned354 deploy token does not get confused with user355 is expected to be banned356 when a public project has merge requests allowing access357 does not allow pushing code358 allows pushing if the user is a member with push access to the target project359 disallows abilities to a maintainer if the merge request was closed360 behaves like clusterable policies361 #add_cluster?362 with a developer363 is expected not to be allowed :read_cluster364 is expected not to be allowed :add_cluster365 is expected not to be allowed :create_cluster366 is expected not to be allowed :update_cluster367 is expected not to be allowed :admin_cluster368 with a maintainer369 with no clusters370 is expected to be allowed :read_cluster371 is expected to be allowed :add_cluster372 is expected to be allowed :create_cluster373 is expected to be allowed :update_cluster374 is expected to be allowed :admin_cluster375 reading a project376 allows access when a user has read access to the repo377 never checks the external service378 with an external authorization service379 allows access when the external service allows it380 prevents all but seeing a public project in a list when access is denied381 passes the full path to external authorization for logging purposes382 with an admin383 when admin mode is enabled384 does not check the external service and allows access385 when admin mode is disabled386 checks the external service and allows access387 forking a project388 anonymous user389 is expected to be disallowed :fork_project390 project member391 guest392 is expected to be disallowed :fork_project393 reporter394 is expected to be allowed :fork_project395 developer396 is expected to be allowed :fork_project397 maintainer398 is expected to be allowed :fork_project399 update_max_artifacts_size400 when no user401 is expected not to be allowed :update_max_artifacts_size402 admin403 when admin mode is enabled404 is expected to be allowed :update_max_artifacts_size405 when admin mode is disabled406 is expected not to be allowed :update_max_artifacts_size407 guest408 is expected not to be allowed :update_max_artifacts_size409 reporter410 is expected not to be allowed :update_max_artifacts_size411 developer412 is expected not to be allowed :update_max_artifacts_size413 maintainer414 is expected not to be allowed :update_max_artifacts_size415 owner416 is expected not to be allowed :update_max_artifacts_size417 alert bot418 is expected to be allowed :reporter_access419 within a private project420 is expected to be allowed :admin_issue421 support bot422 with service desk disabled423 is expected to be allowed :guest_access424 is expected not to be allowed :read_project425 with service desk enabled426 is expected to be allowed :read_issue427 when issues are protected members only428 is expected to be allowed :read_issue429 read_prometheus_alerts430 with admin431 when admin mode is enabled432 is expected to be allowed :read_prometheus_alerts433 when admin mode is disabled434 is expected to be disallowed :read_prometheus_alerts435 with owner436 is expected to be allowed :read_prometheus_alerts437 with maintainer438 is expected to be allowed :read_prometheus_alerts439 with developer440 is expected to be disallowed :read_prometheus_alerts441 with reporter442 is expected to be disallowed :read_prometheus_alerts443 with guest444 is expected to be disallowed :read_prometheus_alerts445 with anonymous446 is expected to be disallowed :read_prometheus_alerts447 metrics_dashboard feature448 public project449 feature private450 with reporter451 is expected to be allowed :metrics_dashboard452 is expected to be allowed :read_prometheus453 is expected to be allowed :read_deployment454 is expected to be allowed :read_metrics_user_starred_dashboard455 is expected to be allowed :create_metrics_user_starred_dashboard456 with guest457 is expected to be disallowed :metrics_dashboard458 with anonymous459 is expected to be disallowed :metrics_dashboard460 feature enabled461 with reporter462 is expected to be allowed :metrics_dashboard463 is expected to be allowed :read_prometheus464 is expected to be allowed :read_deployment465 is expected to be allowed :read_metrics_user_starred_dashboard466 is expected to be allowed :create_metrics_user_starred_dashboard467 with guest468 is expected to be allowed :metrics_dashboard469 is expected to be allowed :read_prometheus470 is expected to be allowed :read_deployment471 is expected to be allowed :read_metrics_user_starred_dashboard472 is expected to be allowed :create_metrics_user_starred_dashboard473 with anonymous474 is expected to be allowed :metrics_dashboard475 is expected to be allowed :read_prometheus476 is expected to be allowed :read_deployment477 is expected to be disallowed :read_metrics_user_starred_dashboard478 is expected to be disallowed :create_metrics_user_starred_dashboard479 internal project480 feature private481 with reporter482 is expected to be allowed :metrics_dashboard483 is expected to be allowed :read_prometheus484 is expected to be allowed :read_deployment485 is expected to be allowed :read_metrics_user_starred_dashboard486 is expected to be allowed :create_metrics_user_starred_dashboard487 with guest488 is expected to be disallowed :metrics_dashboard489 with anonymous490 is expected to be disallowed :metrics_dashboard491 feature enabled492 with reporter493 is expected to be allowed :metrics_dashboard494 is expected to be allowed :read_prometheus495 is expected to be allowed :read_deployment496 is expected to be allowed :read_metrics_user_starred_dashboard497 is expected to be allowed :create_metrics_user_starred_dashboard498 with guest499 is expected to be allowed :metrics_dashboard500 is expected to be allowed :read_prometheus501 is expected to be allowed :read_deployment502 is expected to be allowed :read_metrics_user_starred_dashboard503 is expected to be allowed :create_metrics_user_starred_dashboard504 with anonymous505 is expected to be disallowed :metrics_dashboard506 private project507 feature private508 with reporter509 is expected to be allowed :metrics_dashboard510 is expected to be allowed :read_prometheus511 is expected to be allowed :read_deployment512 is expected to be allowed :read_metrics_user_starred_dashboard513 is expected to be allowed :create_metrics_user_starred_dashboard514 with guest515 is expected to be disallowed :metrics_dashboard516 with anonymous517 is expected to be disallowed :metrics_dashboard518 feature enabled519 with reporter520 is expected to be allowed :metrics_dashboard521 is expected to be allowed :read_prometheus522 is expected to be allowed :read_deployment523 is expected to be allowed :read_metrics_user_starred_dashboard524 is expected to be allowed :create_metrics_user_starred_dashboard525 with guest526 is expected to be disallowed :metrics_dashboard527 with anonymous528 is expected to be disallowed :metrics_dashboard529 feature disabled530 with reporter531 is expected to be disallowed :metrics_dashboard532 with guest533 is expected to be disallowed :metrics_dashboard534 with anonymous535 is expected to be disallowed :metrics_dashboard536 deploy token access537 a deploy token with read_package_registry scope538 is expected to be allowed :read_package539 is expected to be allowed :read_project540 is expected to be disallowed :create_package541 a deploy token with write_package_registry scope542 is expected to be allowed :create_package543 is expected to be allowed :read_project544 is expected to be disallowed :destroy_package545 create_web_ide_terminal546 with admin547 when admin mode enabled548 is expected to be allowed :create_web_ide_terminal549 when admin mode disabled550 is expected to be disallowed :create_web_ide_terminal551 with owner552 is expected to be allowed :create_web_ide_terminal553 with maintainer554 is expected to be allowed :create_web_ide_terminal555 with developer556 is expected to be disallowed :create_web_ide_terminal557 with reporter558 is expected to be disallowed :create_web_ide_terminal559 with guest560 is expected to be disallowed :create_web_ide_terminal561 with non member562 is expected to be disallowed :create_web_ide_terminal563 with anonymous564 is expected to be disallowed :create_web_ide_terminal565 read_repository_graphs566 when user can download_code567 is expected to be allowed :read_repository_graphs568 when user cannot download_code569 is expected to be disallowed :read_repository_graphs570 design permissions571 when design management is not available572 is expected not to be allowed :read_design_activity and :read_design573 when design management is available574 is expected to be allowed :read_design_activity and :read_design575 read_build_report_results576 when user can read_build and read_pipeline577 is expected to be allowed :read_build_report_results578 when user can read_build but cannot read_pipeline579 is expected to be disallowed :read_build_report_results580 when user cannot read_build but can read_pipeline581 is expected to be disallowed :read_build_report_results582 when user cannot read_build and cannot read_pipeline583 is expected to be disallowed :read_build_report_results584 read_package585 with admin586 is expected to be allowed :read_package587 when repository is disabled588 is expected to be disallowed :read_package589 with owner590 is expected to be allowed :read_package591 with maintainer592 is expected to be allowed :read_package593 with developer594 is expected to be allowed :read_package595 with reporter596 is expected to be allowed :read_package597 with guest598 is expected to be allowed :read_package599 with non member600 is expected to be allowed :read_package601 with anonymous602 is expected to be allowed :read_package603Projects::ImportService604 #async?605 returns true for an asynchronous importer606 returns false for a regular importer607 returns false when the importer does not define #async?608 returns false when the importer does not exist609 #execute610 with unknown url611 succeeds if repository is created successfully612 fails if repository creation fails613 when repository creation succeeds614 does not download lfs files615 with known url616 with a Github repository617 succeeds if repository import was scheduled618 fails if repository import was not scheduled619 when repository import scheduled620 does not download lfs objects621 with a non Github repository622 succeeds if repository import is successful623 fails if repository import fails624 when lfs import fails625 logs the error626 when repository import scheduled627 downloads lfs objects if lfs_enabled is enabled for project628 does not download lfs objects if lfs_enabled is not enabled for project629 with valid importer630 succeeds if importer succeeds631 fails if importer fails632 when importer633 has a custom repository importer it does not download lfs objects634 does not have a custom repository importer downloads lfs objects635 when lfs import fails636 logs the error637 with blocked import_URL638 fails with localhost639 fails with port 25640 behaves like measurable service641 when measurement is enabled642 measure service execution with Gitlab::Utils::Measuring643 when measurement is disabled644 does not measure service execution645Gitlab::ClosingIssueExtractor646 #closed_by_message647 with a single reference648 is expected to eq [#<Issue id:2 namespace98/project284#1>]649 is expected to eq [#<Issue id:3 namespace100/project286#1>]650 is expected to eq [#<Issue id:4 namespace102/project288#1>]651 is expected to eq [#<Issue id:5 namespace104/project290#1>]652 is expected to eq [#<Issue id:6 namespace106/project292#1>]653 is expected to eq [#<Issue id:7 namespace108/project294#1>]654 is expected to eq [#<Issue id:8 namespace110/project296#1>]655 is expected to eq [#<Issue id:9 namespace112/project298#1>]656 is expected to eq [#<Issue id:10 namespace114/project300#1>]657 is expected to eq [#<Issue id:11 namespace116/project302#1>]658 is expected to eq [#<Issue id:12 namespace118/project304#1>]659 is expected to eq [#<Issue id:13 namespace120/project306#1>]660 is expected to eq [#<Issue id:14 namespace122/project308#1>]661 is expected to eq [#<Issue id:15 namespace124/project310#1>]662 is expected to eq [#<Issue id:16 namespace126/project312#1>]663 is expected to eq [#<Issue id:17 namespace128/project314#1>]664 is expected to eq [#<Issue id:18 namespace130/project316#1>]665 is expected to eq [#<Issue id:19 namespace132/project318#1>]666 is expected to eq [#<Issue id:20 namespace134/project320#1>]667 is expected to eq [#<Issue id:21 namespace136/project322#1>]668 is expected to eq [#<Issue id:22 namespace138/project324#1>]669 is expected to eq [#<Issue id:23 namespace140/project326#1>]670 is expected to eq [#<Issue id:24 namespace142/project328#1>]671 is expected to eq [#<Issue id:25 namespace144/project330#1>]672 is expected to eq [#<Issue id:26 namespace146/project332#1>]673 is expected to eq [#<Issue id:27 namespace148/project334#1>]674 is expected to eq [#<Issue id:28 namespace150/project336#1>]675 is expected to eq [#<Issue id:29 namespace152/project338#1>]676 is expected to eq [#<Issue id:30 namespace154/project340#1>]677 is expected to eq [#<Issue id:31 namespace156/project342#1>]678 is expected to eq [#<Issue id:32 namespace158/project344#1>]679 is expected to eq [#<Issue id:33 namespace160/project346#1>]680 is expected to eq [#<Issue id:34 namespace162/project348#1>]681 is expected to eq [#<Issue id:35 namespace164/project350#1>]682 is expected to eq [#<Issue id:36 namespace166/project352#1>]683 is expected to eq [#<Issue id:37 namespace168/project354#1>]684 is expected to eq [#<Issue id:38 namespace170/project356#1>]685 is expected to eq [#<Issue id:39 namespace172/project358#1>]686 is expected to eq [#<Issue id:40 namespace174/project360#1>]687 is expected to eq [#<Issue id:41 namespace176/project362#1>]688 is expected to eq [#<Issue id:42 namespace178/project364#1>]689 is expected to eq [#<Issue id:43 namespace180/project366#1>]690 is expected to eq [#<Issue id:44 namespace182/project368#1>]691 is expected to eq [#<Issue id:45 namespace184/project370#1>]692 is expected to eq [#<Issue id:46 namespace186/project372#1>]693 is expected to eq [#<Issue id:47 namespace188/project374#1>]694 is expected to eq [#<Issue id:48 namespace190/project376#1>]695 is expected to eq [#<Issue id:49 namespace192/project378#1>]696 is expected to eq [#<Issue id:50 namespace194/project380#1>]697 is expected to eq [#<Issue id:51 namespace196/project382#1>]698 is expected to eq [#<Issue id:52 namespace198/project384#1>]699 is expected to eq [#<Issue id:53 namespace200/project386#1>]700 is expected to eq [#<Issue id:54 namespace202/project388#1>]701 is expected to eq [#<Issue id:55 namespace204/project390#1>]702 is expected to eq [#<Issue id:56 namespace206/project392#1>]703 with an external issue tracker reference704 extracts the referenced issue705 with a cross-project reference706 is expected to eq [#<Issue id:57 namespace213/project398#1>]707 with a cross-project URL708 is expected to eq [#<Issue id:58 namespace215/project400#1>]709 with a cross-project fork reference710 is expected to be empty711 with an invalid URL712 is expected to eq []713 with an invalid keyword such as suffix insted of fix714 is expected to eq []715 with multiple references716 fetches issues in single line message717 fetches comma-separated issues references in single line message718 fetches comma-separated issues numbers in single line message719 allows oxford commas (comma before and) when referencing multiple issues720 allows spaces before commas when referencing multiple issues721 allows non-comma-separated issue numbers in single line message722 allows mixed comma-separated and non-comma-separated issue numbers in single line message723 fetches issues in multi-line message724 fetches issues in hybrid message725 fetches cross-project references726 fetches cross-project URL references727 ignores invalid cross-project URL references728 with autoclose referenced issues disabled729 is expected to eq []730WikiPage731 .group_by_directory732 when there are no pages733 returns an empty array734 when there are pages735 #list_pages736 returns an array with retained order with directories at the top737 sort by title738 returns an array with pages and directories739 sort by created_at740 returns an array with pages and directories741 #front_matter742 the wiki page has front matter743 strips the front matter from the content744 behaves like a page with front-matter745 is expected to eq {:slugs=>["slug_a", "slug_b"], :title=>"Foo"}746 the feature flag is off747 behaves like a page without front-matter748 is expected to have attributes {:content => "---\ntitle: Foo\nslugs:\n - slug_a\n - slug_b\n---\n\nMy actual content\n", :front_matter => {}}749 but enabled for the container750 behaves like a page with front-matter751 is expected to eq {:slugs=>["slug_a", "slug_b"], :title=>"Foo"}752 the wiki page does not have front matter753 behaves like a page without front-matter754 is expected to have attributes {:content => "My actual content", :front_matter => {}}755 the wiki page has fenced blocks, but nothing in them756 behaves like a page without front-matter757 is expected to have attributes {:content => "---\n---\n\nMy actual content\n", :front_matter => {}}758 the wiki page has invalid YAML type in fenced blocks759 behaves like a page without front-matter760 is expected to have attributes {:content => "---\nthis isn't YAML\n---\n\nMy actual content\n", :front_matter => {}}761 the wiki page has a disallowed class in fenced block762 behaves like a page without front-matter763 is expected to have attributes {:content => "---\ndate: 2010-02-11 11:02:57\n---\n\nMy actual content\n", :front_matter => {}}764 the wiki page has invalid YAML in fenced block765 behaves like a page without front-matter766 is expected to have attributes {:content => "---\ninvalid-use-of-reserved-indicator: @text\n---\n\nMy actual content\n", :front_matter => {}}767 .unhyphenize768 removes hyphens from a name769 #initialize770 when initialized with an existing page771 sets the slug attribute772 sets the title attribute773 sets the formatted content attribute774 sets the format attribute775 sets the message attribute776 sets the version attribute777 validations778 validates presence of title779 validates presence of content780 #validate_content_size_limit781 with a new page782 accepts content below the limit783 rejects content exceeding the limit784 counts content size in bytes rather than characters785 with an existing page exceeding the limit786 accepts content when it has not changed787 rejects content when it has changed788 #validate_path_limits789 character: "a"790 accepts page titles below the limit791 accepts directories below the limit792 accepts a path with page title and directory below the limit793 rejects page titles exceeding the limit794 rejects directories exceeding the limit795 rejects a page with both title and directory exceeding the limit796 character: "ä"797 accepts page titles below the limit798 accepts directories below the limit799 accepts a path with page title and directory below the limit800 rejects page titles exceeding the limit801 rejects directories exceeding the limit802 rejects a page with both title and directory exceeding the limit803 character: "🙈"804 accepts page titles below the limit805 accepts directories below the limit806 accepts a path with page title and directory below the limit807 rejects page titles exceeding the limit808 rejects directories exceeding the limit809 rejects a page with both title and directory exceeding the limit810 with an existing page title exceeding the limit811 accepts the exceeding title length when unchanged812 rejects the exceeding title length when changed813 #create814 with valid attributes815 saves the wiki page816 returns true817 saves the wiki page with message818 if the title is preceded by a / it is removed819 with invalid attributes820 does not create the page821 dot in the title822 #create823 with valid attributes824 saves the wiki page825 returns true826 #update827 updates the content of the page828 returns true829 #update830 with valid attributes831 updates the content of the page832 updates the title of the page833 returns true834 updating front_matter835 updates the wiki-page front-matter and content together836 behaves like able to update front-matter837 updates the wiki-page front-matter838 the front matter is too long839 raises an error840 the front-matter feature flag is not enabled841 does not update the front-matter842 but it is enabled for the container843 behaves like able to update front-matter844 updates the wiki-page front-matter845 with same last commit sha846 returns true847 with different last commit sha848 raises exception849 when renaming a page850 raises an error if the page already exists851 updates the content and rename the file852 when moving a page853 raises an error if the page already exists854 updates the content and moves the file855 in subdir856 moves the page to the root folder if the title is preceded by /857 does nothing if it has the same title858 in root dir859 does nothing if the title is preceded by /860 with invalid attributes861 aborts update if title blank862 #delete863 deletes the page864 returns true865 #versions866 returns an array of all commits for the page867 returns instances of WikiPageVersion868 #title_changed?869 page: :untitled_page, title: nil, changed: false870 returns the expected value871 page: :untitled_page, title: "new title", changed: true872 returns the expected value873 page: :new_page, title: nil, changed: true874 returns the expected value875 page: :new_page, title: "test page", changed: true876 returns the expected value877 page: :new_page, title: "test-page", changed: true878 returns the expected value879 page: :new_page, title: "test+page", changed: true880 returns the expected value881 page: :new_page, title: "new title", changed: true882 returns the expected value883 page: :existing_page, title: nil, changed: false884 returns the expected value885 page: :existing_page, title: "test page", changed: false886 returns the expected value887 page: :existing_page, title: "test-page", changed: false888 returns the expected value889 page: :existing_page, title: "/test page", changed: false890 returns the expected value891 page: :existing_page, title: "/test-page", changed: false892 returns the expected value893 page: :existing_page, title: "test+page", changed: true894 returns the expected value895 page: :existing_page, title: " test page ", changed: true896 returns the expected value897 page: :existing_page, title: "new title", changed: true898 returns the expected value899 page: :existing_page, title: "new-title", changed: true900 returns the expected value901 page: :directory_page, title: nil, changed: false902 returns the expected value903 page: :directory_page, title: "parent directory/child page", changed: false904 returns the expected value905 page: :directory_page, title: "parent-directory/child page", changed: false906 returns the expected value907 page: :directory_page, title: "parent-directory/child-page", changed: false908 returns the expected value909 page: :directory_page, title: "child page", changed: false910 returns the expected value911 page: :directory_page, title: "child-page", changed: false912 returns the expected value913 page: :directory_page, title: "/child page", changed: true914 returns the expected value915 page: :directory_page, title: "parent directory/other", changed: true916 returns the expected value917 page: :directory_page, title: "parent-directory/other", changed: true918 returns the expected value919 page: :directory_page, title: "parent-directory / child-page", changed: true920 returns the expected value921 page: :directory_page, title: "other directory/child page", changed: true922 returns the expected value923 page: :directory_page, title: "other-directory/child page", changed: true924 returns the expected value925 page: :page_with_special_characters, title: nil, changed: false926 returns the expected value927 page: :page_with_special_characters, title: "test+page", changed: false928 returns the expected value929 page: :page_with_special_characters, title: "test-page", changed: true930 returns the expected value931 page: :page_with_special_characters, title: "test page", changed: true932 returns the expected value933 #content_changed?934 with a new page935 returns true if content is set936 returns false if content is blank937 with an existing page938 returns false939 returns false if content is set to the same value940 returns true if content is changed941 returns true if content is changed to a blank string942 returns false if only the newline format has changed943 #path944 returns the path when persisted945 returns nil when not persisted946 #directory947 when the page is at the root directory948 returns an empty string949 when the page is inside an actual directory950 returns the full directory hierarchy951 #historical?952 returns true when requesting an old version953 returns false when requesting latest version954 returns false when version is nil955 returns false when the last version is nil956 returns false when the version is nil957 #persisted?958 returns true for a persisted page959 returns false for an unpersisted page960 #to_partial_path961 returns the relative path to the partial to be used962 #==963 returns true for identical wiki page964 returns true for updated wiki page965 returns false for a completely different wiki page966 returns false for page with different slug on same container967 returns false for page with the same slug on a different container968 #last_commit_sha969 returns commit sha970 is changed after page updated971 #hook_attrs972 adds absolute urls for images in the content973 #version_commit_timestamp974 for a new page975 returns nil976 for page that exists977 returns the timestamp of the commit978 #diffs979 returns a diff instance980Snippets::UpdateService981 #execute982 when Project Snippet983 behaves like a service that updates a snippet984 updates a snippet with the provided attributes985 behaves like public visibility level restrictions apply986 when user is not an admin987 responds with an error988 does not update snippet to public visibility989 when user is an admin990 responds with success991 updates the snippet to public visibility992 when visibility level is passed as a string993 assigns the correct visibility level994 behaves like snippet update data is tracked995 increments count when create succeeds996 when update fails997 does not increment count998 behaves like updates repository content999 commit the files to the repository1000 returns error if snippet does not have a snippet_repository1001 when an error is raised1002 logs the error1003 returns error with generic error message1004 when the repository does not exist1005 does not try to commit file1006 behaves like commit operation fails1007 returns error1008 when repository is empty1009 destroys the created repository in disk1010 destroys the SnippetRepository object1011 expires the repository exists method cache1012 when repository is not empty1013 does not destroy the repository1014 does not destroy the snippet repository1015 expires the repository exists method cache1016 with snippet modifications1017 rolls back any snippet modifications1018 keeps any snippet modifications1019 behaves like committable attributes1020 when file_name is updated1021 commits to repository1022 when content is updated1023 commits to repository1024 when content or file_name is not updated1025 does not perform any commit1026 behaves like when snippet_actions param is present1027 updates a snippet with the provided attributes1028 commits the files to the repository1029 when content or file_name params are present1030 raises a validation error1031 when snippet_file content is not present1032 does not update snippet content1033 when snippet_actions param is invalid1034 raises a validation error1035 when an error is raised committing the file1036 keeps any snippet modifications1037 commit actions1038 update action1039 updates the file content1040 when previous_path is present1041 updates the file content1042 when content is not present1043 behaves like returns an error1044 is expected to eq "Snippet actions have invalid data"1045 when file_path does not exist1046 behaves like returns an error1047 is expected to eq "Repository Error updating the snippet"1048 move action1049 when file_path and previous_path are the same1050 behaves like returns an error1051 is expected to eq "Snippet actions have invalid data"1052 when file_path and previous_path are different1053 renames the file1054 when previous_path does not exist1055 behaves like returns an error1056 is expected to eq "Repository Error updating the snippet"1057 when user wants to rename the file and update content1058 performs both operations1059 when the file_path is not present1060 generates the name for the renamed file1061 delete action1062 behaves like deletes the file1063 is expected to be nil1064 when previous_path is present and same as file_path1065 behaves like deletes the file1066 is expected to be nil1067 when previous_path is present and is different from file_path1068 behaves like deletes the file1069 is expected to be nil1070 when content is present1071 behaves like deletes the file1072 is expected to be nil1073 when file_path does not exist1074 behaves like returns an error1075 is expected to eq "Repository Error updating the snippet"1076 create action1077 creates the file1078 when content is not present1079 behaves like returns an error1080 is expected to eq "Snippet actions have invalid data"1081 when file_path is not present or empty1082 generates the file path for the files1083 when file_path already exists in the repository1084 behaves like returns an error1085 is expected to eq "Repository Error updating the snippet"1086 when previous_path is present1087 creates the file1088 combination of actions1089 performs all operations1090 behaves like only file_name is present1091 when renaming the file_name1092 behaves like content is not updated1093 is expected to eq "/custom-highlighting/*.gitlab-custom gitlab-language=ruby\n"1094 when file_name does not change1095 behaves like content is not updated1096 is expected to eq "/custom-highlighting/*.gitlab-custom gitlab-language=ruby\n"1097 behaves like only content is present1098 updates the content1099 behaves like snippets spam check is performed1100 when allow_possible_spam flag is true1101 behaves like marked as spam1102 marks a snippet as spam1103 invalidates the snippet1104 creates a new spam_log1105 assigns a spam_log to an issue1106 when allow_possible_spam flag is false1107 behaves like marked as spam1108 marks a snippet as spam1109 invalidates the snippet1110 creates a new spam_log1111 assigns a spam_log to an issue1112 when allow_possible_spam flag is nil1113 behaves like marked as spam1114 marks a snippet as spam1115 invalidates the snippet1116 creates a new spam_log1117 assigns a spam_log to an issue1118 when snippet does not have a repository1119 behaves like creates repository and creates file1120 creates repository1121 commits the files to the repository1122 when the repository creation fails1123 raise an error1124 does not try to commit file1125 behaves like commit operation fails1126 returns error1127 when repository is empty1128 destroys the created repository in disk1129 destroys the SnippetRepository object1130 expires the repository exists method cache1131 when repository is not empty1132 does not destroy the repository1133 does not destroy the snippet repository1134 expires the repository exists method cache1135 with snippet modifications1136 rolls back any snippet modifications1137 keeps any snippet modifications1138 when PersonalSnippet1139 behaves like a service that updates a snippet1140 updates a snippet with the provided attributes1141 behaves like public visibility level restrictions apply1142 when user is not an admin1143 responds with an error1144 does not update snippet to public visibility1145 when user is an admin1146 responds with success1147 updates the snippet to public visibility1148 when visibility level is passed as a string1149 assigns the correct visibility level1150 behaves like snippet update data is tracked1151 increments count when create succeeds1152 when update fails1153 does not increment count1154 behaves like updates repository content1155 commit the files to the repository1156 returns error if snippet does not have a snippet_repository1157 when an error is raised1158 logs the error1159 returns error with generic error message1160 when the repository does not exist1161 does not try to commit file1162 behaves like commit operation fails1163 returns error1164 when repository is empty1165 destroys the created repository in disk1166 destroys the SnippetRepository object1167 expires the repository exists method cache1168 when repository is not empty1169 does not destroy the repository1170 does not destroy the snippet repository1171 expires the repository exists method cache1172 with snippet modifications1173 rolls back any snippet modifications1174 keeps any snippet modifications1175 behaves like committable attributes1176 when file_name is updated1177 commits to repository1178 when content is updated1179 commits to repository1180 when content or file_name is not updated1181 does not perform any commit1182 behaves like when snippet_actions param is present1183 updates a snippet with the provided attributes1184 commits the files to the repository1185 when content or file_name params are present1186 raises a validation error1187 when snippet_file content is not present1188 does not update snippet content1189 when snippet_actions param is invalid1190 raises a validation error1191 when an error is raised committing the file1192 keeps any snippet modifications1193 commit actions1194 update action1195 updates the file content1196 when previous_path is present1197 updates the file content1198 when content is not present1199 behaves like returns an error1200 is expected to eq "Snippet actions have invalid data"1201 when file_path does not exist1202 behaves like returns an error1203 is expected to eq "Repository Error updating the snippet"1204 move action1205 when file_path and previous_path are the same1206 behaves like returns an error1207 is expected to eq "Snippet actions have invalid data"1208 when file_path and previous_path are different1209 renames the file1210 when previous_path does not exist1211 behaves like returns an error1212 is expected to eq "Repository Error updating the snippet"1213 when user wants to rename the file and update content1214 performs both operations1215 when the file_path is not present1216 generates the name for the renamed file1217 delete action1218 behaves like deletes the file1219 is expected to be nil1220 when previous_path is present and same as file_path1221 behaves like deletes the file1222 is expected to be nil1223 when previous_path is present and is different from file_path1224 behaves like deletes the file1225 is expected to be nil1226 when content is present1227 behaves like deletes the file1228 is expected to be nil1229 when file_path does not exist1230 behaves like returns an error1231 is expected to eq "Repository Error updating the snippet"1232 create action1233 creates the file1234 when content is not present1235 behaves like returns an error1236 is expected to eq "Snippet actions have invalid data"1237 when file_path is not present or empty1238 generates the file path for the files1239 when file_path already exists in the repository1240 behaves like returns an error1241 is expected to eq "Repository Error updating the snippet"1242 when previous_path is present1243 creates the file1244 combination of actions1245 performs all operations1246 behaves like only file_name is present1247 when renaming the file_name1248 behaves like content is not updated1249 is expected to eq "/custom-highlighting/*.gitlab-custom gitlab-language=ruby\n"1250 when file_name does not change1251 behaves like content is not updated1252 is expected to eq "/custom-highlighting/*.gitlab-custom gitlab-language=ruby\n"1253 behaves like only content is present1254 updates the content1255 behaves like snippets spam check is performed1256 when allow_possible_spam flag is true1257 behaves like marked as spam1258 marks a snippet as spam1259 invalidates the snippet1260 creates a new spam_log1261 assigns a spam_log to an issue1262 when allow_possible_spam flag is false1263 behaves like marked as spam1264 marks a snippet as spam1265 invalidates the snippet1266 creates a new spam_log1267 assigns a spam_log to an issue1268 when allow_possible_spam flag is nil1269 behaves like marked as spam1270 marks a snippet as spam1271 invalidates the snippet1272 creates a new spam_log1273 assigns a spam_log to an issue1274 when snippet does not have a repository1275 behaves like creates repository and creates file1276 creates repository1277 commits the files to the repository1278 when the repository creation fails1279 raise an error1280 does not try to commit file1281 behaves like commit operation fails1282 returns error1283 when repository is empty1284 destroys the created repository in disk1285 destroys the SnippetRepository object1286 expires the repository exists method cache1287 when repository is not empty1288 does not destroy the repository1289 does not destroy the snippet repository1290 expires the repository exists method cache1291 with snippet modifications1292 rolls back any snippet modifications1293 keeps any snippet modifications1294JiraService1295 #options1296 sets the URL properly1297 leaves out trailing slashes in context1298 provides additional cookies to allow basic auth with oracle webgate1299 username with trailing whitespaces1300 leaves out trailing whitespaces in username1301 using api URL1302 leaves out trailing slashes in context1303 Associations1304 is expected to belong to project required:1305 is expected to have one service_hook1306 .reference_pattern1307 key: "#123", result: ""1308 is expected to eq ""1309 key: "1#23#12", result: ""1310 is expected to eq ""1311 key: "JIRA-1234A", result: "JIRA-1234"1312 is expected to eq "JIRA-1234"1313 key: "JIRA-1234-some_tag", result: "JIRA-1234"1314 is expected to eq "JIRA-1234"1315 key: "JIRA-1234_some_tag", result: "JIRA-1234"1316 is expected to eq "JIRA-1234"1317 key: "EXT_EXT-1234", result: "EXT_EXT-1234"1318 is expected to eq "EXT_EXT-1234"1319 key: "EXT3_EXT-1234", result: "EXT3_EXT-1234"1320 is expected to eq "EXT3_EXT-1234"1321 key: "3EXT_EXT-1234", result: ""1322 is expected to eq ""1323 #create1324 does not store data into properties1325 stores data in data_fields correctly1326 when loading serverInfo1327 Cloud instance1328 is detected1329 Server instance1330 is detected1331 Unknown instance1332 is detected1333 overriding properties1334 when data are stored in properties1335 behaves like handles jira fields1336 reading data1337 reads data correctly1338 #update1339 basic update1340 leaves properties field emtpy1341 stores updated data in jira_tracker_data table1342 when updating the url, api_url, username, or password1343 updates deployment type1344 calls serverInfo for url1345 calls serverInfo for api_url1346 calls serverInfo for username1347 calls serverInfo for password1348 when not updating the url, api_url, username, or password1349 does not update deployment type1350 stored password invalidation1351 when a password was previously set1352 when only web url present1353 resets password if url changed1354 does not reset password if url "changed" to the same url as before1355 resets password if url not changed but api url added1356 does not reset password if new url is set together with password, even if it's the same password1357 resets password if url changed, even if setter called multiple times1358 does not reset password if username changed1359 does not reset password if password changed1360 does not reset password if the password is touched and same as before1361 when both web and api url present1362 resets password if api url changed1363 does not reset password if url changed1364 resets password if api url set to empty1365 when no password was previously set1366 saves password if new url is set together with password1367 when data are stored in separated fields1368 behaves like handles jira fields1369 reading data1370 reads data correctly1371 #update1372 basic update1373 leaves properties field emtpy1374 stores updated data in jira_tracker_data table1375 when updating the url, api_url, username, or password1376 updates deployment type1377 calls serverInfo for url1378 calls serverInfo for api_url1379 calls serverInfo for username1380 calls serverInfo for password1381 when not updating the url, api_url, username, or password1382 does not update deployment type1383 stored password invalidation1384 when a password was previously set1385 when only web url present1386 resets password if url changed1387 does not reset password if url "changed" to the same url as before1388 resets password if url not changed but api url added1389 does not reset password if new url is set together with password, even if it's the same password1390 resets password if url changed, even if setter called multiple times1391 does not reset password if username changed1392 does not reset password if password changed1393 does not reset password if the password is touched and same as before1394 when both web and api url present1395 resets password if api url changed1396 does not reset password if url changed1397 resets password if api url set to empty1398 when no password was previously set1399 saves password if new url is set together with password1400 when data are stored in both properties and separated fields1401 behaves like handles jira fields1402 reading data1403 reads data correctly1404 #update1405 basic update1406 leaves properties field emtpy1407 stores updated data in jira_tracker_data table1408 when updating the url, api_url, username, or password1409 updates deployment type1410 calls serverInfo for url1411 calls serverInfo for api_url1412 calls serverInfo for username1413 calls serverInfo for password1414 when not updating the url, api_url, username, or password1415 does not update deployment type1416 stored password invalidation1417 when a password was previously set1418 when only web url present1419 resets password if url changed1420 does not reset password if url "changed" to the same url as before1421 resets password if url not changed but api url added1422 does not reset password if new url is set together with password, even if it's the same password1423 resets password if url changed, even if setter called multiple times1424 does not reset password if username changed1425 does not reset password if password changed1426 does not reset password if the password is touched and same as before1427 when both web and api url present1428 resets password if api url changed1429 does not reset password if url changed1430 resets password if api url set to empty1431 when no password was previously set1432 saves password if new url is set together with password1433 #close_issue1434 when resource is a merge request1435 behaves like close_issue1436 calls Jira API1437 does not fail if remote_link.all on issue returns nil1438 creates Remote Link reference in Jira for comment1439 does not send comment or remote links to issues already closed1440 does not send comment or remote links to issues with unknown resolution1441 references the GitLab commit1442 references the GitLab commit1443 logs exception when transition id is not valid1444 calls the api with jira_issue_transition_id1445 when "comment_on_event_enabled" is set to false1446 creates Remote Link reference but does not create comment1447 when Remote Link already exists1448 does not create comment1449 when have multiple transition ids1450 calls the api with transition ids separated by comma1451 calls the api with transition ids separated by semicolon1452 when resource is a commit1453 behaves like close_issue1454 calls Jira API1455 does not fail if remote_link.all on issue returns nil1456 creates Remote Link reference in Jira for comment1457 does not send comment or remote links to issues already closed1458 does not send comment or remote links to issues with unknown resolution1459 references the GitLab commit1460 references the GitLab commit1461 logs exception when transition id is not valid1462 calls the api with jira_issue_transition_id1463 when "comment_on_event_enabled" is set to false1464 creates Remote Link reference but does not create comment1465 when Remote Link already exists1466 does not create comment1467 when have multiple transition ids1468 calls the api with transition ids separated by comma1469 calls the api with transition ids separated by semicolon1470 #create_cross_reference_note1471 when resource is a commit1472 when disabled1473 is expected to eq "Events for commits are disabled."1474 when enabled1475 behaves like creates a comment on Jira1476 creates a comment on Jira1477 when resource is a merge request1478 when disabled1479 is expected to eq "Events for merge requests are disabled."1480 when enabled1481 behaves like creates a comment on Jira1482 creates a comment on Jira1483 #test1484 when the test succeeds1485 gets Jira project with URL when API URL not set1486 gets Jira project with API URL if set1487 when the test fails1488 returns result with the error1489 project and issue urls1490 removes trailing slashes from url1491 when gitlab.yml was initialized1492 is prepopulated with the settings1493 favicon urls1494 includes the standard favicon1495 includes returns the custom favicon1496 generating external URLs1497 #issues_url1498 handles trailing slashes1499 #new_issue_url1500 handles trailing slashes1501NotePolicy1502 #rules1503 when the noteable is a deleted commit1504 allows to read1505 when the noteable is a commit1506 when the project is private1507 behaves like a discussion with a private noteable1508 when the note author can no longer see the noteable1509 can not edit nor read the note1510 when the note author can still see the noteable1511 can edit the note1512 when the project is public1513 when repository access level is private1514 behaves like a discussion with a private noteable1515 when the note author can no longer see the noteable1516 can not edit nor read the note1517 when the note author can still see the noteable1518 can edit the note1519 when the noteable is a personal snippet1520 can edit note1521 when it is private1522 can not edit nor read the note1523 when the project is public1524 when the note author is not a project member1525 can edit a note1526 when the noteable is a project snippet1527 can edit note1528 when it is private1529 behaves like a discussion with a private noteable1530 when the note author can no longer see the noteable1531 can not edit nor read the note1532 when the note author can still see the noteable1533 can edit the note1534 when a discussion is confidential1535 behaves like a discussion with a private noteable1536 when the note author can no longer see the noteable1537 can not edit nor read the note1538 when the note author can still see the noteable1539 can edit the note1540 when a discussion is locked1541 when the note author is a project member1542 can edit a note1543 when the note author is not a project member1544 can not edit a note1545 can read a note1546 for discussions1547 allows the author to manage the discussion1548 when the user does not have access to the noteable1549 behaves like a discussion with a private noteable1550 when the note author can no longer see the noteable1551 can not edit nor read the note1552 when the note author can still see the noteable1553 can edit the note1554 when it is a system note1555 when noteable is a public issue1556 when user is project member1557 behaves like user can read the note1558 allows the user to read the note1559 behaves like user can act on the note1560 allows the user to read the note1561 when user is not project member1562 behaves like user can read the note1563 allows the user to read the note1564 when user is anonymous1565 behaves like user can read the note1566 allows the user to read the note1567 when it is a system note referencing a confidential issue1568 when user is project member1569 behaves like user can read the note1570 allows the user to read the note1571 behaves like user can act on the note1572 allows the user to read the note1573 when user is not project member1574 behaves like user cannot read or act on the note1575 allows user to read the note1576 when user is anonymous1577 behaves like user cannot read or act on the note1578 allows user to read the note1579 with confidential notes1580 for issues1581 allows noteable assignees to read all notes1582 behaves like confidential notes permissions1583 does not allow non members to read confidential notes and replies1584 does not allow guests to read confidential notes and replies1585 allows reporter to read all notes but not resolve and admin them1586 allows developer to read and resolve all notes1587 allows maintainers to read all notes and admin them1588 allows noteable author to read and resolve all notes1589 when admin mode is enabled1590 allows admins to read all notes and admin them1591 when admin mode is disabled1592 does not allow non members to read confidential notes and replies1593 for merge requests1594 allows noteable assignees to read all notes1595 behaves like confidential notes permissions1596 does not allow non members to read confidential notes and replies1597 does not allow guests to read confidential notes and replies1598 allows reporter to read all notes but not resolve and admin them1599 allows developer to read and resolve all notes1600 allows maintainers to read all notes and admin them1601 allows noteable author to read and resolve all notes1602 when admin mode is enabled1603 allows admins to read all notes and admin them1604 when admin mode is disabled1605 does not allow non members to read confidential notes and replies1606 for project snippets1607 behaves like confidential notes permissions1608 does not allow non members to read confidential notes and replies1609 does not allow guests to read confidential notes and replies1610 allows reporter to read all notes but not resolve and admin them1611 allows developer to read and resolve all notes1612 allows maintainers to read all notes and admin them1613 allows noteable author to read and resolve all notes1614 when admin mode is enabled1615 allows admins to read all notes and admin them1616 when admin mode is disabled1617 does not allow non members to read confidential notes and replies1618 for personal snippets1619 allows snippet author to read and resolve all notes1620 does not allow maintainers to read confidential notes and replies1621Gitlab::Gfm::ReferenceRewriter1622 #rewrite1623 multiple issues and merge requests referenced1624 plain text description1625 is expected to include "old-project#1"1626 is expected to include "old-project#2"1627 is expected to include "old-project!1"1628 description with ignored elements1629 is expected to include "old-project#1"1630 is expected not to include "old-project#2"1631 is expected not to include "old-project!1"1632 rewrite ambigous references1633 url1634 is expected to include "http://gitlab.com/#1"1635 code1636 is expected to eq "old-project#1, but not `[#1]`"1637 code reverse1638 is expected to eq "not `#1`, but old-project#1"1639 code in random order1640 is expected to eq "old-project#1, `#1`, old-project#1, `#1`"1641 description with project labels1642 label referenced by id1643 is expected to eq "old-project#1 and old-project~123"1644 label referenced by text1645 is expected to eq "old-project#1 and old-project~123"1646 description with group labels1647 label referenced by id1648 is expected to eq "group9/old-project#1 and group9/old-project~321"1649 label referenced by text1650 is expected to eq "group10/old-project#1 and group10/old-project~321"1651 when description contains a local reference1652 is expected to eq "See old-project#1"1653 when description contains a cross reference1654 is expected to eq "See namespace581/project735!1"1655 with a commit1656 reference to an absolute URL to a commit1657 is expected to eq "http://localhost/group8/old-project/-/commit/b83d6e391c22777fca1ed3012fce84f633d7fed0"1658 reference to a commit1659 is expected to eq "old-project@b83d6e391c22777fca1ed3012fce84f633d7fed0"1660 reference contains project milestone1661 is expected to eq "milestone: old-project%\"9.0\""1662 when referring to group milestone1663 is expected to eq "milestone %\"10.0\""1664 when referring to a group1665 is expected to eq "group @group8"1666 when referring to a user1667 is expected to eq "user @user881"1668 when referable has a nil reference1669 raises an error that should be fixed1670DraftNotes::PublishService1671 only publishes the draft notes belonging to the current user1672 single draft note1673 publishes1674 does not skip notification1675 commit_id is set1676 creates note from draft with commit_id1677 multiple draft notes1678 returns success1679 publishes all draft notes for a user in a merge request1680 sends batch notification1681 when review fails to create1682 does not publish any draft note1683 returns an error1684 commit_id is set1685 creates note from draft with commit_id1686 draft notes with suggestions1687 creates a suggestion with correct content1688 when the diff is changed1689 creates a suggestion based on the latest diff content and positions1690 with quick actions1691 performs quick actions1692 does not create a note if it only contains quick actions1693 with drafts that resolve threads1694 resolves the thread1695 sends notifications if all threads are resolved1696 user cannot create notes1697 returns an error1698DiffNote1699 validations1700 behaves like a valid diff positionable note1701 for commit1702 position diff refs matches commit diff refs1703 is valid1704 position diff refs does not match commit diff refs1705 is invalid1706 commit does not exist1707 is invalid1708 original_position=1709 doesn't accept non-hash JSON passed as a string1710 does accept a position hash as a string1711 doesn't accept an array1712 does accept a hash1713 position=1714 doesn't accept non-hash JSON passed as a string1715 does accept a position hash as a string1716 doesn't accept an array1717 does accept a hash1718 change_position=1719 doesn't accept non-hash JSON passed as a string1720 does accept a position hash as a string1721 doesn't accept an array1722 does accept a hash1723 #position=1724 when provided a string1725 sets the position1726 when provided a hash1727 sets the position1728 when provided a position object1729 sets the position1730 #original_position=1731 when provided a string1732 sets the original position1733 when provided a hash1734 sets the original position1735 when provided a position object1736 sets the original position1737 #create_diff_file callback1738 merge request1739 does not create diff note file if it is a reply1740 when diffs are already created1741 when diff_file is found in persisted diffs1742 when importing1743 when diff_line is found in persisted diff_file1744 creates a diff note file1745 when diff_line is not found in persisted diff_file1746 behaves like a valid diff note with after commit callback1747 when diff file is fetched from repository1748 when diff_line is not found1749 raises an error1750 when diff_line is found1751 fallback to fetch file from repository1752 creates a diff note file1753 when diff file is not found in repository1754 raises an error1755 when not importing1756 when diff_line is not found1757 raises an error1758 when diff_line is found1759 creates a diff note file1760 when diff file is not found in persisted diffs1761 behaves like a valid diff note with after commit callback1762 when diff file is fetched from repository1763 when diff_line is not found1764 raises an error1765 when diff_line is found1766 fallback to fetch file from repository1767 creates a diff note file1768 when diff file is not found in repository1769 raises an error1770 when diffs are not already created1771 behaves like a valid diff note with after commit callback1772 when diff file is fetched from repository1773 when diff_line is not found1774 raises an error1775 when diff_line is found1776 fallback to fetch file from repository1777 creates a diff note file1778 when diff file is not found in repository1779 raises an error1780 commit1781 creates a diff note file1782 does not create diff note file if it is a reply1783 #diff_file1784 when note_diff_file association exists1785 returns persisted diff file data1786 when the discussion was created in the diff1787 when file_identifier_hash is disabled1788 returns correct diff file1789 when file_identifier_hash is enabled1790 returns correct diff file1791 when discussion is outdated or not created in the diff1792 returns the correct diff file1793 note diff file creation enqueuing1794 enqueues CreateNoteDiffFileWorker if it is the first note of a discussion1795 does not enqueues CreateNoteDiffFileWorker if not first note of a discussion1796 when noteable is a Design1797 does not return a diff file1798 #latest_diff_file1799 when noteable is a Design1800 does not return a diff file1801 #diff_line1802 returns the correct diff line1803 #line_code1804 returns the correct line code1805 #active?1806 when noteable is a commit1807 returns true1808 when noteable is a merge request1809 when the merge request's diff refs match that of the diff note1810 returns true1811 when the merge request's diff refs don't match that of the diff note1812 returns false1813 creation1814 updating of position1815 when noteable is a commit1816 doesn't update the position1817 when noteable is a merge request1818 when the note is active1819 doesn't update the position1820 when the note is outdated1821 updates the position1822 #discussion_id1823 when it is newly created1824 has a discussion id1825 when it didn't store a discussion id before1826 has a discussion id1827 #created_at_diff?1828 when noteable is a commit1829 returns true1830 when noteable is a merge request1831 when the diff refs match the original one of the diff note1832 returns true1833 when the diff refs don't match the original one of the diff note1834 returns false1835 #supports_suggestion?1836 when noteable does not exist1837 returns false1838 when noteable does not support suggestions1839 returns false1840 when line is not suggestible1841 returns false1842 #banzai_render_context1843 includes expected context1844 image diff notes1845 returns true for on_image?1846 validations1847 is expected not to validate that :line_code cannot be empty/falsy1848 does not validate diff line1849 does not update the position1850FileUploader1851 legacy storage1852 behaves like builds correct legacy storage paths1853 #store_dir1854 behaves like matches the method pattern1855 is expected to match /awesome\/project\/\h+/1856 #cache_dir1857 behaves like matches the method pattern1858 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)1859 #work_dir1860 behaves like matches the method pattern1861 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)1862 #upload_path1863 behaves like matches the method pattern1864 is expected to match /\h+\/<filename>/1865 #relative_path1866 is relative (PENDING: Path not set, skipping.)1867 .absolute_path1868 behaves like matches the method pattern1869 is expected to match /\/builds\/gitlab-org\/gitlab\/tmp\/tests\/public\/uploads\/awesome\/project\/55dc16aa0edd05693fd98b5051e83321\/foo.jpg/1870 .base_dir1871 behaves like matches the method pattern1872 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)1873 uses hashed storage1874 when rolled out attachments1875 #store_dir1876 behaves like matches the method pattern1877 is expected to match /@hashed\/\h{2}\/\h{2}\/\h+/1878 #cache_dir1879 behaves like matches the method pattern1880 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)1881 #work_dir1882 behaves like matches the method pattern1883 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)1884 #upload_path1885 behaves like matches the method pattern1886 is expected to match /\h+\/<filename>/1887 #relative_path1888 is relative (PENDING: Path not set, skipping.)1889 .absolute_path1890 behaves like matches the method pattern1891 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)1892 .base_dir1893 behaves like matches the method pattern1894 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)1895 when only repositories are rolled out1896 behaves like builds correct legacy storage paths1897 #store_dir1898 behaves like matches the method pattern1899 is expected to match /awesome\/project\/\h+/1900 #cache_dir1901 behaves like matches the method pattern1902 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)1903 #work_dir1904 behaves like matches the method pattern1905 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)1906 #upload_path1907 behaves like matches the method pattern1908 is expected to match /\h+\/<filename>/1909 #relative_path1910 is relative (PENDING: Path not set, skipping.)1911 .absolute_path1912 behaves like matches the method pattern1913 is expected to match /\/builds\/gitlab-org\/gitlab\/tmp\/tests\/public\/uploads\/awesome\/project\/55dc16aa0edd05693fd98b5051e83321\/foo.jpg/1914 .base_dir1915 behaves like matches the method pattern1916 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)1917 object store is remote1918 behaves like builds correct paths1919 #store_dir1920 behaves like matches the method pattern1921 is expected to match /@hashed\/\h{2}\/\h{2}\/\h+/1922 #cache_dir1923 behaves like matches the method pattern1924 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)1925 #work_dir1926 behaves like matches the method pattern1927 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)1928 #upload_path1929 behaves like matches the method pattern1930 is expected to match /@hashed\/\h{2}\/\h{2}\/\h+\/\h+\/<filename>/1931 #relative_path1932 is relative (PENDING: Path not set, skipping.)1933 .absolute_path1934 behaves like matches the method pattern1935 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)1936 .base_dir1937 behaves like matches the method pattern1938 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)1939 initialize1940 accepts a secret parameter1941 callbacks1942 #prune_store_dir after :remove1943 is called1944 prune the store directory1945 copy_to1946 files are stored locally1947 copies the file to the correct location1948 returned uploader1949 generates a new secret1950 creates new upload correctly1951 copies the file1952 files are stored remotely1953 copies the file to the correct location1954 returned uploader1955 generates a new secret1956 creates new upload correctly1957 copies the file1958 .extract_dynamic_path1959 with an absolute path without a slash in the beginning1960 behaves like a valid secret1961 with a 32-byte hexadecimal secret1962 extracts the secret1963 extracts the identifier1964 with a 10-byte hexadecimal secret1965 extracts the secret1966 extracts the identifier1967 with an invalid secret1968 returns nil1969 with an absolute path with a slash in the beginning1970 behaves like a valid secret1971 with a 32-byte hexadecimal secret1972 extracts the secret1973 extracts the identifier1974 with a 10-byte hexadecimal secret1975 extracts the secret1976 extracts the identifier1977 with an invalid secret1978 returns nil1979 with an relative path without a slash in the beginning1980 behaves like a valid secret1981 with a 32-byte hexadecimal secret1982 extracts the secret1983 extracts the identifier1984 with a 10-byte hexadecimal secret1985 extracts the secret1986 extracts the identifier1987 with an invalid secret1988 returns nil1989 with an relative path with a slash in the beginning1990 behaves like a valid secret1991 with a 32-byte hexadecimal secret1992 extracts the secret1993 extracts the identifier1994 with a 10-byte hexadecimal secret1995 extracts the secret1996 extracts the identifier1997 with an invalid secret1998 returns nil1999 #secret2000 generates a secret if none is provided2001 validation2002 32-byte hexadecimal2003 returns the secret2004 10-byte hexadecimal2005 returns the secret2006 invalid secret supplied2007 raises an exception2008 #migrate!2009 behaves like migrates2010 returns corresponding file type2011 does nothing when migrating to the current store2012 migrate to the specified store2013 removes the original file after the migration2014 can access to the original file during migration2015 when migrate! is not occupied by another process2016 executes migrate!2017 executes use_file2018 when migrate! is occupied by another process2019 does not execute migrate!2020 does not execute use_file2021 migration is unsuccessful2022 when the store is not supported2023 does not update the object_store2024 does not delete the original file2025 upon a fog failure2026 does not update the object_store2027 does not delete the original file2028 upon a database failure2029 does not update the object_store2030 does not delete the original file2031 behaves like migrates2032 returns corresponding file type2033 does nothing when migrating to the current store2034 migrate to the specified store2035 removes the original file after the migration2036 can access to the original file during migration2037 when migrate! is not occupied by another process2038 executes migrate!2039 executes use_file2040 when migrate! is occupied by another process2041 does not execute migrate!2042 does not execute use_file2043 migration is unsuccessful2044 when the store is not supported2045 does not update the object_store2046 does not delete the original file2047 upon a fog failure2048 does not update the object_store2049 does not delete the original file2050 upon a database failure2051 does not update the object_store2052 does not delete the original file2053 #upload=2054 handles nil2055 extract the uploader context from it2056 #replace_file_without_saving!2057 replaces an existing file without changing its metadata2058 when remote file is used2059 #cache!2060 file is stored remotely in permament location with sanitized name2061 #to_h2062 generates URL using original file name instead of filename returned by object storage2063Clusters::Applications::Helm2064 is expected to belong to cluster required:2065 is expected to validate that :cluster cannot be empty/falsy2066 #can_uninstall?2067 calls allowed_to_uninstall?2068 #name2069 is .application_name2070 is recorded in Clusters::Cluster::APPLICATIONS2071 .association_name2072 is expected to eq :application_helm2073 .available2074 is expected to contain exactly #<Clusters::Applications::Helm id: 1, cluster_id: 3, created_at: "2020-08-29 16:41:50", updated_at: "...p6AuyHgs4K2NjA==\n", ca_cert: "-----BEGIN CERTIFICATE-----\nMIIFtTCCA52gAwIBAgIJAO...", ca_key: nil> and #<Clusters::Applications::Helm id: 2, cluster_id: 6, created_at: "2020-08-29 16:41:50", updated_at: "...pO3JMWaI77OUOg==\n", ca_cert: "-----BEGIN CERTIFICATE-----\nMIIFtTCCA52gAwIBAgIJAO...", ca_key: nil>2075 #can_uninstall?2076 with other existing applications2077 is false when ingress is installed2078 is false when cert_manager is installed2079 is false when crossplane is installed2080 is false when prometheus is installed2081 is false when runner is installed2082 is false when jupyter is installed2083 is false when knative is installed2084 is false when elastic_stack is installed2085 is false when fluentd is installed2086 is false when cilium is installed2087 executes a single query only2088 without other existing applications2089 is expected to be truthy2090 #issue_client_cert2091 returns a new cert2092 #install_command2093 is expected to be an instance of Gitlab::Kubernetes::Helm::InitCommand2094 is initialized with 1 arguments2095 has cert files2096 rbac2097 rbac cluster2098 is expected to be rbac2099 non rbac cluster2100 is expected not to be rbac2101 #uninstall_command2102 is expected to be an instance of Gitlab::Kubernetes::Helm::ResetCommand2103 has name2104 has cert files2105 rbac2106 rbac cluster2107 is expected to be rbac2108 non rbac cluster2109 is expected not to be rbac2110 #post_uninstall2111 is expected to receive delete_namespace("gitlab-managed-apps") 1 time2112Issues::ExportCsvService2113 renders csv to string2114 #email2115 emails csv2116 renders with a target filesize2117 includes2118 includes the columns required for import2119 iid2120 url2121 title2122 state2123 description2124 author name2125 author username2126 assignee name2127 assignee username2128 confidential2129 milestone2130 labels2131 due_date2132 created_at2133 updated_at2134 closed_at2135 discussion_locked2136 weight2137 time estimate2138 time spent2139 with issues filtered by labels and project2140 returns only filtered objects2141 with minimal details2142 renders labels as nil2143Projects::MoveForksService2144 #execute2145 rollbacks changes if transaction fails2146 when moving a root forked project2147 moves the descendant forks2148 updates the fork network2149 when moving a intermediate forked project2150 moves the descendant forks2151 moves the ascendant fork2152 does not update fork network2153 when moving a leaf forked project2154 moves the ascendant fork2155 does not update fork network2156Gitlab::Pagination::OffsetPagination2157 #paginate2158 when resource can be paginated2159 first page2160 when the api_kaminari_count_with_limit feature flag is unset2161 behaves like paginated response2162 returns appropriate amount of resources2163 executes only one SELECT COUNT query2164 behaves like response with pagination headers2165 adds appropriate headers2166 when the api_kaminari_count_with_limit feature flag is disabled2167 behaves like paginated response2168 returns appropriate amount of resources2169 executes only one SELECT COUNT query2170 behaves like response with pagination headers2171 adds appropriate headers2172 when the api_kaminari_count_with_limit feature flag is enabled2173 when resources count is less than MAX_COUNT_LIMIT2174 behaves like paginated response2175 returns appropriate amount of resources2176 executes only one SELECT COUNT query2177 behaves like response with pagination headers2178 adds appropriate headers2179 when resources count is more than MAX_COUNT_LIMIT2180 does not return the X-Total and X-Total-Pages headers2181 behaves like paginated response2182 returns appropriate amount of resources2183 executes only one SELECT COUNT query2184 second page2185 returns appropriate amount of resources2186 adds appropriate headers2187 if order2188 is not present it adds default order(:id) if no order is present2189 is present it does not add anything2190 when resource empty2191 first page2192 returns appropriate amount of resources2193 adds appropriate headers2194Clusters::Gcp::VerifyProvisionStatusService2195 #execute2196 when operation status is RUNNING2197 behaves like continue_creation2198 schedules a worker for status minitoring2199 when cluster creation time exceeds timeout2200 behaves like error2201 sets an error to provider object2202 when operation status is PENDING2203 behaves like continue_creation2204 schedules a worker for status minitoring2205 when operation status is DONE2206 behaves like finalize_creation2207 schedules a worker for status minitoring2208 when operation status is unexpected2209 behaves like error2210 sets an error to provider object2211 when failed to get operation status2212 behaves like error2213 sets an error to provider object2214AutoDevopsHelper2215 .show_auto_devops_callout?2216 when auto devops is implicitly enabled2217 is expected to eq false2218 when auto devops is not implicitly enabled2219 is expected to eq true2220 when the banner is disabled by feature flag2221 is expected to be falsy2222 when dismissed2223 is expected to eq false2224 when user cannot admin project2225 is expected to eq false2226 when auto devops is enabled system-wide2227 is expected to eq false2228 when auto devops is explicitly enabled for project2229 is expected to eq false2230 when auto devops is explicitly disabled for project2231 is expected to eq false2232 when master contains a .gitlab-ci.yml file2233 is expected to eq false2234 when another service is enabled2235 is expected to eq false2236 #auto_devops_settings_path2237 returns auto devops settings path2238 #badge_for_auto_devops_scope2239 when receiver is a group2240 when explicitly enabled2241 is expected to eq "group enabled"2242 when explicitly disabled2243 is expected to be nil2244 when auto devops is implicitly enabled2245 by instance2246 is expected to eq "instance enabled"2247 with groups2248 when auto devops is enabled on parent2249 is expected to eq "group enabled"2250 when auto devops is enabled on parent group2251 is expected to eq "group enabled"2252 when auto devops disabled set on parent group2253 is expected to be nil2254 when receiver is a project2255 when auto devops is enabled at project level2256 is expected to be nil2257 when auto devops is disabled at project level2258 is expected to be nil2259 when auto devops is implicitly enabled2260 by instance2261 is expected to eq "instance enabled"2262 with groups2263 when auto devops is enabled on group level2264 is expected to eq "group enabled"2265 when auto devops is enabled on root group2266 is expected to eq "group enabled"2267 when auto devops is implicitly disabled2268 by instance2269 is expected to be nil2270 with groups2271 when auto devops is disabled on group level2272 is expected to be nil2273 when root group is enabled and parent disabled2274 is expected to be nil2275Mutations::DesignManagement::Upload2276 #resolve2277 when the feature is not available2278 behaves like resource not available2279 raises an error2280 when the feature is available2281 contention in the design repo2282 running requests in parallel2283 does not cause errors2284 running requests in parallel on different issues2285 does not cause errors2286 running requests in serial2287 does not cause errors2288 when the user is not allowed to upload designs2289 behaves like resource not available2290 raises an error2291 a valid design2292 returns the updated designs2293 context when passing an invalid project2294 behaves like resource not available2295 raises an error2296 context when passing an invalid issue2297 behaves like resource not available2298 raises an error2299 when creating designs causes errors2300 wraps the errors2301Gitlab::ImportExport::MembersMapper2302 map members2303 when importable is Project2304 includes the exported user ID in the map2305 maps a member2306 defaults to importer member if it does not exist2307 has invited members with no user2308 removes old user_id from member_hash to avoid conflict with user key2309 authorizes the users to the project2310 maps an owner as a maintainer2311 logging2312 logs member addition2313 when exporter member is invalid2314 logs member addition failure2315 user is not an admin2316 does not map a member2317 defaults to importer member if it does not exist2318 chooses the one with an email2319 maps the member that has a matching email2320 importer same as group member2321 maps the project member2322 maps the project member if it already exists2323 importing group members2324 maps the importer2325 maps the group member2326 when importer mapping fails2327 includes importer specific error message2328 when importable is Group2329 includes the exported user ID in the map2330 maps a member2331 defaults to importer member if it does not exist2332 has invited members with no user2333 removes old user_id from member_hash to avoid conflict with user key2334 does not lower owner access level2335 logging2336 logs member addition2337 when exporter member is invalid2338 logs member addition failure2339 user is not an admin2340 does not map a member2341 defaults to importer member if it does not exist2342 chooses the one with an email2343 maps the member that has a matching email2344Clusters::ClustersHierarchy2345 #base_and_ancestors2346 project in nested group with clusters at every level2347 returns clusters for project2348 returns clusters for child_group2349 returns clusters for parent_group2350 returns clusters for ancestor_group2351 project in a namespace2352 returns clusters for project2353 cluster has management project2354 management_project is in same namespace as cluster2355 returns cluster for management_project2356 management_project is in a different namespace from cluster2357 returns nothing2358 cluster has management project2359 returns clusters for management_project2360 returns clusters for project2361 returns clusters for group2362 project in nested group with clusters at some levels2363 returns clusters for management_project2364 returns clusters for management_project2365 returns clusters for project2366 returns clusters for child_group2367 returns clusters for parent_group2368 returns clusters for ancestor_group2369MergeRequestDiffFile2370 behaves like a BulkInsertSafe model2371 when calling class methods directly2372 raises an error when method is not bulk-insert safe2373 does not raise an error when method is bulk-insert safe2374 does not raise an error when the call is triggered by belongs_to2375 .bulk_insert!2376 when all items are valid2377 inserts them all2378 returns an empty array2379 when some items are invalid2380 does not insert any of them and raises an error2381 inserts them anyway when bypassing validations2382 #diff2383 when diff is not stored2384 when the diff is marked as binary2385 unpacks from base 642386 invalid base642387 returns the raw diff2388 when the diff is not marked as binary2389 returns the raw diff2390 when diff is stored in DB2391 returns UTF-8 string2392 when diff is stored in external storage2393 returns UTF-8 string2394 #utf8_diff2395 does not raise error when the diff is binary2396IssuesHelper2397 #award_user_list2398 returns a comma-separated list of the first X users2399 displays the current user's name as 'You'2400 truncates lists2401 displays the current user in front of other users2402 #award_state_class2403 returns disabled string for unauthenticated user2404 returns disabled for a user that does not have access to the awardable2405 returns active string for author2406 is blank for a user that has access to the awardable2407 awards_sort2408 sorts a hash so thumbsup and thumbsdown are always on top2409 #link_to_discussions_to_resolve2410 passing only a merge request2411 links just the merge request2412 contains the reference to the merge request2413 when passing a discussion2414 links to the merge request with first note if a single discussion was passed2415 contains both the reference to the merge request and a mention of the discussion2416 #show_new_issue_link?2417 is false when no project there is no project2418 is true when there is a project and no logged in user2419 is true when the current user does not have access to the project2420 #issue_closed_link2421 with linked issue2422 with moved issue2423 when user has permission to see new issue2424 behaves like successfully displays link to issue and with css class2425 returns link2426 when user has no permission to see new issue2427 behaves like does not display link2428 returns nil2429 with duplicated issue2430 when user has permission to see new issue2431 behaves like successfully displays link to issue and with css class2432 returns link2433 when user has no permission to see new issue2434 behaves like does not display link2435 returns nil2436 without linked issue2437 behaves like does not display link2438 returns nil2439 #show_moved_service_desk_issue_warning?2440 is true when moved issue project has service desk disabled2441 is false when moved issue project has service desk enabled2442Gitlab::ContributionsCalendar2443 #activity_dates2444 returns a hash of date => count2445 counts the diff notes on merge request2446 counts the discussions on merge requests and issues2447 when the user has opted-in for private contributions2448 shows private and public events to all users2449 when events fall under different dates depending on the time zone2450 renders correct event counts within the UTC timezone2451 renders correct event counts within the Sydney timezone2452 renders correct event counts within the US Central timezone2453 #events_by_date2454 returns all events for a given date2455 only shows private events to authorized users2456 when the user cannot read cross project2457 does not return any events2458 #starting_year2459 is the start of last year2460 #starting_month2461 is the start of this month2462Projects::Settings::DeployKeysPresenter2463 inherits from Gitlab::View::Presenter::Simple2464 #enabled_keys2465 returns currently enabled keys2466 does not contain enabled_keys inside available_keys2467 returns the enabled_keys size2468 #available_keys/#available_project_keys2469 returns the current available_keys2470 returns the current available_project_keys2471 returns the available_project_keys size2472 prevent N + 1 queries2473 returns correct counts2474 does not increase the query count2475ChronicDurationAttribute2476 when default value is not set2477 behaves like ChronicDurationAttribute reader2478 contains dynamically created reader method2479 outputs chronic duration formatted value2480 when value is set to nil2481 outputs nil2482 behaves like ChronicDurationAttribute writer2483 contains dynamically created writer method2484 parses chronic duration input2485 passes validation2486 when negative input is used2487 doesn't raise exception2488 doesn't change value2489 doesn't pass validation2490 when empty input is used2491 writes default value2492 passes validation2493 when nil input is used2494 writes default value2495 passes validation2496 doesn't raise exception2497 when default value is set2498 behaves like ChronicDurationAttribute reader2499 contains dynamically created reader method2500 outputs chronic duration formatted value2501 when value is set to nil2502 outputs nil2503 behaves like ChronicDurationAttribute writer2504 contains dynamically created writer method2505 parses chronic duration input2506 passes validation2507 when negative input is used2508 doesn't raise exception2509 doesn't change value2510 doesn't pass validation2511 when empty input is used2512 writes default value2513 passes validation2514 when nil input is used2515 writes default value2516 passes validation2517 doesn't raise exception2518ChronicDurationAttribute - reader2519 doesn't contain dynamically created writer method2520 behaves like ChronicDurationAttribute reader2521 contains dynamically created reader method2522 outputs chronic duration formatted value2523 when value is set to nil2524 outputs nil2525Blobs::UnfoldPresenter2526 #initialize2527 with empty params2528 sets default attributes2529 when full is false2530 sets attributes2531 when full is true2532 sets other attributes2533 when to is -12534 sets other attributes2535 #diff_lines2536 when "full" is true2537 returns all lines2538 when last line is empty2539 disregards last line2540 when "since" is equal to 12541 does not add top match line2542 when "since" is greater than 12543 adds top match line2544 "to" is higher than blob size2545 does not add bottom match line2546 "to" is equal to blob size2547 does not add bottom match line2548 "to" is less than blob size2549 adds bottom match line2550 when "to" is less than blob size2551 adds bottom match line2552 when "to" is equal to blob size2553 does not add bottom match line2554 when "to" is "-1"2555 does not add bottom match line2556 last line is the latest blob line2557 #lines2558 when scope is specified2559 returns lines cropped by params2560 when full is true2561 returns all lines2562 #match_line_text2563 when bottom is true2564 returns empty string2565 when bottom is false2566 returns match line string2567Gitlab::Ci::Build::AutoRetry2568 #allowed?2569 description: "retries are disabled", retry_count: 0, options: {:max=>0}, failure_reason: nil, result: false2570 is expected to eq false2571 description: "max equals count", retry_count: 2, options: {:max=>2}, failure_reason: nil, result: false2572 is expected to eq false2573 description: "max is higher than count", retry_count: 1, options: {:max=>2}, failure_reason: nil, result: true2574 is expected to eq true2575 description: "max is a string", retry_count: 1, options: {:max=>"2"}, failure_reason: nil, result: true2576 is expected to eq true2577 description: "matching failure reason", retry_count: 0, options: {:when=>["api_failure"], :max=>2}, failure_reason: :api_failure, result: true2578 is expected to eq true2579 description: "not matching with always", retry_count: 0, options: {:when=>["always"], :max=>2}, failure_reason: :api_failure, result: true2580 is expected to eq true2581 description: "not matching reason", retry_count: 0, options: {:when=>["script_error"], :max=>2}, failure_reason: :api_failure, result: false2582 is expected to eq false2583 description: "scheduler failure override", retry_count: 1, options: {:when=>["scheduler_failure"], :max=>1}, failure_reason: :scheduler_failure, result: false2584 is expected to eq false2585 description: "default for scheduler failure", retry_count: 1, options: {}, failure_reason: :scheduler_failure, result: true2586 is expected to eq true2587 when build is not retryable2588 is expected to eq false2589 #options_retry_max2590 with retries max config option2591 when build_metadata_config is set2592 returns the number of configured max retries2593 when build_metadata_config is not set2594 returns the number of configured max retries2595 without retries max config option2596 returns nil2597 when build is degenerated2598 returns nil2599 with integer only config option2600 returns the number of configured max retries2601 #options_retry_when2602 with retries when config option2603 returns the configured when2604 without retries when config option2605 returns always array2606 with integer only config option2607 returns always array2608Gitlab::ImportExport::SnippetRepoRestorer2609 when the snippet does not have a bundle file path2610 behaves like no bundle file present2611 creates the repository from the database content2612 does not call snippet update statistics service2613 when the repository creation fails2614 returns false2615 when the snippet bundle path is not present2616 behaves like no bundle file present2617 creates the repository from the database content2618 does not call snippet update statistics service2619 when the repository creation fails2620 returns false2621 when the snippet repository bundle exists2622 refreshes snippet statistics2623 when it is valid2624 creates the repository from the bundle2625 sets same shard in snippet repository as in the repository storage2626 when it is invalid2627 returns false and deletes the repository from disk and the database2628Gitlab::Kubernetes::Helm::Pod2629 #generate2630 with a command2631 generates a Kubeclient::Resource2632 generates the appropriate metadata2633 generates a container spec2634 generates the appropriate specifications for the container2635 includes a never restart policy2636 includes volumes for the container2637 includes a volume inside the specification2638 mounts configMap specification in the volume2639 has no serviceAccountName2640 with a service_account_name2641 uses the serviceAccountName provided2642Gitlab::Database::RenameReservedPathsMigration::V1::RenameProjects2643 #projects_for_paths2644 searches using nested paths2645 includes the correct projects2646 #rename_projects2647 renames each project2648 invalidates the markdown cache of related projects2649 #rename_project2650 renames path & route for the project2651 tracks the rename2652 renames the folders for the project2653 #move_project_folders2654 moves the wiki & the repo2655 does not move the repositories when hashed storage is enabled2656 moves uploads2657 does not move uploads when hashed storage is enabled for attachments2658 moves pages2659 #move_repository2660 moves the repository for a project2661 #revert_renames2662 renames the routes back to the previous values2663 moves the repositories back to their original place2664 doesn't break when the project was renamed2665Serverless::AssociateDomainService2666 when the domain is unchanged2667 does not update creator2668 when domain is changed to nil2669 removes the association between knative and the domain2670 does not attempt to update creator2671 when a new domain is associated2672 creates an association with the domain2673 updates creator2674 when knative is not authorized to use the pages domain2675 sets pages_domain_id to nil2676 when knative hostname is nil2677 sets hostname to a placeholder value2678 when knative hostname exists2679 does not change hostname2680Issue::Metrics2681 .for_issues2682 returns metrics associated with given issues2683 .with_first_mention_not_earlier_than2684 returns metrics without mentioning in commit or with mentioning after given timestamp2685 when recording the default set of issue metrics on issue save2686 milestones2687 records the first time an issue is associated with a milestone2688 does not record the second time an issue is associated with a milestone2689 list labels2690 records the first time an issue is associated with a list label2691 does not record the second time an issue is associated with a list label2692Git::BaseHooksService2693 push event2694 creates push event2695 create_push_event is set to false2696 does not create push event2697 project hooks and services2698 hooks2699 active hooks2700 executes the hooks2701 inactive hooks2702 does not execute the hooks2703 services2704 active services2705 executes the services2706 inactive services2707 does not execute the services2708 execute_project_hooks param set to false2709 does not execute hooks and services2710 Generating CI variables from push options2711 with empty push options2712 behaves like creates pipeline with params and expected variables2713 calls the create pipeline service2714 with push options not specifying variables2715 behaves like creates pipeline with params and expected variables2716 calls the create pipeline service2717 with push options specifying variables2718 behaves like creates pipeline with params and expected variables2719 calls the create pipeline service2720 with push options not specifying variables in correct format2721 behaves like creates pipeline with params and expected variables2722 calls the create pipeline service2723Gitlab::Chat::Responder::Slack2724 #send_response2725 sends a response back to Slack2726 #success2727 returns the output for a successful build2728 limits the output to a fixed size2729 does not send a response if the output is empty2730 #failure2731 returns the output for a failed build2732 #scheduled_output2733 returns the output for a scheduled build2734Projects::Prometheus::Alerts::NotifyService2735 with valid payload2736 with environment specific clusters2737 without token2738 behaves like Alert Notification Service sends notification email2739 sends a notification for firing alerts only2740 with token2741 behaves like Alert Notification Service sends no notifications2742 does not notify2743 with project specific cluster2744 cluster_enabled: true, status: :installed, configured_token: "token", token_input: "token", result: :success2745 behaves like Alert Notification Service sends notification email2746 sends a notification for firing alerts only2747 cluster_enabled: true, status: :installed, configured_token: nil, token_input: nil, result: :success2748 behaves like Alert Notification Service sends notification email2749 sends a notification for firing alerts only2750 cluster_enabled: true, status: :updated, configured_token: "token", token_input: "token", result: :success2751 behaves like Alert Notification Service sends notification email2752 sends a notification for firing alerts only2753 cluster_enabled: true, status: :updating, configured_token: "token", token_input: "token", result: :failure2754 behaves like Alert Notification Service sends no notifications2755 does not notify2756 cluster_enabled: true, status: :installed, configured_token: "token", token_input: "x", result: :failure2757 behaves like Alert Notification Service sends no notifications2758 does not notify2759 cluster_enabled: true, status: :installed, configured_token: nil, token_input: "token", result: :failure2760 behaves like Alert Notification Service sends no notifications2761 does not notify2762 cluster_enabled: true, status: :installed, configured_token: "token", token_input: nil, result: :failure2763 behaves like Alert Notification Service sends no notifications2764 does not notify2765 cluster_enabled: true, status: nil, configured_token: "token", token_input: "token", result: :failure2766 behaves like Alert Notification Service sends no notifications2767 does not notify2768 cluster_enabled: false, status: :installed, configured_token: "token", token_input: "token", result: :failure2769 behaves like Alert Notification Service sends no notifications2770 does not notify2771 without project specific cluster2772 behaves like Alert Notification Service sends no notifications2773 does not notify2774 with manual prometheus installation2775 alerting_setting: true, configured_token: "token", token_input: "token", result: :success2776 behaves like Alert Notification Service sends notification email2777 sends a notification for firing alerts only2778 alerting_setting: true, configured_token: "token", token_input: "x", result: :failure2779 behaves like Alert Notification Service sends no notifications2780 does not notify2781 alerting_setting: true, configured_token: "token", token_input: nil, result: :failure2782 behaves like Alert Notification Service sends no notifications2783 does not notify2784 alerting_setting: false, configured_token: nil, token_input: nil, result: :success2785 behaves like Alert Notification Service sends notification email2786 sends a notification for firing alerts only2787 alerting_setting: false, configured_token: nil, token_input: "token", result: :failure2788 behaves like Alert Notification Service sends no notifications2789 does not notify2790 with generic alerts integration2791 alerts_service: :active, token: :valid, result: :success2792 behaves like Alert Notification Service sends notification email2793 sends a notification for firing alerts only2794 alerts_service: :active, token: :invalid, result: :failure2795 behaves like Alert Notification Service sends no notifications2796 does not notify2797 alerts_service: :active, token: nil, result: :failure2798 behaves like Alert Notification Service sends no notifications2799 does not notify2800 alerts_service: :inactive, token: :valid, result: :failure2801 behaves like Alert Notification Service sends no notifications2802 does not notify2803 alerts_service: nil, token: nil, result: :failure2804 behaves like Alert Notification Service sends no notifications2805 does not notify2806 alert emails2807 when incident_management_setting does not exist2808 does not send notification email2809 when incident_management_setting.send_email is true2810 behaves like Alert Notification Service sends notification email2811 sends a notification for firing alerts only2812 incident_management_setting.send_email is false2813 does not send notification2814 process Alert Management alerts2815 with multiple firing alerts and resolving alerts2816 processes Prometheus alerts2817 with invalid payload2818 when payload is not processable2819 behaves like Alert Notification Service sends no notifications2820 does not notify2821 when the payload is too big2822 does not process Prometheus alerts2823 behaves like Alert Notification Service sends no notifications2824 does not notify2825 .processable?2826 with valid payload2827 is expected to eq true2828 containing unrelated keys2829 is expected to eq true2830 with invalid payload2831 missing_key: "version"2832 is expected to eq false2833 missing_key: "groupKey"2834 is expected to eq false2835 missing_key: "status"2836 is expected to eq false2837 missing_key: "receiver"2838 is expected to eq false2839 missing_key: "groupLabels"2840 is expected to eq false2841 missing_key: "commonLabels"2842 is expected to eq false2843 missing_key: "commonAnnotations"2844 is expected to eq false2845 missing_key: "externalURL"2846 is expected to eq false2847 missing_key: "alerts"2848 is expected to eq false2849 with unsupported version2850 is expected to eq false2851ci/status/_icon2852 when rendering status for build2853 when user has ability to see details2854 has link to build details page2855 when user do not have ability to see build details2856 contains build status text2857 does not contain links2858 when rendering status for external job2859 when user has ability to see commit status details2860 status has external target url2861 contains valid commit status text2862 has link to external status page2863 status do not have external target url2864 contains valid commit status text2865 has link to external status page2866Ci::PipelineArtifactUploader2867 behaves like builds correct paths2868 #store_dir2869 behaves like matches the method pattern2870 is expected to match /\h{2}\/\h{2}\/\h{64}\/pipelines\/\d+\/artifacts\/\d+/2871 #cache_dir2872 behaves like matches the method pattern2873 is expected to match /artifacts\/tmp\/cache/2874 #work_dir2875 behaves like matches the method pattern2876 is expected to match /artifacts\/tmp\/work/2877 #upload_path2878 behaves like matches the method pattern2879 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)2880 #relative_path2881 is relative (PENDING: Path not set, skipping.)2882 .absolute_path2883 behaves like matches the method pattern2884 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)2885 .base_dir2886 behaves like matches the method pattern2887 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)2888 when object store is REMOTE2889 behaves like builds correct paths2890 #store_dir2891 behaves like matches the method pattern2892 is expected to match /\h{2}\/\h{2}\/\h{64}\/pipelines\/\d+\/artifacts\/\d+/2893 #cache_dir2894 behaves like matches the method pattern2895 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)2896 #work_dir2897 behaves like matches the method pattern2898 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)2899 #upload_path2900 behaves like matches the method pattern2901 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)2902 #relative_path2903 is relative (PENDING: Path not set, skipping.)2904 .absolute_path2905 behaves like matches the method pattern2906 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)2907 .base_dir2908 behaves like matches the method pattern2909 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)2910 when file is stored in valid local_path2911 is expected to match /\/builds\/gitlab-org\/gitlab\/tmp\/tests\/artifacts\/\h{2}\/\h{2}\/\h{64}\/pipelines\/50\/artifacts\/15\/code_coverage.json/2912ChatNotificationService2913 Associations2914 is expected to validate that :webhook cannot be empty/falsy2915 #can_test?2916 with empty repository2917 returns true2918 with repository2919 returns true2920 #execute2921 with a repository2922 returns true2923 with an empty repository2924 returns true2925 with a project with name containing spaces2926 does not remove spaces2927 with "channel" property2928 empty string2929 does not include the channel2930 empty spaces2931 does not include the channel2932 with single channel specified2933 behaves like with channel specified2934 notifies all channels2935 with multiple channel names specified2936 behaves like with channel specified2937 notifies all channels2938 with multiple channel names with spaces specified2939 behaves like with channel specified2940 notifies all channels2941PagesDomains::CreateAcmeOrderService2942 saves order to database before requesting validation2943 generates and saves private key2944 properly saves order attributes2945 properly saves challenge attributes2946Gitlab::Chat::Responder::Mattermost2947 #send_response2948 sends a response back to Slack2949 #success2950 returns the output for a successful build2951 limits the output to a fixed size2952 does not send a response if the output is empty2953 #failure2954 returns the output for a failed build2955 #scheduled_output2956 returns the output for a scheduled build2957Gitlab::ImportExport::MergeRequestParser2958 has a source branch2959 has a target branch2960 parses a MR that has no source branch2961 when the merge request has diffs2962 when the diff is invalid2963 sets the diff to empty diff2964Resolvers::NamespaceProjectsResolver2965 has an high complexity regardless of arguments2966 with a group2967 #resolve2968 finds all projects2969 finds all projects including the subgroups2970 with an user namespace2971 finds all projects2972 finds all projects including the subgroups2973 when passing a non existent, batch loaded namespace2974 returns nil without breaking2975Files::UpdateService2976 #execute2977 when the file's last commit sha does not match the supplied last_commit_sha2978 returns a hash with the correct error message and a :error status2979 when the file's last commit sha does match the supplied last_commit_sha2980 returns a hash with the :success status2981 updates the file with the new contents2982 uses the commit email2983 when the last_commit_sha is not supplied2984 returns a hash with the :success status2985 updates the file with the new contents2986Gitlab::Analytics::CycleAnalytics::RecordsFetcher2987 #serialized_records2988 for issue based stage2989 returns all records2990 when records are loaded by guest2991 filters out confidential issues2992 for merge request based stage2993 returns all records2994 special case2995 returns build records2996 when requesting records for default test stage2997 orders by `latest_build_finished_at`2998 when requesting records for default staging stage2999 orders by `latest_build_finished_at`3000Gitlab::Ci::Lint3001 #validate3002 when user has permissions to write the ref3003 when using default static mode3004 does not catch advanced logical errors3005 uses YamlProcessor3006 behaves like content with errors and warnings3007 when content has errors3008 returns a result with errors3009 when content has warnings3010 returns a result with warnings3011 when content has errors and warnings3012 returns a result with errors and warnings3013 behaves like content is valid3014 returns a valid result3015 includes extra attributes3016 when using dry run mode3017 runs advanced logical validations3018 uses Ci::CreatePipelineService3019 behaves like content with errors and warnings3020 when content has errors3021 returns a result with errors3022 when content has warnings3023 returns a result with warnings3024 when content has errors and warnings3025 returns a result with errors and warnings3026 behaves like content is valid3027 returns a valid result3028 does not include extra attributes3029 when user does not have permissions to write the ref3030 when using default static mode3031 behaves like content is valid3032 returns a valid result3033 when using dry run mode3034 does not allow validation3035Milestones::IssuesCountService3036 counts all issues including confidential3037 behaves like a counter caching service3038 #count3039 caches the count3040 #refresh_cache3041 refreshes the cache3042 #delete_cache3043 removes the cache3044 #uncached_count3045 does not cache the count3046Terraform::State3047 is expected to belong to project required:3048 is expected to belong to locked_by_user class_name => User required:3049 is expected to validate that :project_id cannot be empty/falsy3050 #file3051 when a file exists3052 does not use the default file3053 when no file exists3054 creates a default file3055 #file_store3056 when a value is set3057 returns the value3058 #update_file_store3059 when file is stored in object storage3060 behaves like mounted file in object store3061 is stored remotely3062 when file is stored locally3063 behaves like mounted file in local store3064 is stored locally3065Expirable3066 ProjectMember3067 .expired3068 is expected to contain exactly #<ProjectMember id: 2784, access_level: 40, source_id: 1384, source_type: "Project", user_id: 2060, n... invite_accepted_at: nil, requested_at: nil, expires_at: "2020-08-23", ldap: false, override: false>3069 #expired?3070 is expected to eq false3071 is expected to eq false3072 is expected to eq true3073 #expires?3074 is expected to eq false3075 is expected to eq true3076 is expected to eq true3077 #expires_soon?3078 is expected to eq false3079 is expected to eq true3080 is expected to eq true3081Gitlab::Kubernetes::DefaultNamespace3082 #from_environment_name3083 generates a slug and passes it to #from_environment_slug3084 #from_environment_slug3085 namespace per environment is enabled3086 platform namespace is specified3087 is expected to eq "platform-namespace-environment4"3088 cluster is unmanaged3089 is expected to eq "platform-namespace"3090 platform namespace is blank3091 constructs a namespace from the project and environment3092 namespace per environment is disabled3093 platform namespace is specified3094 is expected to eq "platform-namespace"3095 platform namespace is blank3096 constructs a namespace from the project and environment3097ExternalPullRequest3098 is expected to belong to project required:3099 validations3100 when source branch not present3101 behaves like has errors on3102 has errors for source_branch3103 when status not present3104 behaves like has errors on3105 has errors for status3106 when pull request is from a fork3107 behaves like has errors on3108 has errors for base3109 create_or_update_from_params3110 when pull request does not exist3111 when params are correct3112 saves the model successfully and returns it3113 yields the model3114 when params are not correct3115 returns an invalid model3116 when pull request exists3117 when params are correct3118 updates the model successfully and returns it3119 when params are not correct3120 returns an invalid model3121 #open?3122 returns true if status is open3123 returns false if status is not open3124 #closed?3125 returns true if status is closed3126 returns false if status is not closed3127 #actual_branch_head?3128 when source sha matches the head of the branch3129 returns true3130 when source sha does not match the head of the branch3131 returns true3132 #from_fork?3133 returns true if source_repository differs from target_repository3134 returns false if source_repository is the same as target_repository3135API::Helpers3136 #find_project3137 when ID is used as an argument3138 behaves like project finder3139 when project exists3140 returns requested project3141 returns nil3142 when PATH is used as an argument3143 behaves like project finder3144 when project exists3145 returns requested project3146 returns nil3147 with an invalid PATH3148 does not hit the database3149 behaves like project finder3150 when project exists3151 returns requested project3152 returns nil3153 #find_namespace3154 when ID is used as an argument3155 behaves like namespace finder3156 when namespace exists3157 returns requested namespace3158 when namespace doesn't exists3159 returns nil3160 when PATH is used as an argument3161 behaves like namespace finder3162 when namespace exists3163 returns requested namespace3164 when namespace doesn't exists3165 returns nil3166 #find_namespace!3167 behaves like user namespace finder3168 when namespace is group3169 when user has access to group3170 returns requested namespace3171 when user doesn't have access to group3172 raises not found error3173 when namespace is user's personal namespace3174 when user owns the namespace3175 returns requested namespace3176 when user doesn't own the namespace3177 raises not found error3178 #send_git_blob3179 sets Gitlab::Workhorse::DETECT_HEADER header3180 content disposition3181 when blob name is null3182 returns only the disposition3183 when blob name is not null3184 returns disposition with the blob name3185 #track_event3186 creates a gitlab tracking event3187 logs an exception3188 #order_options_with_tie_breaker3189 with non-id order given3190 with ascending order3191 adds id based ordering with same direction as primary order3192 with descending order3193 adds id based ordering with same direction as primary order3194 with non-id order but no direction given3195 adds ID ASC order3196 with id order given3197 does not add an additional order3198 #destroy_conditionally!3199 when unmodified check passes3200 destroys given project3201 when unmodified check fails3202 does not destroy given project3203 #check_unmodified_since!3204 when last modified is later than header value3205 renders error3206 when last modified is earlier than header value3207 does not render error3208 when last modified is equal to header value3209 does not render error3210 when there is no header value present3211 does not render error3212 when header value is not a valid time value3213 does not render error3214ConfluenceService3215 Associations3216 is expected to belong to project required:3217 is expected to have one service_hook3218 Validations3219 when service is active3220 is expected not to allow :confluence_url to be ‹"https://example.com"›3221 is expected not to allow :confluence_url to be ‹"example.com"›3222 is expected not to allow :confluence_url to be ‹"foo"›3223 is expected not to allow :confluence_url to be ‹"ftp://example.atlassian.net/wiki"›3224 is expected not to allow :confluence_url to be ‹"https://example.atlassian.net"›3225 is expected not to allow :confluence_url to be ‹"https://.atlassian.net/wiki"›3226 is expected not to allow :confluence_url to be ‹"https://example.atlassian.net/wikifoo"›3227 is expected not to allow :confluence_url to be ‹""›3228 is expected not to allow :confluence_url to be ‹nil›3229 is expected not to allow :confluence_url to be ‹"😊"›3230 is expected to allow :confluence_url to be ‹"https://example.atlassian.net/wiki"›3231 is expected to allow :confluence_url to be ‹"http://example.atlassian.net/wiki"›3232 is expected to allow :confluence_url to be ‹"https://example.atlassian.net/wiki/"›3233 is expected to allow :confluence_url to be ‹"http://example.atlassian.net/wiki/"›3234 is expected to allow :confluence_url to be ‹"https://example.atlassian.net/wiki/foo"›3235 is expected to validate that :confluence_url cannot be empty/falsy3236 when service is inactive3237 is expected not to validate that :confluence_url cannot be empty/falsy3238 is expected to allow :confluence_url to be ‹"foo"›3239 #detailed_description3240 can correctly return a link to the project wiki when active3241 when the project wiki is not enabled3242 returns nil when both active or inactive3243 Caching has_confluence on project_settings3244 sets the property to true when service is active3245 sets the property to false when service is not active3246 creates a project_setting record if one was not already created3247Labels::FindOrCreateService3248 #execute3249 when acting on behalf of a specific user3250 when finding labels on project level3251 when label does not exist at group level3252 creates a new label at project level3253 when label exists at group level3254 returns the group label3255 when label exists at project level3256 returns the project label3257 when include_ancestor_groups is true3258 returns the ancestor group labels3259 creates new labels if labels are not found3260 when finding labels on group level3261 when label does not exist at group level3262 creates a new label at group level3263 when label exists at group level3264 returns the group label3265 when authorization is not required3266 when finding labels on project level3267 returns the project label3268 when finding labels on group level3269 returns the group label3270MergeRequestAssignee3271 associations3272 is expected to belong to merge_request class_name => MergeRequest required:3273 is expected to belong to assignee class_name => User required:3274 validations3275 is expected to validate that :assignee is case-sensitively unique within the scope of :merge_request_id3276 scopes3277 in_projects3278 returns issue assignees for given project3279Gitlab::Graphql::MarkdownField::Resolver3280 #proc3281 renders markdown correctly3282 when the issue is not publicly accessible3283 hides the references from users that are not allowed to see the reference3284 shows the reference to users that are allowed to see it3285PersonalAccessToken3286 .build3287 is a valid personal access token3288 ensures that the token is generated3289 scopes3290 .for_user3291 returns personal access tokens of specified user only3292 .active?3293 returns false if the personal_access_token is revoked3294 returns false if the personal_access_token is expired3295 returns true if the personal_access_token is not revoked and not expired3296 revoke!3297 revokes the token3298 Redis storage3299 reading encrypted data3300 returns stored data3301 reading unencrypted data3302 returns stored data unmodified3303 after deletion3304 token is removed3305 validations3306 requires at least one scope3307 allows creating a token with API scopes3308 rejects creating a token with unavailable scopes3309 when registry is disabled3310 rejects creating a token with read_registry scope3311 allows revoking a token with read_registry scope3312 when registry is enabled3313 allows creating a token with read_registry scope3314 scopes3315 .expiring_and_not_notified3316 in one day3317 doesn't have any tokens3318 in three days3319 only includes a valid token3320 .expired_today_and_not_notified3321 returns tokens that have expired today3322 .without_impersonation3323 returns only non-impersonation tokens3324 revoke scopes3325 .revoked3326 is expected to contain exactly #<PersonalAccessToken id: 19, user_id: 2185, name: "PAT 28", revoked: true, expires_at: "2020-09-03",...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>3327 .not_revoked3328 is expected to contain exactly #<PersonalAccessToken id: 20, user_id: 2186, name: "PAT 29", revoked: false, expires_at: "2020-09-03"...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false> and #<PersonalAccessToken id: 21, user_id: 2187, name: "PAT 30", revoked: nil, expires_at: "2020-09-03", ...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>3329 .simple_sorts3330 includes overridden keys3331 ordering by expires_at3332 .order_expires_at_asc3333 returns ordered list in asc order of expiry date3334 .order_expires_at_desc3335 returns ordered list in desc order of expiry date3336Projects::DeployTokens::CreateService3337 behaves like a deploy token creation service3338 #execute3339 when the deploy token is valid3340 creates a new DeployToken3341 creates a new ProjectDeployToken3342 returns a DeployToken3343 when expires at date is not passed3344 sets Forever.date3345 when username is empty string3346 converts it to nil3347 when username is provided3348 keeps the provided username3349 when the deploy token is invalid3350 does not create a new DeployToken3351 does not create a new ProjectDeployToken3352Discussions::CaptureDiffNotePositionService3353 image note on diff3354 is note affected by the service3355 when empty paths are passed as a param3356 does not calculate positons3357 when position tracer returned position3358 which is nil3359 does not create diff note position3360 which does not have a corresponding line3361 does not create diff note position3362AuthorizedProjectUpdate::ProjectCreateService3363 #perform3364 direct group members3365 creates project authorization3366 inherited group members3367 creates project authorization3368 membership overrides3369 group hierarchy3370 creates project authorization3371 group sharing3372 creates project authorization3373 no group member3374 does not create project authorization3375 unapproved access requests3376 does not create project authorization3377 project has more user than BATCH_SIZE3378 bulk creates project authorizations in batches3379 ignores existing project authorizations3380 does not create project authorization3381Packages::Nuget::ExtractionWorker3382 #perform3383 with valid package file3384 updates package and package file3385 with exisiting package3386 reuses existing package and updates package file3387 with invalid package file id3388 doesn't update package and package file3389 with package file not containing a nuspec file3390 removes the package and the package file3391 with package file with a blank package name3392 removes the package and the package file3393 with package file with a blank package version3394 removes the package and the package file3395Gitlab::Ci::Parsers::Terraform::Tfplan3396 #parse!3397 when data is invalid3398 when data is not a JSON file3399 reports an invalid_json_format error3400 when JSON is missing a required key3401 reports an invalid_json_keys error3402 when artifact is invalid3403 reports an :unknown_error3404 when job is invalid3405 reports an :unknown_error3406 when data is valid3407 parses JSON and returns a report3408 parses JSON when extra keys are present3409Gitlab::GoogleCodeImport::ProjectCreator3410 creates project3411MilestoneRelease3412 associations3413 is expected to belong to milestone required:3414 is expected to belong to release required:3415 when trying to create the same record in milestone_releases twice3416 is not committing on the second time3417 validations3418 when milestone and release do not have the same project3419 is not valid3420 when milestone and release have the same project3421 is expected to be valid3422NewNoteWorker3423 when Note found3424 calls NotificationService#new_note3425 calls Notes::PostProcessService#execute3426 when Note not found3427 logs NewNoteWorker process skipping3428 does not raise errors3429 does not call NotificationService3430 does not call Notes::PostProcessService3431 when note does not require notification3432 does not create a new note notification3433Iteration3434 #iid3435 is properly scoped on project and group3436 Validations3437 #not_belonging_to_project3438 is invalid3439 #dates_do_not_overlap3440 when no Iteration dates overlap3441 is expected to be valid3442 when updated iteration dates overlap with its own dates3443 is valid3444 when dates overlap3445 group3446 behaves like overlapping dates3447 when start_date is in range3448 is not valid3449 is not valid even if forced3450 when end_date is in range3451 is not valid3452 is not valid even if forced3453 when both overlap3454 is not valid3455 is not valid even if forced3456 different group3457 is expected to be valid3458 does not trigger exclusion constraints3459 project3460 behaves like overlapping dates3461 when start_date is in range3462 is not valid3463 is not valid even if forced3464 when end_date is in range3465 is not valid3466 is not valid even if forced3467 when both overlap3468 is not valid3469 is not valid even if forced3470 different project3471 is expected to be valid3472 does not trigger exclusion constraints3473 in a group3474 is expected to be valid3475 does not trigger exclusion constraints3476 #future_date3477 when dates are in the future3478 is expected to be valid3479 when start_date is in the past3480 is not valid3481 when due_date is in the past3482 is not valid3483 when start_date is over 500 years in the future3484 is not valid3485 when due_date is over 500 years in the future3486 is not valid3487 time scopes3488 start_date_passed3489 returns iterations where start_date is in the past but due_date is in the future3490 due_date_passed3491 returns iterations where due date is in the past3492 .within_timeframe3493 returns iterations with start_date and/or end_date between timeframe3494 returns iterations which starts before the timeframe3495 returns iterations which ends after the timeframe3496Spam::MarkAsSpamService3497 #execute3498 when the spammable object is not submittable3499 does not submit as spam3500 spam is submitted successfully3501 submits as spam3502 updates the spammable object's user agent detail as being submitted as spam3503 when Akismet does not consider it spam3504 does not update the spammable object as spam3505Resolvers::DesignManagement::Version::DesignAtVersionResolver3506 #resolve3507 passing combinations of arguments3508 passing no arguments3509 behaves like a bad argument3510 raises an appropriate error3511 passing all arguments3512 behaves like a bad argument3513 raises an appropriate error3514 passing any two arguments3515 behaves like a bad argument3516 raises an appropriate error3517 passing design_at_version_id3518 finds the design3519 when the user cannot see designs3520 returns nothing3521 passing design_id3522 finds the design3523 when the user cannot see designs3524 returns nothing3525 passing filename3526 finds the design3527 when the user cannot see designs3528 returns nothing3529 attempting to retrieve an object not visible at this version3530 passing design_at_version_id3531 does not find the design3532 passing design_id3533 does not find the design3534 passing filename3535 does not find the design3536API::Entities::MergeRequestApprovals3537 serializes an approved merge request3538 serializes a merge request that is not approved3539InstanceClusterablePresenter3540 #create_aws_clusters_path3541 is expected to eq "/admin/clusters/create_aws"3542 #authorize_aws_role_path3543 is expected to eq "/admin/clusters/authorize_aws_role"3544 #clear_cluster_cache_path3545 is expected to eq "/admin/clusters/304/clear_cache"3546 #metrics_dashboard_path3547 is expected to eq "/admin/clusters/307/metrics_dashboard"3548Autocomplete::ProjectFinder3549 #execute3550 without a project ID3551 returns nil3552 with an empty String as the project ID3553 returns nil3554 with a project ID3555 raises ActiveRecord::RecordNotFound if the project does not exist3556 raises ActiveRecord::RecordNotFound if the user can not read the project3557 raises ActiveRecord::RecordNotFound if an anonymous user can not read the project3558 returns the project if it exists and is readable3559AwardEmojiHelper3560 .toggle_award_url3561 note on personal snippet3562 returns correct url3563 note on project item3564 returns correct url3565 personal snippet3566 returns correct url3567 merge request3568 returns correct url3569 issue3570 returns correct url3571Resolvers::GroupMilestonesResolver3572 #resolve3573 calls MilestonesFinder#execute3574 without parameters3575 calls MilestonesFinder to retrieve all milestones3576 with parameters3577 calls MilestonesFinder with correct parameters3578 by ids3579 calls MilestonesFinder with correct parameters3580 by timeframe3581 when start_date and end_date are present3582 when start date is after end_date3583 raises error3584 when only start_date is present3585 raises error3586 when only end_date is present3587 raises error3588 when user cannot read milestones3589 raises error3590 when including descendant milestones in a public group3591 finds milestones only in accessible projects and groups3592RunnerEntity3593 #as_json3594 contains required fields3595Gitlab::Ci::Status::Scheduled3596 #text3597 is expected to eq "delayed"3598 #label3599 is expected to eq "delayed"3600 #icon3601 is expected to eq "status_scheduled"3602 #favicon3603 is expected to eq "favicon_status_scheduled"3604 #group3605 is expected to eq "scheduled"3606Knapsack report was generated. Preview:3607{3608 "spec/policies/project_policy_spec.rb": 161.6559226512909,3609 "spec/services/projects/import_service_spec.rb": 87.39290833473206,3610 "spec/lib/gitlab/closing_issue_extractor_spec.rb": 53.7669620513916,3611 "spec/models/wiki_page_spec.rb": 36.834766149520874,3612 "spec/services/snippets/update_service_spec.rb": 32.44719696044922,3613 "spec/models/project_services/jira_service_spec.rb": 33.61391019821167,3614 "spec/policies/note_policy_spec.rb": 35.20271944999695,3615 "spec/lib/gitlab/gfm/reference_rewriter_spec.rb": 20.17536497116089,3616 "spec/services/draft_notes/publish_service_spec.rb": 16.59690570831299,3617 "spec/models/diff_note_spec.rb": 15.887255907058716,3618 "spec/uploaders/file_uploader_spec.rb": 15.377760410308838,3619 "spec/models/clusters/applications/helm_spec.rb": 15.810338973999023,3620 "spec/services/issues/export_csv_service_spec.rb": 12.113401174545288,3621 "spec/services/projects/move_forks_service_spec.rb": 10.77832818031311,3622 "spec/lib/gitlab/pagination/offset_pagination_spec.rb": 9.113940477371216,3623 "spec/services/clusters/gcp/verify_provision_status_service_spec.rb": 8.626458406448364,3624 "spec/helpers/auto_devops_helper_spec.rb": 7.25136661529541,3625 "spec/graphql/mutations/design_management/upload_spec.rb": 7.863214015960693,3626 "spec/lib/gitlab/import_export/members_mapper_spec.rb": 11.029952764511108,3627 "spec/models/clusters/clusters_hierarchy_spec.rb": 7.737487077713013,3628 "spec/models/merge_request_diff_file_spec.rb": 9.638437032699585,3629 "spec/helpers/issues_helper_spec.rb": 6.434566974639893,3630 "spec/lib/gitlab/contributions_calendar_spec.rb": 6.158106565475464,3631 "spec/presenters/projects/settings/deploy_keys_presenter_spec.rb": 5.679839134216309,3632 "spec/models/concerns/chronic_duration_attribute_spec.rb": 4.247570037841797,3633 "spec/presenters/blobs/unfold_presenter_spec.rb": 4.084898471832275,3634 "spec/lib/gitlab/ci/build/auto_retry_spec.rb": 4.602522134780884,3635 "spec/lib/gitlab/import_export/snippet_repo_restorer_spec.rb": 4.187510251998901,3636 "spec/lib/gitlab/kubernetes/helm/pod_spec.rb": 3.9181973934173584,3637 "spec/lib/gitlab/database/rename_reserved_paths_migration/v1/rename_projects_spec.rb": 4.545156955718994,3638 "spec/services/serverless/associate_domain_service_spec.rb": 4.475660562515259,3639 "spec/models/issue/metrics_spec.rb": 4.072805881500244,3640 "spec/services/git/base_hooks_service_spec.rb": 4.318507432937622,3641 "spec/lib/gitlab/chat/responder/slack_spec.rb": 3.1778695583343506,3642 "spec/services/projects/prometheus/alerts/notify_service_spec.rb": 4.320828199386597,3643 "spec/views/ci/status/_icon.html.haml_spec.rb": 3.3851683139801025,3644 "spec/uploaders/ci/pipeline_artifact_uploader_spec.rb": 3.587614059448242,3645 "spec/models/project_services/chat_notification_service_spec.rb": 3.2227916717529297,3646 "spec/services/pages_domains/create_acme_order_service_spec.rb": 2.2724337577819824,3647 "spec/lib/gitlab/chat/responder/mattermost_spec.rb": 3.059908866882324,3648 "spec/lib/gitlab/import_export/merge_request_parser_spec.rb": 2.924482583999634,3649 "spec/graphql/resolvers/namespace_projects_resolver_spec.rb": 3.255075454711914,3650 "spec/services/files/update_service_spec.rb": 2.502068519592285,3651 "spec/lib/gitlab/analytics/cycle_analytics/records_fetcher_spec.rb": 2.5439953804016113,3652 "spec/lib/gitlab/ci/lint_spec.rb": 4.206281423568726,3653 "spec/services/milestones/issues_count_service_spec.rb": 1.812943458557129,3654 "spec/models/terraform/state_spec.rb": 2.2746074199676514,3655 "spec/models/concerns/expirable_spec.rb": 3.3143310546875,3656 "spec/lib/gitlab/kubernetes/default_namespace_spec.rb": 1.9345567226409912,3657 "spec/models/external_pull_request_spec.rb": 3.4319896697998047,3658 "spec/lib/api/helpers_spec.rb": 1.7890479564666748,3659 "spec/models/project_services/confluence_service_spec.rb": 1.7216768264770508,3660 "spec/services/labels/find_or_create_service_spec.rb": 2.2639658451080322,3661 "spec/models/merge_request_assignee_spec.rb": 2.0870540142059326,3662 "spec/lib/gitlab/graphql/markdown_field/resolver_spec.rb": 1.5794100761413574,3663 "spec/models/personal_access_token_spec.rb": 1.3373310565948486,3664 "spec/services/projects/deploy_tokens/create_service_spec.rb": 1.8575034141540527,3665 "spec/services/discussions/capture_diff_note_position_service_spec.rb": 2.3690531253814697,3666 "spec/services/authorized_project_update/project_create_service_spec.rb": 1.3207573890686035,3667 "spec/workers/packages/nuget/extraction_worker_spec.rb": 1.9114458560943604,3668 "spec/lib/gitlab/ci/parsers/terraform/tfplan_spec.rb": 1.3241603374481201,3669 "spec/lib/gitlab/google_code_import/project_creator_spec.rb": 1.9227418899536133,3670 "spec/models/milestone_release_spec.rb": 1.8421425819396973,3671 "spec/workers/new_note_worker_spec.rb": 0.9416511058807373,3672 "spec/models/iteration_spec.rb": 1.4141688346862793,3673 "spec/services/spam/mark_as_spam_service_spec.rb": 1.911029577255249,3674 "spec/graphql/resolvers/design_management/version/design_at_version_resolver_spec.rb": 1.24821138381958,3675 "spec/lib/api/entities/merge_request_approvals_spec.rb": 1.0384747982025146,3676 "spec/presenters/instance_clusterable_presenter_spec.rb": 0.7129354476928711,3677 "spec/finders/autocomplete/project_finder_spec.rb": 1.3021435737609863,3678 "spec/helpers/award_emoji_helper_spec.rb": 1.1454837322235107,3679 "spec/graphql/resolvers/group_milestones_resolver_spec.rb": 0.7959394454956055,3680 "spec/serializers/runner_entity_spec.rb": 0.26593804359436035,3681 "spec/lib/gitlab/ci/status/scheduled_spec.rb": 0.0158932209014892583682}3683Knapsack global time execution for tests: 12m 30s3684Pending: (Failures listed here are expected and do not affect your suite's status)3685 1) FileUploader legacy storage behaves like builds correct legacy storage paths #cache_dir behaves like matches the method pattern 3686 # No pattern provided, skipping.3687 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:83688 2) FileUploader legacy storage behaves like builds correct legacy storage paths #work_dir behaves like matches the method pattern 3689 # No pattern provided, skipping.3690 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:83691 3) FileUploader legacy storage behaves like builds correct legacy storage paths #relative_path is relative3692 # Path not set, skipping.3693 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:393694 4) FileUploader legacy storage behaves like builds correct legacy storage paths .base_dir behaves like matches the method pattern 3695 # No pattern provided, skipping.3696 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:83697 5) FileUploader legacy storage uses hashed storage when rolled out attachments #cache_dir behaves like matches the method pattern 3698 # No pattern provided, skipping.3699 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:83700 6) FileUploader legacy storage uses hashed storage when rolled out attachments #work_dir behaves like matches the method pattern 3701 # No pattern provided, skipping.3702 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:83703 7) FileUploader legacy storage uses hashed storage when rolled out attachments #relative_path is relative3704 # Path not set, skipping.3705 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:393706 8) FileUploader legacy storage uses hashed storage when rolled out attachments .absolute_path behaves like matches the method pattern 3707 # No pattern provided, skipping.3708 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:83709 9) FileUploader legacy storage uses hashed storage when rolled out attachments .base_dir behaves like matches the method pattern 3710 # No pattern provided, skipping.3711 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:83712 10) FileUploader legacy storage uses hashed storage when only repositories are rolled out behaves like builds correct legacy storage paths #cache_dir behaves like matches the method pattern 3713 # No pattern provided, skipping.3714 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:83715 11) FileUploader legacy storage uses hashed storage when only repositories are rolled out behaves like builds correct legacy storage paths #work_dir behaves like matches the method pattern 3716 # No pattern provided, skipping.3717 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:83718 12) FileUploader legacy storage uses hashed storage when only repositories are rolled out behaves like builds correct legacy storage paths #relative_path is relative3719 # Path not set, skipping.3720 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:393721 13) FileUploader legacy storage uses hashed storage when only repositories are rolled out behaves like builds correct legacy storage paths .base_dir behaves like matches the method pattern 3722 # No pattern provided, skipping.3723 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:83724 14) FileUploader object store is remote behaves like builds correct paths #cache_dir behaves like matches the method pattern 3725 # No pattern provided, skipping.3726 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:83727 15) FileUploader object store is remote behaves like builds correct paths #work_dir behaves like matches the method pattern 3728 # No pattern provided, skipping.3729 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:83730 16) FileUploader object store is remote behaves like builds correct paths #relative_path is relative3731 # Path not set, skipping.3732 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:393733 17) FileUploader object store is remote behaves like builds correct paths .absolute_path behaves like matches the method pattern 3734 # No pattern provided, skipping.3735 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:83736 18) FileUploader object store is remote behaves like builds correct paths .base_dir behaves like matches the method pattern 3737 # No pattern provided, skipping.3738 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:83739 19) Ci::PipelineArtifactUploader behaves like builds correct paths #upload_path behaves like matches the method pattern 3740 # No pattern provided, skipping.3741 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:83742 20) Ci::PipelineArtifactUploader behaves like builds correct paths #relative_path is relative3743 # Path not set, skipping.3744 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:393745 21) Ci::PipelineArtifactUploader behaves like builds correct paths .absolute_path behaves like matches the method pattern 3746 # No pattern provided, skipping.3747 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:83748 22) Ci::PipelineArtifactUploader behaves like builds correct paths .base_dir behaves like matches the method pattern 3749 # No pattern provided, skipping.3750 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:83751 23) Ci::PipelineArtifactUploader when object store is REMOTE behaves like builds correct paths #cache_dir behaves like matches the method pattern 3752 # No pattern provided, skipping.3753 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:83754 24) Ci::PipelineArtifactUploader when object store is REMOTE behaves like builds correct paths #work_dir behaves like matches the method pattern 3755 # No pattern provided, skipping.3756 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:83757 25) Ci::PipelineArtifactUploader when object store is REMOTE behaves like builds correct paths #upload_path behaves like matches the method pattern 3758 # No pattern provided, skipping.3759 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:83760 26) Ci::PipelineArtifactUploader when object store is REMOTE behaves like builds correct paths #relative_path is relative3761 # Path not set, skipping.3762 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:393763 27) Ci::PipelineArtifactUploader when object store is REMOTE behaves like builds correct paths .absolute_path behaves like matches the method pattern 3764 # No pattern provided, skipping.3765 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:83766 28) Ci::PipelineArtifactUploader when object store is REMOTE behaves like builds correct paths .base_dir behaves like matches the method pattern 3767 # No pattern provided, skipping.3768 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:83769Finished in 15 minutes 49 seconds (files took 54.77 seconds to load)37701776 examples, 0 failures, 28 pending3771Sat Aug 29 16:47:37 UTC 20203773Not uploading cache rails-v2-3 due to policy3775Uploading artifacts...3776coverage/: found 5 matching files and directories 3777knapsack/: found 3 matching files and directories 3778rspec_flaky/: found 4 matching files and directories 3779rspec_profiling/: found 2 matching files and directories 3780WARNING: tmp/capybara/: no matching files 3781tmp/memory_test/: found 2 matching files and directories 3782log/*.log: found 16 matching files and directories 3783Uploading artifacts as "archive" to coordinator... ok id=710020352 responseStatus=201 Created token=zPVzuT2G3784Uploading artifacts...3785junit_rspec.xml: found 1 matching files and directories 3786Uploading artifacts as "junit" to coordinator... ok id=710020352 responseStatus=201 Created token=zPVzuT2G3787Job succeeded