rspec unit pg14 15/28
Passed Started
by
@leipert
Lukas Eipert
1Running with gitlab-runner 16.1.0~beta.59.g83c66823 (83c66823)2 on green-4.shared-gitlab-org.runners-manager.gitlab.com/default x5QiHUKw, system ID: s_b9637080a79e3 feature flags: FF_NETWORK_PER_BUILD:true, FF_USE_FASTZIP:true, FF_USE_IMPROVED_URL_MASKING:true6Using Docker executor with image registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.20-rust-1.65-node-18.16-postgresql-14:rubygems-3.4-git-2.36-lfs-2.9-chrome-113-yarn-1.22-graphicsmagick-1.3.36 ...7Starting service registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-14-pgvector-0.4.1 ...8Authenticating with credentials from job payload (GitLab Registry)9Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-14-pgvector-0.4.1 ...10Using docker image sha256:2e09e9db92541ed81b1c00f1d5186f8c262d8b84e8d1755676ea4b25614f30c4 for registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-14-pgvector-0.4.1 with digest registry.gitlab.com/gitlab-org/gitlab-build-images@sha256:afc7bd7a60824044709543a6a700385e412d750d9ab4fc72b427e335e1d0f3ec ...11WARNING: Service registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 is already created. Ignoring.12WARNING: Service registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 is already created. Ignoring.13Starting service registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 ...14Authenticating with credentials from job payload (GitLab Registry)15Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 ...16Using docker image sha256:a9a90ece30d9630d694ab1997cd103ea8ec729789451b983a75c7b58b0062d45 for registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 with digest registry.gitlab.com/gitlab-org/gitlab-build-images@sha256:7ef36177d5d0bc554fbb63d8210ae751bcc538bea7905b51d078d9ab90a755fa ...17Starting service redis:6.2-alpine ...18Pulling docker image redis:6.2-alpine ...19Using docker image sha256:b9cad9a5aff99063a48d14d26e9f31dcf1768b8e65c4687a8e3bc995c02749f3 for redis:6.2-alpine with digest redis@sha256:70a7a5b641117670beae0d80658430853896b5ef269ccf00d1827427e3263fa3 ...20Waiting for services to be up and running (timeout 30 seconds)...21Authenticating with credentials from job payload (GitLab Registry)22Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.20-rust-1.65-node-18.16-postgresql-14:rubygems-3.4-git-2.36-lfs-2.9-chrome-113-yarn-1.22-graphicsmagick-1.3.36 ...23Using docker image sha256:f47b23bf3b9e02a2837ddb6fe9a0b728c270e7a7d815dc582fd17281be34f20d for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.20-rust-1.65-node-18.16-postgresql-14:rubygems-3.4-git-2.36-lfs-2.9-chrome-113-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.20-rust-1.65-node-18.16-postgresql-14@sha256:4db9bc427d7eb1bd075d76b4e5e3e59eb0d96c2e788e6275e628f0026dd30039 ...25Running on runner-x5qihukw-project-278964-concurrent-0 via runner-x5qihukw-shared-gitlab-org-1687788921-cee67718...27Fetching changes with git depth set to 20...28Initialized empty Git repository in /builds/gitlab-org/gitlab/.git/29Created fresh repository.30remote: Enumerating objects: 126566, done. 31remote: Counting objects: 100% (126566/126566), done. 32remote: Compressing objects: 100% (87596/87596), done. 33remote: Total 126566 (delta 50477), reused 83712 (delta 34367), pack-reused 0 34Receiving objects: 100% (126566/126566), 114.65 MiB | 29.12 MiB/s, done.35Resolving deltas: 100% (50477/50477), done.37 * [new ref] refs/pipelines/912039887 -> refs/pipelines/91203988738 * [new branch] master -> origin/master39Checking out 04f47f21 as detached HEAD (ref is master)...40Skipping Git submodules setup41$ git remote set-url origin "${CI_REPOSITORY_URL}"43Checking cache for ruby-gems-debian-bullseye-ruby-3.0-16...44Downloading cache.zip from https://storage.googleapis.com/gitlab-com-runners-cache/project/278964/ruby-gems-debian-bullseye-ruby-3.0-16 45Successfully extracted cache47Downloading artifacts for compile-test-assets (4541357536)...48Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4541357536 responseStatus=200 OK token=64_aca8L49Downloading artifacts for retrieve-tests-metadata (4541357542)...50Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4541357542 responseStatus=200 OK token=64_aca8L51Downloading artifacts for setup-test-env (4541357540)...52Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4541357540 responseStatus=200 OK token=64_aca8L54Using docker image sha256:f47b23bf3b9e02a2837ddb6fe9a0b728c270e7a7d815dc582fd17281be34f20d for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.20-rust-1.65-node-18.16-postgresql-14:rubygems-3.4-git-2.36-lfs-2.9-chrome-113-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.20-rust-1.65-node-18.16-postgresql-14@sha256:4db9bc427d7eb1bd075d76b4e5e3e59eb0d96c2e788e6275e628f0026dd30039 ...55$ echo $FOSS_ONLY56$ [ "$FOSS_ONLY" = "1" ] && rm -rf ee/ qa/spec/ee/ qa/qa/specs/features/ee/ qa/qa/ee/ qa/qa/ee.rb57$ export GOPATH=$CI_PROJECT_DIR/.go58$ mkdir -p $GOPATH59$ source scripts/utils.sh60$ source scripts/prepare_build.sh719Using decomposed database config (config/database.yml.decomposed-postgresql)720Geo DB won't be set up.721Embedding DB won't be set up.733$ source ./scripts/rspec_helpers.sh734$ run_timed_command "gem install knapsack --no-document"735$ gem install knapsack --no-document736Successfully installed knapsack-4.0.07371 gem installed738==> 'gem install knapsack --no-document' succeeded in 1 seconds.739$ echo -e "\e[0Ksection_start:`date +%s`:gitaly-test-spawn[collapsed=true]\r\e[0KStarting Gitaly"741$ section_start "gitaly-test-spawn" "Spawning Gitaly"; scripts/gitaly-test-spawn; section_end "gitaly-test-spawn"746$ echo -e "\e[0Ksection_end:`date +%s`:gitaly-test-spawn\r\e[0K"747$ rspec_paralellized_job "--fail-fast=${RSPEC_FAIL_FAST_THRESHOLD} --tag ~quarantine --tag ~level:background_migration"748SKIP_FLAKY_TESTS_AUTOMATICALLY: 749RETRY_FAILED_TESTS_IN_NEW_PROCESS: true750KNAPSACK_GENERATE_REPORT: true751FLAKY_RSPEC_GENERATE_REPORT: true752KNAPSACK_TEST_FILE_PATTERN: spec/{bin,channels,components,config,contracts,db,dependencies,elastic,elastic_integration,experiments,factories,finders,frontend,graphql,haml_lint,helpers,initializers,lib,metrics_server,models,policies,presenters,rack_servers,replicators,routing,rubocop,scripts,serializers,services,sidekiq,sidekiq_cluster,spam,support_specs,tasks,uploaders,validators,views,workers,tooling}{,/**/}*_spec.rb753KNAPSACK_LOG_LEVEL: debug754KNAPSACK_REPORT_PATH: knapsack/rspec_unit_pg14_15_28_report.json755FLAKY_RSPEC_SUITE_REPORT_PATH: rspec/flaky/report-suite.json756FLAKY_RSPEC_REPORT_PATH: rspec/flaky/all_rspec_unit_pg14_15_28_report.json757NEW_FLAKY_RSPEC_REPORT_PATH: rspec/flaky/new_rspec_unit_pg14_15_28_report.json758SKIPPED_TESTS_REPORT_PATH: rspec/skipped_tests_rspec_unit_pg14_15_28.txt759CRYSTALBALL: 760RSPEC_TESTS_MAPPING_ENABLED: 761RSPEC_TESTS_FILTER_FILE: 762Running command: bundle exec rspec -Ispec -rspec_helper --color --failure-exit-code 1 --error-exit-code 2 --format documentation --format Support::Formatters::JsonFormatter --out rspec/rspec-4541357758.json --format RspecJunitFormatter --out rspec/rspec-4541357758.xml --fail-fast=20 --tag ~quarantine --tag ~level:background_migration -- spec/lib/gitlab/ci/templates/auto_devops_gitlab_ci_yaml_spec.rb spec/models/note_spec.rb spec/models/ci/job_artifact_spec.rb spec/lib/gitlab/diff/file_spec.rb spec/helpers/projects_helper_spec.rb spec/models/concerns/resolvable_note_spec.rb spec/services/packages/debian/generate_distribution_service_spec.rb spec/models/members/project_member_spec.rb spec/lib/gitlab/background_migration/backfill_topics_title_spec.rb spec/lib/gitlab/bitbucket_server_import/importer_spec.rb spec/lib/gitlab/git/blob_spec.rb spec/models/award_emoji_spec.rb spec/lib/gitlab/ssh_public_key_spec.rb spec/uploaders/avatar_uploader_spec.rb spec/lib/gitlab/gitaly_client_spec.rb spec/services/design_management/copy_design_collection/copy_service_spec.rb spec/graphql/mutations/merge_requests/set_locked_spec.rb spec/models/alert_management/alert_spec.rb spec/models/error_tracking/project_error_tracking_setting_spec.rb spec/policies/project_snippet_policy_spec.rb spec/lib/gitlab/import_export/project/relation_tree_restorer_spec.rb spec/services/groups/create_service_spec.rb spec/lib/gitlab/repository_cache_adapter_spec.rb spec/policies/packages/policies/project_policy_spec.rb spec/graphql/resolvers/todos_resolver_spec.rb spec/services/namespaces/package_settings/update_service_spec.rb spec/services/issues/build_service_spec.rb spec/lib/gitlab/ci/config/external/mapper/verifier_spec.rb spec/models/concerns/approvable_spec.rb spec/rubocop/code_reuse_helpers_spec.rb spec/serializers/analytics_build_entity_spec.rb spec/models/commit_signatures/gpg_signature_spec.rb spec/lib/gitlab/import_export/json/streaming_serializer_spec.rb spec/lib/gitlab/background_migration/mark_duplicate_npm_packages_for_destruction_spec.rb spec/services/system_notes/design_management_service_spec.rb spec/models/members/last_group_owner_assigner_spec.rb spec/graphql/mutations/namespace/package_settings/update_spec.rb spec/experiments/application_experiment_spec.rb spec/models/audit_event_spec.rb spec/services/issues/resolve_discussions_spec.rb spec/lib/gitlab/ci/pipeline/chain/ensure_environments_spec.rb spec/views/projects/tags/index.html.haml_spec.rb spec/services/packages/npm/create_tag_service_spec.rb spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/duplicate_job_spec.rb spec/lib/gitlab/metrics/dashboard/finder_spec.rb spec/lib/gitlab/diff/lines_unfolder_spec.rb spec/lib/gitlab/x509/certificate_spec.rb spec/services/work_items/create_from_task_service_spec.rb spec/services/incident_management/incidents/create_service_spec.rb spec/models/label_note_spec.rb spec/views/projects/commit/show.html.haml_spec.rb spec/services/ci/pipeline_artifacts/destroy_all_expired_service_spec.rb spec/services/bulk_imports/relation_export_service_spec.rb spec/serializers/fork_namespace_entity_spec.rb spec/graphql/resolvers/group_milestones_resolver_spec.rb spec/models/organizations/organization_spec.rb spec/serializers/build_action_entity_spec.rb spec/lib/gitlab/memory/reporter_spec.rb spec/services/pages/migrate_legacy_storage_to_deployment_service_spec.rb spec/lib/gitlab/instrumentation/redis_interceptor_spec.rb spec/graphql/mutations/container_expiration_policies/update_spec.rb spec/models/projects/import_export/relation_export_spec.rb spec/models/clusters/agents/authorizations/user_access/project_authorization_spec.rb spec/lib/gitlab/database/migrations/timeout_helpers_spec.rb spec/lib/gitlab/path_traversal_spec.rb spec/lib/gitlab/database/partitioning/monthly_strategy_spec.rb spec/finders/ci/commit_statuses_finder_spec.rb spec/finders/milestones_finder_spec.rb spec/services/merge_requests/add_context_service_spec.rb spec/lib/gitlab/ci/config/extendable/entry_spec.rb spec/lib/gitlab/ssh/signature_spec.rb spec/lib/gitlab/instrumentation/redis_base_spec.rb spec/graphql/resolvers/design_management/designs_resolver_spec.rb spec/services/packages/mark_packages_for_destruction_service_spec.rb spec/models/service_desk/custom_email_credential_spec.rb spec/workers/issues/rebalancing_worker_spec.rb spec/presenters/gitlab/blame_presenter_spec.rb spec/services/google_cloud/create_cloudsql_instance_service_spec.rb spec/lib/gitlab/graphql/pagination/externally_paginated_array_connection_spec.rb spec/lib/gitlab/redis/boolean_spec.rb spec/workers/run_pipeline_schedule_worker_spec.rb spec/finders/contributed_projects_finder_spec.rb spec/services/work_items/import_csv_service_spec.rb spec/helpers/invite_members_helper_spec.rb spec/lib/banzai/reference_parser/project_parser_spec.rb spec/lib/gitlab/database/postgres_partition_spec.rb spec/models/legacy_diff_discussion_spec.rb spec/graphql/resolvers/nested_groups_resolver_spec.rb spec/lib/gitlab/ci/config/entry/port_spec.rb spec/workers/projects/import_export/parallel_project_export_worker_spec.rb spec/lib/gitlab/ci/pipeline/expression/lexeme/string_spec.rb spec/lib/gitlab/metrics/dashboard/service_selector_spec.rb spec/presenters/projects/import_export/project_export_presenter_spec.rb spec/lib/safe_zip/extract_params_spec.rb spec/policies/clusters/agent_policy_spec.rb spec/services/projects/group_links/create_service_spec.rb spec/services/ci/create_pipeline_service/custom_config_content_spec.rb spec/config/application_spec.rb spec/lib/gitlab/feature_categories_spec.rb spec/models/namespace/detail_spec.rb spec/lib/gitlab/github_import/importer/pull_requests/all_merged_by_importer_spec.rb spec/lib/gitlab/sanitizers/exception_message_spec.rb spec/services/ci/pipeline_schedules/update_service_spec.rb spec/lib/gitlab/usage/metrics/name_suggestion_spec.rb spec/services/database/consistency_fix_service_spec.rb spec/rubocop/cop/rspec/shared_groups_metadata_spec.rb spec/lib/gitlab/slash_commands/run_spec.rb spec/services/compare_service_spec.rb spec/lib/gitlab/database/partitioning_migration_helpers/foreign_key_helpers_spec.rb spec/lib/gitlab/ci/config/header/root_spec.rb spec/workers/issues/close_worker_spec.rb spec/lib/gitlab/ci/build/credentials/registry/dependency_proxy_spec.rb spec/graphql/types/base_object_spec.rb spec/workers/ci/stuck_builds/drop_scheduled_worker_spec.rb spec/lib/gitlab/global_id_spec.rb spec/graphql/mutations/clusters/agent_tokens/revoke_spec.rb spec/services/personal_access_tokens/rotate_service_spec.rb spec/workers/packages/npm/create_metadata_cache_worker_spec.rb spec/lib/gitlab/usage_data_counters/cycle_analytics_counter_spec.rb spec/finders/resource_milestone_event_finder_spec.rb spec/services/projects/move_users_star_projects_service_spec.rb spec/workers/groups/update_two_factor_requirement_for_members_worker_spec.rb spec/workers/dependency_proxy/cleanup_dependency_proxy_worker_spec.rb spec/lib/gitlab/ci/config/entry/hooks_spec.rb spec/lib/gitlab/usage_data_counters/wiki_page_counter_spec.rb spec/models/merge_request_context_commit_spec.rb spec/services/import/gitlab_projects/file_acquisition_strategies/remote_file_spec.rb spec/lib/gitlab/local_and_remote_storage_migration/pages_deployment_migrater_spec.rb spec/services/ci/catalog/validate_resource_service_spec.rb spec/models/concerns/sha_attribute_spec.rb spec/lib/gitlab/instrumentation/redis_spec.rb spec/lib/system_check/orphans/repository_check_spec.rb spec/lib/gitlab/database/type/symbolized_jsonb_spec.rb spec/lib/gitlab/git/attributes_at_ref_parser_spec.rb spec/lib/gitlab/metrics/prometheus_spec.rb spec/lib/gitlab/ci/ansi2json/result_spec.rb spec/services/emails/destroy_service_spec.rb spec/workers/ci/build_prepare_worker_spec.rb spec/models/work_items/widget_definition_spec.rb spec/lib/gitlab/ci/status/created_spec.rb spec/models/preloaders/projects/notes_preloader_spec.rb spec/lib/gitlab/usage/metrics/instrumentations/count_ml_experiments_metric_spec.rb spec/lib/banzai/filter/inline_diff_filter_spec.rb spec/workers/propagate_integration_inherit_worker_spec.rb spec/lib/gitlab/utils/log_limited_array_spec.rb spec/initializers/rails_yaml_safe_load_spec.rb spec/rubocop/cop/migration/with_lock_retries_disallowed_method_spec.rb spec/lib/gitlab/pagination/offset_header_builder_with_controller_spec.rb spec/lib/gitlab/ci/config/entry/ports_spec.rb spec/lib/gitlab/import_export/uploads_saver_spec.rb spec/lib/gitlab/git_post_receive_spec.rb spec/models/concerns/packages/downloadable_spec.rb spec/models/concerns/runners_token_prefixable_spec.rb spec/lib/serializers/unsafe_json_spec.rb spec/models/concerns/recoverable_by_any_email_spec.rb spec/tasks/gitlab/sidekiq_rake_spec.rb spec/services/packages/rpm/repository_metadata/build_repomd_xml_service_spec.rb spec/lib/gitlab/utils/mime_type_spec.rb spec/lib/gitlab/graphql/present/field_extension_spec.rb spec/lib/gitlab/config/entry/composable_hash_spec.rb spec/policies/release_policy_spec.rb spec/services/projects/import_error_filter_spec.rb spec/lib/gitlab/terraform_registry_token_spec.rb spec/lib/gitlab/email/handler_spec.rb spec/lib/gitlab/query_limiting/active_support_subscriber_spec.rb spec/finders/user_groups_counter_spec.rb spec/policies/protected_branch_access_policy_spec.rb spec/lib/bitbucket/representation/pull_request_comment_spec.rb spec/lib/gitlab/noteable_metadata_spec.rb spec/services/projects/all_issues_count_service_spec.rb spec/scripts/api/get_package_and_test_job_spec.rb spec/services/ci/abort_pipelines_service_spec.rb spec/services/users/registrations_build_service_spec.rb spec/lib/sidebars/admin/menus/applications_menu_spec.rb spec/lib/sidebars/groups/menus/kubernetes_menu_spec.rb spec/graphql/resolvers/work_items/types_resolver_spec.rb spec/lib/gitlab/ci/config/entry/kubernetes_spec.rb spec/lib/gitlab/auth/crowd/authentication_spec.rb spec/lib/gitlab/dependency_linker/requirements_txt_linker_spec.rb spec/lib/sidebars/user_settings/menus/ssh_keys_menu_spec.rb spec/models/bulk_imports/export_batch_spec.rb spec/lib/gitlab/tracking/destinations/snowplow_micro_spec.rb spec/serializers/project_access_token_serializer_spec.rb spec/workers/gitlab/github_import/stage/import_collaborators_worker_spec.rb spec/models/uploads/local_spec.rb spec/services/users/email_verification/generate_token_service_spec.rb spec/serializers/test_suite_comparer_entity_spec.rb spec/services/ci/runners/stale_managers_cleanup_service_spec.rb spec/services/achievements/destroy_service_spec.rb spec/graphql/types/ci/runner_architecture_type_spec.rb spec/lib/gitlab/cache/metrics_spec.rb spec/graphql/resolvers/work_item_resolver_spec.rb spec/bin/diagnostic_reports_uploader_spec.rb spec/graphql/types/permission_types/base_permission_type_spec.rb spec/workers/gitlab/bitbucket_server_import/stage/finish_import_worker_spec.rb spec/lib/gitlab/database/pg_class_spec.rb spec/rubocop/cop/database/disable_referential_integrity_spec.rb spec/serializers/personal_access_token_serializer_spec.rb spec/lib/gitlab/usage/metrics/instrumentations/redis_hll_metric_spec.rb spec/workers/namespaces/update_root_statistics_worker_spec.rb spec/presenters/releases/link_presenter_spec.rb spec/views/help/instance_configuration.html.haml_spec.rb spec/presenters/sentry_error_presenter_spec.rb spec/services/members/standard_member_builder_spec.rb spec/lib/api/entities/group_detail_spec.rb spec/models/group_deploy_keys_group_spec.rb spec/services/projects/apple_target_platform_detector_service_spec.rb spec/lib/gitlab/memory/watchdog/monitor/unique_memory_growth_spec.rb spec/graphql/types/release_asset_link_input_type_spec.rb spec/graphql/types/merge_request_state_enum_spec.rb spec/serializers/import/github_failure_serializer_spec.rb spec/routing/directs/milestone_spec.rb spec/services/packages/debian/extract_deb_metadata_service_spec.rb spec/graphql/types/packages/package_details_type_spec.rb spec/lib/microsoft_teams/notifier_spec.rb spec/views/notify/new_achievement_email.html.haml_spec.rb spec/lib/mattermost/command_spec.rb spec/lib/sidebars/projects/super_sidebar_menus/code_menu_spec.rb spec/rubocop/cop/user_admin_spec.rb spec/lib/gitlab/database/migrations/observers/query_log_spec.rb spec/lib/gitlab/sidekiq_middleware/extra_done_log_metadata_spec.rb spec/graphql/types/commit_action_mode_enum_spec.rb spec/graphql/types/ci/runner_setup_type_spec.rb spec/rubocop/cop/gemspec/avoid_executing_git_spec.rb spec/lib/gitlab/git/conflict/resolver_spec.rb spec/lib/gitlab/grape_logging/loggers/token_logger_spec.rb spec/graphql/types/upload_type_spec.rb spec/lib/error_tracking/sentry_client/token_spec.rb spec/workers/todos_destroyer/destroyed_issuable_worker_spec.rb spec/lib/gitlab/ci/reports/security/scan_spec.rb spec/lib/api/entities/nuget/search_result_spec.rb spec/lib/gitlab/ci/status/build/waiting_for_resource_spec.rb spec/workers/update_container_registry_info_worker_spec.rb spec/graphql/types/permission_types/snippet_spec.rb spec/rubocop/cop/gitlab/union_spec.rb spec/lib/gitlab/ci/reports/sbom/reports_spec.rb spec/lib/gitlab/patch/draw_route_spec.rb spec/graphql/types/eventable_type_spec.rb spec/graphql/types/permission_types/environment_spec.rbKnapsack report generator started!763WARNING: Shared example group 'returning a success' has been previously defined at:764 /builds/gitlab-org/gitlab/spec/graphql/mutations/namespace/package_settings/update_spec.rb:18765...and you are now defining it at:766 /builds/gitlab-org/gitlab/spec/graphql/mutations/container_expiration_policies/update_spec.rb:19767The new definition will overwrite the original one.768Run options: exclude {:quarantine=>true, :level=>"background_migration"}769Test environment set up in 0.849440214 seconds770Auto-DevOps.gitlab-ci.yml771 default_branch: "master"772 the created pipeline773 creates a build and a test job774 when the project is set for deployment to AWS775 creates an ECS deployment job for production only776 behaves like no Kubernetes deployment job777 does not create any Kubernetes deployment-related builds778 behaves like no ECS job when AUTO_DEVOPS_PLATFORM_TARGET is not present779 when AUTO_DEVOPS_PLATFORM_TARGET is nil780 does not trigger the job781 when AUTO_DEVOPS_PLATFORM_TARGET is empty782 does not trigger the job783 with FARGATE as a launch type784 creates a FARGATE deployment job for production only785 and we are not on the default branch786 creates an ECS deployment job for review only787 behaves like no ECS job when AUTO_DEVOPS_PLATFORM_TARGET is not present788 when AUTO_DEVOPS_PLATFORM_TARGET is nil789 does not trigger the job790 when AUTO_DEVOPS_PLATFORM_TARGET is empty791 does not trigger the job792 behaves like no ECS job when AUTO_DEVOPS_PLATFORM_TARGET is not present793 when AUTO_DEVOPS_PLATFORM_TARGET is nil794 does not trigger the job795 when AUTO_DEVOPS_PLATFORM_TARGET is empty796 does not trigger the job797 with FARGATE as a launch type798 creates an FARGATE deployment job for review only799 and when the project has an active cluster800 on default branch801 triggers the deployment to Kubernetes, not to ECS802 when the platform target is EC2803 contains the build_artifact job, not the build job804 when the project has no active cluster805 only creates a build and a test stage806 behaves like no Kubernetes deployment job807 does not create any Kubernetes deployment-related builds808 when a cluster is attached809 behaves like pipeline with Kubernetes jobs810 deployment-related builds811 on default branch812 does not include rollout jobs besides production813 when STAGING_ENABLED=1814 includes a staging job and a production_manual job815 when CANARY_ENABLED=1816 includes a canary job and a production_manual job817 when MIGRATE_HELM_2TO3=true818 includes a helm-2to3:migrate and a helm-2to3:cleanup job819 outside of default branch820 does not include rollout jobs besides review821 when MIGRATE_HELM_2TO3=true822 includes a helm-2to3:migrate and a helm-2to3:cleanup job823 when certificate_based_clusters FF is disabled824 does not include production job825 when project has an Agent826 behaves like pipeline with Kubernetes jobs827 deployment-related builds828 on default branch829 does not include rollout jobs besides production830 when STAGING_ENABLED=1831 includes a staging job and a production_manual job832 when CANARY_ENABLED=1833 includes a canary job and a production_manual job834 when MIGRATE_HELM_2TO3=true835 includes a helm-2to3:migrate and a helm-2to3:cleanup job836 outside of default branch837 does not include rollout jobs besides review838 when MIGRATE_HELM_2TO3=true839 includes a helm-2to3:migrate and a helm-2to3:cleanup job840 when certificate_based_clusters FF is disabled841 includes production job842 buildpack detection843 No match844 creates a pipeline with the expected jobs845 Buildpack846 creates a pipeline with the expected jobs847 Explicit set848 creates a pipeline with the expected jobs849 Explicit unset850 creates a pipeline with the expected jobs851 DOCKERFILE_PATH852 creates a pipeline with the expected jobs853 Dockerfile854 creates a pipeline with the expected jobs855 Clojure856 creates a pipeline with the expected jobs857 Go modules858 creates a pipeline with the expected jobs859 Go gb860 creates a pipeline with the expected jobs861 Gradle862 creates a pipeline with the expected jobs863 Java864 creates a pipeline with the expected jobs865 Multi-buildpack866 creates a pipeline with the expected jobs867 NodeJS868 creates a pipeline with the expected jobs869 PHP870 creates a pipeline with the expected jobs871 Play872 creates a pipeline with the expected jobs873 Python874 creates a pipeline with the expected jobs875 Ruby876 creates a pipeline with the expected jobs877 Scala878 creates a pipeline with the expected jobs879 Static880 creates a pipeline with the expected jobs881 default_branch: "main"882 the created pipeline883 creates a build and a test job884 when the project is set for deployment to AWS885 creates an ECS deployment job for production only886 behaves like no Kubernetes deployment job887 does not create any Kubernetes deployment-related builds888 behaves like no ECS job when AUTO_DEVOPS_PLATFORM_TARGET is not present889 when AUTO_DEVOPS_PLATFORM_TARGET is nil890 does not trigger the job891 when AUTO_DEVOPS_PLATFORM_TARGET is empty892 does not trigger the job893 with FARGATE as a launch type894 creates a FARGATE deployment job for production only895 and we are not on the default branch896 creates an ECS deployment job for review only897 behaves like no ECS job when AUTO_DEVOPS_PLATFORM_TARGET is not present898 when AUTO_DEVOPS_PLATFORM_TARGET is nil899 does not trigger the job900 when AUTO_DEVOPS_PLATFORM_TARGET is empty901 does not trigger the job902 behaves like no ECS job when AUTO_DEVOPS_PLATFORM_TARGET is not present903 when AUTO_DEVOPS_PLATFORM_TARGET is nil904 does not trigger the job905 when AUTO_DEVOPS_PLATFORM_TARGET is empty906 does not trigger the job907 with FARGATE as a launch type908 creates an FARGATE deployment job for review only909 and when the project has an active cluster910 on default branch911 triggers the deployment to Kubernetes, not to ECS912 when the platform target is EC2913 contains the build_artifact job, not the build job914 when the project has no active cluster915 only creates a build and a test stage916 behaves like no Kubernetes deployment job917 does not create any Kubernetes deployment-related builds918 when a cluster is attached919 behaves like pipeline with Kubernetes jobs920 deployment-related builds921 on default branch922 does not include rollout jobs besides production923 when STAGING_ENABLED=1924 includes a staging job and a production_manual job925 when CANARY_ENABLED=1926 includes a canary job and a production_manual job927 when MIGRATE_HELM_2TO3=true928 includes a helm-2to3:migrate and a helm-2to3:cleanup job929 outside of default branch930 does not include rollout jobs besides review931 when MIGRATE_HELM_2TO3=true932 includes a helm-2to3:migrate and a helm-2to3:cleanup job933 when certificate_based_clusters FF is disabled934 does not include production job935 when project has an Agent936 behaves like pipeline with Kubernetes jobs937 deployment-related builds938 on default branch939 does not include rollout jobs besides production940 when STAGING_ENABLED=1941 includes a staging job and a production_manual job942 when CANARY_ENABLED=1943 includes a canary job and a production_manual job944 when MIGRATE_HELM_2TO3=true945 includes a helm-2to3:migrate and a helm-2to3:cleanup job946 outside of default branch947 does not include rollout jobs besides review948 when MIGRATE_HELM_2TO3=true949 includes a helm-2to3:migrate and a helm-2to3:cleanup job950 when certificate_based_clusters FF is disabled951 includes production job952 buildpack detection953 No match954 creates a pipeline with the expected jobs955 Buildpack956 creates a pipeline with the expected jobs957 Explicit set958 creates a pipeline with the expected jobs959 Explicit unset960 creates a pipeline with the expected jobs961 DOCKERFILE_PATH962 creates a pipeline with the expected jobs963 Dockerfile964 creates a pipeline with the expected jobs965 Clojure966 creates a pipeline with the expected jobs967 Go modules968 creates a pipeline with the expected jobs969 Go gb970 creates a pipeline with the expected jobs971 Gradle972 creates a pipeline with the expected jobs973 Java974 creates a pipeline with the expected jobs975 Multi-buildpack976 creates a pipeline with the expected jobs977 NodeJS978 creates a pipeline with the expected jobs979 PHP980 creates a pipeline with the expected jobs981 Play982 creates a pipeline with the expected jobs983 Python984 creates a pipeline with the expected jobs985 Ruby986 creates a pipeline with the expected jobs987 Scala988 creates a pipeline with the expected jobs989 Static990 creates a pipeline with the expected jobs991Note992 associations993 is expected to belong to project required: false994 is expected to belong to noteable required: false995 is expected to belong to author class_name => User required: false996 is expected to have many todos997 is expected to have one note_metadata class_name => Notes::NoteMetadata inverse_of => note998 is expected to belong to review required: false inverse_of => notes999 modules1000 is expected to includes the Participable module1001 is expected to includes the Mentionable module1002 is expected to includes the Awardable module1003 is expected to includes the Sortable module1004 default values1005 is expected not to be system1006 validation1007 is expected to validate that the length of :note is at most 10000001008 is expected to validate that :note cannot be empty/falsy1009 is expected to validate that :project cannot be empty/falsy1010 when note is on commit1011 is expected to validate that :commit_id cannot be empty/falsy1012 is expected not to validate that :noteable_id cannot be empty/falsy1013 when note is not on commit1014 is expected not to validate that :commit_id cannot be empty/falsy1015 is expected to validate that :noteable_id cannot be empty/falsy1016 when noteable and note project differ1017 is expected to be invalid1018 when noteable and note project are the same1019 is expected to be valid1020 when project is missing for a project related note1021 is expected to be invalid1022 when noteable is a personal snippet1023 is valid without project1024 max notes limit1025 when creating a system note1026 is expected to be valid1027 when creating a user note1028 is expected not to be valid1029 when updating an existing note on a noteable that already exceeds the limit1030 is expected to be valid1031 created_at in the past1032 when creating a note not too much in the past1033 is expected to be valid1034 when creating a note too much in the past1035 is expected not to be valid1036 confidentiality1037 for existing public note1038 is not possible to change the note to confidential1039 is possible to change confidentiality from nil to false1040 for existing confidential note1041 is not possible to change the note to public1042 for a new note1043 allows to create a confidential note for an issue1044 when noteable is not allowed to have confidential notes1045 can not be set confidential1046 when note type is not allowed to be confidential1047 can not be set confidential1048 when the note is a discussion note1049 is expected to be valid1050 when replying to a note1051 when the note is reply to a confidential note1052 is expected to be valid1053 when the note is reply to a public note1054 can not be set confidential1055 when reply note is public but discussion is confidential1056 can not be set confidential1057 callbacks1058 #keep_around_commit1059 calls #keep_around_commit normally1060 skips #keep_around_commit if 'skip_keep_around_commits' is true1061 skips #keep_around_commit if 'importing' is true1062 #notify_after_create1063 calls #after_note_created on the noteable1064 #notify_after_destroy1065 calls #after_note_destroyed on the noteable1066 does not error if noteable is nil1067 sets internal flag1068 when confidential is `true`1069 is expected to equal true1070 when confidential is `false`1071 is expected to equal false1072 when confidential is `nil`1073 is expected to equal false1074 Commit notes1075 is accessible through #noteable1076 saves a valid note1077 is recognized by #for_commit?1078 keeps the commit around1079 does not generate N+1 queries for participants1080 authorization1081 read1082 is expected to be falsey1083 is expected to be truthy1084 is expected to be falsey1085 write1086 is expected to be falsey1087 is expected to be truthy1088 is expected to be falsey1089 admin1090 is expected to be falsey1091 is expected to be truthy1092 is expected to be falsey1093 behaves like an editable mentionable1094 creates new cross-reference notes when the mentionable text is edited1095 behaves like a mentionable1096 generates a descriptive back-reference1097 extracts references from its reference property1098 creates cross-reference notes1099 when there are cached markdown fields1100 sends in cached markdown fields when appropriate1101 when there are cached markdown fields1102 refreshes markdown cache if necessary1103 when the markdown cache is stale1104 persists the refreshed cache so that it does not have to be refreshed every time1105 #all_references1106 reads the rendered note body from the cache1107 editable?1108 returns true1109 returns false1110 noteable_author?1111 when note is on commit1112 if user is the noteable author1113 returns true1114 if user is not the noteable author1115 returns false1116 when note is on issue1117 if user is the noteable author1118 returns true1119 if user is not the noteable author1120 returns false1121 last_edited_at1122 with last_edited_at1123 returns last_edited_at1124 without last_edited_at1125 returns updated_at1126 edited?1127 with updated_by1128 returns true1129 without updated_by1130 returns false1131 #confidential?1132 when note is not confidential1133 is false when a noteable is not confidential1134 is false when noteable can't be confidential1135 when include_noteable is set to true1136 is true when a noteable is confidential1137 when include_noteable is not set to true1138 is false when a noteable is confidential1139 when note is confidential1140 is true even when a noteable is not confidential1141 #system_note_visible_for?1142 when project is public1143 behaves like users with note access1144 returns true1145 when group is private1146 returns visible but not readable for non-member user1147 returns visible but not readable for a nil user1148 behaves like users with note access1149 returns true1150 #system_note_viewable_by?(user)1151 when system_note_metadata is not present1152 returns true1153 system_note_metadata isn't of type 'branch' or 'contact'1154 returns true1155 system_note_metadata is of type 'branch'1156 user doesn't have :download_code ability1157 returns false1158 user has the :download_code ability1159 returns true1160 system_note_metadata is of type 'contact'1161 user doesn't have :read_crm_contact ability1162 returns false1163 user has the :read_crm_contact ability1164 returns true1165 system_note_visible_for?1166 when there is one reference in note1167 behaves like checks references1168 returns false1169 returns true1170 returns true if user visible reference count set1171 returns false if user visible reference count set but does not match total reference count1172 returns false if ref count is 01173 when there is a reference to a label1174 behaves like checks references1175 returns false1176 returns true1177 returns true if user visible reference count set1178 returns false if user visible reference count set but does not match total reference count1179 returns false if ref count is 01180 when there are two references in note1181 behaves like checks references1182 returns false1183 returns true1184 returns true if user visible reference count set1185 returns false if user visible reference count set but does not match total reference count1186 returns false if ref count is 01187 when there is a private issue and user reference1188 behaves like checks references1189 returns false1190 returns true1191 returns true if user visible reference count set1192 returns false if user visible reference count set but does not match total reference count1193 returns false if ref count is 01194 when there is a publicly visible user reference1195 returns true for other users1196 returns true for anonymous users1197 #system_note_with_references?1198 falsey for user-generated notes1199 when the note might contain cross references1200 with commit1201 delegates to the cross-reference regex1202 with cross_reference1203 delegates to the cross-reference regex1204 with closed1205 delegates to the cross-reference regex1206 with duplicate1207 delegates to the cross-reference regex1208 with moved1209 delegates to the cross-reference regex1210 with merge1211 delegates to the cross-reference regex1212 with label1213 delegates to the cross-reference regex1214 with milestone1215 delegates to the cross-reference regex1216 with relate1217 delegates to the cross-reference regex1218 with unrelate1219 delegates to the cross-reference regex1220 with cloned1221 delegates to the cross-reference regex1222 with epic_issue_added1223 delegates to the cross-reference regex1224 with issue_added_to_epic1225 delegates to the cross-reference regex1226 with epic_issue_removed1227 delegates to the cross-reference regex1228 with issue_removed_from_epic1229 delegates to the cross-reference regex1230 with epic_issue_moved1231 delegates to the cross-reference regex1232 with issue_changed_epic1233 delegates to the cross-reference regex1234 with relate_epic1235 delegates to the cross-reference regex1236 with unrelate_epic1237 delegates to the cross-reference regex1238 with iteration1239 delegates to the cross-reference regex1240 when the note cannot contain cross references1241 scan for a `mentioned in` prefix1242 when system note metadata is not present1243 delegates to the system note service1244 with a system note1245 with :label action1246 is expected to be falsy1247 behaves like system_note_metadata includes note action1248 delegates to the cross-reference regex1249 with cross reference label note1250 is expected to be truthy1251 with :milestone action1252 is expected to be falsy1253 behaves like system_note_metadata includes note action1254 delegates to the cross-reference regex1255 with cross reference milestone note1256 is expected to be truthy1257 clear_blank_line_code!1258 clears a blank line code before validation1259 #participants1260 includes the note author1261 #start_of_discussion?1262 returns true when note is the start of a discussion1263 returns false when note is a reply1264 .find_discussion1265 returns a discussion with multiple notes1266 #check_for_spam1267 when note is public1268 returns true1269 when note is public and spammable attributes are not changed1270 returns false1271 when project does not exist1272 returns true1273 when project is not public1274 returns false1275 when group is not public1276 returns false1277 when note is confidential1278 returns false1279 when noteable is confidential1280 returns false1281 when noteable is not public1282 returns false1283 when note is a system note1284 returns false1285 .grouped_diff_discussions1286 active diff discussions1287 includes active discussions1288 doesn't include outdated discussions1289 groups the discussions by line code1290 with image discussions1291 groups image discussions by file identifier1292 groups text discussions by line code1293 diff discussions for older diff refs1294 for diff refs a discussion was created at1295 includes discussions that were created then1296 groups the discussions by original line code1297 for diff refs a discussion was last active at1298 includes discussions that were last active1299 groups the discussions by line code1300 .simple_sorts1301 does not contain name sorts1302 .cherry_picked_merge_requests1303 returns merge requests that match the given merge commit1304 #for_work_item?1305 returns true for a work item1306 returns false for an issue1307 #for_project_snippet?1308 returns true for a project snippet note1309 returns false for a personal snippet note1310 #for_personal_snippet?1311 returns false for a project snippet note1312 returns true for a personal snippet note1313 #for_design1314 is true when the noteable is a design1315 #to_ability_name1316 returns note1317 #noteable_ability_name1318 returns snippet for a project snippet note1319 returns snippet for a personal snippet note1320 returns merge_request for an MR note1321 returns issue for an issue note1322 returns commit for a commit note1323 returns alert_management_alert for an alert note1324 #cache_markdown_field1325 note for a project snippet1326 skips project check1327 note for a personal snippet1328 does not skip project check1329 #can_be_discussion_note?1330 for a note on a merge request1331 returns true1332 for a note on an issue1333 returns true1334 for a note on a commit1335 returns true1336 for a note on a snippet1337 returns true1338 for a diff note on merge request1339 returns false1340 for a diff note on commit1341 returns false1342 for a discussion note1343 returns false1344 #discussion_class1345 when the note is displayed out of context1346 returns OutOfContextDiscussion1347 when the note is displayed in the original context1348 returns IndividualNoteDiscussion1349 #discussion_id1350 when it is newly created1351 has a discussion id1352 when it didn't store a discussion id before1353 has a discussion id1354 when the note is displayed out of context1355 overrides the discussion id1356 #to_discussion1357 returns a discussion with just this note1358 #discussion1359 when the note is part of a discussion1360 returns the discussion this note is in1361 when the note is not part of a discussion1362 returns a discussion with just this note1363 #part_of_discussion?1364 for a regular note1365 returns false1366 for a diff note1367 returns true1368 for a discussion note1369 returns true1370 #in_reply_to?1371 for a note1372 when part of a discussion1373 checks if the note is in reply to the other discussion1374 when not part of a discussion1375 checks if the note is in reply to the other noteable1376 for a discussion1377 when part of the same discussion1378 returns true1379 when not part of the same discussion1380 returns false1381 for a noteable1382 when a comment on the same noteable1383 returns true1384 when not a comment on the same noteable1385 returns false1386 #references1387 when part of a discussion1388 references all earlier notes in the discussion1389 when not part of a discussion1390 returns the noteable1391 expiring ETag cache1392 expires cache for note's issue when note is saved1393 expires cache for note's issue when note is destroyed1394 when issuable etag caching is disabled1395 does not store cache key1396 for merge requests1397 when adding a note to the MR1398 expires the MR note etag cache1399 when adding a note to a commit on the MR1400 expires the MR note etag cache1401 #with_notes_filter1402 when notes filter is nil1403 is expected to include #<Note note: [FILTERED], noteable_type: "Issue", author_id: 424, created_at: "2023-06-26 14:36:00.545...lved_by_push: nil, review_id: nil, confidential: nil, last_edited_at: nil, internal: false, id: 179> and #<Note note: [FILTERED], noteable_type: "Issue", author_id: 425, created_at: "2023-06-26 14:36:01.082...lved_by_push: nil, review_id: nil, confidential: nil, last_edited_at: nil, internal: false, id: 180>1404 when notes filter is set to all notes1405 is expected to include #<Note note: [FILTERED], noteable_type: "Issue", author_id: 426, created_at: "2023-06-26 14:36:01.665...lved_by_push: nil, review_id: nil, confidential: nil, last_edited_at: nil, internal: false, id: 181> and #<Note note: [FILTERED], noteable_type: "Issue", author_id: 427, created_at: "2023-06-26 14:36:02.196...lved_by_push: nil, review_id: nil, confidential: nil, last_edited_at: nil, internal: false, id: 182>1406 when notes filter is set to only comments1407 is expected to include #<Note note: [FILTERED], noteable_type: "Issue", author_id: 428, created_at: "2023-06-26 14:36:02.776...lved_by_push: nil, review_id: nil, confidential: nil, last_edited_at: nil, internal: false, id: 183>1408 is expected not to include #<Note note: [FILTERED], noteable_type: "Issue", author_id: 431, created_at: "2023-06-26 14:36:04.360...lved_by_push: nil, review_id: nil, confidential: nil, last_edited_at: nil, internal: false, id: 186>1409 #parent1410 returns project for project notes1411 returns nil for personal snippet note1412 scopes1413 .for_note_or_capitalized_note1414 returns the expected matching note1415 returns the expected capitalized note1416 does not support pattern matching1417 .like_note_or_capitalized_note1418 returns the expected matching note1419 returns the expected capitalized note1420 supports pattern matching1421 .with_suggestions1422 returns the correct note1423 .inc_relations_for_view1424 when noteable can not have diffs1425 does not include additional associations1426 when noteable is not set1427 includes additional diff associations1428 when noteable can have diffs1429 includes additional diff associations1430 .without_hidden1431 when a note with a banned author exists1432 when the :hidden_notes feature is disabled1433 is expected to include #<Note note: [FILTERED], noteable_type: "Issue", author_id: 443, created_at: "2023-06-26 14:36:11.196...lved_by_push: nil, review_id: nil, confidential: nil, last_edited_at: nil, internal: false, id: 196> and #<Note note: [FILTERED], noteable_type: "Issue", author_id: 435, created_at: "2023-06-26 14:36:05.692...lved_by_push: nil, review_id: nil, confidential: nil, last_edited_at: nil, internal: false, id: 189>1434 when the :hidden_notes feature is enabled1435 is expected not to include #<Note note: [FILTERED], noteable_type: "Issue", author_id: 443, created_at: "2023-06-26 14:36:11.196...lved_by_push: nil, review_id: nil, confidential: nil, last_edited_at: nil, internal: false, id: 196>1436 is expected to include #<Note note: [FILTERED], noteable_type: "Issue", author_id: 435, created_at: "2023-06-26 14:36:05.692...lved_by_push: nil, review_id: nil, confidential: nil, last_edited_at: nil, internal: false, id: 189>1437 .authored_by1438 returns the notes with the matching author1439 With ID integer1440 returns the notes with the matching author1441 banzai_render_context1442 when noteable is a merge request1443 sets the label_url_method in the context1444 when noteable is an issue1445 sets the label_url_method in the context1446 when noteable is a personal snippet1447 sets the parent user in the context1448 #parent_user1449 returns the author of a personal snippet1450 returns nil for project snippet1451 returns nil when noteable is not a snippet1452 #skip_notification?1453 when there is no review1454 is expected to be falsey1455 when the review exists1456 is expected to be truthy1457 #attachment1458 is cleaned up correctly when project is destroyed1459 #post_processed_cache_key1460 returns cache key and author cache key by default1461 when note has no author1462 returns cache key only1463 when note has redacted_note_html1464 returns cache key with redacted_note_html sha1465 #commands_changes1466 only returns allowed keys1467 #bump_updated_at1468 sets updated_at to the current timestamp1469 with legacy edited note1470 copies updated_at to last_edited_at before bumping the timestamp1471 #note1472 behaves like note that replaces task for checklist item in body text1473 when note is not a system note1474 is expected to eq "marked the task **task 1** as completed"1475 when note is a system note1476 when note noteable_type is not Issue1477 is expected to eq "marked the task **task 1** as completed"1478 when note noteable_type is Issue1479 is expected to eq "marked the checklist item **task 1** as completed"1480 context when note and cache are null (happens in bulk insert)1481 is expected to be in [nil, ""]1482 behaves like note that replaces task for checklist item in body text1483 when note is not a system note1484 is expected to eq "marked the task **task 1** as incomplete"1485 when note is a system note1486 when note noteable_type is not Issue1487 is expected to eq "marked the task **task 1** as incomplete"1488 when note noteable_type is Issue1489 is expected to eq "marked the checklist item **task 1** as incomplete"1490 context when note and cache are null (happens in bulk insert)1491 is expected to be in [nil, ""]1492 #note_html1493 behaves like note that replaces task for checklist item in body text1494 when note is not a system note1495 is expected to eq "<p data-sourcepos=\"1:1-1:48\" dir=\"auto\">marked the task <strong>task 1</strong> as completed</p>"1496 when note is a system note1497 when note noteable_type is not Issue1498 is expected to eq "<p data-sourcepos=\"1:1-1:48\" dir=\"auto\">marked the task <strong>task 1</strong> as completed</p>"1499 when note noteable_type is Issue1500 is expected to eq "<p data-sourcepos=\"1:1-1:48\" dir=\"auto\">marked the checklist item <strong>task 1</strong> as completed</p>"1501 context when note and cache are null (happens in bulk insert)1502 is expected to be in [nil, ""]1503 behaves like note that replaces task for checklist item in body text1504 when note is not a system note1505 is expected to eq "<p data-sourcepos=\"1:1-1:48\" dir=\"auto\">marked the task <strong>task 1</strong> as incomplete</p>"1506 when note is a system note1507 when note noteable_type is not Issue1508 is expected to eq "<p data-sourcepos=\"1:1-1:48\" dir=\"auto\">marked the task <strong>task 1</strong> as incomplete</p>"1509 when note noteable_type is Issue1510 is expected to eq "<p data-sourcepos=\"1:1-1:48\" dir=\"auto\">marked the checklist item <strong>task 1</strong> as incomplete</p>"1511 context when note and cache are null (happens in bulk insert)1512 is expected to be in [nil, ""]1513 #issuable_ability_name1514 when not confidential note1515 is expected to eq :read_note1516 when confidential note1517 is expected to eq :read_internal_note1518 #exportable_record?1519 when not a system note1520 is expected to be truthy1521 with system note1522 returns `false` when the user cannot read the note1523 when user can read the note1524 is expected to be truthy1525Ci::JobArtifact1526 is expected to respond to #file1527 is expected to respond to #created_at1528 is expected to respond to #updated_at1529 is expected to delegate #open to the #file object1530 is expected to delegate #exists? to the #file object1531 Associations1532 is expected to belong to project required: false1533 is expected to belong to job class_name => Ci::Build required: false inverse_of => job_artifacts1534 is expected to validate that :job cannot be empty/falsy1535 is expected to validate that :partition_id cannot be empty/falsy1536 behaves like having unique enum values1537 has unique values in "file_format"1538 has unique values in "locked"1539 has unique values in "accessibility"1540 has unique values in "file_type"1541 has unique values in "file_location"1542 behaves like UpdateProjectStatistics1543 is expected to be a new record1544 when statistic is a counter attribute1545 when creating1546 stores pending increments for async update1547 when updating1548 stores pending increments for async update1549 avoids N + 1 queries1550 when destroying1551 stores pending increment for async update1552 when it is destroyed from the project level1553 does not store pending increments for async update1554 does not schedule a namespace statistics worker1555 after_create_commit callback1556 logs the job artifact create1557 after_destroy_commit callback1558 logs the job artifact destroy1559 .not_expired1560 returns artifacts that have not expired1561 .all_reports1562 is expected to be empty1563 when there are reports1564 is expected to contain exactly #<Ci::JobArtifact project_id: 337, file_type: "junit", size: 568, created_at: "2023-06-26 14:36:35.55...nown", partition_id: 100, accessibility: "public", file_final_path: nil, verification_checksum: nil> and #<Ci::JobArtifact project_id: 338, file_type: "codequality", size: 1877, created_at: "2023-06-26 14:3...nown", partition_id: 100, accessibility: "public", file_final_path: nil, verification_checksum: nil>1565 .of_report_type1566 test_reports1567 when there is a test report1568 is expected to eq [#<Ci::JobArtifact project_id: 339, file_type: "junit", size: 568, created_at: "2023-06-26 14:36:36.5...own", partition_id: 100, accessibility: "public", file_final_path: nil, verification_checksum: nil>]1569 when there are no test reports1570 is expected to be empty1571 accessibility_reports1572 when there is an accessibility report1573 is expected to eq [#<Ci::JobArtifact project_id: 341, file_type: "accessibility", size: 5977, created_at: "2023-06-26 1...own", partition_id: 100, accessibility: "public", file_final_path: nil, verification_checksum: nil>]1574 when there are no accessibility report1575 is expected to be empty1576 coverage_reports1577 when there is a coverage report1578 is expected to eq [#<Ci::JobArtifact project_id: 342, file_type: "cobertura", size: 576, created_at: "2023-06-26 14:36:...own", partition_id: 100, accessibility: "public", file_final_path: nil, verification_checksum: nil>]1579 when there are no coverage reports1580 is expected to be empty1581 codequality_reports1582 when there is a codequality report1583 is expected to eq [#<Ci::JobArtifact project_id: 344, file_type: "codequality", size: 1877, created_at: "2023-06-26 14:...own", partition_id: 100, accessibility: "public", file_final_path: nil, verification_checksum: nil>]1584 when there are no codequality reports1585 is expected to be empty1586 terraform_reports1587 when there is a terraform report1588 is expected to eq [#<Ci::JobArtifact project_id: 346, file_type: "terraform", size: 40, created_at: "2023-06-26 14:36:4...own", partition_id: 100, accessibility: "public", file_final_path: nil, verification_checksum: nil>]1589 when there are no terraform reports1590 is expected to be empty1591 artifacts_public?1592 when job artifact created by default1593 is expected to be truthy1594 when job artifact created as public1595 is expected to be truthy1596 when job artifact created as private1597 is expected to be falsey1598 and the non_public_artifacts feature flag is disabled1599 is expected to be truthy1600 .file_types_for_report1601 returns the report file types for the report type1602 when given an unrecognized report type1603 raises error1604 .associated_file_types_for1605 file_type: "codequality", result: ["codequality"]1606 is expected to eq ["codequality"]1607 file_type: "quality", result: nil1608 is expected to eq nil1609 .erasable_file_types1610 returns a list of erasable file types1611 .erasable1612 when there is an erasable artifact1613 is expected to eq [#<Ci::JobArtifact project_id: 352, file_type: "junit", size: 568, created_at: "2023-06-26 14:36:43.4...own", partition_id: 100, accessibility: "public", file_final_path: nil, verification_checksum: nil>]1614 when there are no erasable artifacts1615 is expected to be empty1616 .non_trace1617 when there is only a trace job artifact1618 is expected to be empty1619 when there is only a non-trace job artifact1620 is expected to eq [#<Ci::JobArtifact project_id: 355, file_type: "junit", size: 568, created_at: "2023-06-26 14:36:45.1...own", partition_id: 100, accessibility: "public", file_final_path: nil, verification_checksum: nil>]1621 when there are both trace and non-trace job artifacts1622 is expected to eq [#<Ci::JobArtifact project_id: 357, file_type: "junit", size: 568, created_at: "2023-06-26 14:36:46.0...own", partition_id: 100, accessibility: "public", file_final_path: nil, verification_checksum: nil>]1623 .downloadable1624 filters for downloadable artifacts1625 .archived_trace_exists_for?1626 when the specified job_id exists1627 is expected to be truthy1628 when the job does have archived trace1629 is expected to be falsy1630 when the specified job_id does not exist1631 is expected to be falsy1632 #stored?1633 when the file exists1634 is expected to be truthy1635 when the file does not exist1636 is expected to be falsy1637 .for_sha1638 returns job artifacts for a given pipeline sha1639 .for_job_name1640 returns job artifacts for a given job name1641 .unlocked1642 with locked pipelines1643 returns an empty array1644 with unlocked pipelines1645 returns the artifact1646 .order_expired_asc1647 returns ordered artifacts1648 .for_project1649 returns artifacts only for given project(s)1650 created_in_time_range1651 returns artifacts created in given time range1652 .created_at_before1653 returns artifacts1654 .id_before1655 returns artifacts1656 .id_after1657 returns artifacts1658 .ordered_by_id1659 returns artifacts in asc order1660 creating the artifact1661 sets the size from the file size1662 updating the artifact file1663 updates the artifact size1664 when updating any field except the file1665 the `after_commit` hook does not update `file_store`1666 validates file format1667 when archive type with zip format1668 is expected to be valid1669 when archive type without format specification1670 is expected not to be valid1671 when archive type with other formats1672 with 11673 is expected not to be valid1674 with 31675 is expected not to be valid1676 when metadata type with gzip format1677 is expected to be valid1678 when metadata type without format specification1679 is expected not to be valid1680 when metadata type with other formats1681 with 11682 is expected not to be valid1683 with 21684 is expected not to be valid1685 when junit type with gzip format1686 is expected to be valid1687 when junit type without format specification1688 is expected not to be valid1689 when junit type with other formats1690 with 11691 is expected not to be valid1692 with 21693 is expected not to be valid1694 when metrics type with gzip format1695 is expected to be valid1696 when metrics type without format specification1697 is expected not to be valid1698 when metrics type with other formats1699 with 11700 is expected not to be valid1701 with 21702 is expected not to be valid1703 when metrics_referee type with gzip format1704 is expected to be valid1705 when metrics_referee type without format specification1706 is expected not to be valid1707 when metrics_referee type with other formats1708 with 11709 is expected not to be valid1710 with 21711 is expected not to be valid1712 when network_referee type with gzip format1713 is expected to be valid1714 when network_referee type without format specification1715 is expected not to be valid1716 when network_referee type with other formats1717 with 11718 is expected not to be valid1719 with 21720 is expected not to be valid1721 when dotenv type with gzip format1722 is expected to be valid1723 when dotenv type without format specification1724 is expected not to be valid1725 when dotenv type with other formats1726 with 11727 is expected not to be valid1728 with 21729 is expected not to be valid1730 when cobertura type with gzip format1731 is expected to be valid1732 when cobertura type without format specification1733 is expected not to be valid1734 when cobertura type with other formats1735 with 11736 is expected not to be valid1737 with 21738 is expected not to be valid1739 when cluster_applications type with gzip format1740 is expected to be valid1741 when cluster_applications type without format specification1742 is expected not to be valid1743 when cluster_applications type with other formats1744 with 11745 is expected not to be valid1746 with 21747 is expected not to be valid1748 when lsif type with zip format1749 is expected to be valid1750 when lsif type without format specification1751 is expected not to be valid1752 when lsif type with other formats1753 with 11754 is expected not to be valid1755 with 31756 is expected not to be valid1757 when cyclonedx type with gzip format1758 is expected to be valid1759 when cyclonedx type without format specification1760 is expected not to be valid1761 when cyclonedx type with other formats1762 with 11763 is expected not to be valid1764 with 21765 is expected not to be valid1766 when sast type with raw format1767 is expected to be valid1768 when sast type without format specification1769 is expected not to be valid1770 when sast type with other formats1771 with 21772 is expected not to be valid1773 with 31774 is expected not to be valid1775 when secret_detection type with raw format1776 is expected to be valid1777 when secret_detection type without format specification1778 is expected not to be valid1779 when secret_detection type with other formats1780 with 21781 is expected not to be valid1782 with 31783 is expected not to be valid1784 when dependency_scanning type with raw format1785 is expected to be valid1786 when dependency_scanning type without format specification1787 is expected not to be valid1788 when dependency_scanning type with other formats1789 with 21790 is expected not to be valid1791 with 31792 is expected not to be valid1793 when container_scanning type with raw format1794 is expected to be valid1795 when container_scanning type without format specification1796 is expected not to be valid1797 when container_scanning type with other formats1798 with 21799 is expected not to be valid1800 with 31801 is expected not to be valid1802 when cluster_image_scanning type with raw format1803 is expected to be valid1804 when cluster_image_scanning type without format specification1805 is expected not to be valid1806 when cluster_image_scanning type with other formats1807 with 21808 is expected not to be valid1809 with 31810 is expected not to be valid1811 when dast type with raw format1812 is expected to be valid1813 when dast type without format specification1814 is expected not to be valid1815 when dast type with other formats1816 with 21817 is expected not to be valid1818 with 31819 is expected not to be valid1820 when license_scanning type with raw format1821 is expected to be valid1822 when license_scanning type without format specification1823 is expected not to be valid1824 when license_scanning type with other formats1825 with 21826 is expected not to be valid1827 with 31828 is expected not to be valid1829 when accessibility type with raw format1830 is expected to be valid1831 when accessibility type without format specification1832 is expected not to be valid1833 when accessibility type with other formats1834 with 21835 is expected not to be valid1836 with 31837 is expected not to be valid1838 when codequality type with raw format1839 is expected to be valid1840 when codequality type without format specification1841 is expected not to be valid1842 when codequality type with other formats1843 with 21844 is expected not to be valid1845 with 31846 is expected not to be valid1847 when performance type with raw format1848 is expected to be valid1849 when performance type without format specification1850 is expected not to be valid1851 when performance type with other formats1852 with 21853 is expected not to be valid1854 with 31855 is expected not to be valid1856 when browser_performance type with raw format1857 is expected to be valid1858 when browser_performance type without format specification1859 is expected not to be valid1860 when browser_performance type with other formats1861 with 21862 is expected not to be valid1863 with 31864 is expected not to be valid1865 when load_performance type with raw format1866 is expected to be valid1867 when load_performance type without format specification1868 is expected not to be valid1869 when load_performance type with other formats1870 with 21871 is expected not to be valid1872 with 31873 is expected not to be valid1874 when terraform type with raw format1875 is expected to be valid1876 when terraform type without format specification1877 is expected not to be valid1878 when terraform type with other formats1879 with 21880 is expected not to be valid1881 with 31882 is expected not to be valid1883 when requirements type with raw format1884 is expected to be valid1885 when requirements type without format specification1886 is expected not to be valid1887 when requirements type with other formats1888 with 21889 is expected not to be valid1890 with 31891 is expected not to be valid1892 when requirements_v2 type with raw format1893 is expected to be valid1894 when requirements_v2 type without format specification1895 is expected not to be valid1896 when requirements_v2 type with other formats1897 with 21898 is expected not to be valid1899 with 31900 is expected not to be valid1901 when coverage_fuzzing type with raw format1902 is expected to be valid1903 when coverage_fuzzing type without format specification1904 is expected not to be valid1905 when coverage_fuzzing type with other formats1906 with 21907 is expected not to be valid1908 with 31909 is expected not to be valid1910 when api_fuzzing type with raw format1911 is expected to be valid1912 when api_fuzzing type without format specification1913 is expected not to be valid1914 when api_fuzzing type with other formats1915 with 21916 is expected not to be valid1917 with 31918 is expected not to be valid1919 validates DEFAULT_FILE_NAMES1920 expects archive to be included1921 expects metadata to be included1922 expects trace to be included1923 expects junit to be included1924 expects sast to be included1925 expects dependency_scanning to be included1926 expects container_scanning to be included1927 expects dast to be included1928 expects codequality to be included1929 expects license_scanning to be included1930 expects performance to be included1931 expects metrics to be included1932 expects metrics_referee to be included1933 expects network_referee to be included1934 expects lsif to be included1935 expects dotenv to be included1936 expects cobertura to be included1937 expects terraform to be included1938 expects accessibility to be included1939 expects cluster_applications to be included1940 expects secret_detection to be included1941 expects requirements to be included1942 expects coverage_fuzzing to be included1943 expects browser_performance to be included1944 expects load_performance to be included1945 expects api_fuzzing to be included1946 expects cluster_image_scanning to be included1947 expects cyclonedx to be included1948 expects requirements_v2 to be included1949 validates TYPE_AND_FORMAT_PAIRS1950 expects archive to be included1951 expects metadata to be included1952 expects trace to be included1953 expects junit to be included1954 expects sast to be included1955 expects dependency_scanning to be included1956 expects container_scanning to be included1957 expects dast to be included1958 expects codequality to be included1959 expects license_scanning to be included1960 expects performance to be included1961 expects metrics to be included1962 expects metrics_referee to be included1963 expects network_referee to be included1964 expects lsif to be included1965 expects dotenv to be included1966 expects cobertura to be included1967 expects terraform to be included1968 expects accessibility to be included1969 expects cluster_applications to be included1970 expects secret_detection to be included1971 expects requirements to be included1972 expects coverage_fuzzing to be included1973 expects browser_performance to be included1974 expects load_performance to be included1975 expects api_fuzzing to be included1976 expects cluster_image_scanning to be included1977 expects cyclonedx to be included1978 expects requirements_v2 to be included1979 #file1980 the uploader api1981 is expected to respond to #store_dir1982 is expected to respond to #cache_dir1983 is expected to respond to #work_dir1984 expired?1985 when expire_at is nil1986 returns false1987 when expire_at is in the past1988 returns true1989 when expire_at is in the future1990 returns false1991 #expiring?1992 when expire_at is nil1993 returns false1994 when expire_at is in the past1995 returns false1996 when expire_at is in the future1997 returns true1998 #expire_in1999 is expected to be nil2000 when expire_at is specified2001 is expected to be within 5 of 604799.999580152002 #expire_in=2003 when assigning valid duration2004 when assigning invalid duration2005 when resetting value2006 when setting to 02007 #store_after_commit?2008 when direct upload is enabled2009 when the artifact is a trace2010 returns true2011 when the artifact is not a trace2012 returns false2013 when direct upload is disabled2014 returns false2015 file is being stored2016 when existing object has local store2017 behaves like mounted file in local store2018 is stored locally2019 when direct upload is enabled2020 when file is stored2021 behaves like mounted file in object store2022 is stored remotely2023 .file_types2024 all file types have corresponding limit2025 file_type: "archive"2026 is expected to include "ci_max_artifact_size_archive"2027 file_type: "metadata"2028 is expected to include "ci_max_artifact_size_metadata"2029 file_type: "trace"2030 is expected to include "ci_max_artifact_size_trace"2031 file_type: "junit"2032 is expected to include "ci_max_artifact_size_junit"2033 file_type: "sast"2034 is expected to include "ci_max_artifact_size_sast"2035 file_type: "dependency_scanning"2036 is expected to include "ci_max_artifact_size_dependency_scanning"2037 file_type: "container_scanning"2038 is expected to include "ci_max_artifact_size_container_scanning"2039 file_type: "dast"2040 is expected to include "ci_max_artifact_size_dast"2041 file_type: "codequality"2042 is expected to include "ci_max_artifact_size_codequality"2043 file_type: "license_scanning"2044 is expected to include "ci_max_artifact_size_license_scanning"2045 file_type: "performance"2046 is expected to include "ci_max_artifact_size_performance"2047 file_type: "metrics"2048 is expected to include "ci_max_artifact_size_metrics"2049 file_type: "metrics_referee"2050 is expected to include "ci_max_artifact_size_metrics_referee"2051 file_type: "network_referee"2052 is expected to include "ci_max_artifact_size_network_referee"2053 file_type: "lsif"2054 is expected to include "ci_max_artifact_size_lsif"2055 file_type: "dotenv"2056 is expected to include "ci_max_artifact_size_dotenv"2057 file_type: "cobertura"2058 is expected to include "ci_max_artifact_size_cobertura"2059 file_type: "terraform"2060 is expected to include "ci_max_artifact_size_terraform"2061 file_type: "accessibility"2062 is expected to include "ci_max_artifact_size_accessibility"2063 file_type: "cluster_applications"2064 is expected to include "ci_max_artifact_size_cluster_applications"2065 file_type: "secret_detection"2066 is expected to include "ci_max_artifact_size_secret_detection"2067 file_type: "requirements"2068 is expected to include "ci_max_artifact_size_requirements"2069 file_type: "coverage_fuzzing"2070 is expected to include "ci_max_artifact_size_coverage_fuzzing"2071 file_type: "browser_performance"2072 is expected to include "ci_max_artifact_size_browser_performance"2073 file_type: "load_performance"2074 is expected to include "ci_max_artifact_size_load_performance"2075 file_type: "api_fuzzing"2076 is expected to include "ci_max_artifact_size_api_fuzzing"2077 file_type: "cluster_image_scanning"2078 is expected to include "ci_max_artifact_size_cluster_image_scanning"2079 file_type: "cyclonedx"2080 is expected to include "ci_max_artifact_size_cyclonedx"2081 file_type: "requirements_v2"2082 is expected to include "ci_max_artifact_size_requirements_v2"2083 .max_artifact_size2084 when file type is supported2085 and plan limit is disabled for the given artifact type2086 behaves like basing off the project closest setting2087 is expected to eq 10737418242088 and project closest setting results to zero2089 is expected to eq 02090 and plan limit is enabled for the given artifact type2091 and plan limit is smaller than project setting2092 behaves like basing off the plan limit2093 is expected to eq 10726932482094 and plan limit is larger than project setting2095 behaves like basing off the project closest setting2096 is expected to eq 10737418242097 FastDestroyAll2098 .use_fast_destroy2099 performs cascading delete with fast_destroy_all2100 updates project statistics2101 loose foreign key on ci_job_artifacts.project_id2102 behaves like cleanup by a loose foreign key2103 cleans up (delete or nullify) the model2104 partitioning2105 copies the partition_id from job2106 when the job is missing2107 does not change the partition_id value2108 #filename2109 is expected to eq "ci_build_artifacts.zip"2110Gitlab::Diff::File2111 #initialize2112 when file is ipynb2113 creates a rendered diff file2114 #ipynb?2115 is ipynb2116 is true2117 is not ipynb2118 is false2119 #has_renderable?2120 file is ipynb2121 has renderable viewer2122 file is not ipynb2123 does not have renderable viewer2124 does not create a Notebook DiffFile2125 #rendered2126 when not ipynb2127 is nil2128 when ipynb2129 creates a NotebookDiffFile for rendering2130 when collapsed2131 is nil2132 when too large2133 is nil2134 when not modified2135 is nil2136 #diff_lines2137 is expected to eq 302138 is expected to be a kind of Gitlab::Diff::Line2139 #highlighted_diff_lines2140 highlights the diff and memoises the result2141 #diff_lines_for_serializer2142 includes bottom match line if not in the end2143 when called multiple times2144 only adds bottom match line once2145 when deleted2146 does not include bottom match line2147 #unfold_diff_lines2148 when unfold required2149 changes @unfolded to true2150 updates @diff_lines2151 when unfold not required2152 keeps @unfolded false2153 does not update @diff_lines2154 #mode_changed?2155 is expected to be falsey2156 #too_large?2157 returns true for a file that is too large2158 returns false for a file that is small enough2159 #collapsed?2160 returns true for a file that is quite big2161 returns false for a file that is small enough2162 #old_blob and #new_blob2163 returns blob of base commit and the new commit2164 #diffable?2165 when attributes exist2166 returns true for files that do not have attributes2167 returns false for files that have been marked as not being diffable in attributes2168 when the text has binary notice2169 returns false2170 when the content is binary2171 returns true2172 #content_changed?2173 when created2174 returns false2175 when deleted2176 returns false2177 when renamed2178 returns false2179 when content changed2180 when binary2181 when the blobs are different2182 returns true2183 when there are no diff refs2184 returns false2185 when not binary2186 when the blobs are different2187 returns true2188 when there are no diff refs2189 returns true2190 #file_hash2191 returns a hash of file_path2192 #file_identifier_hash2193 returns a hash of file_identifier2194 diff file stats2195 #added_lines2196 when stats argument given2197 returns added lines from stats2198 when stats argument not given2199 returns added lines by parsing raw diff2200 #removed_lines2201 when stats argument given2202 returns removed lines from stats2203 when stats argument not given2204 returns removed lines by parsing raw diff2205 #simple_viewer2206 when the file is collapsed2207 returns a Collapsed viewer2208 when the file is not diffable2209 returns a Not Diffable viewer2210 when the content changed2211 when the file represented by the diff file is binary2212 returns a No Preview viewer2213 when the diff file old and new blob types are different2214 returns a No Preview viewer2215 when the file represented by the diff file is text-based2216 returns a text viewer2217 when created2218 when the file represented by the diff file is binary2219 returns an Added viewer2220 when the diff file old and new blob types are different2221 returns an Added viewer2222 when the file represented by the diff file is text-based2223 returns a text viewer2224 when deleted2225 when the file represented by the diff file is binary2226 returns a Deleted viewer2227 when the diff file old and new blob types are different2228 returns a Deleted viewer2229 when the file represented by the diff file is text-based2230 returns a text viewer2231 when renamed2232 returns a Renamed viewer2233 when mode changed2234 returns a Mode Changed viewer2235 when no other conditions apply2236 returns a No Preview viewer2237 #rich_viewer2238 when the diff file has a matching viewer2239 when the diff file content did not change2240 returns nil2241 when the diff file is not diffable2242 returns nil2243 when the diff file old and new blob types are different2244 returns nil2245 when the diff file has an external storage error2246 returns nil2247 when everything is right2248 returns the viewer2249 when the diff file does not have a matching viewer2250 returns nil2251 #alternate_viewer2252 viewer_class: DiffViewer::Image2253 is expected to be nil2254 viewer_class: DiffViewer::Collapsed2255 is expected to be nil2256 viewer_class: DiffViewer::NotDiffable2257 is expected to be nil2258 viewer_class: DiffViewer::Text2259 is expected to be nil2260 viewer_class: DiffViewer::NoPreview2261 is expected to be nil2262 viewer_class: DiffViewer::Added2263 is expected to be nil2264 viewer_class: DiffViewer::Deleted2265 is expected to be nil2266 viewer_class: DiffViewer::ModeChanged2267 is expected to be nil2268 viewer_class: DiffViewer::ModeChanged2269 is expected to be nil2270 viewer_class: DiffViewer::NoPreview2271 is expected to be nil2272 when viewer is DiffViewer::Renamed2273 when it can be rendered as text2274 is expected to be a kind of DiffViewer::Text2275 when it can be rendered as image2276 is expected to be a kind of DiffViewer::Image2277 when it is something else2278 is expected to be nil2279 #rendered_as_text?2280 when the simple viewer is text-based2281 when ignoring errors2282 when the viewer has render errors2283 returns true2284 when the viewer doesn't have render errors2285 returns true2286 when not ignoring errors2287 when the viewer has render errors2288 returns false2289 when the viewer doesn't have render errors2290 returns true2291 when the simple viewer is binary2292 returns false2293 when neither blob exists2294 #blob2295 returns a concrete nil so it can be used in boolean expressions2296 #binary?2297 returns false2298 #size2299 returns zero2300 #empty?2301 returns true2302 #different_type?2303 returns false2304 #content_changed?2305 returns false2306 when the the encoding of the file is unsupported2307 returns a Not Diffable viewer2308 is expected to eq []2309 is expected to eq []2310 #diff_hunk2311 when first line is a match2312 returns raw diff up to given line index2313 when first line is not a match2314 returns raw diff up to given line index2315 #empty?2316 when empty file is created2317 returns true2318 when empty file is deleted2319 returns true2320 when file with content is truncated2321 returns false2322 when empty file has content added2323 returns false2324 #fully_expanded?2325 when empty file is created2326 returns true2327 when empty file is deleted2328 returns true2329 when short file with last line removed2330 returns true2331 when a single line is added to empty file2332 returns true2333 when single line file is changed2334 returns true2335 when long file is changed2336 when first line is removed2337 returns true2338 when last line is removed2339 returns true2340 when first and last lines are removed2341 returns false2342 when first and last lines are changed2343 returns false2344 when every line are changed2345 returns true2346 when all contents are cleared2347 returns true2348 when file is binary2349 returns true2350ProjectsHelper2351 #project_incident_management_setting2352 when incident_management_setting exists2353 return project_incident_management_setting2354 when incident_management_setting does not exist2355 builds incident_management_setting2356 #error_tracking_setting_project_json2357 error tracking setting does not exist2358 returns nil2359 error tracking setting exists2360 api_url present2361 returns error tracking json2362 api_url not present2363 returns nil2364 #project_status_css_class2365 returns appropriate class2366 can_change_visibility_level?2367 returns false if there are no appropriate permissions2368 returns true if there are permissions2369 #can_disable_emails?2370 returns true for the project owner2371 returns false for anyone else2372 returns false if group emails disabled2373 readme_cache_key2374 returns a valid cach key2375 returns a valid cache key if HEAD does not exist2376 #project_list_cache_key2377 includes the route2378 includes the project2379 includes the last activity date2380 includes the controller name2381 includes the controller action2382 includes the application settings2383 includes a version2384 includes whether or not the user can read cross project2385 includes the pipeline status when there is a status2386 includes the user locale2387 includes the user max member access2388 #load_pipeline_status2389 loads the pipeline status in batch2390 #last_pipeline_from_status_cache2391 without a pipeline2392 returns nil2393 when pipeline_status is loaded2394 returns nil without calling gitaly when there is no pipeline2395 when FF load_last_pipeline_from_pipeline_status is disabled2396 returns nil2397 with a pipeline2398 returns the latest pipeline2399 when pipeline_status is loaded2400 returns the latest pipeline without calling gitaly2401 when FF load_last_pipeline_from_pipeline_status is disabled2402 returns the latest pipeline2403 #show_no_ssh_key_message?2404 user has no keys2405 returns true2406 user has an ssh key2407 returns false2408 #show_no_password_message?2409 user has password set2410 returns false2411 user has hidden the message2412 returns false2413 user requires a password for Git2414 returns true2415 user requires a personal access token for Git2416 returns true2417 #no_password_message2418 password authentication is enabled for Git2419 returns message prompting user to set password or set up a PAT2420 password authentication is disabled for Git2421 returns message prompting user to set up a PAT2422 #link_to_project2423 returns an HTML link to the project2424 #link_to_member_avatar2425 returns image tag for member avatar2426 returns image tag with avatar class2427 #link_to_member2428 using the default options2429 returns an HTML link to the user2430 HTML escapes the name of the user2431 when user is nil2432 returns "(deleted)"2433 default_clone_protocol2434 when user is not logged in and gitlab protocol is HTTP2435 returns HTTP2436 when user is not logged in and gitlab protocol is HTTPS2437 returns HTTPS2438 #last_push_event2439 returns recent push on the current project2440 when there is no current_user2441 returns nil2442 #show_projects2443 returns true when there are projects2444 returns true when there are no projects but a name is given2445 returns true when there are no projects but personal is present2446 returns false when there are no projects and there is no name2447 #push_to_create_project_command2448 returns the command to push to create project over HTTP2449 returns the command to push to create project over SSH2450 #any_projects?2451 returns true when projects will be returned2452 returns false when no projects will be returned2453 returns true when using a non-empty Array2454 returns false when using an empty Array2455 only executes a single query when a LIMIT is applied2456 #git_user_name2457 parses quotes in name2458 #git_user_email2459 not logged-in2460 returns your@email.com2461 user logged in2462 user has no configured commit email2463 returns the primary email2464 user has a configured commit email2465 returns the commit email2466 show_xcode_link2467 when the repository is xcode compatible2468 returns false if the visitor is not using macos2469 returns true if the visitor is using macos2470 when the repository is not xcode compatible2471 returns false if the visitor is not using macos2472 returns false if the visitor is using macos2473 #explore_projects_tab?2474 returns true when on the "All" tab under "Explore projects"2475 returns true when on the "Trending" tab under "Explore projects"2476 returns true when on the "Starred" tab under "Explore projects"2477 returns false when on the "Your projects" tab2478 #show_count?2479 enabled flag2480 returns true if compact mode is disabled2481 returns false if compact mode is enabled2482 disabled flag2483 returns false if disabled flag is true2484 returns true if disabled flag is false2485 #show_auto_devops_implicitly_enabled_banner?2486 global_setting: true, project_setting: nil, builds_visibility: :disabled, gitlab_ci_yml: true, user_access: :developer, result: false2487 is expected to eq false2488 global_setting: true, project_setting: nil, builds_visibility: :disabled, gitlab_ci_yml: true, user_access: :maintainer, result: false2489 is expected to eq false2490 global_setting: true, project_setting: nil, builds_visibility: :disabled, gitlab_ci_yml: true, user_access: :owner, result: false2491 is expected to eq false2492 global_setting: true, project_setting: nil, builds_visibility: :disabled, gitlab_ci_yml: false, user_access: :developer, result: false2493 is expected to eq false2494 global_setting: true, project_setting: nil, builds_visibility: :disabled, gitlab_ci_yml: false, user_access: :maintainer, result: false2495 is expected to eq false2496 global_setting: true, project_setting: nil, builds_visibility: :disabled, gitlab_ci_yml: false, user_access: :owner, result: false2497 is expected to eq false2498 global_setting: true, project_setting: nil, builds_visibility: :enabled, gitlab_ci_yml: true, user_access: :developer, result: false2499 is expected to eq false2500 global_setting: true, project_setting: nil, builds_visibility: :enabled, gitlab_ci_yml: true, user_access: :maintainer, result: false2501 is expected to eq false2502 global_setting: true, project_setting: nil, builds_visibility: :enabled, gitlab_ci_yml: true, user_access: :owner, result: false2503 is expected to eq false2504 global_setting: true, project_setting: nil, builds_visibility: :enabled, gitlab_ci_yml: false, user_access: :developer, result: false2505 is expected to eq false2506 global_setting: true, project_setting: nil, builds_visibility: :enabled, gitlab_ci_yml: false, user_access: :maintainer, result: true2507 is expected to eq true2508 global_setting: true, project_setting: nil, builds_visibility: :enabled, gitlab_ci_yml: false, user_access: :owner, result: true2509 is expected to eq true2510 global_setting: true, project_setting: true, builds_visibility: :disabled, gitlab_ci_yml: true, user_access: :developer, result: false2511 is expected to eq false2512 global_setting: true, project_setting: true, builds_visibility: :disabled, gitlab_ci_yml: true, user_access: :maintainer, result: false2513 is expected to eq false2514 global_setting: true, project_setting: true, builds_visibility: :disabled, gitlab_ci_yml: true, user_access: :owner, result: false2515 is expected to eq false2516 global_setting: true, project_setting: true, builds_visibility: :disabled, gitlab_ci_yml: false, user_access: :developer, result: false2517 is expected to eq false2518 global_setting: true, project_setting: true, builds_visibility: :disabled, gitlab_ci_yml: false, user_access: :maintainer, result: false2519 is expected to eq false2520 global_setting: true, project_setting: true, builds_visibility: :disabled, gitlab_ci_yml: false, user_access: :owner, result: false2521 is expected to eq false2522 global_setting: true, project_setting: true, builds_visibility: :enabled, gitlab_ci_yml: true, user_access: :developer, result: false2523 is expected to eq false2524 global_setting: true, project_setting: true, builds_visibility: :enabled, gitlab_ci_yml: true, user_access: :maintainer, result: false2525 is expected to eq false2526 global_setting: true, project_setting: true, builds_visibility: :enabled, gitlab_ci_yml: true, user_access: :owner, result: false2527 is expected to eq false2528 global_setting: true, project_setting: true, builds_visibility: :enabled, gitlab_ci_yml: false, user_access: :developer, result: false2529 is expected to eq false2530 global_setting: true, project_setting: true, builds_visibility: :enabled, gitlab_ci_yml: false, user_access: :maintainer, result: false2531 is expected to eq false2532 global_setting: true, project_setting: true, builds_visibility: :enabled, gitlab_ci_yml: false, user_access: :owner, result: false2533 is expected to eq false2534 global_setting: true, project_setting: false, builds_visibility: :disabled, gitlab_ci_yml: true, user_access: :developer, result: false2535 is expected to eq false2536 global_setting: true, project_setting: false, builds_visibility: :disabled, gitlab_ci_yml: true, user_access: :maintainer, result: false2537 is expected to eq false2538 global_setting: true, project_setting: false, builds_visibility: :disabled, gitlab_ci_yml: true, user_access: :owner, result: false2539 is expected to eq false2540 global_setting: true, project_setting: false, builds_visibility: :disabled, gitlab_ci_yml: false, user_access: :developer, result: false2541 is expected to eq false2542 global_setting: true, project_setting: false, builds_visibility: :disabled, gitlab_ci_yml: false, user_access: :maintainer, result: false2543 is expected to eq false2544 global_setting: true, project_setting: false, builds_visibility: :disabled, gitlab_ci_yml: false, user_access: :owner, result: false2545 is expected to eq false2546 global_setting: true, project_setting: false, builds_visibility: :enabled, gitlab_ci_yml: true, user_access: :developer, result: false2547 is expected to eq false2548 global_setting: true, project_setting: false, builds_visibility: :enabled, gitlab_ci_yml: true, user_access: :maintainer, result: false2549 is expected to eq false2550 global_setting: true, project_setting: false, builds_visibility: :enabled, gitlab_ci_yml: true, user_access: :owner, result: false2551 is expected to eq false2552 global_setting: true, project_setting: false, builds_visibility: :enabled, gitlab_ci_yml: false, user_access: :developer, result: false2553 is expected to eq false2554 global_setting: true, project_setting: false, builds_visibility: :enabled, gitlab_ci_yml: false, user_access: :maintainer, result: false2555 is expected to eq false2556 global_setting: true, project_setting: false, builds_visibility: :enabled, gitlab_ci_yml: false, user_access: :owner, result: false2557 is expected to eq false2558 #show_mobile_devops_project_promo?2559 hide_cookie: false, feature_flag_enabled: true, mobile_target_platform: true, result: true2560 resolves if the user can import members2561 hide_cookie: false, feature_flag_enabled: false, mobile_target_platform: true, result: false2562 resolves if the user can import members2563 hide_cookie: false, feature_flag_enabled: false, mobile_target_platform: false, result: false2564 resolves if the user can import members2565 hide_cookie: false, feature_flag_enabled: true, mobile_target_platform: false, result: false2566 resolves if the user can import members2567 hide_cookie: true, feature_flag_enabled: false, mobile_target_platform: false, result: false2568 resolves if the user can import members2569 hide_cookie: true, feature_flag_enabled: true, mobile_target_platform: false, result: false2570 resolves if the user can import members2571 hide_cookie: true, feature_flag_enabled: true, mobile_target_platform: true, result: false2572 resolves if the user can import members2573 hide_cookie: true, feature_flag_enabled: false, mobile_target_platform: true, result: false2574 resolves if the user can import members2575 #can_admin_project_member?2576 when user is project owner2577 returns true for owner of project2578 when user is not a project owner2579 user_project_role: :maintainer, can_admin: true2580 resolves if the user can import members2581 user_project_role: :developer, can_admin: false2582 resolves if the user can import members2583 user_project_role: :reporter, can_admin: false2584 resolves if the user can import members2585 user_project_role: :guest, can_admin: false2586 resolves if the user can import members2587 #metrics_external_dashboard_url2588 metrics_setting exists2589 returns external_dashboard_url2590 metrics_setting does not exist2591 returns nil2592 #grafana_integration_url2593 is expected to eq nil2594 grafana integration exists2595 is expected to eq "https://grafana.example.com"2596 #grafana_integration_token2597 is expected to eq nil2598 grafana integration exists2599 is expected to eq "************************************************"2600 #grafana_integration_enabled?2601 is expected to eq nil2602 grafana integration exists2603 is expected to eq true2604 #project_license_name(project)2605 gitaly is working appropriately2606 returns the license name2607 memoizes the value2608 gitaly is unreachable2609 Gitlab::Git::CommandError2610 behaves like returns nil and tracks exception2611 is expected to be nil2612 tracks the exception2613 memoizes the nil value2614 GRPC::Unavailable2615 behaves like returns nil and tracks exception2616 is expected to be nil2617 tracks the exception2618 memoizes the nil value2619 GRPC::DeadlineExceeded2620 behaves like returns nil and tracks exception2621 is expected to be nil2622 tracks the exception2623 memoizes the nil value2624 #show_terraform_banner?2625 the project does not contain terraform files2626 is expected to be falsey2627 the project contains terraform files2628 is expected to be truthy2629 the project already has a terraform state2630 is expected to be falsey2631 the :show_terraform_banner feature flag is disabled2632 is expected to be falsey2633 #project_title2634 enqueues the elements in the breadcrumb schema list2635 #project_permissions_panel_data2636 includes project_permissions_settings2637 includes membersPagePath2638 includes canAddCatalogResource2639 #project_classes2640 is expected to be a kind of String2641 PUC highlighting enabled2642 is expected to include "project-highlight-puc"2643 PUC highlighting disabled2644 is expected not to include "project-highlight-puc"2645 #delete_confirm_phrase2646 includes the project path with namespace2647 fork security helpers2648 #able_to_see_merge_requests?2649 can_read_merge_request: false, merge_requests_enabled: false, expected: false2650 returns the correct response2651 can_read_merge_request: true, merge_requests_enabled: false, expected: false2652 returns the correct response2653 can_read_merge_request: false, merge_requests_enabled: true, expected: false2654 returns the correct response2655 can_read_merge_request: true, merge_requests_enabled: true, expected: true2656 returns the correct response2657 #able_to_see_issues?2658 can_read_issues: false, issues_enabled: false, expected: false2659 returns the correct response2660 can_read_issues: true, issues_enabled: false, expected: false2661 returns the correct response2662 can_read_issues: false, issues_enabled: true, expected: false2663 returns the correct response2664 can_read_issues: true, issues_enabled: true, expected: true2665 returns the correct response2666 #able_to_see_forks_count?2667 can_read_code: false, forking_enabled: false, expected: false2668 returns the correct response2669 can_read_code: true, forking_enabled: false, expected: false2670 returns the correct response2671 can_read_code: false, forking_enabled: true, expected: false2672 returns the correct response2673 can_read_code: true, forking_enabled: true, expected: true2674 returns the correct response2675 #fork_button_disabled_tooltip2676 has_user: false, can_fork_project: false, can_create_fork: false, expected: nil2677 returns tooltip text when user lacks privilege2678 has_user: true, can_fork_project: true, can_create_fork: true, expected: nil2679 returns tooltip text when user lacks privilege2680 has_user: true, can_fork_project: false, can_create_fork: true, expected: "You don't have permission to fork this project"2681 returns tooltip text when user lacks privilege2682 has_user: true, can_fork_project: true, can_create_fork: false, expected: "You have reached your project limit"2683 returns tooltip text when user lacks privilege2684 #import_from_bitbucket_message2685 behaves like configure import method modal2686 as a user2687 returns a link to contact an administrator2688 as an administrator2689 returns a link to configure bitbucket2690 #import_from_gitlab_message2691 behaves like configure import method modal2692 as a user2693 returns a link to contact an administrator2694 as an administrator2695 returns a link to configure bitbucket2696 #show_inactive_project_deletion_banner?2697 with no project2698 behaves like does not show the banner2699 is expected to equal false2700 with unsaved project2701 behaves like does not show the banner2702 is expected to equal false2703 with the setting disabled2704 behaves like does not show the banner2705 is expected to equal false2706 with the setting enabled2707 with an active project2708 behaves like does not show the banner2709 is expected to equal false2710 with an inactive project2711 shows the banner2712 #inactive_project_deletion_date2713 returns the deletion date2714 #can_admin_associated_clusters?2715 when project has a cluster2716 if user can admin cluster2717 is expected to be truthy2718 if user can not admin cluster2719 is expected to be falsey2720 when project has a group cluster2721 if user can admin cluster2722 is expected to be truthy2723 if user can not admin cluster2724 is expected to be falsey2725 when project doesn't have a cluster2726 if user can admin cluster2727 is expected to be falsey2728 if user can not admin cluster2729 is expected to be falsey2730 #show_clusters_alert?2731 is_gitlab_com: false, user_can_admin_cluster: false, expected: false2732 is expected to eq false2733 is_gitlab_com: false, user_can_admin_cluster: true, expected: false2734 is expected to eq false2735 is_gitlab_com: true, user_can_admin_cluster: false, expected: false2736 is expected to eq false2737 is_gitlab_com: true, user_can_admin_cluster: true, expected: true2738 is expected to eq true2739 #clusters_deprecation_alert_message2740 if user has an active licence2741 displays the correct messagee2742 if user doesn't have an active licence2743 displays the correct message2744 #project_coverage_chart_data_attributes2745 returns project data to render coverage chart2746 #localized_project_human_access2747 key: 0, localized_project_human_access: "No access"2748 with correct key2749 key: 5, localized_project_human_access: "Minimal Access"2750 with correct key2751 key: 10, localized_project_human_access: "Guest"2752 with correct key2753 key: 20, localized_project_human_access: "Reporter"2754 with correct key2755 key: 30, localized_project_human_access: "Developer"2756 with correct key2757 key: 40, localized_project_human_access: "Maintainer"2758 with correct key2759 key: 50, localized_project_human_access: "Owner"2760 with correct key2761 #vue_fork_divergence_data2762 returns empty hash when fork source is not available2763 when fork source is available2764 returns the data related to fork divergence2765 returns view_mr_path if a merge request for the branch exists2766 when a user cannot create a merge request2767 project_role: :guest, source_project_role: :developer2768 create_mr_path is nil2769 project_role: :developer, source_project_role: :guest2770 create_mr_path is nil2771 #remote_mirror_setting_enabled?2772 returns false2773 #http_clone_url_to_repo2774 is expected to eq "http_url_to_repo"2775 #ssh_clone_url_to_repo2776 is expected to eq "ssh_url_to_repo"2777Note ResolvableNote2778 resolvability scopes2779 .potentially_resolvable2780 includes diff and discussion notes on merge requests2781 .resolvable2782 includes non-system diff and discussion notes on merge requests2783 .resolved2784 includes resolved non-system diff and discussion notes on merge requests2785 .unresolved2786 includes non-resolved non-system diff and discussion notes on merge requests2787 .resolve!2788 resolves only the resolvable, not yet resolved notes2789 .unresolve!2790 unresolves the resolved notes2791 #resolvable?2792 when potentially resolvable2793 when a system note2794 returns false2795 when a regular note2796 returns true2797 when not potentially resolvable2798 returns false2799 #to_be_resolved?2800 when not resolvable2801 returns false2802 when resolvable2803 when resolved2804 returns false2805 when not resolved2806 returns true2807 #resolved?2808 when not resolvable2809 returns false2810 when resolvable2811 when the note has been resolved2812 returns true2813 when the note has not been resolved2814 returns false2815 #resolve!2816 when not resolvable2817 returns false2818 doesn't set resolved_at2819 doesn't set resolved_by2820 doesn't mark as resolved2821 when resolvable2822 when already resolved2823 returns false2824 doesn't change resolved_at2825 doesn't change resolved_by2826 doesn't change resolved status2827 when not yet resolved2828 returns true2829 sets resolved_at2830 sets resolved_by2831 marks as resolved2832 #unresolve!2833 when not resolvable2834 returns false2835 when resolvable2836 when resolved2837 returns true2838 unsets resolved_at2839 unsets resolved_by2840 unmarks as resolved2841 when not resolved2842 returns false2843 #potentially_resolvable?2844 returns false if noteable could not be found2845Packages::Debian::GenerateDistributionService2846 for project2847 #execute2848 behaves like Generate Debian Distribution and component files2849 with Debian components and architectures2850 generates Debian distribution and component files2851 without components and architectures2852 generates minimal distribution2853 #lease_key2854 returns an unique key2855 for group2856 #execute2857 behaves like Generate Debian Distribution and component files2858 with Debian components and architectures2859 generates Debian distribution and component files2860 without components and architectures2861 generates minimal distribution2862 #lease_key2863 returns an unique key2864ProjectMember2865 associations2866 is expected to belong to project required: false2867 validations2868 is expected to allow :source_type to be ‹"Project"›2869 is expected not to allow :source_type to be ‹"Group"›2870 is expected to validate that :access_level is either ‹10›, ‹20›, ‹30›, or ‹40›2871 default values2872 is expected to eq "Project"2873 delegations2874 is expected to delegate #namespace_id to the #project object2875 .access_level_roles2876 returns Gitlab::Access.options2877 #permissible_access_level_roles2878 when member can manage owners2879 returns Gitlab::Access.options_with_owner2880 when member cannot manage owners2881 returns Gitlab::Access.options2882 #real_source_type2883 is expected to eq "Project"2884 #destroy2885 creates an expired event when left due to expiry2886 creates a left event when left due to leave2887 for an orphaned member2888 does not raise an error2889 #holder_of_the_personal_namespace?2890 personal_namespace_holder?: false, expected: false2891 returns expected2892 personal_namespace_holder?: true, expected: true2893 returns expected2894 .truncate_teams2895 is expected to be empty2896 is expected to be empty2897 behaves like members notifications2898 #after_create2899 sends email to user2900 #after_update2901 calls NotificationService.update_project_member2902 does not send an email when the access level has not changed2903 #after_commit2904 on creation of a member requesting access2905 calls NotificationService.new_access_request2906 #accept_request2907 calls NotificationService.new_project_member2908 #accept_invite!2909 calls NotificationService.accept_project_invite2910 #decline_invite!2911 calls NotificationService.decline_project_invite2912 access levels2913 with parent group2914 behaves like inherited access level as a member of entity2915 with root parent_entity developer member2916 is allowed to be a maintainer of the entity2917 is not allowed to be a reporter of the entity2918 is allowed to change to be a developer of the entity2919 is not allowed to change to be a guest of the entity2920 shows an error if the member can't be updated2921 allows changing the level from a non existing member2922 with parent group and a subgroup2923 behaves like inherited access level as a member of entity2924 with root parent_entity developer member2925 is allowed to be a maintainer of the entity2926 is not allowed to be a reporter of the entity2927 is allowed to change to be a developer of the entity2928 is not allowed to change to be a guest of the entity2929 shows an error if the member can't be updated2930 allows changing the level from a non existing member2931 refreshing project_authorizations2932 when the source project of the project member is destroyed2933 refreshes the authorization of user to the project in the group2934 refreshes the authorization without calling AuthorizedProjectUpdate::ProjectRecalculatePerUserWorker2935 when the user of the project member is destroyed2936 refreshes the authorization of user to the project in the group2937 refreshes the authorization without calling `AuthorizedProjectUpdate::ProjectRecalculatePerUserWorker`2938 when importing2939 does not refresh2940 authorization refresh on addition/updation/deletion2941 on create2942 changes access level2943 behaves like calls AuthorizedProjectUpdate::ProjectRecalculatePerUserWorker inline to recalculate authorizations2944 calls AuthorizedProjectUpdate::ProjectRecalculatePerUserWorker inline2945 behaves like calls AuthorizedProjectUpdate::UserRefreshFromReplicaWorker with a delay to update project authorizations2946 calls AuthorizedProjectUpdate::UserRefreshFromReplicaWorker2947 on update2948 changes access level2949 behaves like calls AuthorizedProjectUpdate::ProjectRecalculatePerUserWorker inline to recalculate authorizations2950 calls AuthorizedProjectUpdate::ProjectRecalculatePerUserWorker inline2951 behaves like calls AuthorizedProjectUpdate::UserRefreshFromReplicaWorker with a delay to update project authorizations2952 calls AuthorizedProjectUpdate::UserRefreshFromReplicaWorker2953 on destroy2954 changes access level2955 behaves like calls AuthorizedProjectUpdate::ProjectRecalculatePerUserWorker inline to recalculate authorizations2956 calls AuthorizedProjectUpdate::ProjectRecalculatePerUserWorker inline2957 behaves like calls AuthorizedProjectUpdate::UserRefreshFromReplicaWorker with a delay to update project authorizations2958 calls AuthorizedProjectUpdate::UserRefreshFromReplicaWorker2959 #set_member_namespace_id2960 on create2961 sets the member_namespace_id2962Gitlab::BitbucketServerImport::Importer2963 #import_repository2964 adds a remote2965 raises a Gitlab::Git::CommandError in the fetch2966 raises an unhandled exception in the fetch2967 #import_pull_requests2968 imports merge event2969 falls back to comments if diff comments fail to validate2970 reports an error if an exception is raised2971 pull request author user mapping2972 when bitbucket_server_user_mapping_by_username feature flag is disabled2973 when email is not present2974 maps user2975 when email is present2976 maps user2977 when bitbucket_server_user_mapping_by_username feature flag is enabled2978 when username is not present2979 maps user2980 when username is present2981 maps user2982 when user is not found2983 maps importer user2984 comments2985 when bitbucket_server_user_mapping_by_username feature flag is disabled2986 imports comments2987 when bitbucket_server_user_mapping_by_username feature flag is enabled2988 imports comments2989 when username is not present2990 defaults to import user2991 when username is present2992 maps by username2993 metrics2994 counts and measures duration of imported projects2995 counts imported pull requests2996 threaded discussions2997 when bitbucket_server_user_mapping_by_username feature flag is disabled2998 imports threaded discussions2999 when bitbucket_server_user_mapping_by_username feature flag is enabled3000 imports threaded discussions3001 when username is not present3002 defaults to import user3003 when user is not found3004 maps importer user3005 import pull requests with caching3006 only imports one Merge Request, as the other on is in the cache3007 inaccessible branches3008 #restore_branches3009 #delete_temp_branches3010 lfs files3011 downloads lfs objects if lfs_enabled is enabled for project3012 adds the error message when the lfs download fails3013Gitlab::Git::Blob3014 initialize3015 handles nil data3016 records blob size3017 when untruncated3018 attempts to record gitlab_blob_truncated_false3019 when truncated3020 attempts to record gitlab_blob_truncated_true3021 .find with Gitaly enabled3022 behaves like .find3023 nil path3024 is expected to eq nil3025 utf-8 branch3026 is expected to eq "7e3e39ebb9b2bf433b4ad17313770fbe4051649c"3027 blank path3028 is expected to eq nil3029 file in subdir3030 is expected to eq "7e3e39ebb9b2bf433b4ad17313770fbe4051649c"3031 is expected to eq "popen.rb"3032 is expected to eq "files/ruby/popen.rb"3033 is expected to eq "b83d6e391c22777fca1ed3012fce84f633d7fed0"3034 is expected to eq "require 'fi"3035 is expected to eq 6693036 is expected to eq "100644"3037 file in root3038 is expected to eq "dfaa3f97ca337e20154a98ac9d0be76ddd1fcc82"3039 is expected to eq ".gitignore"3040 is expected to eq ".gitignore"3041 is expected to eq "b83d6e391c22777fca1ed3012fce84f633d7fed0"3042 is expected to eq "*.rbc\n*.sas"3043 is expected to eq 2413044 is expected to eq "100644"3045 is expected not to be binary in repo3046 file in root with leading slash3047 is expected to eq "dfaa3f97ca337e20154a98ac9d0be76ddd1fcc82"3048 is expected to eq ".gitignore"3049 is expected to eq ".gitignore"3050 is expected to eq "b83d6e391c22777fca1ed3012fce84f633d7fed0"3051 is expected to eq "*.rbc\n*.sas"3052 is expected to eq 2413053 is expected to eq "100644"3054 non-exist file3055 is expected to be nil3056 six submodule3057 is expected to eq "409f37c4f05865e4fb208c771485f211a22c4c2d"3058 is expected to eq ""3059 does not get messed up by load_all_data!3060 does not mark the blob as binary3061 large file3062 is expected to eq 1118033063 is expected to eq 10003064 check that this test is sane3065 can load all data3066 marks the blob as binary3067 .find with Rugged enabled3068 calls out to the Rugged implementation3069 behaves like .find3070 nil path3071 is expected to eq nil3072 utf-8 branch3073 is expected to eq "7e3e39ebb9b2bf433b4ad17313770fbe4051649c"3074 blank path3075 is expected to eq nil3076 file in subdir3077 is expected to eq "7e3e39ebb9b2bf433b4ad17313770fbe4051649c"3078 is expected to eq "popen.rb"3079 is expected to eq "files/ruby/popen.rb"3080 is expected to eq "b83d6e391c22777fca1ed3012fce84f633d7fed0"3081 is expected to eq "require 'fi"3082 is expected to eq 6693083 is expected to eq "100644"3084 file in root3085 is expected to eq "dfaa3f97ca337e20154a98ac9d0be76ddd1fcc82"3086 is expected to eq ".gitignore"3087 is expected to eq ".gitignore"3088 is expected to eq "b83d6e391c22777fca1ed3012fce84f633d7fed0"3089 is expected to eq "*.rbc\n*.sas"3090 is expected to eq 2413091 is expected to eq "100644"3092 is expected not to be binary in repo3093 file in root with leading slash3094 is expected to eq "dfaa3f97ca337e20154a98ac9d0be76ddd1fcc82"3095 is expected to eq ".gitignore"3096 is expected to eq ".gitignore"3097 is expected to eq "b83d6e391c22777fca1ed3012fce84f633d7fed0"3098 is expected to eq "*.rbc\n*.sas"3099 is expected to eq 2413100 is expected to eq "100644"3101 non-exist file3102 is expected to be nil3103 six submodule3104 is expected to eq "409f37c4f05865e4fb208c771485f211a22c4c2d"3105 is expected to eq ""3106 does not get messed up by load_all_data!3107 does not mark the blob as binary3108 large file3109 is expected to eq 1118033110 is expected to eq 10003111 check that this test is sane3112 can load all data3113 marks the blob as binary3114 .raw3115 is expected to eq "7e3e39ebb9b2bf433b4ad17313770fbe4051649c"3116 is expected to eq "require 'fi"3117 is expected to eq 6693118 is expected to be falsey3119 is expected to be nil3120 .batch3121 is expected to eq 23122 first blob3123 is expected to eq "7e3e39ebb9b2bf433b4ad17313770fbe4051649c"3124 is expected to eq "popen.rb"3125 is expected to eq "files/ruby/popen.rb"3126 is expected to eq "b83d6e391c22777fca1ed3012fce84f633d7fed0"3127 is expected to eq "require 'fi"3128 is expected to eq 6693129 is expected to eq "100644"3130 second blob3131 is expected to eq "409f37c4f05865e4fb208c771485f211a22c4c2d"3132 is expected to eq ""3133 does not mark the blob as binary3134 limiting3135 positive3136 is expected to eq 103137 zero3138 only loads the metadata3139 negative3140 ignores MAX_DATA_DISPLAY_SIZE3141 when large number of blobs requested3142 fetches the blobs in batches3143 .batch_metadata3144 returns an empty data attribute3145 .batch_lfs_pointers3146 returns a list of Gitlab::Git::Blob3147 accepts blob IDs as a lazy enumerator3148 handles empty list of IDs gracefully3149 silently ignores non lfs objects3150 avoids loading large blobs into memory3151 encoding3152 file with russian text3153 has the correct blob attributes3154 file with Japanese text3155 has the correct blob attributes3156 file with ISO-8859 text3157 has the correct blob attributes3158 mode3159 file regular3160 is expected to eq "regex.rb"3161 is expected to eq "files/ruby/regex.rb"3162 is expected to eq 12003163 is expected to eq "100644"3164 file binary3165 is expected to eq "ls"3166 is expected to eq "files/executables/ls"3167 is expected to eq 233168 is expected to eq "100755"3169 file symlink to regular3170 is expected to eq "symlink"3171 is expected to eq "symlink"3172 is expected to eq 63173 is expected to eq "120000"3174 lfs_pointers3175 file a valid lfs pointer3176 is expected to eq true3177 is expected to eq "96f74c6fe7a2979eefb9ec74a5dfc6888fb25543cf99b77586b79afea1da6f97"3178 is expected to eq 12196963179 is expected to eq "ff0ab3afd1616ff78d0331865d922df103b64cf0"3180 is expected to eq "emoji.png"3181 is expected to eq "files/images/emoji.png"3182 is expected to eq 1323183 is expected to eq "100644"3184 #load_all_data!3185 loads missing data3186 with a fully loaded blob3187 doesn't perform any loading3188 #truncated?3189 when blob.size is nil3190 returns false3191 when blob.data is missing3192 returns false3193 when the blob is truncated3194 returns true3195 when the blob is untruncated3196 returns false3197 metrics3198 defines :gitlab_blob_truncated_true counter3199 defines :gitlab_blob_truncated_false counter3200 defines :gitlab_blob_size histogram3201 #lines3202 when the encoding cannot be detected3203 successfully splits the data3204AwardEmoji3205 Associations3206 is expected to belong to awardable required: false3207 is expected to belong to user required: false3208 modules3209 is expected to includes the Participable module3210 validations3211 is expected to validate that :awardable cannot be empty/falsy3212 is expected to validate that :user cannot be empty/falsy3213 is expected to validate that :name cannot be empty/falsy3214 scoped uniqueness validation3215 rejects duplicate award emoji3216 allows duplicate award emoji for ghost users3217 when importing3218 allows duplicate award emoji3219 custom emoji3220 is accepted on subgroup issue3221 is not supported on personal snippet (yet)3222 with issue3223 is accepted3224 with merge_request3225 is accepted3226 with note_on_issue3227 is accepted3228 with snippet3229 is accepted3230 scopes3231 .upvotes3232 is expected to contain exactly #<AwardEmoji id: 4, name: "thumbsup", user_id: 1091, awardable_type: "Issue", created_at: "2023-06-26 14:43:30.966653321 +0000", updated_at: "2023-06-26 14:43:30.966653321 +0000", awardable_id: 137>3233 .downvotes3234 is expected to contain exactly #<AwardEmoji id: 5, name: "thumbsdown", user_id: 1093, awardable_type: "Issue", created_at: "2023-06-...-26 14:43:31.531523314 +0000", updated_at: "2023-06-26 14:43:31.531523314 +0000", awardable_id: 138>3235 .named3236 is expected to contain exactly #<AwardEmoji id: 4, name: "thumbsup", user_id: 1091, awardable_type: "Issue", created_at: "2023-06-26 14:43:30.966653321 +0000", updated_at: "2023-06-26 14:43:30.966653321 +0000", awardable_id: 137>3237 is expected to contain exactly #<AwardEmoji id: 4, name: "thumbsup", user_id: 1091, awardable_type: "Issue", created_at: "2023-06-26 14:43:30.966653321 +0000", updated_at: "2023-06-26 14:43:30.966653321 +0000", awardable_id: 137> and #<AwardEmoji id: 5, name: "thumbsdown", user_id: 1093, awardable_type: "Issue", created_at: "2023-06-...-26 14:43:31.531523314 +0000", updated_at: "2023-06-26 14:43:31.531523314 +0000", awardable_id: 138>3238 .awarded_by3239 is expected to contain exactly #<AwardEmoji id: 4, name: "thumbsup", user_id: 1091, awardable_type: "Issue", created_at: "2023-06-26 14:43:30.966653321 +0000", updated_at: "2023-06-26 14:43:30.966653321 +0000", awardable_id: 137>3240 is expected to contain exactly #<AwardEmoji id: 4, name: "thumbsup", user_id: 1091, awardable_type: "Issue", created_at: "2023-06-26 14:43:30.966653321 +0000", updated_at: "2023-06-26 14:43:30.966653321 +0000", awardable_id: 137> and #<AwardEmoji id: 5, name: "thumbsdown", user_id: 1093, awardable_type: "Issue", created_at: "2023-06-...-26 14:43:31.531523314 +0000", updated_at: "2023-06-26 14:43:31.531523314 +0000", awardable_id: 138>3241 expiring ETag cache3242 on a note3243 calls expire_etag_cache on the note when saved3244 calls expire_etag_cache on the note when destroyed3245 on another awardable3246 does not call expire_etag_cache on the issue when saved3247 does not call expire_etag_cache on the issue when destroyed3248 bumping updated at3249 calls bump_updated_at on the note when saved3250 calls bump_updated_at on the note when destroyed3251 on another awardable3252 does not error out when saved3253 does not error out when destroy3254 .award_counts_for_user3255 returns the awarded emoji in descending order3256 limits the returned number of rows3257 updating upvotes_count3258 on an issue3259 updates upvotes_count on the issue when saved3260 updates upvotes_count on the issue when destroyed3261 on another awardable3262 does not update upvotes_count on the merge_request when saved3263 does not update upvotes_count on the merge_request when destroyed3264 #url3265 is nil for built-in emoji3266 is nil for unrecognized emoji3267 is set for custom emoji3268 feature flag disabled3269 does not query3270 #to_ability_name3271 returns correct ability name3272Gitlab::SSHPublicKey3273 .technology(name)3274 returns nil for an unrecognised name3275 name: :rsa3276 is expected to eq :rsa3277 is expected to eq :rsa3278 name: :dsa3279 is expected to eq :dsa3280 is expected to eq :dsa3281 name: :ecdsa3282 is expected to eq :ecdsa3283 is expected to eq :ecdsa3284 name: :ed255193285 is expected to eq :ed255193286 is expected to eq :ed255193287 name: :ecdsa_sk3288 is expected to eq :ecdsa_sk3289 is expected to eq :ecdsa_sk3290 name: :ed25519_sk3291 is expected to eq :ed25519_sk3292 is expected to eq :ed25519_sk3293 FIPS mode3294 name: :rsa3295 is expected to eq :rsa3296 is expected to eq :rsa3297 name: :ecdsa3298 is expected to eq :ecdsa3299 is expected to eq :ecdsa3300 name: :ed255193301 is expected to eq :ed255193302 is expected to eq :ed255193303 name: :ecdsa_sk3304 is expected to eq :ecdsa_sk3305 is expected to eq :ecdsa_sk3306 name: :ed25519_sk3307 is expected to eq :ed25519_sk3308 is expected to eq :ed25519_sk3309 .supported_types3310 returns array with the names of supported technologies3311 FIPS mode3312 returns array with the names of supported technologies3313 .supported_sizes(name)3314 name: :rsa, sizes: [1024, 2048, 3072, 4096]3315 is expected to eq [1024, 2048, 3072, 4096]3316 is expected to eq [1024, 2048, 3072, 4096]3317 name: :dsa, sizes: [1024, 2048, 3072]3318 is expected to eq [1024, 2048, 3072]3319 is expected to eq [1024, 2048, 3072]3320 name: :ecdsa, sizes: [256, 384, 521]3321 is expected to eq [256, 384, 521]3322 is expected to eq [256, 384, 521]3323 name: :ed25519, sizes: [256]3324 is expected to eq [256]3325 is expected to eq [256]3326 name: :ecdsa_sk, sizes: [256]3327 is expected to eq [256]3328 is expected to eq [256]3329 name: :ed25519_sk, sizes: [256]3330 is expected to eq [256]3331 is expected to eq [256]3332 FIPS mode3333 name: :rsa, sizes: [3072, 4096]3334 is expected to eq [3072, 4096]3335 is expected to eq [3072, 4096]3336 name: :dsa, sizes: []3337 is expected to eq []3338 is expected to eq []3339 name: :ecdsa, sizes: [256, 384, 521]3340 is expected to eq [256, 384, 521]3341 is expected to eq [256, 384, 521]3342 name: :ed25519, sizes: [256]3343 is expected to eq [256]3344 is expected to eq [256]3345 name: :ecdsa_sk, sizes: [256]3346 is expected to eq [256]3347 is expected to eq [256]3348 name: :ed25519_sk, sizes: [256]3349 is expected to eq [256]3350 is expected to eq [256]3351 .supported_algorithms3352 returns all supported algorithms3353 FIPS mode3354 returns all supported algorithms3355 .supported_algorithms_for_name3356 name: :rsa, algorithms: ["ssh-rsa"]3357 returns all supported algorithms for rsa3358 name: :dsa, algorithms: ["ssh-dss"]3359 returns all supported algorithms for dsa3360 name: :ecdsa, algorithms: ["ecdsa-sha2-nistp256", "ecdsa-sha2-nistp384", "ecdsa-sha2-nistp521"]3361 returns all supported algorithms for ecdsa3362 name: :ed25519, algorithms: ["ssh-ed25519"]3363 returns all supported algorithms for ed255193364 name: :ecdsa_sk, algorithms: ["sk-ecdsa-sha2-nistp256@openssh.com"]3365 returns all supported algorithms for ecdsa_sk3366 name: :ed25519_sk, algorithms: ["sk-ssh-ed25519@openssh.com"]3367 returns all supported algorithms for ed25519_sk3368 FIPS mode3369 name: :rsa, algorithms: ["ssh-rsa"]3370 returns all supported algorithms for rsa3371 name: :dsa, algorithms: ["ssh-dss"]3372 returns all supported algorithms for dsa3373 name: :ecdsa, algorithms: ["ecdsa-sha2-nistp256", "ecdsa-sha2-nistp384", "ecdsa-sha2-nistp521"]3374 returns all supported algorithms for ecdsa3375 name: :ed25519, algorithms: ["ssh-ed25519"]3376 returns all supported algorithms for ed255193377 name: :ecdsa_sk, algorithms: ["sk-ecdsa-sha2-nistp256@openssh.com"]3378 returns all supported algorithms for ecdsa_sk3379 name: :ed25519_sk, algorithms: ["sk-ssh-ed25519@openssh.com"]3380 returns all supported algorithms for ed25519_sk3381 .sanitize(key_content)3382 when key has blank space characters3383 removes the extra blank space characters3384 when key doesn't have blank space characters3385 doesn't modify the content3386 when key is invalid3387 returns the original content3388 #valid?3389 with a valid SSH key3390 factory: :rsa_key_20483391 is expected to be valid3392 when key begins with options3393 is expected to be valid3394 when key is in known_hosts format3395 when key begins with 'example.com'3396 is expected to be valid3397 when key begins with '@revoked other.example.com'3398 is expected to be valid3399 factory: :rsa_key_40963400 is expected to be valid3401 when key begins with options3402 is expected to be valid3403 when key is in known_hosts format3404 when key begins with 'example.com'3405 is expected to be valid3406 when key begins with '@revoked other.example.com'3407 is expected to be valid3408 factory: :rsa_key_51203409 is expected to be valid3410 when key begins with options3411 is expected to be valid3412 when key is in known_hosts format3413 when key begins with 'example.com'3414 is expected to be valid3415 when key begins with '@revoked other.example.com'3416 is expected to be valid3417 factory: :rsa_key_81923418 is expected to be valid3419 when key begins with options3420 is expected to be valid3421 when key is in known_hosts format3422 when key begins with 'example.com'3423 is expected to be valid3424 when key begins with '@revoked other.example.com'3425 is expected to be valid3426 factory: :dsa_key_20483427 is expected to be valid3428 when key begins with options3429 is expected to be valid3430 when key is in known_hosts format3431 when key begins with 'example.com'3432 is expected to be valid3433 when key begins with '@revoked other.example.com'3434 is expected to be valid3435 factory: :ecdsa_key_2563436 is expected to be valid3437 when key begins with options3438 is expected to be valid3439 when key is in known_hosts format3440 when key begins with 'example.com'3441 is expected to be valid3442 when key begins with '@revoked other.example.com'3443 is expected to be valid3444 factory: :ed25519_key_2563445 is expected to be valid3446 when key begins with options3447 is expected to be valid3448 when key is in known_hosts format3449 when key begins with 'example.com'3450 is expected to be valid3451 when key begins with '@revoked other.example.com'3452 is expected to be valid3453 factory: :ecdsa_sk_key_2563454 is expected to be valid3455 when key begins with options3456 is expected to be valid3457 when key is in known_hosts format3458 when key begins with 'example.com'3459 is expected to be valid3460 when key begins with '@revoked other.example.com'3461 is expected to be valid3462 factory: :ed25519_sk_key_2563463 is expected to be valid3464 when key begins with options3465 is expected to be valid3466 when key is in known_hosts format3467 when key begins with 'example.com'3468 is expected to be valid3469 when key begins with '@revoked other.example.com'3470 is expected to be valid3471 with an invalid SSH key3472 is expected not to be valid3473 when an unsupported SSH key algorithm3474 is expected not to be valid3475 #type3476 factory: :rsa_key_2048, type: :rsa3477 is expected to eq :rsa3478 factory: :dsa_key_2048, type: :dsa3479 is expected to eq :dsa3480 factory: :ecdsa_key_256, type: :ecdsa3481 is expected to eq :ecdsa3482 factory: :ed25519_key_256, type: :ed255193483 is expected to eq :ed255193484 factory: :ecdsa_sk_key_256, type: :ecdsa_sk3485 is expected to eq :ecdsa_sk3486 factory: :ed25519_sk_key_256, type: :ed25519_sk3487 is expected to eq :ed25519_sk3488 with an invalid SSH key3489 is expected to be nil3490 when the key is represented by a class that is not in the list of supported technologies3491 raises error3492 when the key is represented by a subclass of the class that is in the list of supported technologies3493 raises error3494 #bits3495 factory: :rsa_key_2048, bits: 20483496 is expected to eq 20483497 factory: :rsa_key_4096, bits: 40963498 is expected to eq 40963499 factory: :rsa_key_5120, bits: 51203500 is expected to eq 51203501 factory: :rsa_key_8192, bits: 81923502 is expected to eq 81923503 factory: :dsa_key_2048, bits: 20483504 is expected to eq 20483505 factory: :ecdsa_key_256, bits: 2563506 is expected to eq 2563507 factory: :ed25519_key_256, bits: 2563508 is expected to eq 2563509 factory: :ecdsa_sk_key_256, bits: 2563510 is expected to eq 2563511 factory: :ed25519_sk_key_256, bits: 2563512 is expected to eq 2563513 with an invalid SSH key3514 is expected to be nil3515 when the key is represented by a class that is not in the list of supported technologies3516 raises error3517 when the key is represented by a subclass of the class that is in the list of supported technologies3518 raises error3519 #banned?3520 key: "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAwRIdDlHaIqZXND/l1vFT7ue3rc/DvXh2yx5EFtuxGQRHVxGMazDhV4vj5ANGXDQwUYI0iZh6aOVrDy8I/y9/y+YDGCvsnqrDbuPDjW26s2bBXWgUPiC93T3TA6L2KOxhVcl7mljEOIYACRHPpJNYVGhinCxDUH9LxMrdNXgP5Ok= mateidu@localhost"3521 is expected to equal true3522 key: "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIBnZQ+6nhlPX/JnX5i5hXpljJ89bSnnrsSs51hSPuoJGmoKowBddISK7s10AIpO0xAWGcr8PUr2FOjEBbDHqlRxoXF0Ocms9xv3ql9EYUQ5+U+M6BymWhNTFPOs6gFHUl8Bw3t6c+SRKBpfRFB0yzBj9d093gSdfTAFoz+yLo4vRw=="3523 is expected to equal true3524 key: "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAvIhC5skTzxyHif/7iy3yhxuK6/OB13hjPqrskogkYFrcW8OK4VJT+5+Fx7wd4sQCnVn8rNqahw/x6sfcOMDI/Xvn4yKU4t8TnYf2MpUVr4ndz39L5Ds1n7Si1m2suUNxWbKv58I8+NMhlt2ITraSuTU0NGymWOc8+LNi+MHXdLk= SCCP Superuser"3525 is expected to equal true3526 key: "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== vagrant insecure public key"3527 is expected to equal true3528 key: "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAwRIdDlHaIqZXND/l1vFT7ue3rc/DvXh2yx5EFtuxGQRHVxGMazDhV4vj5ANGXDQwUYI0iZh6aOVrDy8I/y9/y+YDGCvsnqrDbuPDjW26s2bBXWgUPiC93T3TA6L2KOxhVcl7mljEOIYACRHPpJNYVGhinCxDUH9LxMrdNXgP5Ok= mateidu@localhost"3529 is expected to equal true3530 key: "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAn8LoId2N5i28cNKuEWWea3yt0I/LdT/NROrF44WZewtxch+DIwteQhM1qL6EKUSqz3Q2geX1crpOsNnyh67xy5lNo086u/QewOCSRAUGrQCXqFQ4JU8ny/qugWALQHjbIaPHj/3zMK09r4cpTSeAU7CW5nQyTKGmh7v9CAfWfcs= adam@localhost.localdomain"3531 is expected to equal true3532 key: "ssh-dss AAAAB3NzaC1kc3MAAACBAJTDsX+8olPZeyr58g9XE0L8PKT5030NZBPlE7np4hBqx36HoWarWq1Csn8M57dWN9StKbs03k2ggY6sYJK5AW2EWar70um3pYjKQHiZq7mITmitsozFN/K7wu2e2iKRgquUwH5SuYoOJ29n7uhaILXiKZP4/H/dDudqPRSY6tJPAAAAFQDtuWH90mDbU2L/Ms2lfl/cja/wHwAAAIAMBwSHZt2ysOHCFe1WLUvdwVDHUqk3QHTskuuAnMlwMtSvCaUxSatdHahsMZ9VCHjoQUx6j+TcgRLDbMlRLnwUlb6wpniehLBFk+qakGcREqks5NxYzFTJXwROzP72jPvVgQyOZHWq81gCild/ljL7hmrduCqYwxDIz4o7U92UKQAAAIBmhSl9CVPgVMv1xO8DAHVhM1huIIK8mNFrzMJz+JXzBx81ms1kWSeQOC/nraaXFTBlqiQsvB8tzr4xZdbaI/QzVLKNAF5C8BJ4ScNlTIx1aZJwyMil8Nzb+0YAsw5Ja+bEZZvEVlAYnd10qRWrPeEY1txLMmX3wDa+JvJL7fmuBg=="3533 is expected to equal true3534 key: "ssh-dss AAAAB3NzaC1kc3MAAACBAMq5EcIFdfCjJakyQnP/BBp9oc6mpaZVguf0Znp5C40twiG1lASQJZlM1qOB/hkBWYeBCHUkcOLEnVXSZzB62L+W/LGKodqnsiQPRr57AA6jPc6mNBnejHai8cSdAl9n/0s2IQjdcrxM8CPq2uEyfm0J3AV6Lrbbxr5NgE5xxM+DAAAAFQCmFk/M7Rx2jexsJ9COpHkHwUjcNQAAAIAdg18oByp/tjjDKhWhmmv+HbVIROkRqSxBvuEZEmcWlg38mLIT1bydfpSou/V4rI5ctxwCfJ1rRr66pw6GwCrz4fXmyVlhrj7TrktyQ9+zRXhynF4wdNPWErhNHb8tGlSOFiOBcUTlouX3V/ka6Dkd6ZQrZLQFaH+gjfyTZZ82HQAAAIEArsJgp7RLPOsCeLqoia/eljseBFVDazO5Q0ysUotTw9wgXGGVWREwm8wNggFNb9eCiBAAUfVZVfhVAtFT0pBf/eIVLPXyaMw3prBt7LqeBrbagODc3WAAdMTPIdYYcOKgv+YvTXa51zG64v6pQOfS8WXgKCzDl44puXfYeDk5lVQ="3535 is expected to equal true3536 key: "ssh-dss AAAAB3NzaC1kc3MAAACBAKwKBw7D4OA1H/uD4htdh04TBIHdbSjeXUSnWJsce8C0tvoB01Yarjv9TFj+tfeDYVWtUK1DA1JkyqSuoAtDANJzF4I6Isyd0KPrW3dHFTcg6Xlz8d3KEaHokY93NOmB/xWEkhme8b7Q0U2iZie2pgWbTLXV0FA+lhskTtPHW3+VAAAAFQDRyayUlVZKXEweF3bUe03zt9e8VQAAAIAEPK1k3Y6ErAbIl96dnUCnZjuWQ7xXy062pf63QuRWI6LYSscm3f1pEknWUNFr/erQ02pkfi2eP9uHl1TI1ql+UmJX3g3frfssLNZwWXAW0m8PbY3HZSs+f5hevM3ua32pnKDmbQ2WpvKNyycKHi81hSI14xMcdblJolhN5iY8/wAAAIAjEe5+0m/TlBtVkqQbUit+s/g+eB+PFQ+raaQdL1uztW3etntXAPH1MjxsAC/vthWYSTYXORkDFMhrO5ssE2rfg9io0NDyTIZt+VRQMGdi++dH8ptU+ldl2ZejLFdTJFwFgcfXz+iQ1mx6h9TPX1crE1KoMAVOj3yKVfKpLB1EkA== root@lbslave"3537 is expected to equal true3538 key: "ssh-dss AAAAB3NzaC1kc3MAAACBAN3AITryJMQyOKZjAky+mQ/8pOHIlu4q8pzmR0qotKaLm2yye5a0PY2rOaQRAzi7EPheBXbqTb8a8TrHhGXI5P7GUHaJho5HhEnw+5TwAvP72L7LcPwxMxj/rLcR/jV+uLMsVeJVWjwJcUv83yzPXoVjK0hrIm+RLLeuTM+gTylHAAAAFQD5gBdXsXAiTz1atzMg3xDFF1zlowAAAIAlLy6TCMlOBM0IcPsvP/9bEjDj0M8YZazdqt4amO2IaNUPYt9/sIsLOQfxIj8myDK1TOp8NyRJep7V5aICG4f3Q+XktlmLzdWn3sjvbWuIAXe1opjG2T69YhxfHZr8Wn7P4tpCgyqM4uHmUKrfnBzQQ9vkUUWsZoUXM2Z7vUXVfQAAAIAU6eNlphQWDwx0KOBiiYhF9BM6kDbQlyw8333rAG3G4CcjI2G8eYGtpBNliaD185UjCEsjPiudhGil/j4Zt/+VY3aGOLoi8kqXBBc8ZAML9bbkXpyhQhMgwiywx3ciFmvSn2UAin8yurStYPQxtXauZN5PYbdwCHPS7ApIStdpMA== wood@endec1"3539 is expected to equal true3540 key: "ssh-dss AAAAB3NzaC1kc3MAAACBAISAE3CAX4hsxTw0dRc0gx8nQ41r3Vkj9OmG6LGeKWRmpy7C6vaExuupjxid76fd4aS56lCUEEoRlJ3zE93qoK9acI6EGqGQFLuDZ0fqMyRSX+ilf+1HDo/TRyuraggxp9Hj9LMpZVbpFATMm0+d9Xs7eLmaJjuMsowNlOf8NFdHAAAAFQCwdvqOAkR6QhuiAapQ/9iVuR0UAQAAAIBpLMo4dhSeWkChfv659WLPftxRrX/HR8YMD/jqa3R4PsVM2g6dQ1191nHugtdV7uaMeOqOJ/QRWeYM+UYwT0Zgx2LqvgVSjNDfdjk+ZRY8x3SmExFi62mKFoTGSOCXfcAfuanjaoF+sepnaiLUd+SoJShGYHoqR2QWiysTRqknlwAAAIBLEgYmr9XCSqjENFDVQPFELYKT7Zs9J87PjPS1AP0qF1OoRGZ5mefK6X/6VivPAUWmmmev/BuAs8M1HtfGeGGzMzDIiU/WZQ3bScLB1Ykrcjk7TOFD6xrnk/inYAp5l29hjidoAONcXoHmUAMYOKqn63Q2AsDpExVcmfj99/BlpQ=="3541 is expected to equal true3542 with a valid SSH key3543 is expected to equal false3544 with an invalid SSH key3545 is expected to equal false3546 #fingerprint3547 factory: :rsa_key_2048, fingerprint: "58:a8:9d:cd:1f:70:f8:5a:d9:e4:24:8e:da:89:e4:fc"3548 is expected to eq "58:a8:9d:cd:1f:70:f8:5a:d9:e4:24:8e:da:89:e4:fc"3549 factory: :rsa_key_4096, fingerprint: "df:73:db:29:3c:a5:32:cf:09:17:7e:8e:9d:de:d7:f7"3550 is expected to eq "df:73:db:29:3c:a5:32:cf:09:17:7e:8e:9d:de:d7:f7"3551 factory: :rsa_key_5120, fingerprint: "fe:fa:3a:4d:7d:51:ec:bf:c7:64:0c:96:d0:17:8a:d0"3552 is expected to eq "fe:fa:3a:4d:7d:51:ec:bf:c7:64:0c:96:d0:17:8a:d0"3553 factory: :rsa_key_8192, fingerprint: "fb:53:7f:e9:2f:f7:17:aa:c8:32:52:06:8e:05:e2:82"3554 is expected to eq "fb:53:7f:e9:2f:f7:17:aa:c8:32:52:06:8e:05:e2:82"3555 factory: :dsa_key_2048, fingerprint: "c8:85:1e:df:44:0f:20:00:3c:66:57:2b:21:10:5a:27"3556 is expected to eq "c8:85:1e:df:44:0f:20:00:3c:66:57:2b:21:10:5a:27"3557 factory: :ecdsa_key_256, fingerprint: "67:a3:a9:7d:b8:e1:15:d4:80:40:21:34:bb:ed:97:38"3558 is expected to eq "67:a3:a9:7d:b8:e1:15:d4:80:40:21:34:bb:ed:97:38"3559 factory: :ed25519_key_256, fingerprint: "e6:eb:45:8a:3c:59:35:5f:e9:5b:80:12:be:7e:22:73"3560 is expected to eq "e6:eb:45:8a:3c:59:35:5f:e9:5b:80:12:be:7e:22:73"3561 factory: :ecdsa_sk_key_256, fingerprint: "56:b9:bc:99:3d:2f:cf:63:6b:70:d8:f9:40:7e:09:4c"3562 is expected to eq "56:b9:bc:99:3d:2f:cf:63:6b:70:d8:f9:40:7e:09:4c"3563 factory: :ed25519_sk_key_256, fingerprint: "f9:a0:64:0b:4b:72:72:0e:62:92:d7:04:14:74:1c:c9"3564 is expected to eq "f9:a0:64:0b:4b:72:72:0e:62:92:d7:04:14:74:1c:c9"3565 with an invalid SSH key3566 is expected to be nil3567 #fingerprint_sha2563568 factory: :rsa_key_2048, fingerprint_sha256: "SHA256:GdtgO0eHbwLB+mK47zblkoXujkqKRZjgMQrHH6Kks3E"3569 is expected to eq "SHA256:GdtgO0eHbwLB+mK47zblkoXujkqKRZjgMQrHH6Kks3E"3570 factory: :rsa_key_4096, fingerprint_sha256: "SHA256:ByDU7hQ1JB95l6p53rHrffc4eXvEtqGUtQhS+Dhyy7g"3571 is expected to eq "SHA256:ByDU7hQ1JB95l6p53rHrffc4eXvEtqGUtQhS+Dhyy7g"3572 factory: :rsa_key_5120, fingerprint_sha256: "SHA256:PCCupLbFHScm4AbEufbGDvhBU27IM0MVAor715qKQK8"3573 is expected to eq "SHA256:PCCupLbFHScm4AbEufbGDvhBU27IM0MVAor715qKQK8"3574 factory: :rsa_key_8192, fingerprint_sha256: "SHA256:CtHFQAS+9Hb8z4vrv4gVQPsHjNN0WIZhWODaB1mQLs4"3575 is expected to eq "SHA256:CtHFQAS+9Hb8z4vrv4gVQPsHjNN0WIZhWODaB1mQLs4"3576 factory: :dsa_key_2048, fingerprint_sha256: "SHA256:+a3DQ7cU5GM+gaYOfmc0VWNnykHQSuth3VRcCpWuYNI"3577 is expected to eq "SHA256:+a3DQ7cU5GM+gaYOfmc0VWNnykHQSuth3VRcCpWuYNI"3578 factory: :ecdsa_key_256, fingerprint_sha256: "SHA256:C+I5k3D+IGeM6k5iBR1ZsphqTKV+7uvL/XZ5hcrTr7g"3579 is expected to eq "SHA256:C+I5k3D+IGeM6k5iBR1ZsphqTKV+7uvL/XZ5hcrTr7g"3580 factory: :ed25519_key_256, fingerprint_sha256: "SHA256:DCKAjzxWrdOTjaGKBBjtCW8qY5++GaiAJflrHPmp6W0"3581 is expected to eq "SHA256:DCKAjzxWrdOTjaGKBBjtCW8qY5++GaiAJflrHPmp6W0"3582 factory: :ecdsa_sk_key_256, fingerprint_sha256: "SHA256:N0sNKBgWKK8usPuPegtgzHQQA9vQ/dRhAEhwFDAnLA4"3583 is expected to eq "SHA256:N0sNKBgWKK8usPuPegtgzHQQA9vQ/dRhAEhwFDAnLA4"3584 factory: :ed25519_sk_key_256, fingerprint_sha256: "SHA256:U8IKRkIHed6vFMTflwweA3HhIf2DWgZ8EFTm9fgwOUk"3585 is expected to eq "SHA256:U8IKRkIHed6vFMTflwweA3HhIf2DWgZ8EFTm9fgwOUk"3586 with an invalid SSH key3587 is expected to be nil3588 #key_text3589 key_value: "this is not a key"3590 carries the unmodified key data3591 key_value: nil3592 carries the unmodified key data3593AvatarUploader3594 behaves like builds correct paths3595 #store_dir3596 behaves like matches the method pattern3597 is expected to match /uploads\/-\/system\/user\/avatar\//3598 #cache_dir3599 behaves like matches the method pattern3600 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3601 #work_dir3602 behaves like matches the method pattern3603 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3604 #upload_path3605 behaves like matches the method pattern3606 is expected to match /uploads\/-\/system\/user\/avatar\//3607 #relative_path3608 is relative (PENDING: Path not set, skipping.)3609 .absolute_path3610 behaves like matches the method pattern3611 is expected to match /\/builds\/gitlab-org\/gitlab\/tmp\/tests\/public\/uploads\/-\/system\/user\/avatar\//3612 .base_dir3613 behaves like matches the method pattern3614 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3615 path traversal exploits3616 throws an exception3617 object_store is REMOTE3618 behaves like builds correct paths3619 #store_dir3620 behaves like matches the method pattern3621 is expected to match /user\/avatar\//3622 #cache_dir3623 behaves like matches the method pattern3624 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3625 #work_dir3626 behaves like matches the method pattern3627 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3628 #upload_path3629 behaves like matches the method pattern3630 is expected to match /user\/avatar\//3631 #relative_path3632 is relative (PENDING: Path not set, skipping.)3633 .absolute_path3634 behaves like matches the method pattern3635 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3636 .base_dir3637 behaves like matches the method pattern3638 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3639 path traversal exploits3640 throws an exception3641 with a file3642 sets the right absolute path3643 behaves like migrates3644 returns corresponding file type3645 does nothing when migrating to the current store3646 migrate to the specified store3647 removes the original file after the migration3648 can access to the original file during migration3649 when migrate! is not occupied by another process3650 executes migrate!3651 executes use_file3652 when migrate! is occupied by another process3653 does not execute migrate!3654 does not execute use_file3655 migration is unsuccessful3656 when the store is not supported3657 does not update the object_store3658 does not delete the original file3659 upon a fog failure3660 does not update the object_store3661 does not delete the original file3662 upon a database failure3663 does not update the object_store3664 does not delete the original file3665 behaves like migrates3666 returns corresponding file type3667 does nothing when migrating to the current store3668 migrate to the specified store3669 removes the original file after the migration3670 can access to the original file during migration3671 when migrate! is not occupied by another process3672 executes migrate!3673 executes use_file3674 when migrate! is occupied by another process3675 does not execute migrate!3676 does not execute use_file3677 migration is unsuccessful3678 when the store is not supported3679 does not update the object_store3680 does not delete the original file3681 upon a fog failure3682 does not update the object_store3683 does not delete the original file3684 upon a database failure3685 does not update the object_store3686 does not delete the original file3687 accept whitelist file content type3688 mime_type: "image/png"3689 behaves like accepted carrierwave upload3690 will accept upload3691 will cache uploaded file3692 mime_type: "image/jpeg"3693 behaves like accepted carrierwave upload3694 will accept upload3695 will cache uploaded file3696 mime_type: "image/gif"3697 behaves like accepted carrierwave upload3698 will accept upload3699 will cache uploaded file3700 mime_type: "image/bmp"3701 behaves like accepted carrierwave upload3702 will accept upload3703 will cache uploaded file3704 mime_type: "image/tiff"3705 behaves like accepted carrierwave upload3706 will accept upload3707 will cache uploaded file3708 mime_type: "image/vnd.microsoft.icon"3709 behaves like accepted carrierwave upload3710 will accept upload3711 will cache uploaded file3712 upload non-whitelisted file content type3713 behaves like denied carrierwave upload3714 will deny upload3715 upload misnamed non-whitelisted file content type3716 behaves like denied carrierwave upload3717 will deny upload3718Gitlab::GitalyClient3719 .query_time3720 increments query times3721 .long_timeout3722 default case3723 is expected to eq 6 hours3724 running in Puma3725 is expected to eq 553726 .filesystem_id_from_disk3727 catches errors3728 .filesystem_id3729 returns an empty string when the relevant storage status is not found in the response3730 when the relevant storage status is not found3731 .filesystem_disk_available3732 returns nil when the relevant storage status is not found in the response3733 .filesystem_disk_used3734 returns nil when the relevant storage status is not found in the response3735 when the relevant storage status is found3736 .filesystem_disk_available3737 returns disk available when the relevant storage status is found in the response3738 .filesystem_disk_used3739 returns disk used when the relevant storage status is found in the response3740 .stub_class3741 returns the gRPC health check stub3742 returns a Gitaly stub3743 .stub_address3744 returns the same result after being called multiple times3745 .stub_creds3746 returns :this_channel_is_insecure if unix3747 returns :this_channel_is_insecure if tcp3748 returns :this_channel_is_insecure if dns3749 returns :this_channel_is_insecure if dns (short-form)3750 returns :this_channel_is_insecure if dns (with authority)3751 returns Credentials object if tls3752 raise an exception if the scheme is not supported3753 .create_channel3754 storage: "default", address: "unix:tmp/gitaly.sock", expected_target: "unix:tmp/gitaly.sock"3755 creates channel based on storage3756 caches channel based on storage3757 returns different channels for different storages3758 storage: "default", address: "tcp://localhost:9876", expected_target: "localhost:9876"3759 creates channel based on storage3760 caches channel based on storage3761 returns different channels for different storages3762 storage: "default", address: "tls://localhost:9876", expected_target: "localhost:9876"3763 creates channel based on storage3764 caches channel based on storage3765 returns different channels for different storages3766 storage: "default", address: "dns:///localhost:9876", expected_target: "dns:///localhost:9876"3767 creates channel based on storage3768 caches channel based on storage3769 returns different channels for different storages3770 storage: "default", address: "dns:localhost:9876", expected_target: "dns:localhost:9876"3771 creates channel based on storage3772 caches channel based on storage3773 returns different channels for different storages3774 storage: "default", address: "dns://1.1.1.1/localhost:9876", expected_target: "dns://1.1.1.1/localhost:9876"3775 creates channel based on storage3776 caches channel based on storage3777 returns different channels for different storages3778 .stub3779 when passed a UNIX socket address3780 passes the address as-is to GRPC3781 shares the same channel object with other stub3782 when passed a TLS address3783 strips tls:// prefix before passing it to GRPC::Core::Channel initializer3784 shares the same channel object with other stub3785 when passed a TCP address3786 strips tcp:// prefix before passing it to GRPC::Core::Channel initializer3787 shares the same channel object with other stub3788 when passed a DNS address3789 strips dns:/// prefix before passing it to GRPC::Core::Channel initializer3790 shares the same channel object with other stub3791 when passed an unsupported scheme3792 strips dns:/// prefix before passing it to GRPC::Core::Channel initializer3793 .can_use_disk?3794 properly caches a false result3795 .connection_data3796 returns connection data3797 allow_n_plus_1_calls3798 when RequestStore is enabled3799 returns the result of the allow_n_plus_1_calls block3800 when RequestStore is not active3801 returns the result of the allow_n_plus_1_calls block3802 .request_kwargs3803 sets the gitaly-session-id in the metadata3804 when RequestStore is not enabled3805 sets a different gitaly-session-id per request3806 when RequestStore is enabled3807 sets the same gitaly-session-id on every outgoing request metadata3808 server_feature_flags when RequestStore is activated3809 behaves like gitaly feature flags in metadata3810 evaluates Gitaly server feature flags3811 when there are actors3812 evaluates Gitaly server feature flags with actors3813 server_feature_flags when RequestStore is not activated3814 behaves like gitaly feature flags in metadata3815 evaluates Gitaly server feature flags3816 when there are actors3817 evaluates Gitaly server feature flags with actors3818 logging information in metadata3819 user is added to application context3820 injects username and user_id into gRPC metadata3821 user is not added to application context3822 does not inject username and user_id into gRPC metadata3823 remote_ip is added to application context3824 injects remote_ip into gRPC metadata3825 remote_ip is not added to application context3826 does not inject remote_ip into gRPC metadata3827 gitlab_git_env3828 when RequestStore is disabled3829 does not force-route to primary3830 when RequestStore is enabled without git_env3831 does not force-orute to primary3832 when RequestStore is enabled with empty git_env3833 disables force-routing to primary3834 when RequestStore is enabled with populated git_env3835 enables force-routing to primary3836 deadlines3837 includes the deadline information3838 limits the deadline do the request deadline if that is closer3839 does not limit calls in sidekiq3840 does not limit calls in sidekiq when allowed unlimited3841 includes only the deadline specified by the timeout when there was no deadline3842 enforce_gitaly_request_limits?3843 when RequestStore is enabled and the maximum number of calls is enforced by a feature flag3844 allows up the maximum number of allowed calls3845 allows the maximum number of calls to be exceeded if GITALY_DISABLE_REQUEST_LIMITS is set3846 allows the maximum number of calls to be exceeded within an allow_n_plus_1_calls block3847 when the maximum number of calls has been reached3848 fails on the next call3849 when the maximum number of calls has been reached within an allow_n_plus_1_calls block3850 allows up to the maximum number of calls outside of an allow_n_plus_1_calls block3851 does not allow the maximum number of calls to be exceeded outside of an allow_n_plus_1_calls block3852 when RequestStore is enabled and the maximum number of calls is not enforced by a feature flag3853 allows up the maximum number of allowed calls3854 allows the maximum number of calls to be exceeded if GITALY_DISABLE_REQUEST_LIMITS is set3855 allows the maximum number of calls to be exceeded within an allow_n_plus_1_calls block3856 when the maximum number of calls has been reached3857 fails on the next call3858 when the maximum number of calls has been reached within an allow_n_plus_1_calls block3859 allows up to the maximum number of calls outside of an allow_n_plus_1_calls block3860 does not allow the maximum number of calls to be exceeded outside of an allow_n_plus_1_calls block3861 in production and when RequestStore is enabled3862 when the maximum number of calls is enforced by a feature flag3863 does not allow the maximum number of calls to be exceeded3864 when the maximum number of calls is not enforced by a feature flag3865 allows the maximum number of calls to be exceeded3866 when RequestStore is not active3867 does not raise errors when the maximum number of allowed calls is exceeded3868 does not fail when the maximum number of calls is exceeded within an allow_n_plus_1_calls block3869 get_request_count3870 when RequestStore is enabled3871 when enforce_gitaly_request_limits is called outside of allow_n_plus_1_calls blocks3872 counts gitaly calls3873 when enforce_gitaly_request_limits is called inside and outside of allow_n_plus_1_calls blocks3874 counts gitaly calls3875 when reset_counts is called3876 resets counts3877 when RequestStore is not active3878 returns zero3879 timeouts3880 with default values3881 returns expected values3882 Peek Performance bar details3883 when the request store is active3884 records call details if a RPC is called3885 when no request store is active3886 records nothing3887 .decode_detailed_error3888 decodes a structured error3889 error: #<GRPC::BadStatus: 3:error message>, result: <Gitaly::InvalidRefFormatError: refs: []>3890 returns correct detailed error3891 error: #<GRPC::BadStatus: 3:error message>, result: nil3892 returns correct detailed error3893 error: #<StandardError: StandardError>, result: nil3894 returns correct detailed error3895 .with_feature_flag_actor3896 when RequestStore is activated3897 behaves like with_feature_flag_actor3898 allows access to feature flag actors inside the block3899 when RequestStore is not activated3900 behaves like with_feature_flag_actor3901 allows access to feature flag actors inside the block3902DesignManagement::CopyDesignCollection::CopyService3903 returns an error response3904 when user has permission to read the design collection3905 returns an error response3906 when the user also has permission to admin the target issue3907 returns an error response3908 when the target design collection has been queued3909 returns an error response3910 when design collection has designs3911 returns a success response3912 creates a design repository for the target project3913 copies the designs correctly3914 copies the design versions correctly3915 copies the design actions correctly3916 copies design notes correctly3917 links the LfsObjects3918 copies the Git repository data3919 creates a default branch if none previously existed3920 does not create default branch when one exists3921 leaves the design collection in the correct copy state3922 when target issue already has designs3923 returns an error response3924 when target project already has designs3925 sets IIDs for new designs above existing ones3926 does not allow for IID collisions3927 when the target project already has a design repository3928 returns a success response3929 rollback3930 returns an error response3931 rollsback all PostgreSQL data created3932 does not alter master branch3933 sets the design collection copy state3934 Alert if schema changes3935 is expected to contain exactly "id", "project_id", "issue_id", "filename", "relative_position", "iid", "cached_markdown_version", "description", and "description_html"3936 is expected to contain exactly "id", "design_id", "version_id", "event", and "image_v432x230"3937 is expected to contain exactly "id", "sha", "issue_id", "created_at", and "author_id"3938Mutations::MergeRequests::SetLocked3939 is expected to require graphql authorizations :update_merge_request3940 #resolve3941 behaves like permission level for merge request mutation is correctly verified3942 when the user is not a project member3943 behaves like when the user does not have access to the resource3944 raises an error3945 even if assigned to the merge request3946 does not modify merge request3947 even if reviewer of the merge request3948 raises an error3949 even if author of the merge request3950 raises an error3951 when the user is a project member3952 with guest role3953 behaves like when the user does not have access to the resource3954 raises an error3955 even if assigned to the merge request3956 does not modify merge request3957 even if reviewer of the merge request3958 raises an error3959 even if author of the merge request3960 raises an error3961 with reporter role3962 behaves like when the user does not have access to the resource3963 raises an error3964 even if assigned to the merge request3965 does not modify merge request3966 even if reviewer of the merge request3967 raises an error3968 even if author of the merge request3969 raises an error3970 when the user can update the merge request3971 returns the merge request as discussion locked3972 returns errors merge request could not be updated3973 when passing locked as false3974 unlocks the discussion3975AlertManagement::Alert3976 associations3977 is expected to belong to project required: false3978 is expected to belong to issue optional: true3979 is expected to belong to prometheus_alert optional: true3980 is expected to belong to environment optional: true3981 is expected to have many assignees through alert_assignees3982 is expected to have many notes inverse_of => noteable3983 is expected to have many ordered_notes class_name => Note inverse_of => noteable3984 is expected to have many user_mentions class_name => AlertManagement::AlertUserMention inverse_of => alert3985 validations3986 is expected to validate that :title cannot be empty/falsy3987 is expected to validate that :events cannot be empty/falsy3988 is expected to validate that :severity cannot be empty/falsy3989 is expected to validate that :status cannot be empty/falsy3990 is expected to validate that :started_at cannot be empty/falsy3991 is expected to validate that the length of :title is at most 2003992 is expected to validate that the length of :description is at most 10003993 is expected to validate that the length of :service is at most 1003994 is expected to validate that the length of :monitoring_tool is at most 1003995 fingerprint3996 adding an alert with the same fingerprint3997 same project, various states3998 existing_status_event: :resolve, new_status: :triggered, valid: true3999 is expected to be valid4000 existing_status_event: :resolve, new_status: :acknowledged, valid: true4001 is expected to be valid4002 existing_status_event: :resolve, new_status: :ignored, valid: true4003 is expected to be valid4004 existing_status_event: :resolve, new_status: :resolved, valid: true4005 is expected to be valid4006 existing_status_event: :trigger, new_status: :triggered, valid: false4007 is expected to be invalid4008 existing_status_event: :trigger, new_status: :acknowledged, valid: false4009 is expected to be invalid4010 existing_status_event: :trigger, new_status: :ignored, valid: false4011 is expected to be invalid4012 existing_status_event: :trigger, new_status: :resolved, valid: true4013 is expected to be valid4014 existing_status_event: :acknowledge, new_status: :triggered, valid: false4015 is expected to be invalid4016 existing_status_event: :acknowledge, new_status: :acknowledged, valid: false4017 is expected to be invalid4018 existing_status_event: :acknowledge, new_status: :ignored, valid: false4019 is expected to be invalid4020 existing_status_event: :acknowledge, new_status: :resolved, valid: true4021 is expected to be valid4022 existing_status_event: :ignore, new_status: :triggered, valid: false4023 is expected to be invalid4024 existing_status_event: :ignore, new_status: :acknowledged, valid: false4025 is expected to be invalid4026 existing_status_event: :ignore, new_status: :ignored, valid: false4027 is expected to be invalid4028 existing_status_event: :ignore, new_status: :resolved, valid: true4029 is expected to be valid4030 different project4031 is expected to be valid4032 hosts4033 over 255 total chars4034 is expected not to be valid4035 under 255 chars4036 is expected to be valid4037 nested array4038 is expected not to be valid4039 enums4040 is expected to define :severity as an enum backed by an integer with values ‹{critical: 0, high: 1, medium: 2, low: 3, info: 4, unknown: 5}›4041 scopes4042 .for_iid4043 is expected to contain exactly #<AlertManagement::Alert id:1 namespace922/project-926^alert#1>4044 .for_fingerprint4045 is expected to contain exactly #<AlertManagement::Alert id:1 namespace922/project-926^alert#1>4046 .for_environment4047 is expected to contain exactly #<AlertManagement::Alert id:1 namespace922/project-926^alert#1>4048 .for_assignee_username4049 when matching assignee_username4050 is expected to contain exactly #<AlertManagement::Alert id:1 namespace922/project-926^alert#1>4051 when unknown assignee_username4052 is expected to be empty4053 with empty assignee_username4054 is expected to be empty4055 .order_severity_with_open_prometheus_alert4056 is expected to eq [#<AlertManagement::Alert id:8 namespace925/project-929^alert#2>, #<AlertManagement::Alert id:9 namespace925/project-929^alert#3>]4057 .counts_by_project_id4058 is expected to eq {844=>2, 845=>2}4059 .not_resolved4060 is expected to contain exactly #<AlertManagement::Alert id:2 namespace922/project-926^alert#2>, #<AlertManagement::Alert id:1 namespace922/project-926^alert#1>, and #<AlertManagement::Alert id:4 namespace923/project-927^alert#2>4061 behaves like a model including Escalatable4062 validations4063 is expected to validate that :status cannot be empty/falsy4064 when status is triggered4065 when resolved_at is blank4066 is expected to be valid4067 when resolved_at is present4068 is expected to be invalid4069 when status is acknowledged4070 when resolved_at is blank4071 is expected to be valid4072 when resolved_at is present4073 is expected to be invalid4074 when status is resolved4075 when resolved_at is blank4076 is expected to be invalid4077 when resolved_at is present4078 is expected to be valid4079 when status is ignored4080 when resolved_at is blank4081 is expected to be valid4082 when resolved_at is present4083 is expected to be invalid4084 scopes4085 .order_status4086 descending4087 is expected to eq [#<AlertManagement::Alert id:10 namespace926/project-930^alert#1>, #<AlertManagement::Alert id:11 nam...namespace928/project-932^alert#1>, #<AlertManagement::Alert id:13 namespace929/project-933^alert#1>]4088 ascending4089 is expected to eq [#<AlertManagement::Alert id:13 namespace929/project-933^alert#1>, #<AlertManagement::Alert id:12 nam...namespace927/project-931^alert#1>, #<AlertManagement::Alert id:10 namespace926/project-930^alert#1>]4090 .open4091 is expected to contain exactly #<AlertManagement::Alert id:11 namespace927/project-931^alert#1> and #<AlertManagement::Alert id:10 namespace926/project-930^alert#1>4092 .status_value4093 status: :triggered, status_value: 04094 returns status value by its name4095 status: :acknowledged, status_value: 14096 returns status value by its name4097 status: :resolved, status_value: 24098 returns status value by its name4099 status: :ignored, status_value: 34100 returns status value by its name4101 status: :unknown, status_value: nil4102 returns status value by its name4103 .status_name4104 raw_status: 0, status: :triggered4105 returns status name by its values4106 raw_status: 1, status: :acknowledged4107 returns status name by its values4108 raw_status: 2, status: :resolved4109 returns status name by its values4110 raw_status: 3, status: :ignored4111 returns status name by its values4112 raw_status: -1, status: nil4113 returns status name by its values4114 .open_status?4115 status: :triggered, is_open_status: true4116 returns true when the status is open status4117 status: :acknowledged, is_open_status: true4118 returns true when the status is open status4119 status: :resolved, is_open_status: false4120 returns true when the status is open status4121 status: :ignored, is_open_status: false4122 returns true when the status is open status4123 status: nil, is_open_status: false4124 returns true when the status is open status4125 #trigger4126 when escalatable is in triggered state4127 does not change the escalatable status4128 when escalatable is not in triggered state4129 changes the escalatable status to triggered4130 resets resolved at4131 #acknowledge4132 changes the escalatable status to acknowledged4133 resets ended at4134 #resolve4135 when escalatable is already resolved4136 does not change the escalatable status4137 when escalatable is not resolved4138 changes escalatable status to "resolved"4139 #ignore4140 changes the escalatable status to ignored4141 resets ended at4142 #status_event_for4143 for_status: :triggered, event: :trigger4144 returns event by status name4145 for_status: "triggered", event: :trigger4146 returns event by status name4147 for_status: :acknowledged, event: :acknowledge4148 returns event by status name4149 for_status: "acknowledged", event: :acknowledge4150 returns event by status name4151 for_status: :resolved, event: :resolve4152 returns event by status name4153 for_status: "resolved", event: :resolve4154 returns event by status name4155 for_status: :ignored, event: :ignore4156 returns event by status name4157 for_status: "ignored", event: :ignore4158 returns event by status name4159 for_status: :unknown, event: nil4160 returns event by status name4161 for_status: nil, event: nil4162 returns event by status name4163 for_status: "", event: nil4164 returns event by status name4165 for_status: 1, event: nil4166 returns event by status name4167 #open?4168 returns true when the status is open status4169 .counts_by_status4170 is expected to eq {:acknowledged=>1, :ignored=>1, :resolved=>1, :triggered=>1}4171 .find_unresolved_alert4172 is expected to eq #<AlertManagement::Alert id:16 namespace922/project-926^alert#4>4173 .last_prometheus_alert_by_project_id4174 returns the latest alert for each project4175 .search4176 does not contain search string4177 is expected to be empty4178 title includes query4179 is expected to contain exactly #<AlertManagement::Alert id:1 namespace922/project-926^alert#1>4180 description includes query4181 is expected to contain exactly #<AlertManagement::Alert id:1 namespace922/project-926^alert#1>4182 service includes query4183 is expected to contain exactly #<AlertManagement::Alert id:1 namespace922/project-926^alert#1>4184 monitoring tool includes query4185 is expected to contain exactly #<AlertManagement::Alert id:1 namespace922/project-926^alert#1>4186 .reference_pattern4187 is expected to match "gitlab-org/gitlab^alert#123"4188 .link_reference_pattern4189 is expected to match "http://localhost/namespace922/project-926/-/alert_management/1/details"4190 is expected not to match "http://localhost/gitlab-org/gitlab/alert_management/123"4191 is expected not to match "http://localhost/gitlab-org/gitlab/issues/123"4192 is expected not to match "gitlab-org/gitlab/-/alert_management/123"4193 .reference_valid?4194 ref: "123456", result: true4195 is expected to eq true4196 ref: "1", result: true4197 is expected to eq true4198 ref: "-1", result: false4199 is expected to eq false4200 ref: nil, result: false4201 is expected to eq false4202 ref: "123456891012345678901234567890", result: false4203 is expected to eq false4204 #to_reference4205 is expected to eq "^alert#1"4206 #register_new_event!4207 increments the events count by 14208 #resolved_at4209 is expected to eq 2023-06-26 14:45:18.862890000 +00004210 #resolved_at=4211 sets ended_at4212ErrorTracking::ProjectErrorTrackingSetting4213 Associations4214 is expected to belong to project required: false4215 Validations4216 is expected to validate that the length of :api_url is at most 2554217 is expected to allow :api_url to be ‹"http://gitlab.com/api/0/projects/project1/something"›4218 is expected not to allow :api_url to be ‹"http://gitlab.com/api/0/projects/project1/something€"›4219 disallows non-booleans in enabled column4220 allows booleans in enabled column4221 rejects invalid api_urls4222 fails validation without org and project slugs4223 presence validations4224 enabled: true, integrated: true, token: nil, api_url: nil, valid?: true4225 is expected to eq true4226 enabled: true, integrated: false, token: nil, api_url: nil, valid?: false4227 is expected to eq false4228 enabled: true, integrated: false, token: nil, api_url: "http://example.com/api/0/projects/org-slug/proj-slug/", valid?: false4229 is expected to eq false4230 enabled: true, integrated: false, token: "token", api_url: nil, valid?: false4231 is expected to eq false4232 enabled: true, integrated: false, token: "token", api_url: "http://example.com/api/0/projects/org-slug/proj-slug/", valid?: true4233 is expected to eq true4234 enabled: false, integrated: false, token: nil, api_url: nil, valid?: true4235 is expected to eq true4236 enabled: false, integrated: false, token: nil, api_url: "http://example.com/api/0/projects/org-slug/proj-slug/", valid?: true4237 is expected to eq true4238 enabled: false, integrated: false, token: "token", api_url: nil, valid?: true4239 is expected to eq true4240 enabled: false, integrated: false, token: "token", api_url: "http://example.com/api/0/projects/org-slug/proj-slug/", valid?: true4241 is expected to eq true4242 Callbacks4243 after_save :create_client_key!4244 without client key4245 creates a new client key4246 with sentry backend4247 does not create a new client key4248 when feature disabled4249 does not create a new client key4250 when client key already exists4251 does not create a new client key4252 before_validation :reset_token4253 when a token was previously set4254 resets token if url changed4255 does not reset token if new url is set together with the same token4256 does not reset token if new url is set together with a new token4257 .extract_sentry_external_url4258 when passing a URL4259 is expected to eq "https://sentrytest.gitlab.com/sentry-org/sentry-project"4260 when passing nil4261 is expected to be nil4262 #sentry_external_url4263 returns the correct url4264 #sentry_client4265 is expected to be a kind of ErrorTracking::SentryClient4266 is expected to have attributes {:token => "access_token_123", :url => "https://sentrytest.gitlab.com/api/0/projects/sentry-org/sentry-project"}4267 #list_sentry_issues4268 when cached4269 returns cached issues4270 when not cached4271 returns nil4272 client errors4273 exception: ErrorTracking::SentryClient::Error, error_type: "non_20x_response_from_sentry", error_message: "something"4274 returns an error4275 exception: ErrorTracking::SentryClient::MissingKeysError, error_type: "missing_keys_in_sentry_response", error_message: "something"4276 returns an error4277 exception: ErrorTracking::SentryClient::ResponseInvalidSizeError, error_type: "invalid_size_of_sentry_response", error_message: "something"4278 returns an error4279 exception: ErrorTracking::SentryClient::Issue::BadRequestError, error_type: "bad_request_for_sentry_api", error_message: "something"4280 returns an error4281 exception: StandardError, error_type: nil, error_message: "Unexpected Error"4282 returns an error4283 #list_sentry_projects4284 calls sentry client4285 #issue_details4286 when cached4287 is expected to eq {:issue=>#<Gitlab::ErrorTracking::DetailedError:0x00007aa2eadffce8 @id="1", @title="title", @type="er..., @first_release_version="12345678", @tags={:level=>"error", :logger=>"rails"}, @gitlab_commit=nil>}4288 is expected to eq "12345678"4289 is expected to eq nil4290 is expected to eq nil4291 when release version is nil4292 is expected to eq nil4293 is expected to eq nil4294 when repo commit matches first release version4295 is expected to eq "12345678"4296 is expected to eq "/namespace942/project-946/-/commit/12345678"4297 when not cached4298 is expected not to receive sentry_client(*(any args)) 0 times4299 is expected to be nil4300 #issue_latest_event4301 returns the error event4302 #update_issue4303 when sentry response is successful4304 returns the successful response4305 when sentry raises an error4306 returns the successful response4307 when sentry_project_id is not set4308 when sentry_project_id is not set4309 tries to backfill it from sentry API4310 when the project cannot be found on sentry4311 raises error4312 when mismatching sentry_project_id is detected4313 raises error4314 passing parameters to sentry client4315 returns the successful response4316 slugs4317 behaves like slug from api_url4318 when api_url is correct4319 returns slug4320 when api_url is blank4321 returns nil4322 behaves like slug from api_url4323 when api_url is correct4324 returns slug4325 when api_url is blank4326 returns nil4327 names from api_url4328 behaves like name from api_url4329 when name is present in DB4330 returns name from DB4331 when name is null in DB4332 titleizes and returns slug from api_url4333 returns nil when api_url is incorrect4334 returns nil when api_url is blank4335 behaves like name from api_url4336 when name is present in DB4337 returns name from DB4338 when name is null in DB4339 titleizes and returns slug from api_url4340 returns nil when api_url is incorrect4341 returns nil when api_url is blank4342 .build_api_url_from4343 correctly builds api_url with slugs4344 correctly builds api_url without slugs4345 does not raise exception with invalid url4346 returns nil when api_host is blank4347 #api_host4348 when api_url exists4349 extracts the api_host from api_url4350 when api_url is nil4351 returns nil4352 #expire_issues_cache4353 clears the cache4354 #sentry_enabled4355 enabled: true, integrated: false, sentry_enabled: true4356 is expected to eq true4357 enabled: true, integrated: true, sentry_enabled: false4358 is expected to eq false4359 enabled: true, integrated: true, sentry_enabled: false4360 is expected to eq false4361 enabled: false, integrated: false, sentry_enabled: false4362 is expected to eq false4363 #integrated_enabled?4364 enabled: true, integrated: false, integrated_enabled: false4365 is expected to eq false4366 enabled: false, integrated: true, integrated_enabled: false4367 is expected to eq false4368 enabled: true, integrated: true, integrated_enabled: true4369 is expected to eq true4370 #gitlab_dsn4371 is expected to eq "http://glet_d95b395d0318f7a57713eb7b8870306e@localhost:8080/errortracking/api/v1/projects/852"4372ProjectSnippetPolicy4373 when project is public4374 with public snippet4375 no user4376 is expected not to be allowed :admin_snippet4377 regular user4378 when user is not a member4379 and is not the snippet author4380 is expected not to be allowed :admin_snippet4381 and is the snippet author4382 behaves like regular user non-member author permissions4383 is expected not to be allowed :admin_snippet4384 when user is a member4385 behaves like regular user member permissions4386 not snippet author4387 member (guest)4388 is expected not to be allowed :admin_snippet4389 member (reporter)4390 is expected not to be allowed :admin_snippet4391 member (developer)4392 is expected not to be allowed :admin_snippet4393 member (maintainer)4394 is expected to be allowed :admin_snippet4395 snippet author4396 member (guest)4397 is expected not to be allowed :admin_snippet4398 member (reporter)4399 is expected to be allowed :admin_snippet4400 member (developer)4401 is expected to be allowed :admin_snippet4402 member (maintainer)4403 is expected to be allowed :admin_snippet4404 external user4405 is expected not to be allowed :admin_snippet4406 when user is a member4407 is expected not to be allowed :admin_snippet4408 with internal snippet4409 no user4410 is expected not to be allowed :admin_snippet4411 regular user4412 when user is not a member4413 and is not the snippet author4414 is expected not to be allowed :admin_snippet4415 and is the snippet author4416 behaves like regular user non-member author permissions4417 is expected not to be allowed :admin_snippet4418 when user is a member4419 behaves like regular user member permissions4420 not snippet author4421 member (guest)4422 is expected not to be allowed :admin_snippet4423 member (reporter)4424 is expected not to be allowed :admin_snippet4425 member (developer)4426 is expected not to be allowed :admin_snippet4427 member (maintainer)4428 is expected to be allowed :admin_snippet4429 snippet author4430 member (guest)4431 is expected not to be allowed :admin_snippet4432 member (reporter)4433 is expected to be allowed :admin_snippet4434 member (developer)4435 is expected to be allowed :admin_snippet4436 member (maintainer)4437 is expected to be allowed :admin_snippet4438 external user4439 is expected not to be allowed :admin_snippet4440 when user is a member4441 is expected not to be allowed :admin_snippet4442 with private snippet4443 no user4444 is expected not to be allowed :admin_snippet4445 regular user4446 when user is not a member4447 and is not the snippet author4448 is expected not to be allowed :admin_snippet4449 and is the snippet author4450 behaves like regular user non-member author permissions4451 is expected not to be allowed :admin_snippet4452 when user is a member4453 behaves like regular user member permissions4454 not snippet author4455 member (guest)4456 is expected not to be allowed :admin_snippet4457 member (reporter)4458 is expected not to be allowed :admin_snippet4459 member (developer)4460 is expected not to be allowed :admin_snippet4461 member (maintainer)4462 is expected to be allowed :admin_snippet4463 snippet author4464 member (guest)4465 is expected not to be allowed :admin_snippet4466 member (reporter)4467 is expected to be allowed :admin_snippet4468 member (developer)4469 is expected to be allowed :admin_snippet4470 member (maintainer)4471 is expected to be allowed :admin_snippet4472 inherited user4473 behaves like regular user member permissions4474 not snippet author4475 member (guest)4476 is expected not to be allowed :admin_snippet4477 member (reporter)4478 is expected not to be allowed :admin_snippet4479 member (developer)4480 is expected not to be allowed :admin_snippet4481 member (maintainer)4482 is expected to be allowed :admin_snippet4483 snippet author4484 member (guest)4485 is expected not to be allowed :admin_snippet4486 member (reporter)4487 is expected to be allowed :admin_snippet4488 member (developer)4489 is expected to be allowed :admin_snippet4490 member (maintainer)4491 is expected to be allowed :admin_snippet4492 external user4493 is expected not to be allowed :admin_snippet4494 when user is a member4495 is expected not to be allowed :admin_snippet4496 admin user4497 when admin mode is enabled4498 is expected to be allowed :admin_snippet4499 when admin mode is disabled4500 is expected not to be allowed :admin_snippet4501 when project is private4502 inherited user4503 behaves like regular user member permissions4504 not snippet author4505 member (guest)4506 is expected not to be allowed :admin_snippet4507 member (reporter)4508 is expected not to be allowed :admin_snippet4509 member (developer)4510 is expected not to be allowed :admin_snippet4511 member (maintainer)4512 is expected to be allowed :admin_snippet4513 snippet author4514 member (guest)4515 is expected not to be allowed :admin_snippet4516 member (reporter)4517 is expected to be allowed :admin_snippet4518 member (developer)4519 is expected to be allowed :admin_snippet4520 member (maintainer)4521 is expected to be allowed :admin_snippet4522Gitlab::ImportExport::Project::RelationTreeRestorer4523 when inside a group4524 behaves like import project successfully4525 imported project4526 has the project attributes and relations4527 with invalid relations4528 logs the invalid relation and its errors4529Groups::CreateService#execute4530 visibility level restrictions4531 create groups without restricted visibility level4532 is expected to be persisted4533 cannot create group with restricted visibility level4534 is expected not to be persisted4535 when `setup_for_company:true` is passed4536 creates group with the specified setup_for_company4537 creating a group with `default_branch_protection` attribute4538 for users who have the ability to create a group with `default_branch_protection`4539 creates group with the specified branch protection level4540 for users who do not have the ability to create a group with `default_branch_protection`4541 does not create the group with the specified branch protection level4542 creating a group with `allow_mfa_for_subgroups` attribute4543 creates group without error4544 creating a top level group4545 when user can create a group4546 is expected to be persisted4547 with before_commit callback4548 behaves like has sync-ed traversal_ids4549 is expected to eq [2168]4550 when user can not create a group4551 is expected not to be persisted4552 creating subgroup4553 as group owner4554 is expected to be persisted4555 behaves like has sync-ed traversal_ids4556 is expected to eq [2174, 2175]4557 as guest4558 does not save group and returns an error4559 as owner4560 is expected to be persisted4561 as maintainer4562 is expected to be persisted4563 when visibility level is passed as a string4564 assigns the correct visibility level4565 creating a mattermost team4566 create the chat team with the group4567 creating a setting record4568 create the settings record connected to the group4569 creating a details record4570 create the details record connected to the group4571 create service for the group4572 with an active instance-level integration4573 creates a service from the instance-level integration4574 with an active group-level integration4575 creates a service from the group-level integration4576 with an active subgroup4577 creates a service from the subgroup-level integration4578 shared runners configuration4579 parent group present4580 shared_runners_config: true, descendants_override_disabled_shared_runners_config: false4581 creates group following the parent config4582 shared_runners_config: false, descendants_override_disabled_shared_runners_config: false4583 creates group following the parent config4584 shared_runners_config: false, descendants_override_disabled_shared_runners_config: true4585 creates group following the parent config4586 root group4587 follows default config4588Gitlab::RepositoryCacheAdapter4589 .cache_method_output_as_redis_set4590 with an existing repository4591 caches the output, sorting the results4592 membership checks4593 when the cache key does not exist4594 calls the original method and populates the cache4595 when the cache key exists4596 calls #try_include? on the set cache4597 memoizes the result4598 #cache_method_output4599 with a non-existing repository4600 returns the fallback value4601 avoids calling the original method4602 with a method throwing a non-existing-repository error4603 returns the fallback value4604 does not cache the data4605 with an existing repository4606 caches the output4607 #cache_method_output_asymmetrically4608 with a non-existing repository4609 returns the output of the original method4610 with a method throwing a non-existing-repository error4611 returns nil4612 does not cache the data4613 with an existing repository4614 when it returns truthy4615 caches the output in RequestStore4616 caches the output in RepositoryCache4617 when it returns false4618 caches the output in RequestStore4619 does NOT cache the output in RepositoryCache4620 #memoize_method_output4621 with a non-existing repository4622 returns the fallback value4623 avoids calling the original method4624 does not set the instance variable4625 with a method throwing a non-existing-repository error4626 returns the fallback value4627 does not set the instance variable4628 with an existing repository4629 sets the instance variable4630 #expire_method_caches4631 expires the caches of the given methods4632 does not expire caches for non-existent methods4633Packages::Policies::ProjectPolicy4634 deploy token access4635 when a deploy token with read_package_registry scope4636 is expected to be allowed :read_package4637 behaves like package access with repository disabled4638 is expected to be allowed :read_package4639 when a deploy token with write_package_registry scope4640 is expected to be allowed :read_package4641 behaves like package access with repository disabled4642 is expected to be allowed :read_package4643 read_package4644 project: private_project, package_registry_access_level: 0, current_user: anonymous, expect_to_be_allowed: false4645 is expected to be disallowed :read_package4646 project: private_project, package_registry_access_level: 0, current_user: non_member, expect_to_be_allowed: false4647 is expected to be disallowed :read_package4648 project: private_project, package_registry_access_level: 0, current_user: guest, expect_to_be_allowed: false4649 is expected to be disallowed :read_package4650 project: private_project, package_registry_access_level: 0, current_user: reporter, expect_to_be_allowed: false4651 is expected to be disallowed :read_package4652 project: private_project, package_registry_access_level: 0, current_user: developer, expect_to_be_allowed: false4653 is expected to be disallowed :read_package4654 project: private_project, package_registry_access_level: 0, current_user: maintainer, expect_to_be_allowed: false4655 is expected to be disallowed :read_package4656 project: private_project, package_registry_access_level: 0, current_user: owner, expect_to_be_allowed: false4657 is expected to be disallowed :read_package4658 project: private_project, package_registry_access_level: 0, current_user: admin, expect_to_be_allowed: false4659 is expected to be disallowed :read_package4660 project: private_project, package_registry_access_level: 10, current_user: anonymous, expect_to_be_allowed: false4661 is expected to be disallowed :read_package4662 project: private_project, package_registry_access_level: 10, current_user: non_member, expect_to_be_allowed: false4663 is expected to be disallowed :read_package4664 project: private_project, package_registry_access_level: 10, current_user: guest, expect_to_be_allowed: false4665 is expected to be disallowed :read_package4666 project: private_project, package_registry_access_level: 10, current_user: reporter, expect_to_be_allowed: true4667 is expected to be allowed :read_package4668 project: private_project, package_registry_access_level: 10, current_user: developer, expect_to_be_allowed: true4669 is expected to be allowed :read_package4670 project: private_project, package_registry_access_level: 10, current_user: maintainer, expect_to_be_allowed: true4671 is expected to be allowed :read_package4672 project: private_project, package_registry_access_level: 10, current_user: owner, expect_to_be_allowed: true4673 is expected to be allowed :read_package4674 project: private_project, package_registry_access_level: 10, current_user: admin, expect_to_be_allowed: true4675 is expected to be allowed :read_package4676 project: private_project, package_registry_access_level: 30, current_user: anonymous, expect_to_be_allowed: true4677 is expected to be allowed :read_package4678 project: private_project, package_registry_access_level: 30, current_user: non_member, expect_to_be_allowed: true4679 is expected to be allowed :read_package4680 project: private_project, package_registry_access_level: 30, current_user: guest, expect_to_be_allowed: true4681 is expected to be allowed :read_package4682 project: private_project, package_registry_access_level: 30, current_user: reporter, expect_to_be_allowed: true4683 is expected to be allowed :read_package4684 project: private_project, package_registry_access_level: 30, current_user: developer, expect_to_be_allowed: true4685 is expected to be allowed :read_package4686 project: private_project, package_registry_access_level: 30, current_user: maintainer, expect_to_be_allowed: true4687 is expected to be allowed :read_package4688 project: private_project, package_registry_access_level: 30, current_user: owner, expect_to_be_allowed: true4689 is expected to be allowed :read_package4690 project: private_project, package_registry_access_level: 30, current_user: admin, expect_to_be_allowed: true4691 is expected to be allowed :read_package4692 project: internal_project, package_registry_access_level: 0, current_user: anonymous, expect_to_be_allowed: false4693 is expected to be disallowed :read_package4694 project: internal_project, package_registry_access_level: 0, current_user: non_member, expect_to_be_allowed: false4695 is expected to be disallowed :read_package4696 project: internal_project, package_registry_access_level: 0, current_user: guest, expect_to_be_allowed: false4697 is expected to be disallowed :read_package4698 project: internal_project, package_registry_access_level: 0, current_user: reporter, expect_to_be_allowed: false4699 is expected to be disallowed :read_package4700 project: internal_project, package_registry_access_level: 0, current_user: developer, expect_to_be_allowed: false4701 is expected to be disallowed :read_package4702 project: internal_project, package_registry_access_level: 0, current_user: maintainer, expect_to_be_allowed: false4703 is expected to be disallowed :read_package4704 project: internal_project, package_registry_access_level: 0, current_user: owner, expect_to_be_allowed: false4705 is expected to be disallowed :read_package4706 project: internal_project, package_registry_access_level: 0, current_user: admin, expect_to_be_allowed: false4707 is expected to be disallowed :read_package4708 project: internal_project, package_registry_access_level: 20, current_user: anonymous, expect_to_be_allowed: false4709 is expected to be disallowed :read_package4710 project: internal_project, package_registry_access_level: 20, current_user: non_member, expect_to_be_allowed: true4711 is expected to be allowed :read_package4712 project: internal_project, package_registry_access_level: 20, current_user: guest, expect_to_be_allowed: true4713 is expected to be allowed :read_package4714 project: internal_project, package_registry_access_level: 20, current_user: reporter, expect_to_be_allowed: true4715 is expected to be allowed :read_package4716 project: internal_project, package_registry_access_level: 20, current_user: developer, expect_to_be_allowed: true4717 is expected to be allowed :read_package4718 project: internal_project, package_registry_access_level: 20, current_user: maintainer, expect_to_be_allowed: true4719 is expected to be allowed :read_package4720 project: internal_project, package_registry_access_level: 20, current_user: owner, expect_to_be_allowed: true4721 is expected to be allowed :read_package4722 project: internal_project, package_registry_access_level: 20, current_user: admin, expect_to_be_allowed: true4723 is expected to be allowed :read_package4724 project: internal_project, package_registry_access_level: 30, current_user: anonymous, expect_to_be_allowed: true4725 is expected to be allowed :read_package4726 project: internal_project, package_registry_access_level: 30, current_user: non_member, expect_to_be_allowed: true4727 is expected to be allowed :read_package4728 project: internal_project, package_registry_access_level: 30, current_user: guest, expect_to_be_allowed: true4729 is expected to be allowed :read_package4730 project: internal_project, package_registry_access_level: 30, current_user: reporter, expect_to_be_allowed: true4731 is expected to be allowed :read_package4732 project: internal_project, package_registry_access_level: 30, current_user: developer, expect_to_be_allowed: true4733 is expected to be allowed :read_package4734 project: internal_project, package_registry_access_level: 30, current_user: maintainer, expect_to_be_allowed: true4735 is expected to be allowed :read_package4736 project: internal_project, package_registry_access_level: 30, current_user: owner, expect_to_be_allowed: true4737 is expected to be allowed :read_package4738 project: internal_project, package_registry_access_level: 30, current_user: admin, expect_to_be_allowed: true4739 is expected to be allowed :read_package4740 project: public_project, package_registry_access_level: 0, current_user: anonymous, expect_to_be_allowed: false4741 is expected to be disallowed :read_package4742 project: public_project, package_registry_access_level: 0, current_user: non_member, expect_to_be_allowed: false4743 is expected to be disallowed :read_package4744 project: public_project, package_registry_access_level: 0, current_user: guest, expect_to_be_allowed: false4745 is expected to be disallowed :read_package4746 project: public_project, package_registry_access_level: 0, current_user: reporter, expect_to_be_allowed: false4747 is expected to be disallowed :read_package4748 project: public_project, package_registry_access_level: 0, current_user: developer, expect_to_be_allowed: false4749 is expected to be disallowed :read_package4750 project: public_project, package_registry_access_level: 0, current_user: maintainer, expect_to_be_allowed: false4751 is expected to be disallowed :read_package4752 project: public_project, package_registry_access_level: 0, current_user: owner, expect_to_be_allowed: false4753 is expected to be disallowed :read_package4754 project: public_project, package_registry_access_level: 0, current_user: admin, expect_to_be_allowed: false4755 is expected to be disallowed :read_package4756 project: public_project, package_registry_access_level: 30, current_user: anonymous, expect_to_be_allowed: true4757 is expected to be allowed :read_package4758 project: public_project, package_registry_access_level: 30, current_user: non_member, expect_to_be_allowed: true4759 is expected to be allowed :read_package4760 project: public_project, package_registry_access_level: 30, current_user: guest, expect_to_be_allowed: true4761 is expected to be allowed :read_package4762 project: public_project, package_registry_access_level: 30, current_user: reporter, expect_to_be_allowed: true4763 is expected to be allowed :read_package4764 project: public_project, package_registry_access_level: 30, current_user: developer, expect_to_be_allowed: true4765 is expected to be allowed :read_package4766 project: public_project, package_registry_access_level: 30, current_user: maintainer, expect_to_be_allowed: true4767 is expected to be allowed :read_package4768 project: public_project, package_registry_access_level: 30, current_user: owner, expect_to_be_allowed: true4769 is expected to be allowed :read_package4770 project: public_project, package_registry_access_level: 30, current_user: admin, expect_to_be_allowed: true4771 is expected to be allowed :read_package4772 with admin4773 behaves like package access with repository disabled4774 is expected to be allowed :read_package4775Resolvers::TodosResolver4776 is expected to have nullable GraphQL type TodoConnection4777 #resolve4778 calls TodosFinder4779 when using no filter4780 returns pending todos4781 when using filters4782 returns the todos for multiple states4783 returns the todos for multiple filters4784 returns the todos for single filter4785 returns the todos for multiple groups4786 returns the todos for multiple authors4787 returns the todos for multiple actions4788 returns the todos for multiple projects4789 when no target is provided4790 returns no todos4791 when target user is not the current user4792 returns no todos4793 when request is for a todo target4794 returns only the todos for the target4795Namespaces::PackageSettings::UpdateService4796 #execute4797 with existing namespace package setting4798 user_role: :owner, shared_examples_name: "updating the namespace package setting"4799 behaves like updating the namespace package setting4800 behaves like updating the namespace package setting attributes4801 updates the namespace package setting4802 behaves like not creating the namespace package setting4803 doesn't create the namespace package setting4804 behaves like returning a success4805 returns a success4806 with invalid params4807 doesn't update the maven_duplicates_allowed4808 behaves like not creating the namespace package setting4809 doesn't create the namespace package setting4810 behaves like returning an error4811 returns an error4812 user_role: :maintainer, shared_examples_name: "denying access to namespace package setting"4813 behaves like denying access to namespace package setting4814 with existing namespace package setting4815 behaves like not creating the namespace package setting4816 doesn't create the namespace package setting4817 behaves like returning an error4818 returns an error4819 behaves like disabling admin_package feature flag4820 behaves like updating the namespace package setting4821 behaves like updating the namespace package setting attributes4822 updates the namespace package setting4823 behaves like not creating the namespace package setting4824 doesn't create the namespace package setting4825 behaves like returning a success4826 returns a success4827 with invalid params4828 doesn't update the maven_duplicates_allowed4829 behaves like not creating the namespace package setting4830 doesn't create the namespace package setting4831 behaves like returning an error4832 returns an error4833 user_role: :developer, shared_examples_name: "denying access to namespace package setting"4834 behaves like denying access to namespace package setting4835 with existing namespace package setting4836 behaves like not creating the namespace package setting4837 doesn't create the namespace package setting4838 behaves like returning an error4839 returns an error4840 user_role: :reporter, shared_examples_name: "denying access to namespace package setting"4841 behaves like denying access to namespace package setting4842 with existing namespace package setting4843 behaves like not creating the namespace package setting4844 doesn't create the namespace package setting4845 behaves like returning an error4846 returns an error4847 user_role: :guest, shared_examples_name: "denying access to namespace package setting"4848 behaves like denying access to namespace package setting4849 with existing namespace package setting4850 behaves like not creating the namespace package setting4851 doesn't create the namespace package setting4852 behaves like returning an error4853 returns an error4854 user_role: :anonymous, shared_examples_name: "denying access to namespace package setting"4855 behaves like denying access to namespace package setting4856 with existing namespace package setting4857 behaves like not creating the namespace package setting4858 doesn't create the namespace package setting4859 behaves like returning an error4860 returns an error4861 without existing namespace package setting4862 user_role: :owner, shared_examples_name: "creating the namespace package setting"4863 behaves like creating the namespace package setting4864 creates a new package setting4865 saves the settings4866 behaves like returning a success4867 returns a success4868 user_role: :maintainer, shared_examples_name: "denying access to namespace package setting"4869 behaves like denying access to namespace package setting4870 with existing namespace package setting4871 behaves like not creating the namespace package setting4872 doesn't create the namespace package setting4873 behaves like returning an error4874 returns an error4875 behaves like disabling admin_package feature flag4876 behaves like creating the namespace package setting4877 creates a new package setting4878 saves the settings4879 behaves like returning a success4880 returns a success4881 user_role: :developer, shared_examples_name: "denying access to namespace package setting"4882 behaves like denying access to namespace package setting4883 with existing namespace package setting4884 behaves like not creating the namespace package setting4885 doesn't create the namespace package setting4886 behaves like returning an error4887 returns an error4888 user_role: :reporter, shared_examples_name: "denying access to namespace package setting"4889 behaves like denying access to namespace package setting4890 with existing namespace package setting4891 behaves like not creating the namespace package setting4892 doesn't create the namespace package setting4893 behaves like returning an error4894 returns an error4895 user_role: :guest, shared_examples_name: "denying access to namespace package setting"4896 behaves like denying access to namespace package setting4897 with existing namespace package setting4898 behaves like not creating the namespace package setting4899 doesn't create the namespace package setting4900 behaves like returning an error4901 returns an error4902 user_role: :anonymous, shared_examples_name: "denying access to namespace package setting"4903 behaves like denying access to namespace package setting4904 with existing namespace package setting4905 behaves like not creating the namespace package setting4906 doesn't create the namespace package setting4907 behaves like returning an error4908 returns an error4909Issues::BuildService4910 for a single discussion4911 #execute4912 references the noteable title in the issue title4913 adds the note content to the description4914 for discussions in a merge request4915 #items_for_discussions4916 has an item for each discussion4917 #item_for_discussion4918 mentions the author of the note4919 wraps the note in a blockquote4920 #execute4921 uses provided title if title param given4922 uses provided description if description param given4923 without additional params4924 has the merge request reference in the title4925 has the reference of the merge request in the description4926 with multiple discussions4927 mentions all the authors in the description4928 has a link for each unresolved discussion in the description4929 mentions additional notes4930 For a merge request without discussions4931 #execute4932 mentions the merge request in the description4933 #execute4934 setting milestone4935 when developer4936 builds a new issues with given params4937 sets milestone to nil if it is not available for the project4938 when user is not a project member4939 cannot set milestone4940 setting issue type4941 with a corresponding WorkItems::Type4942 issue_params: {:issue_type=>nil}, current_user: guest, work_item_type_id: type_issue_id, resulting_issue_type: "issue"4943 builds an issue4944 issue_params: {:issue_type=>"issue"}, current_user: guest, work_item_type_id: type_issue_id, resulting_issue_type: "issue"4945 builds an issue4946 issue_params: {:issue_type=>"incident"}, current_user: guest, work_item_type_id: type_issue_id, resulting_issue_type: "issue"4947 builds an issue4948 issue_params: {:issue_type=>"incident"}, current_user: reporter, work_item_type_id: type_incident_id, resulting_issue_type: "incident"4949 builds an issue4950 issue_params: combined_params, current_user: reporter, work_item_type_id: type_task_id, resulting_issue_type: "task"4951 builds an issue4952 issue_params: work_item_params, current_user: reporter, work_item_type_id: type_task_id, resulting_issue_type: "task"4953 builds an issue4954 issue_params: {:issue_type=>"test_case"}, current_user: guest, work_item_type_id: type_issue_id, resulting_issue_type: "issue"4955 builds an issue4956 issue_params: {:issue_type=>"requirement"}, current_user: guest, work_item_type_id: type_issue_id, resulting_issue_type: "issue"4957 builds an issue4958 issue_params: {:issue_type=>"invalid"}, current_user: guest, work_item_type_id: type_issue_id, resulting_issue_type: "issue"4959 builds an issue4960 issue_params: {:issue_type=>"project"}, current_user: guest, work_item_type_id: type_issue_id, resulting_issue_type: "issue"4961 builds an issue4962Gitlab::Ci::Config::External::Mapper::Verifier4963 # order random4964 #process4965 when files are local4966 returns an array of file objects4967 adds files to the expandset4968 calls Gitaly only once for all files4969 when files are project files4970 returns an array of valid file objects4971 adds files to the expandset4972 calls Gitaly only once for all files4973 queries with batch4974 when a project is missing4975 returns an array of file objects4976 when a file includes other files4977 returns an array of file objects with combined hash4978 when there is an invalid file4979 adds an error to the file4980 max includes detection4981 when files are nested4982 behaves like verifies max includes4983 when total file count is equal to max_includes4984 adds the expected number of files to expandset4985 when total file count exceeds max_includes4986 raises error4987 when duplicate files are included4988 behaves like verifies max includes4989 when total file count is equal to max_includes4990 adds the expected number of files to expandset4991 when total file count exceeds max_includes4992 raises error4993 when files are not nested4994 behaves like verifies max includes4995 when total file count is equal to max_includes4996 adds the expected number of files to expandset4997 when total file count exceeds max_includes4998 raises error4999 when duplicate files are included5000 behaves like verifies max includes5001 when total file count is equal to max_includes5002 adds the expected number of files to expandset5003 when total file count exceeds max_includes5004 raises error5005 when there is a circular include5006 raises error5007 when a file is an internal include5008 when total file count excluding internal include is equal to max_includes5009 does not add the internal include to expandset5010 when total file count excluding internal include exceeds max_includes5011 raises error5012Approvable5013 # order random5014 #approved_by?5015 when a user has not approved5016 returns false5017 when a user has approved5018 returns false5019 when a user is nil5020 returns false5021 .not_approved_by_users_with_usernames5022 has the merge request that is not approved at all and not approved by either user5023 #eligible_for_approval_by?5024 returns true5025 when a user has approved5026 returns false5027 when a user is nil5028 returns false5029 #eligible_for_unapproval_by?5030 returns false5031 when a user has approved5032 returns true5033 when a user is nil5034 returns false5035RuboCop::CodeReuseHelpers5036 # order random5037 delegates jh? to GitlabEdition5038 delegates ee? to GitlabEdition5039 #in_spec?5040 returns true for a node in the spec directory5041 returns true for a node in the ee/spec directory5042 returns false for a node outside the spec directory5043 #in_api?5044 returns true for a node in the API directory5045 returns false for a node outside the API directory5046 #file_path_for_node5047 returns the file path of a node5048 #disallow_send_to5049 disallows sending a message to a constant5050 #send_receiver_name_ends_with?5051 returns true when the receiver ends with a suffix5052 returns false when the receiver is the same as a suffix5053 #in_app_directory?5054 returns true for a directory in the CE app/ directory5055 returns true for a directory in the EE app/ directory5056 returns false for a directory in the lib/ directory5057 #name_of_receiver5058 returns the name of a send receiver5059 #in_lib_directory?5060 returns true for a directory in the CE lib/ directory5061 returns true for a directory in the EE lib/ directory5062 returns false for a directory in the app/ directory5063 #each_class_method5064 yields every class method to the supplied block5065 #in_finder?5066 returns true for a node in the finders directory5067 returns false for a node outside the finders directory5068 #each_send_node5069 yields every send node to the supplied block5070 #in_graphql?5071 returns true for a node in the FOSS GraphQL directory5072 returns true for a node in the EE GraphQL directory5073 returns false for a node outside the GraphQL directory5074 #in_serializer?5075 returns true for a node in the serializers directory5076 returns false for a node outside the serializers directory5077 #in_service_class?5078 returns true for a node in the services directory5079 returns false for a node outside the services directory5080 #in_worker?5081 returns true for a node in the workers directory5082 returns false for a node outside the workers directory5083 #name_of_constant5084 returns the name of a constant5085 #in_presenter?5086 returns true for a node in the presenters directory5087 returns false for a node outside the presenters directory5088 #in_graphql_directory?5089 returns true for a directory in the FOSS app/graphql directory5090 returns true for a directory in the EE app/graphql directory5091 returns true for a directory in the EE app/graphql/ee directory5092 returns false for a directory in the FOSS app/graphql directory5093 returns false for a directory in the EE app/graphql directory5094 returns false for a directory in the EE app/graphql/ee directory5095 #in_model?5096 returns true for a node in the models directory5097 returns false for a node outside the models directory5098 #send_to_constant?5099 returns true when sending to a constant5100 returns false when sending to something other than a constant5101AnalyticsBuildEntity5102 build with an author5103 contains the URL5104 contains the author5105 contains the project path5106 contains the namespace full path5107 does not contain sensitive information5108 contains the right started at5109 contains the duration5110 no started at or finished at date5111 does not blow up5112 shows the right message5113 shows the right total time5114 no started at date5115 does not blow up5116 shows the right message5117 shows the right total time5118 no finished at date5119 does not blow up5120 shows the right message5121 shows the right total time5122CommitSignatures::GpgSignature5123 behaves like having unique enum values5124 has unique values in "verification_status"5125 behaves like commit signature5126 associations5127 is expected to belong to project required: true5128 validation5129 is expected to validate that :commit_sha cannot be empty/falsy5130 is expected to validate that :project_id cannot be empty/falsy5131 .safe_create!5132 finds a signature by commit sha if it existed5133 creates a new signature if it was not found5134 assigns the correct attributes when creating5135 does not raise an error in case of a race condition5136 #commit5137 fetches the commit through the project5138 behaves like signature with type checking5139 signature type checkers5140 method: :gpg?, expected: true5141 is expected to eq true5142 method: :ssh?, expected: false5143 is expected to eq false5144 method: :x509?, expected: false5145 is expected to eq false5146 associations5147 is expected to belong to gpg_key required: false5148 is expected to belong to gpg_key_subkey required: false5149 validation5150 is expected to validate that :commit_sha cannot be empty/falsy5151 is expected to validate that :gpg_key_primary_keyid cannot be empty/falsy5152 .by_commit_sha scope5153 returns all gpg signatures by sha5154 #gpg_key=5155 supports the assignment of a GpgKey5156 supports the assignment of a GpgKeySubkey5157 clears gpg_key and gpg_key_subkey_id when passing nil5158 #gpg_commit5159 when commit does not exist5160 returns nil5161 when commit exists5162 returns an instance of Gitlab::Gpg::Commit5163 #signed_by_user5164 retrieves the gpg_key user5165Gitlab::ImportExport::Json::StreamingSerializer5166 #execute5167 calls json_writer.write_attributes with proper params5168 with many relations5169 calls json_writer.write_relation_array with proper params5170 logs the relation name and the number of records to export5171 default relation ordering5172 orders exported issues by primary key(:id)5173 custom relation ordering ascending5174 orders exported issues by custom column(relative_position)5175 custom relation ordering descending5176 orders exported issues by custom column(relative_position)5177 with single relation5178 calls json_writer.write_relation with proper params5179 logs the relation name5180 with array relation5181 calls json_writer.write_relation_array with proper params5182 logs the relation name and the number of records to export5183 load balancing5184 reads from replica5185 with inaccessible associations5186 conditional export of included associations5187 when association is exportable5188 behaves like record with exportable associations5189 includes exportable association5190 when an association is not exportable5191 behaves like record with exportable associations5192 includes exportable association5193 when association does not respond to exportable_association?5194 behaves like record with exportable associations5195 includes exportable association5196 export of included restricted associations5197 when the association is restricted5198 when some association records are exportable5199 behaves like record with exportable associations5200 includes exportable association5201 when all association records are exportable5202 behaves like record with exportable associations5203 includes exportable association5204 when the single association record is exportable5205 behaves like record with exportable associations5206 includes exportable association5207 when the single association record is not exportable5208 behaves like record with exportable associations5209 includes exportable association5210 when the associations are not restricted5211 behaves like record with exportable associations5212 includes exportable association5213 #serialize_relation5214 when record is a merge request5215 removes cached external diff5216SystemNotes::DesignManagementService5217 #design_version_added5218 with one kind of event5219 makes just one note5220 adds a new system note5221 with a mixture of events5222 makes one note for each kind of event5223 adds a system note for each kind of event5224 icons5225 action: :creation5226 has a valid action5227 action: :modification5228 has a valid action5229 action: :deletion5230 has a valid action5231 it succeeds5232 action: :creation, icon: "designs_added", human_description: "added"5233 has the correct data5234 action: :modification, icon: "designs_modified", human_description: "updated"5235 has the correct data5236 action: :deletion, icon: "designs_removed", human_description: "removed"5237 has the correct data5238 #design_discussion_added5239 adds a new system note5240 has the correct note text5241 behaves like a system note5242 has the correct attributes5243LastGroupOwnerAssigner5244 #execute5245 avoids extra database queries utilizing memoization5246 when there are unblocked owners5247 with one unblocked owner5248 is expected to change `GroupMember#last_owner` from nil to true5249 with multiple unblocked owners5250 is expected to change `GroupMember#last_owner` from nil to false5251 has many members passed5252 with owners from a parent5253 when top-level group5254 with group sharing5255 is expected to change `GroupMember#last_owner` from nil to true5256 when subgroup5257 is expected to change `GroupMember#last_owner` from nil to false5258 when there are blocked owners5259 with one blocked owner5260 is expected to change `GroupMember#last_owner` from nil to true5261 with multiple unblocked owners5262 is expected to change `GroupMember#last_owner` from nil to false5263 with multiple blocked owners5264 is expected to change `GroupMember#last_owner` from nil to false5265 with owners from a parent5266 when top-level group5267 with group sharing5268 is expected to change `GroupMember#last_owner` from nil to true5269 when subgroup5270 is expected to change `GroupMember#last_owner` from nil to true5271 with two owners5272 is expected to change `GroupMember#last_owner` from nil to false5273 when there are bot members5274 with a bot owner5275 is expected to change `GroupMember#last_owner` from nil to true5276Mutations::Namespace::PackageSettings::Update5277 is expected to require graphql authorizations :admin_package5278 #resolve5279 with existing namespace package setting5280 user_role: :owner, shared_examples_name: "updating the namespace package setting"5281 behaves like updating the namespace package setting5282 behaves like updating the namespace package setting attributes5283 updates the namespace package setting5284 behaves like not creating the namespace package setting5285 doesn't create the namespace package setting5286 behaves like returning a success5287 returns the namespace package setting with no errors5288 with invalid params5289 doesn't update the maven_duplicates_allowed5290 returns an error5291 behaves like not creating the namespace package setting5292 doesn't create the namespace package setting5293 user_role: :maintainer, shared_examples_name: "denying access to namespace package setting"5294 behaves like denying access to namespace package setting5295 raises Gitlab::Graphql::Errors::ResourceNotAvailable5296 behaves like disabling admin_package feature flag5297 behaves like updating the namespace package setting5298 behaves like updating the namespace package setting attributes5299 updates the namespace package setting5300 behaves like not creating the namespace package setting5301 doesn't create the namespace package setting5302 behaves like returning a success5303 returns the namespace package setting with no errors5304 with invalid params5305 doesn't update the maven_duplicates_allowed5306 returns an error5307 behaves like not creating the namespace package setting5308 doesn't create the namespace package setting5309 user_role: :developer, shared_examples_name: "denying access to namespace package setting"5310 behaves like denying access to namespace package setting5311 raises Gitlab::Graphql::Errors::ResourceNotAvailable5312 user_role: :reporter, shared_examples_name: "denying access to namespace package setting"5313 behaves like denying access to namespace package setting5314 raises Gitlab::Graphql::Errors::ResourceNotAvailable5315 user_role: :guest, shared_examples_name: "denying access to namespace package setting"5316 behaves like denying access to namespace package setting5317 raises Gitlab::Graphql::Errors::ResourceNotAvailable5318 user_role: :anonymous, shared_examples_name: "denying access to namespace package setting"5319 behaves like denying access to namespace package setting5320 raises Gitlab::Graphql::Errors::ResourceNotAvailable5321 without existing namespace package setting5322 user_role: :owner, shared_examples_name: "creating the namespace package setting"5323 behaves like creating the namespace package setting5324 creates a new package setting5325 saves the settings5326 behaves like returning a success5327 returns the namespace package setting with no errors5328 user_role: :maintainer, shared_examples_name: "denying access to namespace package setting"5329 behaves like denying access to namespace package setting5330 raises Gitlab::Graphql::Errors::ResourceNotAvailable5331 behaves like disabling admin_package feature flag5332 behaves like creating the namespace package setting5333 creates a new package setting5334 saves the settings5335 behaves like returning a success5336 returns the namespace package setting with no errors5337 user_role: :developer, shared_examples_name: "denying access to namespace package setting"5338 behaves like denying access to namespace package setting5339 raises Gitlab::Graphql::Errors::ResourceNotAvailable5340 user_role: :reporter, shared_examples_name: "denying access to namespace package setting"5341 behaves like denying access to namespace package setting5342 raises Gitlab::Graphql::Errors::ResourceNotAvailable5343 user_role: :guest, shared_examples_name: "denying access to namespace package setting"5344 behaves like denying access to namespace package setting5345 raises Gitlab::Graphql::Errors::ResourceNotAvailable5346 user_role: :anonymous, shared_examples_name: "denying access to namespace package setting"5347 behaves like denying access to namespace package setting5348 raises Gitlab::Graphql::Errors::ResourceNotAvailable5349ApplicationExperiment5350 registers a default control behavior for anonymous experiments5351 #publish5352 tracks the assignment5353 adds to the published experiments5354 #track5355 doesn't track if we shouldn't track5356 tracks the event with the expected arguments and merged contexts5357 when using known context resources5358 includes those using the gitlab standard context5359 falls back to using the group key5360 with the actor key5361 provides it to the tracking call as the user5362 handles when it's not a user record5363 #key_for5364 generates FIPS compliant SHA2 hashes5365 falls back to legacy MD5 when FIPS isn't forced5366 #process_redirect_url5367 generates the correct urls based on where the engine was mounted5368 url: "https://about.gitlab.com/", processed_url: "https://about.gitlab.com/"5369 returns the url or nil if invalid on SaaS5370 considers all urls invalid when not on SaaS5371 url: "https://gitlab.com/", processed_url: "https://gitlab.com/"5372 returns the url or nil if invalid on SaaS5373 considers all urls invalid when not on SaaS5374 url: "http://docs.gitlab.com", processed_url: "http://docs.gitlab.com"5375 returns the url or nil if invalid on SaaS5376 considers all urls invalid when not on SaaS5377 url: "https://docs.gitlab.com/some/path?foo=bar", processed_url: "https://docs.gitlab.com/some/path?foo=bar"5378 returns the url or nil if invalid on SaaS5379 considers all urls invalid when not on SaaS5380 url: "http://badgitlab.com", processed_url: nil5381 returns the url or nil if invalid on SaaS5382 considers all urls invalid when not on SaaS5383 url: "https://gitlab.com.nefarious.net", processed_url: nil5384 returns the url or nil if invalid on SaaS5385 considers all urls invalid when not on SaaS5386 url: "https://unknown.gitlab.com", processed_url: nil5387 returns the url or nil if invalid on SaaS5388 considers all urls invalid when not on SaaS5389 url: "https://badplace.com\nhttps://gitlab.com", processed_url: nil5390 returns the url or nil if invalid on SaaS5391 considers all urls invalid when not on SaaS5392 url: "https://gitlabbcom", processed_url: nil5393 returns the url or nil if invalid on SaaS5394 considers all urls invalid when not on SaaS5395 url: "https://gitlabbcom/", processed_url: nil5396 returns the url or nil if invalid on SaaS5397 considers all urls invalid when not on SaaS5398 url: "http://gdk.test/foo/bar", processed_url: "http://gdk.test/foo/bar"5399 returns the url or nil if invalid on SaaS5400 considers all urls invalid when not on SaaS5401 url: "http://localhost:3000/foo/bar", processed_url: "http://localhost:3000/foo/bar"5402 returns the url or nil if invalid on SaaS5403 considers all urls invalid when not on SaaS5404 when resolving variants5405 returns an assigned name5406 when nesting experiments5407 doesn't raise an exception5408 tracks an event5409 when caching5410 caches the variant determined by the variant resolver5411 doesn't cache a variant if we don't explicitly provide one5412 caches a control variant if we assign it specifically5413 arbitrary attributes5414 sets and gets attributes about an experiment5415 increments a value for an experiment5416 with deprecation warnings5417 doesn't warn on non dev/test environments5418 warns on dev and test environments5419AuditEvent5420 sanitizes custom_message in the details hash5421 associations5422 is expected to belong to user required: false inverse_of => audit_events5423 validations5424 is expected to allow :ip_address to be ‹"192.168.17.43"›5425 is expected to allow :ip_address to be ‹"2001:0db8:85a3:0000:0000:8a2e:0370:7334"›5426 is expected not to allow :ip_address to be ‹"invalid IP"›5427 callbacks5428 #parallel_persist5429 wih author_name5430 behaves like a parallel persisted field5431 column: :value, details: nil, expected_value: :value5432 sets both values to be the same5433 column: nil, details: :value, expected_value: :value5434 sets both values to be the same5435 column: :value, details: :another_value, expected_value: :value5436 sets both values to be the same5437 column: nil, details: nil, expected_value: nil5438 sets both values to be the same5439 with entity_path5440 behaves like a parallel persisted field5441 column: :value, details: nil, expected_value: :value5442 sets both values to be the same5443 column: nil, details: :value, expected_value: :value5444 sets both values to be the same5445 column: :value, details: :another_value, expected_value: :value5446 sets both values to be the same5447 column: nil, details: nil, expected_value: nil5448 sets both values to be the same5449 with target_details5450 behaves like a parallel persisted field5451 column: :value, details: nil, expected_value: :value5452 sets both values to be the same5453 column: nil, details: :value, expected_value: :value5454 sets both values to be the same5455 column: :value, details: :another_value, expected_value: :value5456 sets both values to be the same5457 column: nil, details: nil, expected_value: nil5458 sets both values to be the same5459 with target_type5460 behaves like a parallel persisted field5461 column: :value, details: nil, expected_value: :value5462 sets both values to be the same5463 column: nil, details: :value, expected_value: :value5464 sets both values to be the same5465 column: :value, details: :another_value, expected_value: :value5466 sets both values to be the same5467 column: nil, details: nil, expected_value: nil5468 sets both values to be the same5469 with target_id5470 behaves like a parallel persisted field5471 column: :value, details: nil, expected_value: :value5472 sets both values to be the same5473 column: nil, details: :value, expected_value: :value5474 sets both values to be the same5475 column: :value, details: :another_value, expected_value: :value5476 sets both values to be the same5477 column: nil, details: nil, expected_value: nil5478 sets both values to be the same5479 #as_json5480 ip_address5481 overrides the ip_address with its string value5482 #author5483 when the target type is not Ci::Runner5484 returns a NullAuthor5485 when the target type is Ci::Runner and details contain runner_registration_token5486 returns a CiRunnerTokenAuthor5487 name consists of prefix and token5488Issues::ResolveDiscussions5489 for resolving discussions5490 #merge_request_for_resolving_discussion5491 finds the merge request5492 only queries for the merge request once5493 #discussions_to_resolve5494 contains a single discussion when matching merge request and discussion are passed5495 contains all discussions when only a merge request is passed5496 contains only unresolved discussions5497 is empty when a discussion and another merge request are passed5498Gitlab::Ci::Pipeline::Chain::EnsureEnvironments5499 #perform!5500 when a pipeline contains a deployment job5501 and the environment does not exist5502 creates the environment specified by the job5503 and the pipeline is for a merge request5504 associates the environment with the merge request5505 when an environment has already been existed5506 ensures environment existence for the job5507 and the pipeline is for a merge request5508 does not associate the environment with the merge request5509 when an environment name contains an invalid character5510 sets the failure status5511 when a pipeline contains a teardown job5512 ensures environment existence for the job5513 when a pipeline does not contain a deployment job5514 does not create any environments5515projects/tags/index.html.haml5516 when tag is associated with a release5517 when name does not contain a backslash5518 renders a link to the release page5519 when name contains backslash5520 renders a link to the release page with backslash escaped5521 when the most recent build for a tag has artifacts5522 renders the Artifacts section in the download list5523 renders artifact download links5524 when the most recent build for a tag has expired artifacts5525 does not render the Artifacts section in the download list5526 does not render artifact download links5527 build stats5528 shows build status or placeholder when pipelines present5529 shows no build status or placeholder when no pipelines present5530 shows no build status or placeholder when pipelines are private5531 when Gitaly is unavailable5532 renders an error5533Packages::Npm::CreateTagService5534 #execute5535 with no existing tag name5536 behaves like it creates the tag5537 is expected to change `Packages::Tag.count` by 15538 is expected to eq "test-tag"5539 adds tag to the package5540 with exisiting tag name5541 on package with different name5542 behaves like it creates the tag5543 is expected to change `Packages::Tag.count` by 15544 is expected to eq "test-tag"5545 adds tag to the package5546 on different package type5547 behaves like it creates the tag5548 is expected to change `Packages::Tag.count` by 15549 is expected to eq "test-tag"5550 adds tag to the package5551 on same package with different version5552 is expected to not change `Packages::Tag.count`5553 is expected to eq "test-tag"5554 adds tag to the package5555Gitlab::SidekiqMiddleware::DuplicateJobs::DuplicateJob5556 #schedule5557 behaves like scheduling with deduplication class5558 calls schedule on the strategy5559 when the deduplication depends on a FF5560 when the feature flag is enabled5561 behaves like scheduling with deduplication class5562DEPRECATION WARNING: Invalid Feature Flag my_feature_flag stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)5563 calls schedule on the strategy5564 when the feature flag is disabled5565 behaves like scheduling with deduplication class5566DEPRECATION WARNING: Invalid Feature Flag my_feature_flag stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)5567 calls schedule on the strategy5568 #perform5569 calls perform on the strategy5570 with Redis cookies5571 #check!5572 when there was no job in the queue yet5573 is expected to eq "123"5574 adds the idempotency key to the jobs payload5575 when TTL option is not set5576 behaves like sets Redis keys with correct TTL5577 adds an idempotency key with correct ttl5578 when TTL option is set5579 behaves like sets Redis keys with correct TTL5580 adds an idempotency key with correct ttl5581 when there was already a job with same arguments in the same queue5582 is expected to eq "existing-jid"5583 does not change the existing key's TTL5584 sets the existing jid5585 #update_latest_wal_location!5586 stores a wal location to redis with an offset relative to existing wal location5587 UPDATE_WAL_COOKIE_SCRIPT5588 does not create the key5589 when the key exists5590 updates all connections5591 preserves the ttl5592 and low offsets5593 updates only some connections5594 #latest_wal_locations5595 when job was deduplicated and wal locations were already persisted5596 is expected to eq {"ci"=>"def", "main"=>"abc"}5597 when job is not deduplication and wal locations were not persisted5598 is expected to be empty5599 #delete!5600 when we didn't track the definition5601 is expected not to raise Exception5602 when the key exists in redis5603 when the idempotency key is not part of the job5604 recalculates the idempotency hash5605 behaves like deleting the duplicate job5606 behaves like deleting keys from redis5607 removes the cookie key from redis5608 when the idempotency key is part of the job5609 does not recalculate the idempotency hash5610 behaves like deleting the duplicate job5611 behaves like deleting keys from redis5612 removes the cookie key from redis5613 #set_deduplicated_flag!5614 when the job is reschedulable5615 sets the key in Redis5616 sets, gets and cleans up the deduplicated flag5617 when the job is not reschedulable5618 does not set the key in Redis5619 does not set the deduplicated flag5620 #duplicate?5621 raises an error if the check wasn't performed5622 returns false if the existing jid equals the job jid5623 returns true if the existing jid is different from the job jid5624 #scheduled?5625 returns false for non-scheduled jobs5626 scheduled jobs5627 returns true5628 #reschedule5629 reschedules the current job5630 #should_reschedule?5631 when the job is reschedulable5632 is expected to eq false5633 with deduplicated flag5634 is expected to eq true5635 when the job is not reschedulable5636 is expected to eq false5637 with deduplicated flag5638 is expected to eq false5639 #scheduled_at5640 returns when the job is scheduled at5641 #options5642 returns worker options5643 #idempotent?5644 when worker class does not exist5645 returns false5646 when worker class does not respond to #idempotent?5647 returns false5648 when worker class is not idempotent5649 returns false5650 when worker class is idempotent5651 returns true5652 when worker class is utilizing load balancing capabilities5653 returns true5654Gitlab::Metrics::Dashboard::Finder5655 .find5656 behaves like misconfigured dashboard service response5657 returns an appropriate message and status code5658 when the dashboard exists5659 behaves like valid dashboard service response5660 behaves like valid dashboard service response for schema5661 returns a json representation of the dashboard5662 when the dashboard is configured incorrectly5663 behaves like misconfigured dashboard service response5664 returns an appropriate message and status code5665 when the dashboard contains a metric without a query5666 behaves like misconfigured dashboard service response5667 returns an appropriate message and status code5668 when the system dashboard is specified5669 behaves like valid dashboard service response5670 behaves like valid dashboard service response for schema5671 returns a json representation of the dashboard5672 when no dashboard is specified5673 behaves like valid dashboard service response5674 behaves like valid dashboard service response for schema5675 returns a json representation of the dashboard5676 when the dashboard is expected to be embedded5677 behaves like valid embedded dashboard service response5678 behaves like valid dashboard service response for schema5679 returns a json representation of the dashboard5680 when params are incomplete5681 behaves like valid embedded dashboard service response5682 behaves like valid dashboard service response for schema5683 returns a json representation of the dashboard5684 when the panel is specified5685 as a custom metric5686 behaves like misconfigured dashboard service response5687 returns an appropriate message and status code5688 when the metric exists5689 behaves like valid embedded dashboard service response5690 behaves like valid dashboard service response for schema5691 returns a json representation of the dashboard5692 as a project-defined panel5693 behaves like misconfigured dashboard service response5694 returns an appropriate message and status code5695 when the metric exists5696 behaves like valid embedded dashboard service response5697 behaves like valid dashboard service response for schema5698 returns a json representation of the dashboard5699 .find_raw5700 is expected to eq {"dashboard"=>"Environment metrics", "panel_groups"=>[{"group"=>"System metrics (Kubernetes)", "panel..., "title"=>"HTTP Error Rate", "type"=>"area-chart", "y_label"=>"HTTP Errors (%)"}]}], "priority"=>1}5701 when the system dashboard is specified5702 is expected to eq {"dashboard"=>"Environment metrics", "panel_groups"=>[{"group"=>"System metrics (Kubernetes)", "panel..., "title"=>"HTTP Error Rate", "type"=>"area-chart", "y_label"=>"HTTP Errors (%)"}]}], "priority"=>1}5703 when an existing project dashboard is specified5704 is expected to eq {"dashboard"=>"Test Dashboard", "links"=>[{"title"=>"Link 1", "url"=>"https://gitlab.com"}, {"title"=...s"=>{"default_value"=>"default"}, "type"=>"text"}, "text_variable_simple_syntax"=>"default value"}}}5705 .find_all_paths5706 includes OOTB dashboards by default5707 when the project contains dashboards5708 includes OOTB and project dashboards5709Gitlab::Diff::LinesUnfolder5710 position requires a middle expansion and new match lines5711 old_line is an invalid number5712 fails gracefully5713 blob lines5714 returns the extracted blob lines correctly5715 diff lines5716 return merge of blob lines with diff lines correctly5717 merged lines have correct line codes5718 position requires a middle expansion and no top match line5719 blob lines5720 returns the extracted blob lines correctly5721 diff lines5722 return merge of blob lines with diff lines correctly5723 merged lines have correct line codes5724 position requires a middle expansion and no bottom match line5725 blob lines5726 returns the extracted blob lines correctly5727 diff lines5728 return merge of blob lines with diff lines correctly5729 merged lines have correct line codes5730 position requires a short top expansion5731 blob lines5732 returns the extracted blob lines correctly5733 diff lines5734 return merge of blob lines with diff lines correctly5735 merged lines have correct line codes5736 position sits between two match lines (no expasion needed)5737 diff lines5738 returns nil5739 position requires bottom expansion and new match lines5740 blob lines5741 returns the extracted blob lines correctly5742 diff lines5743 return merge of blob lines with diff lines correctly5744 merged lines have correct line codes5745 position requires bottom expansion and no new match line5746 blob lines5747 returns the extracted blob lines correctly5748 diff lines5749 return merge of blob lines with diff lines correctly5750 merged lines have correct line codes5751 positioned on an image5752 diff file is not text5753 returns nil5754 diff file is text5755 returns nil5756Gitlab::X509::Certificate5757 testing environment setup5758 generate_root5759 generates a root CA that expires a long way in the future5760 generate_intermediate5761 generates an intermediate CA that expires a long way in the future5762 generates an intermediate CA properly signed by the root CA5763 generate_cert5764 generates a cert properly signed by the intermediate CA5765 generates a cert that expires soon5766 generates a cert intended for email signing5767 passing in INFINITE_EXPIRY5768 generates a cert that expires a long way in the future5769 .from_strings5770 parses correctly a certificate and key5771 .from_files5772 parses correctly a certificate and key5773 with optional ca_certs5774 parses correctly certificate, key and ca_certs5775 with no intermediate CA5776 parses correctly a certificate and key5777 .default_cert_dir5778 when SSL_CERT_DIR env variable is not set5779 returns default directory from OpenSSL5780 when SSL_CERT_DIR env variable is set5781 returns specified directory5782 .default_cert_file5783 when SSL_CERT_FILE env variable is not set5784 returns default file from OpenSSL5785 when SSL_CERT_FILE env variable is set5786 returns specified file5787 .ca_certs_paths5788 returns all files specified by OpenSSL defaults5789 .ca_certs_bundle5790 skips certificates if OpenSSLError is raised and report it5791 returns a list certificates as strings5792 .load_ca_certs_bundle5793 loads a PEM-encoded certificate bundle into an OpenSSL::X509::Certificate array5794WorkItems::CreateFromTaskService5795 #execute5796 when work item params are valid5797 is expected to be success5798 creates a work item and creates parent link to the original work item5799 replaces the original issue markdown description with new work item reference5800 behaves like title with extra spaces5801 when title has extra spaces5802 removes extra leading and trailing whitespaces from title5803 when last operation fails5804 rollbacks all operations5805 is expected to be error5806 returns an error message5807 when work item params are invalid5808 returns work item errors5809 behaves like CreateFromTask service with invalid params5810 is expected to be error5811 does not create a work item or links5812IncidentManagement::Incidents::CreateService5813 # order random5814 #execute5815 when incident has title and description5816 responds with success5817 creates an incident issue5818 created issue has correct attributes5819 behaves like incident issue5820 has incident as issue type5821 with default severity5822 sets the correct severity level to "unknown"5823 with severity5824 severity: "critical", incident_severity: "critical"5825 sets the correct severity level5826 severity: "high", incident_severity: "high"5827 sets the correct severity level5828 severity: "medium", incident_severity: "medium"5829 sets the correct severity level5830 severity: "low", incident_severity: "low"5831 sets the correct severity level5832 severity: "unknown", incident_severity: "unknown"5833 sets the correct severity level5834 with an alert5835 when the alert is valid5836 associates the alert with the incident5837 when the alert is not valid5838 does not associate the alert with the incident5839 when incident has no title5840 does not create an issue5841 responds with errors5842 result payload contains an Issue object5843 with alert5844 the alert prevents the issue from saving5845 responds with errors5846LabelNote5847 when resource is issue5848 includes a link to the list of issues filtered by the label5849 behaves like label note created from events5850 .from_events5851 returns system note with expected attributes5852 updates markdown cache if reference is not set yet5853 updates markdown cache if label was deleted5854 returns html note5855 returns text note for added labels5856 returns text note for removed labels5857 returns text note for added and removed labels5858 returns text note for cross-project label5859 returns text note for cross-group label5860 when resource is merge request5861 includes a link to the list of merge requests filtered by the label5862 behaves like label note created from events5863 .from_events5864 returns system note with expected attributes5865 updates markdown cache if reference is not set yet5866 updates markdown cache if label was deleted5867 returns html note5868 returns text note for added labels5869 returns text note for removed labels5870 returns text note for added and removed labels5871 returns text note for cross-project label5872 returns text note for cross-group label5873projects/commit/show.html.haml5874 parallel diff view5875 spans full width5876 in the context of a merge request5877 shows that it is in the context of a merge request5878 when merge request is nil5879 renders the page5880 when commit is signed5881 with GPG5882 renders unverified badge5883 with SSH5884 renders unverified badge5885 with X.5095886 renders unverified badge5887Ci::PipelineArtifacts::DestroyAllExpiredService5888 .execute5889 when timeout happens5890 returns 0 and does not continue destroying5891 when there are no artifacts5892 does not raise error5893 when the loop limit is reached5894 destroys one artifact5895 reports the number of destroyed artifacts5896 when there are artifacts more than batch sizes5897 destroys all expired artifacts5898 reports the number of destroyed artifacts5899 when artifacts are not expired5900 does not destroy pipeline artifacts5901 reports the number of destroyed artifacts5902 when pipeline is locked5903 does not destroy pipeline artifacts5904 reports the number of destroyed artifacts5905 with unlocked pipeline artifacts5906 destroys all expired artifacts5907 when the loop limit is reached5908 destroys one artifact5909 reports the number of destroyed artifacts5910 .destroy_artifacts_batch5911 returns a falsy value without artifacts5912BulkImports::RelationExportService5913 #execute5914 exports specified relation and marks export as finished5915 removes temp export files5916 exports specified relation and marks export as finished5917 when exporting a file relation5918 uses file export service5919 when export record does not exist5920 creates export record5921 when there is existing export present5922 removes existing export before exporting5923 when export is recently finished5924 returns recently finished export instead of re-exporting5925 when exception occurs during export5926 marks export as failed5927 tracks exception5928 when passed relation is not supported5929 tracks exception5930 when export was batched5931 removes existing batches and marks export as not batched5932ForkNamespaceEntity5933 renders json5934 includes id5935 includes name5936 includes description5937 includes markdown_description5938 includes visibility5939 includes full_name5940 includes created_at5941 includes updated_at5942 includes avatar_url5943 exposes path for forking project to the namespace5944 exposes forked_project_path when fork exists in namespace5945 exposes relative path to the namespace5946 exposes human readable permission level5947Resolvers::GroupMilestonesResolver5948 #resolve5949 calls MilestonesFinder#execute5950 without parameters5951 calls MilestonesFinder to retrieve all milestones5952 with parameters5953 timeframe argument5954 by ids5955 calls MilestonesFinder with correct parameters5956 by sort5957 calls MilestonesFinder with correct parameters5958 uses offset-pagination when sorting by expired_last_due_date_asc5959 uses offset-pagination when sorting by expired_last_due_date_desc5960 by timeframe5961 when timeframe start and end are present5962 when start is after end5963 raises error5964 when including descendant milestones in a public group5965 finds milestones only in accessible projects and groups5966 include_descendants and include_ancestors5967 when including neither ancestor or descendant milestones in a public group5968 finds milestones only in accessible projects and groups5969 when including descendant milestones in a public group5970 finds milestones only in accessible projects and groups5971 when including ancestor milestones in a public group5972 finds milestones only in accessible projects and groups5973 when including both ancestor or descendant milestones in a public group5974 finds milestones only in accessible projects and groups5975Organizations::Organization5976 # order random5977 #destroy5978 when trying to delete the default organization5979 returns false5980 when trying to delete a non-default organization5981 returns true5982 #default?5983 when organization is default5984 returns true5985 when organization is not default5986 returns false5987 .default_organization5988 returns the default organization5989 #to_param5990 returns the path5991 when using scopes5992 .without_default5993 excludes default organization5994 includes other organizations organization5995 #destroy!5996 when trying to delete the default organization5997 raises an error5998 when trying to delete a non-default organization5999 does not raise error6000 validations6001 is expected to validate that :name cannot be empty/falsy6002 is expected to validate that the length of :name is at most 2556003 is expected to validate that :path cannot be empty/falsy6004 is expected to validate that the length of :path is between 2 and 2556005 path validator6006 path: "path.", valid: false, error_message: default_path_error6007 validates organization path6008 path: "path.git", valid: false, error_message: default_path_error6009 validates organization path6010 path: "new", valid: false, error_message: reserved_path_error6011 validates organization path6012 path: ".path", valid: true, error_message: nil6013 validates organization path6014 path: "org__path", valid: true, error_message: nil6015 validates organization path6016 path: "some-name", valid: true, error_message: nil6017 validates organization path6018 path: "simple", valid: true, error_message: nil6019 validates organization path6020 #name6021 when organization is default6022 returns Default6023 associations6024 is expected to have many namespaces6025 is expected to have many groups6026 is expected to have many users through organization_users inverse_of => organizations6027 is expected to have many organization_users inverse_of => organization6028 #id6029 when organization is default6030 has id 16031 when organization is not default6032 does not have id 16033BuildActionEntity6034 #as_json6035 contains original job name6036 contains path to the action play6037 contains whether it is playable6038 when job is scheduled6039 returns scheduled6040 returns scheduled_at6041 returns unschedule path6042Gitlab::Memory::Reporter6043 # order random6044 #run_report6045 when reports path is specified directly6046 behaves like runs and stores reports6047 runs the given report and returns true6048 logs start and finish event6049 increments Prometheus duration counter6050 when the report returns invalid file path6051 logs `0` as `perf_report_size_bytes`6052 when an error occurs6053 when cause was an error being raised6054 behaves like handles errors gracefully6055 logs the error and returns false6056 when compression process is still running6057 terminates the process6058 when cause was compression command failing6059 behaves like handles errors gracefully6060 logs the error and returns false6061 when compression process is still running6062 terminates the process6063 when a report is disabled6064 does nothing and returns false6065 when reports path is specified via environment6066 behaves like runs and stores reports6067 runs the given report and returns true6068 logs start and finish event6069 increments Prometheus duration counter6070 when the report returns invalid file path6071 logs `0` as `perf_report_size_bytes`6072 when an error occurs6073 when cause was an error being raised6074 behaves like handles errors gracefully6075 logs the error and returns false6076 when compression process is still running6077 terminates the process6078 when cause was compression command failing6079 behaves like handles errors gracefully6080 logs the error and returns false6081 when compression process is still running6082 terminates the process6083 when a report is disabled6084 does nothing and returns false6085 when reports path is not specified6086 defaults to a temporary location6087 behaves like runs and stores reports6088 runs the given report and returns true6089 logs start and finish event6090 increments Prometheus duration counter6091 when the report returns invalid file path6092 logs `0` as `perf_report_size_bytes`6093 when an error occurs6094 when cause was an error being raised6095 behaves like handles errors gracefully6096 logs the error and returns false6097 when compression process is still running6098 terminates the process6099 when cause was compression command failing6100 behaves like handles errors gracefully6101 logs the error and returns false6102 when compression process is still running6103 terminates the process6104 when a report is disabled6105 does nothing and returns false6106Pages::MigrateLegacyStorageToDeploymentService6107 calls ::Pages::ZipDirectoryService6108 does not mark pages as not deployed if public directory is absent but invalid entries are not ignored6109 removes pages archive when can not save deployment6110 when mark_projects_as_not_deployed is passed6111 marks pages as not deployed if public directory is absent and invalid entries are ignored6112 does not mark pages as not deployed if public directory is absent but pages_deployment exists6113 when pages site is deployed to legacy storage6114 creates pages deployment6115 removes tmp pages archive6116 does not change pages deployment if it is set6117Gitlab::Instrumentation::RedisInterceptor6118 read and write6119 setup: [], command: [:set, "foo", "bar"], expect_write: 9, expect_read: 26120 counts bytes read and written6121 setup: [[:set, "foobar", 1000]], command: [:incr, "foobar"], expect_write: 10, expect_read: 46122 counts bytes read and written6123 setup: [], command: [:hgetall, "foobar"], expect_write: 13, expect_read: 06124 counts bytes read and written6125 setup: [[:hset, "myhash", "field", "hello world"]], command: [:hgetall, "myhash"], expect_write: 13, expect_read: 166126 counts bytes read and written6127 setup: [[:set, "foo", "barbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbar"]], command: [:get, "foo"], expect_write: 6, expect_read: 3006128 counts bytes read and written6129 setup: [[:zadd, "myset", 0, "foo"], [:zadd, "myset", 1, "bar"]], command: [:zrange, "myset", 0, -1, "withscores"], expect_write: 24, expect_read: 86130 counts bytes read and written6131 counting6132 counts successful requests6133 counts successful pipelined requests6134 when encountering exceptions6135 generic exception6136 counts exception6137 moved redirection6138 counts exception6139 ask redirection6140 counts exception6141 in production environment6142 counts disallowed cross-slot requests6143 does not count allowed cross-slot requests6144 does not count allowed non-cross-slot requests6145 skips count for non-cross-slot requests6146 without active RequestStore6147 still runs cross-slot validation6148 latency6149 commands in the apdex6150 command: [:get, "foobar"]6151 measures requests we want in the apdex6152 command: ["GET", "foobar"]6153 measures requests we want in the apdex6154 with pipelined commands6155 measures requests that do not have blocking commands6156 raises error when keys are not from the same slot6157 commands not in the apdex6158 setup: [["rpush", "foobar", 1]], command: ["brpop", "foobar", 0]6159 skips requests we do not want in the apdex6160 setup: [["rpush", "foobar", 1]], command: ["blpop", "foobar", 0]6161 skips requests we do not want in the apdex6162 setup: [["rpush", "{abc}foobar", 1]], command: ["brpoplpush", "{abc}foobar", "{abc}bazqux", 0]6163 skips requests we do not want in the apdex6164 setup: [["rpush", "{abc}foobar", 1]], command: ["brpoplpush", "{abc}foobar", "{abc}bazqux", 0]6165 skips requests we do not want in the apdex6166 setup: [["zadd", "foobar", 1, "a"]], command: ["bzpopmin", "foobar", 0]6167 skips requests we do not want in the apdex6168 setup: [["zadd", "foobar", 1, "a"]], command: ["bzpopmax", "foobar", 0]6169 skips requests we do not want in the apdex6170 setup: [["xadd", "mystream", 1, "myfield", "mydata"]], command: ["xread", "block", 1, "streams", "mystream", "0-0"]6171 skips requests we do not want in the apdex6172 setup: [["xadd", "foobar", 1, "myfield", "mydata"], ["xgroup", "create", "foobar", "mygroup", 0]], command: ["xreadgroup", "group", "mygroup", "myconsumer", "block", 1, "streams", "foobar", "0-0"]6173 skips requests we do not want in the apdex6174 setup: [], command: ["command"]6175 skips requests we do not want in the apdex6176 with pipelined commands6177 skips requests that have blocking commands6178Mutations::ContainerExpirationPolicies::Update6179 is expected to require graphql authorizations :admin_container_image6180 #resolve6181 with existing container expiration policy6182 user_role: :maintainer, shared_examples_name: "updating the container expiration policy"6183 behaves like updating the container expiration policy6184 behaves like updating the container expiration policy attributes6185 updates the container expiration policy6186 behaves like not creating the container expiration policy6187 doesn't create the container expiration policy6188 behaves like returning a success6189 returns the container expiration policy with no errors6190 with invalid params6191 doesn't update the cadence6192 returns an error6193 behaves like not creating the container expiration policy6194 doesn't create the container expiration policy6195 with blank regex6196 doesn't update the cadence6197 returns an error6198 behaves like not creating the container expiration policy6199 doesn't create the container expiration policy6200 user_role: :developer, shared_examples_name: "denying access to container expiration policy"6201 behaves like denying access to container expiration policy6202 raises Gitlab::Graphql::Errors::ResourceNotAvailable6203 user_role: :reporter, shared_examples_name: "denying access to container expiration policy"6204 behaves like denying access to container expiration policy6205 raises Gitlab::Graphql::Errors::ResourceNotAvailable6206 user_role: :guest, shared_examples_name: "denying access to container expiration policy"6207 behaves like denying access to container expiration policy6208 raises Gitlab::Graphql::Errors::ResourceNotAvailable6209 user_role: :anonymous, shared_examples_name: "denying access to container expiration policy"6210 behaves like denying access to container expiration policy6211 raises Gitlab::Graphql::Errors::ResourceNotAvailable6212 without existing container expiration policy6213 user_role: :maintainer, shared_examples_name: "creating the container expiration policy"6214 behaves like creating the container expiration policy6215 behaves like updating the container expiration policy attributes6216 creates a new container expiration policy6217 updates the container expiration policy6218 behaves like returning a success6219 returns the container expiration policy with no errors6220 user_role: :developer, shared_examples_name: "denying access to container expiration policy"6221 behaves like denying access to container expiration policy6222 raises Gitlab::Graphql::Errors::ResourceNotAvailable6223 user_role: :reporter, shared_examples_name: "denying access to container expiration policy"6224 behaves like denying access to container expiration policy6225 raises Gitlab::Graphql::Errors::ResourceNotAvailable6226 user_role: :guest, shared_examples_name: "denying access to container expiration policy"6227 behaves like denying access to container expiration policy6228 raises Gitlab::Graphql::Errors::ResourceNotAvailable6229 user_role: :anonymous, shared_examples_name: "denying access to container expiration policy"6230 behaves like denying access to container expiration policy6231 raises Gitlab::Graphql::Errors::ResourceNotAvailable6232Projects::ImportExport::RelationExport6233 associations6234 is expected to belong to project_export_job required: false6235 is expected to have one upload6236 validations6237 is expected to validate that :project_export_job cannot be empty/falsy6238 is expected to validate that :relation cannot be empty/falsy6239 is expected to validate that :status cannot be empty/falsy6240 is expected to validate that :status looks like an integer6241 is expected to validate that the length of :relation is at most 2556242 is expected to validate that the length of :jid is at most 2556243 is expected to validate that the length of :export_error is at most 3006244 validates uniquness of the relation attribute6245 .by_relation6246 returns export relations filtered by relation name6247 .relation_names_list6248 includes extra relations list6249 includes root tree relation name project6250 includes project tree top level relation nodes6251 includes project tree nested relation nodes6252 #mark_as_failed6253 sets status to failed and sets the export error6254Clusters::Agents::Authorizations::UserAccess::ProjectAuthorization6255 # order random6256 is expected to belong to project class_name => Project required: true6257 is expected to belong to agent class_name => Clusters::Agent required: true6258 is expected to validate jsonb schema "config"6259 #config_project6260 is expected to eq #<Project id:1107 namespace1202/project-1207>>6261 .for_user6262 user_role: :guest, expected_access_level: nil6263 returns the expected result6264 user_role: :reporter, expected_access_level: nil6265 returns the expected result6266 user_role: :developer, expected_access_level: 306267 returns the expected result6268 user_role: :maintainer, expected_access_level: 406269 returns the expected result6270 user_role: :owner, expected_access_level: 506271 returns the expected result6272Gitlab::Database::Migrations::TimeoutHelpers6273 # order random6274 #disable_statement_timeout6275-- transaction_open?()6276 -> 0.0002s6277 disables statement timeouts to current transaction only6278 with real environment6279-- execute("SET statement_timeout TO '20000'")6280 -> 0.0018s6281-- execute("SHOW statement_timeout")6282 -> 0.0014s6283-- transaction_open?()6284 -> 0.0001s6285-- execute("SET LOCAL statement_timeout TO 0")6286 -> 0.0020s6287-- execute("SHOW statement_timeout")6288 -> 0.0011s6289-- execute("SHOW statement_timeout")6290 -> 0.0010s6291-- execute("RESET statement_timeout")6292 -> 0.0010s6293 defines statement to 0 only for current transaction6294 when passing a blocks6295-- execute("SET statement_timeout TO '20000'")6296 -> 0.0081s6297 disables statement timeouts on session level and executes the block6298 with real environment6299-- execute("SET statement_timeout TO '20000'")6300 -> 0.0094s6301-- execute("SET statement_timeout TO '20000'")6302 -> 0.0016s6303-- execute("SHOW statement_timeout")6304 -> 0.0014s6305-- execute("SET statement_timeout TO 0")6306 -> 0.0012s6307-- execute("SHOW statement_timeout")6308 -> 0.0028s6309-- execute("SHOW statement_timeout")6310 -> 0.0014s6311-- execute("RESET statement_timeout")6312 -> 0.0015s6313-- execute("RESET statement_timeout")6314 -> 0.0013s6315-- execute("RESET statement_timeout")6316 -> 0.0011s6317 defines statement to 0 for any code run inside the block6318 when the statement_timeout is already disabled6319 yields control without disabling the timeout or resetting6320Gitlab::PathTraversal6321 # order random6322 .check_path_traversal!6323 detects path traversal in string without any separators6324 detects path traversal at the start of the string6325 detects path traversal at the start of the string, even to just the subdirectory6326 detects path traversal in the middle of the string6327 detects path traversal at the end of the string when slash-terminates6328 detects path traversal at the end of the string6329 detects path traversal in string with encoded chars6330 detects double encoded chars6331 does nothing for a safe string6332 logs potential path traversal attempts6333 logs does nothing for a safe string6334 does nothing for nil6335 does nothing for safe HashedPath6336 raises for unsafe HashedPath6337 raises for other non-strings6338 .check_allowed_absolute_path_and_path_traversal!6339 detects path traversal in string without any separators6340 detects path traversal at the start of the string6341 detects path traversal at the start of the string, even to just the subdirectory6342 detects path traversal in the middle of the string6343 detects path traversal at the end of the string when slash-terminates6344 detects path traversal at the end of the string6345 does not return errors for a safe string6346 raises error for a non-string6347 raises an exception if an absolute path is not allowed6348 does nothing for an allowed absolute path6349 .check_allowed_absolute_path!6350 raises an exception if an absolute path is not allowed6351 does nothing for an allowed absolute path6352Gitlab::Database::Partitioning::MonthlyStrategy6353 #current_partitions6354 detects both partitions6355 #missing_partitions6356 with existing partitions6357 detects the gap and the missing partition in May 20206358 detects the missing partitions at the end of the range and expects a partition for July 20206359 detects the missing partitions at the end of the range and expects a partition for August 20206360 creates partitions 6 months out from now (Sep 2020 through Feb 2021)6361 detects all missing partitions6362 when pruning partitions before June 20206363 does not include the missing partition from May 2020 because it would be dropped6364 detects the missing partition for 1 month ago (July 2020)6365 without existing partitions6366 detects the missing catch-all partition at the beginning6367 detects the missing partition for today and expects a partition for August 20206368 creates partitions 6 months out from now (Sep 2020 through Feb 20216369 detects all missing partitions6370 when pruning partitions before June 20206371 detects exactly the set of partitions from June 2020 to March 20216372 with a regular partition but no catchall (MINVALUE, to) partition6373 detects a missing catch-all partition to add before the existing partition6374 #extra_partitions6375 with existing partitions6376 without a time retention policy6377 has no extra partitions to prune6378 with a time retention policy that excludes no partitions6379 has no extra partitions to prune6380 with a time retention policy of 3 months6381 prunes the unbounded partition ending 2020-05-016382 with a time retention policy of 2 months6383 prunes the unbounded partition and the partition for May-June6384 when the retain_non_empty_partitions is true6385 prunes empty partitions6386 does not prune non-empty partitions6387Ci::CommitStatusesFinder#execute6388 tag refs6389 no pipelines6390 returns nil6391 when multiple tags exist6392 all relevant commit statuses are received6393 when a tag has multiple pipelines6394 chooses the latest to determine status6395 branch refs6396 no pipelines6397 returns nil6398 when a branch has multiple pipelines6399 chooses the latest to determine status6400 when multiple branches exist6401 all relevant commit statuses are received6402 CI pipelines visible to6403 everyone6404 returns something6405 project members only6406 returns a blank hash6407 when not a member of a private project6408 returns a blank hash6409MilestonesFinder6410 without filters6411 returns milestones for projects6412 returns milestones for groups6413 milestones for groups and project6414 returns milestones for groups and projects6415 orders milestones by due date6416 when grouping and sorting by expired_last6417 current milestones are returned first, then milestones without due date followed by expired milestones, sorted by due date in ascending order6418 #find_by6419 finds a single milestone6420 with filters6421 filters by id6422 filters by active state6423 filters by closed state6424 filters by title6425 filters by search_title6426 filters by search (title, description)6427 by timeframe6428 returns milestones with start_date and due_date between timeframe6429 returns milestones which starts before the timeframe6430 returns milestones which ends after the timeframe6431 by updated_at6432 returns milestones updated before a given date6433 returns milestones updated after a given date6434 returns milestones updated between the given dates6435 by iids6436 returns milestone for the given iids6437 when include_parent_milestones is true6438 ignores the iid filter6439MergeRequests::AddContextService6440 #execute6441 when admin mode is enabled6442 adds context commit6443 when admin mode is disabled6444 doesn't add context commit6445 when user doesn't have permission to update merge request6446 doesn't add context commit6447 when the commits array is empty6448 doesn't add context commit6449Gitlab::Ci::Config::Extendable::Entry6450 .new6451 when entry key is not included in the context hash6452 raises error6453 #value6454 reads a hash value from the context6455 #extensible?6456 when entry has inheritance defined6457 is extensible6458 when entry does not have inheritance specified6459 is not extensible6460 when entry value is not a hash6461 is not extensible6462 #extends_keys6463 when entry is extensible6464 returns symbolized extends key value6465 when entry is not extensible6466 returns nil6467 #ancestors6468 returns ancestors keys6469 #base_hashes!6470 when base hash is not extensible6471 returns unchanged base hashes6472 when base hash is extensible too6473 extends the base hashes first6474 mutates original context6475 #extend!6476 when extending a non-hash value6477 raises an error6478 when extending unknown key6479 raises an error6480 when extending a hash correctly6481 returns extended part of the hash6482 mutates original context6483 when extending multiple hashes correctly6484 returns extended part of the hash6485 mutates original context6486 when hash is not extensible6487 returns original key value6488 does not mutate orignal context6489 when circular depenency gets detected6490 raises an error6491 when nesting level is too deep6492 raises an error6493Gitlab::Ssh::Signature6494 signature verification6495 when signature is valid and user email is verified6496 behaves like verified signature6497 reports verified status6498 when using an RSA key6499 behaves like verified signature6500 reports verified status6501 when signed text is an empty string6502 behaves like verified signature6503 reports verified status6504 when signed text is nil6505 behaves like unverified signature6506 reports unverified status6507 when committer_email is empty6508 behaves like unverified signature6509 reports unverified status6510 when committer_email is nil6511 behaves like unverified signature6512 reports unverified status6513 when signature_text is empty6514 behaves like unverified signature6515 reports unverified status6516 when signature_text is nil6517 behaves like unverified signature6518 reports unverified status6519 when user email is not verified6520 reports unverified status6521 when no user exist with the committer email6522 reports other_user status6523 when no user exists with the committer email6524 reports other_user status6525 when signature is invalid6526 behaves like unverified signature6527 reports unverified status6528 when signature is for a different namespace6529 behaves like unverified signature6530 reports unverified status6531 when signature is for a different message6532 behaves like unverified signature6533 reports unverified status6534 when message has been tampered6535 behaves like unverified signature6536 reports unverified status6537 when the signing key does not exist in GitLab6538 when the key is not a signing one6539 reports unknown_key status6540 when the key is removed6541 reports unknown_key status6542 when key belongs to someone other than the committer6543 reports other_user status6544 #key_fingerprint6545 returns the pubkey sha256 fingerprint6546Gitlab::Instrumentation::RedisBase6547 .storage_key6548 returns the class name with underscore6549 .payload6550 returns values that are higher than 06551 .add_duration6552 does not lose precision while adding6553 storage key overlapping6554 keys do not overlap across storages6555 .increment_request_count6556 increments by the given amount6557 storage key overlapping6558 keys do not overlap across storages6559 .increment_write_bytes6560 storage key overlapping6561 keys do not overlap across storages6562 .increment_cross_slot_request_count6563 storage key overlapping6564 keys do not overlap across storages6565 increments by the given amount6566 .increment_allowed_cross_slot_request_count6567 storage key overlapping6568 keys do not overlap across storages6569 increments by the given amount6570 .increment_read_bytes6571 storage key overlapping6572 keys do not overlap across storages6573 .add_call_details6574 storage key overlapping6575 keys do not overlap across storages6576 .redis_cluster_validate!6577 Rails environments6578 env: "production", allowed: false, should_raise: false6579 is expected not to raise Exception6580 env: "production", allowed: true, should_raise: false6581 is expected not to raise Exception6582 env: "staging", allowed: false, should_raise: false6583 is expected not to raise Exception6584 env: "staging", allowed: true, should_raise: false6585 is expected not to raise Exception6586 env: "development", allowed: true, should_raise: false6587 is expected not to raise Exception6588 env: "development", allowed: false, should_raise: true6589 is expected to raise Gitlab::Instrumentation::RedisClusterValidator::CrossSlotError6590 env: "test", allowed: true, should_raise: false6591 is expected not to raise Exception6592 env: "test", allowed: false, should_raise: true6593 is expected to raise Gitlab::Instrumentation::RedisClusterValidator::CrossSlotError6594 .log_exception6595 logs exception with storage details6596Resolvers::DesignManagement::DesignsResolver6597 is expected to have nullable GraphQL type DesignConnection6598 #resolve6599 when the user cannot see designs6600 returns nothing6601 for a design collection6602 which contains just a single design6603 returns just that design6604 which contains another design6605 returns all designs6606 filtering6607 by filename6608 resolves to just the relevant design, ignoring designs with the same filename on different issues6609 by id6610 ids is provided but null6611 behaves as if unfiltered6612 ids is provided but empty6613 eliminates all values6614 the ID is on the current issue6615 resolves to just the relevant design6616 the ID is on a different issue6617 ignores it6618Packages::MarkPackagesForDestructionService6619 # order random6620 #execute6621 when the user is authorized6622 when it is successful6623 marks the packages as pending destruction6624 with maven packages6625 marks the packages as pending destruction6626 without version6627 marks the packages as pending destruction6628 when it is not successful6629 returns an error ServiceResponse6630 when the user is not authorized6631 returns an error ServiceResponse6632ServiceDesk::CustomEmailCredential6633 # order random6634 associations6635 is expected to belong to project required: false6636 can access service desk setting from project6637 encrypted #smtp_password6638 saves and retrieves the encrypted smtp password and iv correctly6639 encrypted #smtp_username6640 saves and retrieves the encrypted smtp username and iv correctly6641 validations6642 is expected to validate that :project cannot be empty/falsy6643 is expected to validate that :smtp_address cannot be empty/falsy6644 is expected to validate that the length of :smtp_address is at most 2556645 is expected to allow :smtp_address to be ‹"smtp.gmail.com"›6646 is expected to allow :smtp_address to be ‹"1.1.1.1"›6647 is expected to allow :smtp_address to be ‹"199.1.1.1"›6648 is expected not to allow :smtp_address to be ‹"https://example.com"›6649 is expected not to allow :smtp_address to be ‹"file://example"›6650 is expected not to allow :smtp_address to be ‹"/example"›6651 is expected not to allow :smtp_address to be ‹"localhost"›6652 is expected not to allow :smtp_address to be ‹"127.0.0.1"›6653 is expected not to allow :smtp_address to be ‹"192.168.12.12"›6654 is expected to validate that :smtp_port cannot be empty/falsy6655 is expected to validate that :smtp_port looks like an integer greater than 06656 is expected to validate that :smtp_username cannot be empty/falsy6657 is expected to validate that the length of :smtp_username is at most 2556658 is expected to validate that :smtp_password cannot be empty/falsy6659 is expected to validate that the length of :smtp_password is between 8 and 1286660Issues::RebalancingWorker6661 has the `until_executed` deduplicate strategy6662 #perform6663 without root_namespace param6664 is labeled as idempotent6665 performs multiple times sequentially without raising an exception6666 is labeled as idempotent6667 performs multiple times sequentially without raising an exception6668 behaves like running the worker6669 runs an instance of Issues::RelativePositionRebalancingService6670 anticipates there being too many concurent rebalances6671 takes no action if the value is nil6672 does not schedule a new rebalance if it finished under 1h ago6673 behaves like safely handles non-existent ids6674 anticipates the inability to find the issue6675 with root_namespace param6676 is labeled as idempotent6677 performs multiple times sequentially without raising an exception6678 is labeled as idempotent6679 performs multiple times sequentially without raising an exception6680 behaves like running the worker6681 runs an instance of Issues::RelativePositionRebalancingService6682 anticipates there being too many concurent rebalances6683 takes no action if the value is nil6684 does not schedule a new rebalance if it finished under 1h ago6685 behaves like safely handles non-existent ids6686 anticipates the inability to find the issue6687Gitlab::BlamePresenter6688 precalculates necessary data on init6689 #groups6690 delegates #groups call to the blame6691 #first_line6692 delegates #first_line call to the blame6693 #commit_data6694 has the data necessary to render the view6695 renamed file6696 does not generate link to previous blame on initial commit6697 generates link link to previous blame6698GoogleCloud::CreateCloudsqlInstanceService6699 #execute6700 triggers creation of a cloudsql instance6701 triggers worker to manage cloudsql instance creation operation results6702 when google APIs fail6703 returns error6704 when project has GCP_REGION defined6705 uses defined region6706Gitlab::Graphql::Pagination::ExternallyPaginatedArrayConnection6707 behaves like a connection with collection methods6708 responds to to_a6709 responds to size6710 responds to map6711 responds to include?6712 responds to empty?6713 behaves like a redactable connection6714 no redactor set6715 contains the unwanted item6716 does not redact more than once6717 redactor is set6718 does not contain the unwanted item6719 does not redact more than once6720 #nodes6721 behaves like connection with paged nodes6722 returns the collection limited to max page size6723 is a loaded memoized array6724 when `first` is passed6725 returns only the first elements6726 when `last` is passed6727 returns only the last elements6728 when after or before is specified, they are ignored6729 behaves like connection with paged nodes6730 returns the collection limited to max page size6731 is a loaded memoized array6732 when `first` is passed6733 returns only the first elements6734 when `last` is passed6735 returns only the last elements6736 behaves like connection with paged nodes6737 returns the collection limited to max page size6738 is a loaded memoized array6739 when `first` is passed6740 returns only the first elements6741 when `last` is passed6742 returns only the last elements6743 #start_cursor6744 returns the prev cursor6745 when there is none6746 returns nil6747 #end_cursor6748 returns the next cursor6749 when there is none6750 returns nil6751 #has_next_page6752 returns true when there is a end cursor6753 there is no end cursor6754 returns false6755 #has_previous_page6756 returns true when there is a start cursor6757 there is no start cursor6758 returns false6759Gitlab::Redis::Boolean6760 #to_s6761 true6762 is expected to eq "_b:1"6763 false6764 is expected to eq "_b:0"6765 .encode6766 true6767 is expected to eq "_b:1"6768 false6769 is expected to eq "_b:0"6770 .decode6771 valid encoded bool6772 true6773 is expected to equal true6774 false6775 is expected to equal false6776 partially invalid bool6777 raises an error6778 invalid encoded bool6779 raises an error6780 .true?6781 valid encoded bool6782 true6783 is expected to equal true6784 false6785 is expected to equal false6786 partially invalid bool6787 raises an error6788 invalid encoded bool6789 raises an error6790 .false?6791 valid encoded bool6792 true6793 is expected to equal false6794 false6795 is expected to equal true6796 partially invalid bool6797 raises an error6798 invalid encoded bool6799 raises an error6800RunPipelineScheduleWorker6801 has an until_executed deduplicate strategy6802 #perform6803 when a schedule not found6804 does not call the Service6805 when a schedule project is missing6806 does not call the Service6807 when a user not found6808 does not call the Service6809 #run_pipeline_schedule6810 when pipeline can be created6811 when pipeline is persisted6812 returns the service response6813 does not log errors6814 does not change the next_run_at6815 when scheduling option is given as true6816 returns the service response6817 does not log errors6818 changes the next_run_at6819 when pipeline was not persisted6820 logs a pipeline creation error6821 when schedule is already executed6822 does not change the next_run_at6823 creates a pipeline6824 when database statement timeout happens6825 increments Prometheus counter6826 logging a pipeline error6827ContributedProjectsFinder6828 activity without a current user6829 does only return public projects6830 does return all projects when visibility gets ignored6831 activity with a current user6832 is expected to contain exactly #<Project id:1149 namespace1244/project-1252>>, #<Project id:1150 namespace1245/project-1253>>, and #<Project id:1148 namespace1243/project-1251>>6833 user with private profile6834 does not return contributed projects6835WorkItems::ImportCsvService6836 # order random6837 #execute6838 when user has permission6839 behaves like importer with email notification6840 notifies user of import result6841 when file format is valid6842 when work item types are available6843 creates the expected number of work items6844 sets work item attributes6845 when csv contains work item types that are missing or not available6846 creates no work items6847 returns the correct result6848 when file is missing necessary headers6849 creates no records6850 creates no work items6851 when import_export_work_items_csv feature flag is off6852 raises an error6853 when user does not have permission6854 raises an error6855InviteMembersHelper6856 # order random6857 #common_invite_modal_dataset6858 has expected common attributes6859 with tasks_to_be_done6860 when inviting members for tasks6861 open_modal_param?: true, logged_in?: true, expected?: true6862 when the source is a project6863 behaves like including the tasks to be done attributes6864 includes the tasks to be done attributes when expected6865 when the source is a group6866 behaves like including the tasks to be done attributes6867 includes the tasks to be done attributes when expected6868 open_modal_param?: true, logged_in?: false, expected?: false6869 when the source is a project6870 behaves like including the tasks to be done attributes6871 includes the tasks to be done attributes when expected6872 when the source is a group6873 behaves like including the tasks to be done attributes6874 includes the tasks to be done attributes when expected6875 open_modal_param?: false, logged_in?: true, expected?: false6876 when the source is a project6877 behaves like including the tasks to be done attributes6878 includes the tasks to be done attributes when expected6879 when the source is a group6880 behaves like including the tasks to be done attributes6881 includes the tasks to be done attributes when expected6882 open_modal_param?: false, logged_in?: false, expected?: false6883 when the source is a project6884 behaves like including the tasks to be done attributes6885 includes the tasks to be done attributes when expected6886 when the source is a group6887 behaves like including the tasks to be done attributes6888 includes the tasks to be done attributes when expected6889 #common_invite_group_modal_data6890 has expected common attributes6891 when sharing with groups outside the hierarchy is disabled6892 provides the correct attributes6893 when sharing with groups outside the hierarchy is enabled6894 does not return filter attributes6895 with project6896 #can_invite_members_for_project?6897 when the user can_admin_project_member6898 returns true6899 when the user can not manage project members6900 returns false6901Banzai::ReferenceParser::ProjectParser6902 #referenced_by6903 when the link has a data-project attribute6904 using an existing project ID6905 returns an Array of projects6906 using a non-existing project ID6907 returns an empty Array6908 using a private project ID6909 returns an empty Array when unauthorized6910 returns an Array when authorized6911Gitlab::Database::PostgresPartition6912 associations6913 is expected to belong to postgres_partitioned_table required: false6914 behaves like a postgres model6915 .by_identifier6916 finds the Gitlab::Database::PostgresPartition6917 raises an error if not found6918 raises ArgumentError if given a non-fully qualified identifier6919 #to_s6920 returns the name6921 #schema6922 returns the schema6923 #name6924 returns the name6925 .for_parent_table6926 returns partitions for the parent table in the current schema6927 returns the partitions if the parent table schema is included in the table name6928 does not return partitions for tables not in the current schema6929 does not return partitions for tables if the schema is not the current6930 #parent_identifier6931 returns the parent table identifier6932 #condition6933 returns the condition for the partitioned values6934 .partition_exists?6935 when the partition exists6936 is expected to be truthy6937 when the partition does not exist6938 is expected to be falsey6939 .legacy_partition_exists?6940 when the partition exists6941 is expected to be truthy6942 when the partition does not exist6943 is expected to be falsey6944LegacyDiffDiscussion6945 #reply_attributes6946 includes line_code6947 #merge_request_version_params6948 when the discussion is active6949 returns an empty hash, which will end up showing the latest version6950 when the discussion is outdated6951 returns nil6952Resolvers::NestedGroupsResolver6953 # order random6954 #resolve6955 when parent group is public6956 when `include_parent_descendants` is false6957 when user is not logged in6958 behaves like access to all public subgroups6959 returns all public subgroups of the parent group6960 when user is logged in6961 behaves like access to all public subgroups6962 returns all public subgroups of the parent group6963 when `include_parent_descendants` is true6964 when user is not logged in6965 behaves like access to all public descendant groups6966 returns all public descendant groups of the parent group ordered by ASC name6967 when user is logged in6968 behaves like access to all public descendant groups6969 returns all public descendant groups of the parent group ordered by ASC name6970 with owned argument set as true6971 returns only descendant groups owned by the user6972 with search argument6973 returns only descendant groups with matching name or path6974 when parent group is private6975 when `include_parent_descendants` is true6976 when user is not logged in6977 behaves like returning empty results6978 returns empty results6979 when user is logged in6980 returns all private descendant groups6981 when `include_parent_descendants` is false6982 when user is not logged in6983 behaves like returning empty results6984 returns empty results6985 when user is logged in6986 returns private subgroups6987Gitlab::Ci::Config::Entry::Port6988 when configuration is a string6989 #valid?6990 is valid6991 #value6992 returns valid hash6993 #number6994 returns port number6995 #protocol6996 is nil6997 #name6998 is nil6999 when configuration is a hash7000 with the complete hash7001 #valid?7002 is valid7003 #value7004 returns valid hash7005 #number7006 returns port number7007 #protocol7008 returns port protocol7009 #name7010 returns port name7011 with only the port number7012 #valid?7013 is valid7014 #value7015 returns valid hash7016 #number7017 returns port number7018 #protocol7019 is nil7020 #name7021 is nil7022 without the number7023 #valid?7024 is not valid7025 when configuration is invalid7026 #valid?7027 is valid7028 when protocol7029 is http7030 #valid?7031 is valid7032 is https7033 #valid?7034 is valid7035 is neither http nor https7036 #valid?7037 is invalid7038Projects::ImportExport::ParallelProjectExportWorker7039 # order random7040 .sidekiq_retries_exhausted7041 sets export_job status to failed7042 logs an error message7043 #perform7044 behaves like an idempotent worker7045 is labeled as idempotent7046 performs multiple times sequentially without raising an exception7047 sets the export job status to finished7048 when after export strategy does not exist7049 sets the export job status to failed7050Gitlab::Ci::Pipeline::Expression::Lexeme::String7051 .build7052 creates a new instance of the token7053 .type7054 is a value lexeme7055 .scan7056 when using double quotes7057 correctly identifies string token7058 when using single quotes7059 correctly identifies string token7060 when there are mixed quotes in the string7061 is a greedy scanner for double quotes7062 is a greedy scanner for single quotes7063 allows to use single quotes inside double quotes7064 allow to use double quotes inside single quotes7065 allows to use an empty string inside single quotes7066 allow to use an empty string inside double quotes7067 #evaluate7068 returns string value if it is present7069 returns an empty string if it is empty7070Gitlab::Metrics::Dashboard::ServiceSelector7071 #call7072 is expected to equal Metrics::Dashboard::SystemDashboardService7073 when just the dashboard path is provided7074 is expected to equal Metrics::Dashboard::CustomDashboardService7075 when the path is for the system dashboard7076 is expected to equal Metrics::Dashboard::SystemDashboardService7077 when the path is for the pod dashboard7078 is expected to equal Metrics::Dashboard::PodDashboardService7079 when the embedded flag is provided7080 is expected to equal Metrics::Dashboard::DefaultEmbedService7081 when an incomplete set of dashboard identifiers are provided7082 is expected to equal Metrics::Dashboard::DefaultEmbedService7083 when all the chart identifiers are provided7084 is expected to equal Metrics::Dashboard::DynamicEmbedService7085 when all chart params expect dashboard_path are provided7086 is expected to equal Metrics::Dashboard::DynamicEmbedService7087 with a system dashboard and "custom" group7088 is expected to equal Metrics::Dashboard::CustomMetricEmbedService7089 with a grafana link7090 is expected to equal Metrics::Dashboard::GrafanaMetricEmbedService7091 with the embed defined in the arguments7092 is expected to equal Metrics::Dashboard::TransientEmbedService7093 when cluster is provided7094 is expected to equal Metrics::Dashboard::ClusterDashboardService7095 when cluster is provided and embedded is not true7096 is expected to equal Metrics::Dashboard::ClusterDashboardService7097 when cluster dashboard_path is provided7098 is expected to equal Metrics::Dashboard::ClusterDashboardService7099 when cluster is provided and embed params7100 is expected to equal Metrics::Dashboard::ClusterMetricsEmbedService7101 when metrics embed is for an alert7102 is expected to equal Metrics::Dashboard::GitlabAlertEmbedService7103Projects::ImportExport::ProjectExportPresenter7104 #description7105 override_description not provided7106 keeps original description7107 override_description provided7108 overrides description7109 #as_json7110 override_description not provided7111 keeps original description7112 override_description provided7113 overrides description7114 #protected_branches7115 returns the project exported protected branches7116 #project_members7117 does not export group members if it has no permission7118 does not export group members as maintainer7119 exports group members as group owner7120 as admin7121 when admin mode is enabled7122 exports group members as admin7123 exports group members as project members7124 when admin mode is disabled7125 does not export group members7126SafeZip::ExtractParams7127 #extract_path7128 is expected to eq "/tmp/safe-zip20230626-328-ax9ehp"7129 #matching_target_directory7130 path: "/public/index.html", result: "/public/"7131 is expected to eq "/tmp/safe-zip20230626-328-6kxpda/public/"7132 path: "/non/existing/path", result: nil7133 is expected to eq nil7134 path: "/public", result: nil7135 is expected to eq nil7136 path: "/folder/with/index.html", result: nil7137 is expected to eq nil7138 #target_directories7139 starts with target_path7140 ends with / for all paths7141 #directories_wildcard7142 adds * for all paths7143 #matching_target_file7144 path: "/public/index.html", result: true7145 is expected to eq true7146 path: "/non/existing/path", result: false7147 is expected to eq false7148 path: "/public/", result: false7149 is expected to eq false7150 path: "/folder/with/index.html", result: false7151 is expected to eq false7152 when directories and files are empty7153 is invalid7154Clusters::AgentPolicy7155 rules7156 is expected to be disallowed :read_cluster_agent7157 when developer7158 is expected to be disallowed :admin_cluster7159 when maintainer7160 is expected to be allowed :admin_cluster7161 when agent is ci_access authorized for project members7162 is expected to be allowed :read_cluster_agent7163 when agent is user_access authorized for project members7164 is expected to be allowed :read_cluster_agent7165Projects::GroupLinks::CreateService#execute7166 when user has proper membership to share a group7167 updates authorization7168 behaves like shareable7169 adds group to project7170 with specialized project_authorization workers7171 schedules authorization update for users with access to group7172 when sharing outside the hierarchy is disabled7173 behaves like not shareable7174 does not share and returns an error7175 when group is inside hierarchy7176 behaves like shareable7177 adds group to project7178 when user does not have permissions for the group7179 behaves like not shareable7180 does not share and returns an error7181 when group is blank7182 behaves like not shareable7183 does not share and returns an error7184Ci::CreatePipelineService7185 custom config content7186 creates a pipeline using the content passed in as param7187 when bridge includes yaml from artifact7188 when referenced job exists7189 created a pipeline using the content passed in as param and download the artifact7190 when referenced job does not exist7191 creates an empty pipeline7192Gitlab::Application7193 config.filter_parameters7194 when parameters are logged7195 rails does not leak confidential parameters7196 input_url: "/", output_query: {}7197 is expected to eq {}7198 input_url: "/?safe=1", output_query: {"safe"=>"1"}7199 is expected to eq {"safe"=>"1"}7200 input_url: "/?private_token=[MASKED] output_query: {"private_token"=>"[FILTERED]"}7201 is expected to eq {"private_token"=>"[FILTERED]"}7202 input_url: "/?mixed=1&private_token=[MASKED] output_query: {"mixed"=>"1", "private_token"=>"[FILTERED]"}7203 is expected to eq {"mixed"=>"1", "private_token"=>"[FILTERED]"}7204 input_url: "/?note=secret¬eable=1&prefix_note=2", output_query: {"note"=>"[FILTERED]", "noteable"=>"1", "prefix_note"=>"2"}7205 is expected to eq {"note"=>"[FILTERED]", "noteable"=>"1", "prefix_note"=>"2"}7206 input_url: "/?note[note]=secret&target_type=1", output_query: {"note"=>"[FILTERED]", "target_type"=>"1"}7207 is expected to eq {"note"=>"[FILTERED]", "target_type"=>"1"}7208 input_url: "/?safe[note]=secret&target_type=1", output_query: {"safe"=>{"note"=>"[FILTERED]"}, "target_type"=>"1"}7209 is expected to eq {"safe"=>{"note"=>"[FILTERED]"}, "target_type"=>"1"}7210 clear_active_connections_again initializer7211 is included in list of Rails initializers7212 is configured after set_routes_reloader_hook7213 functionality7214 clears all connections7215Gitlab::FeatureCategories7216 #valid?7217 returns true if category is known7218 #get!7219 is expected to eq "foo"7220 when category does not exist7221 is expected to raise RuntimeError7222 when on production7223 is expected to eq "unknown"7224 #from_request7225 returns category from request when valid, otherwise returns nil7226 when request is not verified7227 returns nil7228 #categories7229 returns a set of the given categories7230 .load_from_yaml7231 creates FeatureCategories from feature_categories.yml file7232 .default7233 returns a memoization of load_from_yaml7234Namespace::Detail7235 associations7236 is expected to belong to namespace required: false7237 validations7238 is expected to validate that :namespace cannot be empty/falsy7239 when namespace description changes7240 changes namespace details description7241 when project description changes7242 changes project namespace details description7243 when group description changes7244 changes group namespace details description7245Gitlab::GithubImport::Importer::PullRequests::AllMergedByImporter7246 # order random7247 is expected to includes the Gitlab::GithubImport::ParallelScheduling module7248 #collection_method7249 is expected to eq :pull_requests_merged_by7250 #sidekiq_worker_class7251 is expected to eq Gitlab::GithubImport::PullRequests::ImportMergedByWorker7252 #representation_class7253 is expected to eq Gitlab::GithubImport::Representation::PullRequest7254 #id_for_already_imported_cache7255 is expected to eq 17256 #importer_class7257 is expected to eq Gitlab::GithubImport::Importer::PullRequests::MergedByImporter7258 #each_object_to_import7259 fetches the merged pull requests data7260 skips cached merge requests7261Gitlab::Sanitizers::ExceptionMessage7262 .clean7263 when error is a URI::InvalidURIError7264 is expected to eq "bad URI(is not URI?): [FILTERED]"7265 when error is an Addressable::URI::InvalidURIError7266 uri: "http://foo:bar", result: "Invalid port number: [FILTERED]"7267 is expected to eq "Invalid port number: [FILTERED]"7268 uri: "http://foo:%eb", result: "Invalid encoding in port"7269 is expected to eq "Invalid encoding in port"7270 uri: "ht%0atp://foo", result: "Invalid scheme format: [FILTERED]"7271 is expected to eq "Invalid scheme format: [FILTERED]"7272 uri: "http:", result: "Absolute URI missing hierarchical segment: [FILTERED]"7273 is expected to eq "Absolute URI missing hierarchical segment: [FILTERED]"7274 uri: "::http", result: "Cannot assemble URI string with ambiguous path: [FILTERED]"7275 is expected to eq "Cannot assemble URI string with ambiguous path: [FILTERED]"7276 uri: "http://foo bar", result: "Invalid character in host: [FILTERED]"7277 is expected to eq "Invalid character in host: [FILTERED]"7278 with any other exception7279 is not invoked and does nothing7280Ci::PipelineSchedules::UpdateService7281 # order random7282 execute7283 when user does not have permission7284 returns ServiceResponse.error7285 when user has permission7286 updates database values with passed params7287 returns ServiceResponse.success7288 when schedule update fails7289 returns ServiceResponse.error7290Gitlab::Usage::Metrics::NameSuggestion7291 #for7292 for count with nil column7293 behaves like name suggestion7294 return correct name7295 for count with column :id7296 behaves like name suggestion7297 return correct name7298 for count distinct with column defined metrics7299 behaves like name suggestion7300 return correct name7301 joined relations7302 counted attribute comes from source relation7303 behaves like name suggestion7304 return correct name7305 strips off time period constraint7306 behaves like name suggestion7307 return correct name7308 for sum metrics7309 behaves like name suggestion7310 return correct name7311 for average metrics7312 behaves like name suggestion7313 return correct name7314 for redis metrics7315 behaves like name suggestion7316 return correct name7317 for alt_usage_data metrics7318 behaves like name suggestion7319 return correct name7320 for metrics with `having` keyword7321 behaves like name suggestion7322 return correct name7323Database::ConsistencyFixService7324 #execute7325 fixing namespaces inconsistencies7326 when both objects exist7327 creates a Namespaces::SyncEvent to modify the target object7328 enqueues the worker to process the Namespaces::SyncEvents7329 when the source object has been deleted, but not the target7330 deletes the target object7331 fixing projects inconsistencies7332 when both objects exist7333 creates a Projects::SyncEvent to modify the target object7334 enqueues the worker to process the Projects::SyncEvents7335 when the source object has been deleted, but not the target7336 deletes the target object7337 #create_sync_event_for7338 when the source model is Namespace7339 creates a Namespaces::SyncEvent object7340 when the source model is Project7341 creates a Projects::SyncEvent object7342 when the source model is User7343 raises an error7344RuboCop::Cop::RSpec::SharedGroupsMetadata7345 # order random7346 does not flag if feature category is missing7347 with symbol metadata7348 flags metadata in shared example7349 flags metadata in shared context7350 with hash metadata7351 flags metadata in shared example7352 flags metadata in shared context7353Gitlab::SlashCommands::Run7354 .match7355 returns true for a run command7356 returns true for a run command with arguments7357 returns true for a command containing newlines7358 returns false for an unrelated command7359 .available?7360 returns true when builds are enabled for the project7361 returns false when builds are disabled for the project7362 returns false when chatops is not available7363 .allowed?7364 returns true when the user can create a pipeline7365 returns false when the user can not create a pipeline7366 #execute7367 when a pipeline could not be scheduled7368 returns an error7369 when a pipeline could be created but the chat service was not supported7370 returns an error7371 using a valid pipeline7372 schedules the pipeline7373CompareService7374 #execute7375 compare with base, like feature...fix7376 is expected to eq 17377 straight compare, like feature..fix7378 is expected to eq 37379 compare with target branch that does not exist7380 is expected to be nil7381 compare with source branch that does not exist7382 is expected to be nil7383Gitlab::Database::PartitioningMigrationHelpers::ForeignKeyHelpers7384 #add_concurrent_partitioned_foreign_key7385 when the foreign key does not exist on the parent table7386 creates the foreign key on each partition, and the parent table7387 with validate: false option7388 creates the foreign key only on partitions7389 when the foreign key exists on the parent table7390 does not attempt to create any foreign keys7391 when additional foreign key options are given7392 forwards them to the foreign key helper methods7393 when run inside a transaction block7394 raises an error7395 #validate_partitioned_foreign_key7396 when run inside a transaction block7397 raises an error7398 when run outside a transaction block7399 validates FK for each partition7400Gitlab::Ci::Config::Header::Root7401 # order random7402 #inputs_value7403 returns the inputs7404 when header contains unknown keywords7405 behaves like an invalid header7406 fails validations7407 returns the value7408 when header contains default and required values for inputs7409 behaves like a valid header7410 passes validations7411 returns the value7412 when header contains required inputs7413 behaves like a valid header7414 passes validations7415 returns the value7416 when header contains minimal data7417 behaves like a valid header7418 passes validations7419 returns the value7420 when header input entry has an unknown key7421 behaves like an invalid header7422 fails validations7423 returns the value7424Issues::CloseWorker7425 # order random7426 #perform7427 #perform7428 when the user can update the issues7429 closes the issues7430 closes external issues7431 when the user can not update the issues7432 does not close the issues7433 when the project does not exist7434 behaves like when object does not exist7435 does not call the close issue service7436 when the user does not exist7437 behaves like when object does not exist7438 does not call the close issue service7439 when the issue does not exist7440 behaves like when object does not exist7441 does not call the close issue service7442Gitlab::Ci::Build::Credentials::Registry::DependencyProxy7443 contains valid dependency proxy credentials7444 .valid?7445 when dependency proxy is enabled7446 is expected to be truthy7447 when dependency proxy is disabled7448 is expected to be falsey7449Types::BaseObject7450 scoping items7451 paginates arrays correctly7452 filters connections correctly7453 filters polymorphic connections7454 filters interface connections7455 redacts polymorphic objects7456 paginates before scoping7457 a lazy list7458 behaves like array member redaction7459 redacts the unauthorized array member7460 a list of lazy items7461 behaves like array member redaction7462 redacts the unauthorized array member7463 an array connection of items7464 behaves like array member redaction7465 redacts the unauthorized array member7466 an array connection of items, selecting edges7467 behaves like array member redaction7468 redacts the unauthorized array member7469 .authorize7470 keeps track of the specified value7471 can not redefine the authorize value7472Ci::StuckBuilds::DropScheduledWorker7473 #perform7474 executes an instance of Ci::StuckBuilds::DropScheduledService with an exclusive lease7475 behaves like an idempotent worker7476 is labeled as idempotent7477 performs multiple times sequentially without raising an exception7478Gitlab::GlobalId7479 .build7480 returns a standard GlobalId if only object is passed7481 returns a GlobalId from params7482 returns a GlobalId from object and `id` param7483 returns a GlobalId from object and `model_name` param7484 returns an error if model_name and id are not able to be determined7485 .as_global_id7486 is the identify function on GlobalID instances7487 wraps URI::GID in GlobalID7488 cannot coerce Integers without a model name7489 can coerce Integers with a model name7490 rejects any other value7491Mutations::Clusters::AgentTokens::Revoke7492 is expected to eq "ClusterAgentTokenRevoke"7493 is expected to require graphql authorizations :admin_cluster7494 #resolve7495 user does not have permission7496 does not revoke the token7497 user has permission7498 revokes the token7499PersonalAccessTokens::RotateService7500 # order random7501 #execute7502 rotates user's own token7503 revokes the previous token7504 when user tries to rotate already revoked token7505 returns an error7506 when revoking previous token fails7507 returns an error7508 when creating the new token fails7509 returns an error7510 reverts the changes7511Packages::Npm::CreateMetadataCacheWorker7512 # order random7513 #perform7514 behaves like an idempotent worker7515 is labeled as idempotent7516 performs multiple times sequentially without raising an exception7517 creates a new metadata cache7518 when errors happened7519 logs errors7520 without project7521 behaves like does not trigger service to create npm metadata cache7522 is expected not to receive new(*(any args)) 0 times7523 when npm_metadata_cache flag is disabled7524 behaves like does not trigger service to create npm metadata cache7525 is expected not to receive new(*(any args)) 0 times7526Gitlab::UsageDataCounters::CycleAnalyticsCounter7527 behaves like a redis usage counter7528 .count(views)7529 increments the CycleAnalytics views counter by 17530 .read(views)7531 returns the total number of views events7532 behaves like a redis usage counter with totals7533 totals7534 can report all totals7535 unknown events7536 cannot increment7537 cannot read7538ResourceMilestoneEventFinder7539 #execute7540 returns events with milestones accessible by user7541 filters events with public project milestones if issues and MRs are private7542 filters events with project milestones not accessible by user7543 filters events with group milestones not accessible by user7544 when multiple events share the same milestone7545 avoids N+1 queries7546Projects::MoveUsersStarProjectsService7547 #execute7548 moves the user's stars from one project to another7549 rollbacks changes if transaction fails7550Groups::UpdateTwoFactorRequirementForMembersWorker7551 # order random7552 #perform7553 calls #update_two_factor_requirement_for_members7554 is labeled as idempotent7555 performs multiple times sequentially without raising an exception7556 requires 2fa for group members correctly7557 when group not found7558 returns nil7559DependencyProxy::CleanupDependencyProxyWorker7560 #perform7561 when there are records to be deleted7562 behaves like an idempotent worker7563 is labeled as idempotent7564 performs multiple times sequentially without raising an exception7565 queues the cleanup jobs7566 when there are not records to be deleted7567 behaves like an idempotent worker7568 is labeled as idempotent7569 performs multiple times sequentially without raising an exception7570 does not queue the cleanup jobs7571Gitlab::Ci::Config::Entry::Hooks7572 # order random7573 #value7574 returns a hash7575 validations7576 when passing a valid hook7577 is expected to be valid7578 when passing an invalid hook7579 is expected not to be valid7580 when entry config is not a hash7581 is expected not to be valid7582Gitlab::UsageDataCounters::WikiPageCounter7583 behaves like a redis usage counter7584 .count(view)7585 increments the Wiki Page view counter by 17586 .read(view)7587 returns the total number of view events7588 behaves like a redis usage counter7589 .count(create)7590 increments the Wiki Page create counter by 17591 .read(create)7592 returns the total number of create events7593 behaves like a redis usage counter7594 .count(update)7595 increments the Wiki Page update counter by 17596 .read(update)7597 returns the total number of update events7598 behaves like a redis usage counter7599 .count(delete)7600 increments the Wiki Page delete counter by 17601 .read(delete)7602 returns the total number of delete events7603 behaves like a redis usage counter with totals7604 totals7605 can report all totals7606 unknown events7607 cannot increment7608 cannot read7609MergeRequestContextCommit7610 associations7611 is expected to belong to merge_request required: false7612 is expected to have many diff_files class_name => MergeRequestContextCommitDiffFile7613 .delete_bulk7614 deletes context commits for given commit sha's and returns the commit7615 doesn't delete context commits when commit sha's are not passed7616Import::GitlabProjects::FileAcquisitionStrategies::RemoteFile7617 validation7618 is expected to be valid7619 file_url validation7620 validates the file_url scheme7621 when localhost urls are not allowed7622 validates the file_url7623 when the HTTP request fails to recover the headers7624 adds the error message7625 when request is not from an S3 server7626 validates the remote content-length7627 validates the remote content-type7628 when request is from an S3 server7629 does not validate the remote content-length or content-type7630 #project_params7631 returns import_export_upload in the params7632Gitlab::LocalAndRemoteStorageMigration::PagesDeploymentMigrater7633 behaves like local and remote storage migration7634 start_store: 1, end_store: 2, method: :migrate_to_remote_storage7635 successfully migrates7636 start_store: 2, end_store: 2, method: :migrate_to_remote_storage7637 successfully migrates7638 start_store: 2, end_store: 1, method: :migrate_to_local_storage7639 successfully migrates7640 start_store: 1, end_store: 1, method: :migrate_to_local_storage7641 successfully migrates7642 when migration fails7643 prints error7644Ci::Catalog::ValidateResourceService7645 # order random7646 #execute7647 with a project that has a README and a description7648 is valid7649 with a project that has neither a description nor a README7650 is not valid7651 with a project that has a description but not a README7652 is not valid7653 with a project that has a README and not a description7654 is not valid7655ShaAttribute7656 .sha_attribute7657 defines a SHA attribute with Gitlab::Database::ShaAttribute type7658 .sha256_attribute7659 defines a SHA256 attribute with Gitlab::Database::ShaAttribute type7660 .load_schema!7661 column_name: binary_column, environment: "development", expected_error: :no_error7662 with sha_attribute7663 validates column type7664 with sha256_attribute7665 validates column type7666 column_name: binary_column, environment: "production", expected_error: :no_error7667 with sha_attribute7668 validates column type7669 with sha256_attribute7670 validates column type7671 column_name: text_column, environment: "development", expected_error: :sha_mismatch_error7672 with sha_attribute7673 validates column type7674 with sha256_attribute7675 validates column type7676 column_name: text_column, environment: "production", expected_error: :no_error7677 with sha_attribute7678 validates column type7679 with sha256_attribute7680 validates column type7681 column_name: :__non_existent_column, environment: "development", expected_error: :no_error7682 with sha_attribute7683 validates column type7684 with sha256_attribute7685 validates column type7686 column_name: :__non_existent_column, environment: "production", expected_error: :no_error7687 with sha_attribute7688 validates column type7689 with sha256_attribute7690 validates column type7691Gitlab::Instrumentation::Redis7692 behaves like aggregation of redis storage data7693 get_request_count sum7694 sums data from all Redis storages7695 behaves like aggregation of redis storage data7696 get_cross_slot_request_count sum7697 sums data from all Redis storages7698 behaves like aggregation of redis storage data7699 get_allowed_cross_slot_request_count sum7700 sums data from all Redis storages7701 behaves like aggregation of redis storage data7702 query_time sum7703 sums data from all Redis storages7704 behaves like aggregation of redis storage data7705 read_bytes sum7706 sums data from all Redis storages7707 behaves like aggregation of redis storage data7708 write_bytes sum7709 sums data from all Redis storages7710 .payload7711 returns payload filtering out zeroed values7712 .detail_store7713 returns a flat array of detail stores with the storage name added to each item7714SystemCheck::Orphans::RepositoryCheck7715 #multi_check7716 all orphans7717 prints list of all orphaned namespaces except @hashed7718 few orphans with existing namespace7719 prints list of orphaned namespaces7720 few orphans with existing namespace and parents with same name as orphans7721 prints list of orphaned namespaces ignoring parents with same namespace as orphans7722 no orphans7723 prints an empty list ignoring @hashed7724Gitlab::Database::Type::SymbolizedJsonb7725 # order random7726 when used by a model7727 is expected to match {:key=>"value"}7728 ignores changes to other attributes7729 tracks changes to options7730 #deserialize7731 json: nil, value: nil7732 is expected to match nil7733 json: "{\"key\":\"value\"}", value: {:key=>"value"}7734 is expected to match {:key=>"value"}7735 json: "{\"key\":[1,2,3]}", value: {:key=>[1, 2, 3]}7736 is expected to match {:key=>[1, 2, 3]}7737 json: "{\"key\":{\"subkey\":\"value\"}}", value: {:key=>{:subkey=>"value"}}7738 is expected to match {:key=>{:subkey=>"value"}}7739 json: "{\"key\":{\"a\":[{\"b\":\"c\"},{\"d\":\"e\"}]}}", value: {:key=>{:a=>[{:b=>"c"}, {:d=>"e"}]}}7740 is expected to match {:key=>{:a=>[{:b=>"c"}, {:d=>"e"}]}}7741Gitlab::Git::AttributesAtRefParser7742 loads .gitattributes blob7743 handles missing blobs7744 #attributes7745 returns the attributes as a Hash7746Gitlab::Metrics::Prometheus7747 #reset_registry!7748 clears existing metrics7749 #error_detected!7750 disables Prometheus metrics7751Gitlab::Ci::Ansi2json::Result7752 #size7753 when offset is at the start7754 returns the full size7755 when offset is not zero7756 returns the remaining size7757 #total7758 returns size of stread7759Emails::DestroyService7760 #execute7761 removes an email7762 when it corresponds to the user primary email7763 does not remove the email and raises an exception7764Ci::BuildPrepareWorker7765 build exists7766 calls the prepare build service7767 build does not exist7768 does not attempt to prepare the build7769WorkItems::WidgetDefinition7770 # order random7771 validations7772 is expected to validate that :name cannot be empty/falsy7773 is expected to validate that :name is case-insensitively unique within the scope of :namespace_id and :work_item_type_id7774 is expected to validate that the length of :name is at most 2557775 associations7776 is expected to belong to namespace required: false7777 is expected to belong to work_item_type required: false7778 with some widgets disabled7779 .available_widgets7780 returns all global widgets excluding the disabled ones7781 returns all global widgets if there is at least one global widget definition which is enabled7782 .widget_classes7783 returns all widget classes no matter if disabled or not7784 #widget_class7785 returns widget class based on widget_type7786 returns nil if there is no class for the widget_type7787 returns nil if there is no class for the widget_type7788Gitlab::Ci::Status::Created7789 #text7790 is expected to eq "created"7791 #label7792 is expected to eq "created"7793 #icon7794 is expected to eq "status_created"7795 #favicon7796 is expected to eq "favicon_status_created"7797 #group7798 is expected to eq "created"7799 #details_path7800 is expected to be nil7801Preloaders::Projects::NotesPreloader7802 # order random7803 preloads author access level and contributor status7804Gitlab::Usage::Metrics::Instrumentations::CountMlExperimentsMetric7805 # order random7806 behaves like a correct instrumented metric value and query7807 behaves like a correct instrumented metric value7808 has correct value7809 behaves like a correct instrumented metric query7810 has correct generate query7811Banzai::Filter::InlineDiffFilter7812 adds inline diff span tags for deletions when using square brackets7813 adds inline diff span tags for deletions when using curley braces7814 does not add inline diff span tags when a closing tag is not provided7815 adds inline span tags for additions when using square brackets7816 adds inline span tags for additions when using curley braces7817 does not add inline diff span tags when a closing addition tag is not provided7818 does not add inline diff span tags when the tags do not match7819 prevents user-land html being injected7820 preserves content inside pre tags7821 preserves content inside code tags7822 preserves content inside tt tags7823 protects against malicious backtracking7824PropagateIntegrationInheritWorker7825 #perform7826 behaves like an idempotent worker7827 is labeled as idempotent7828 performs multiple times sequentially without raising an exception7829 calls to BulkUpdateIntegrationService7830 with an invalid integration id7831 returns without failure7832Gitlab::Utils::LogLimitedArray7833 # order random7834 .log_limited_array7835 when the argument is not an array7836 returns an empty array7837 when the argument is an array7838 when the array is under the limit7839 returns the array unchanged7840 when the array exceeds the limit7841 when no sentinel value is passed7842 replaces arguments after the limit with an ellipsis string7843 when a sentinel value is passed7844 replaces arguments after the limit with the sentinel7845 when the array contains arrays and hashes7846 calculates the size based on the JSON representation7847Rails YAML safe load7848 # order random7849 with default permitted classes7850 deserializes data7851 with unpermitted classes7852 throws an exception7853RuboCop::Cop::Migration::WithLockRetriesDisallowedMethod7854 # order random7855 when in migration7856 registers an offense when `with_lock_retries` block has disallowed method7857 registers an offense when `with_lock_retries` block has disallowed methods7858 registers no offense when `with_lock_retries` has only allowed method7859 for `add_foreign_key`7860 registers an offense when more than two FKs are added7861 when outside of migration7862 registers no offense7863Gitlab::Pagination::OffsetHeaderBuilder7864 pagination7865 returns correct result for the first page7866 returns correct result for the second page7867 pagination heders7868 adds next page header7869 adds only the specified params to the lnk7870Gitlab::Ci::Config::Entry::Ports7871 when configuration is valid7872 #valid?7873 is valid7874 #value7875 returns valid array7876 when configuration is invalid7877 #valid?7878 is invalid7879 when any of the ports7880 have the same name7881 #valid?7882 is invalid7883 have the same port7884 #valid?7885 is invalid7886Gitlab::ImportExport::UploadsSaver7887 bundle a project Git repo7888 legacy storage7889 saves the uploads successfully7890 copies the uploads to the export path7891 hashed storage7892 saves the uploads successfully7893 copies the uploads to the export path7894Gitlab::GitPostReceive7895 #includes_branches?7896 with no branches7897 returns false7898 with branches7899 returns true7900 with malformed changes7901 returns false7902 #includes_tags?7903 with no tags7904 returns false7905 with tags7906 returns true7907 with malformed changes7908 returns false7909 #includes_default_branch?7910 with no default branch7911 returns false7912 with a project with no default branch7913 returns true7914 with default branch7915 returns true7916Packages::Downloadable7917 # order random7918 with a package7919 #touch_last_downloaded_at7920DEPRECATION WARNING: ActiveSupport::TimeWithZone.name has been deprecated and7921from Rails 7.1 will use the default Ruby implementation.7922You can set `config.active_support.remove_deprecated_time_with_zone_name = true`7923to enable the new behavior now.7924 (called from block (4 levels) in <top (required)> at /builds/gitlab-org/gitlab/spec/models/concerns/packages/downloadable_spec.rb:15)7925 updates the downloaded_at7926RunnersTokenPrefixable7927 runners token prefix7928 has the correct value7929Serializers::UnsafeJson7930 .dump7931 calls object#to_json with unsafe: true and returns the result7932 .load7933 calls JSON.load and returns the result7934RecoverableByAnyEmail7935 # order random7936 .send_reset_password_instructions7937 with user primary email7938 behaves like sends the password reset email7939 finds the user7940 sends the email7941 with user verified email7942 behaves like sends the password reset email7943 finds the user7944 sends the email7945 with user unverified email7946 behaves like does not send the password reset email7947 does not find the user7948 does not send any email7949 #send_reset_password_instructions7950 sends the email7951 calls send_reset_password_instructions_notification with correct arguments7952 returns the generated token7953sidekiq.rake7954 gitlab:sidekiq:migrate_jobs:schedule rake task7955 behaves like migration rake task7956 runs the migrator with a mapping of workers to queues7957 gitlab:sidekiq:migrate_jobs:retry rake task7958 behaves like migration rake task7959 runs the migrator with a mapping of workers to queues7960 gitlab:sidekiq:migrate_jobs:queued rake task7961 runs the migrator with a mapping of workers to queues7962Packages::Rpm::RepositoryMetadata::BuildRepomdXmlService7963 # order random7964 #execute7965 generate valid xml7966 has all data info7967 when data values has unexpected keys7968 ignores wrong keys7969Gitlab::Utils::MimeType7970 # order random7971 .from_string7972 input isn't a string7973 returns nil7974 input is a string7975 is expected to eq "text/plain"7976 .from_io7977 input isn't an IO7978 returns nil7979 input is a file7980 fixture: "banana_sample.gif", mime_type: "image/gif"7981 is expected to eq "image/gif"7982 fixture: "rails_sample.jpg", mime_type: "image/jpeg"7983 is expected to eq "image/jpeg"7984 fixture: "rails_sample.png", mime_type: "image/png"7985 is expected to eq "image/png"7986 fixture: "rails_sample.bmp", mime_type: "image/bmp"7987 is expected to eq "image/bmp"7988 fixture: "rails_sample.tif", mime_type: "image/tiff"7989 is expected to eq "image/tiff"7990 fixture: "sample.ico", mime_type: "image/vnd.microsoft.icon"7991 is expected to eq "image/vnd.microsoft.icon"7992 fixture: "blockquote_fence_before.md", mime_type: "text/plain"7993 is expected to eq "text/plain"7994 fixture: "csv_empty.csv", mime_type: "application/x-empty"7995 is expected to eq "application/x-empty"7996Gitlab::Graphql::Present::FieldExtension7997 when the object does not declare a presenter7998 does not affect normal resolution7999 when the field is declared on an interface, and implemented by a presenter8000 resolves the interface field using the implementation from the presenter8001 when the implementation is inherited8002 resolves the interface field using the implementation from the presenter8003 interactions with inheritance8004 can resolve value, foo and bar8005 when the object declares a presenter8006 when the presenter overrides the original method8007 behaves like calling the presenter method8008 calls the presenter method8009 when the presenter provides a new method8010 when we select the original field8011 is unaffected8012 when we select the new field8013 behaves like calling the presenter method8014 calls the presenter method8015Gitlab::Config::Entry::ComposableHash8016 when ComposableHash is instantiated8017 behaves like composes a hash8018 #valid?8019 is valid8020 is invalid8021 is expected not to be valid8022 #value8023 when config is a hash8024 returns key value8025 #compose!8026 composes child entry with configured value8027 composes child entries with configured values8028 #descendants8029 creates descendant nodes8030 when ComposableHash entry is configured in the parent class8031 creates entry with configuration from parent class8032 behaves like composes a hash8033 #valid?8034 is valid8035 is invalid8036 is expected not to be valid8037 #value8038 when config is a hash8039 returns key value8040 #compose!8041 composes child entry with configured value8042 composes child entries with configured values8043 #descendants8044 creates descendant nodes8045ReleasePolicy8046 when the user has access to the protected tag8047 allows the user to create, update and destroy a release8048 when the user does not have access to the protected tag8049 prevents the user from creating, updating and destroying a release8050Projects::ImportErrorFilter8051 filters any full paths8052 filters any relative paths ignoring single slash ones8053Gitlab::TerraformRegistryToken8054 .from_token8055 with a deploy token8056 returns the correct token8057 with a job8058 returns the correct token8059 with a personal access token8060 returns the correct token8061 behaves like a gitlab jwt token8062 #secret8063 is expected to eq "b58de6d09686a80b7e33975169a449c29212638640fe23040e4b6746a4159ad0"8064 #decode8065 with a custom payload8066 returns the correct token8067 returns nil and logs the exception after expiration8068Gitlab::Email::Handler8069 .for8070 picks issue handler if there is no merge request prefix8071 picks merge request handler if there is merge request key8072 returns nil if no handler is found8073 returns nil if provided email is nil8074 key matches the reply_key of a notification8075 picks note handler8076 key matches the reply_key of a notification, along with an unsubscribe suffix8077 picks unsubscribe handler8078 new issue email8079 return new issue handler8080 a Service Desk email8081 uses the Service Desk handler8082 regexps are set properly8083 picks each handler at least once8084 can pick exactly one handler for each address8085Gitlab::QueryLimiting::ActiveSupportSubscriber8086 #sql8087 increments the number of executed SQL queries8088 when the query is actually a rails cache hit8089 does not increment the number of executed SQL queries8090UserGroupsCounter8091 #execute8092 returns authorized group count for the user8093 when request to join group is pending8094 does not include pending group in the count8095 when user is part of sub group8096 includes sub group in the count8097 when user is part of namespaced project8098 includes the project group8099ProtectedBranchAccessPolicy8100 # order random8101 as guests8102 can not be read8103 as maintainers8104 can be read8105Bitbucket::Representation::PullRequestComment8106 #iid8107 is expected to eq 18108 #file_path8109 is expected to eq "/path"8110 #old_pos8111 is expected to eq 38112 #new_pos8113 is expected to eq 38114 #parent_id8115 is expected to eq 28116 is expected to be nil8117 #inline?8118 is expected to be truthy8119 is expected to be falsey8120 #has_parent?8121 is expected to be truthy8122 is expected to be falsey8123Gitlab::NoteableMetadata8124 returns an empty Hash if an empty collection is provided8125 raises an error when given a collection with no limit8126 snippets8127 aggregates stats on snippets8128Projects::AllIssuesCountService8129 behaves like a counter caching service8130 #count8131 caches the count8132 #refresh_cache8133 refreshes the cache8134 #delete_cache8135 removes the cache8136 #uncached_count8137 does not cache the count8138 #count8139 returns the number of all issues8140GetPackageAndTestJob8141 # order random8142 #execute8143 returns a package-and-test pipeline that passed with warnings8144 when the bridge can not be found8145 returns nothing8146 when the downstream pipeline can not be found8147 returns nothing8148 when the bridge fails8149 returns the downstream_pipeline8150 when the package-and-test can not be found8151 returns nothing8152 when the package-and-test does not include a detailed status8153 returns nothing8154 when the package-and-test succeeds8155 returns nothing8156 when the package-and-test is canceled8157 returns a failed package-and-test pipeline8158Ci::AbortPipelinesService8159 #execute8160 with project pipelines8161 fails all running pipelines and related jobs8162 avoids N+1 queries8163 with live build logs8164 makes failed builds with stale trace visible8165Users::RegistrationsBuildService8166 #execute8167 when automatic user confirmation is not enabled8168 when skip_confirmation is true8169 confirms the user8170 when skip_confirmation is not set8171 does not confirm the user8172 when skip_confirmation is false8173 does not confirm the user8174 when automatic user confirmation is enabled8175 when skip_confirmation is true8176 confirms the user8177 when skip_confirmation is not set the application setting takes precedence8178 confirms the user8179 when skip_confirmation is false the application setting takes precedence8180 confirms the user8181Sidebars::Admin::Menus::ApplicationsMenu8182 # order random8183 behaves like Admin menu without sub menus8184 does not contain any sub menu(s)8185 defines correct active route8186 behaves like Admin menu8187 renders the correct link8188 renders the correct title8189 renders the correct icon8190 renders the separator if needed8191 #render?8192 when user is admin8193 renders8194 when user is not admin8195 does not render8196 when user is not logged in8197 does not render8198Sidebars::Groups::Menus::KubernetesMenu8199 behaves like serializable as super_sidebar_menu_args8200 returns hash with provided attributes8201 returns hash with an item_id8202 #render?8203 when user can read clusters8204 returns true8205 when user cannot read clusters rules8206 returns false8207 :certificate_based_clusters feature flag is disabled8208 returns false8209Resolvers::WorkItems::TypesResolver8210 #resolve8211 when parent is a group8212 behaves like a work item type resolver8213 returns all default work item types8214 when requesting taskable types8215 returns only taskable types8216 when parent is a project8217 behaves like a work item type resolver8218 returns all default work item types8219 when requesting taskable types8220 returns only taskable types8221Gitlab::Ci::Config::Entry::Kubernetes8222 attributes8223 is expected to respond to #namespace8224 is expected to respond to #has_namespace?8225 validations8226 config8227 is a hash containing known keys8228 is expected to be valid8229 is a hash containing an unknown key8230 is expected not to be valid8231 is a string8232 is expected not to be valid8233 namespace8234 is a string8235 is expected to be valid8236 is a hash8237 is expected not to be valid8238 is not present8239 is expected not to be valid8240Gitlab::Auth::Crowd::Authentication8241 login8242 finds the user if authentication is successful8243 is false if the user does not exist8244 is false if the authentication fails8245 fails when crowd is disabled8246 fails if no login is supplied8247 fails if no password is supplied8248Gitlab::DependencyLinker::RequirementsTxtLinker8249 .support?8250 supports requirements.txt8251 supports doc-requirements.txt8252 does not support other files8253 #link8254 links dependencies8255 links URLs8256 does not contain link with a newline as package name8257Sidebars::UserSettings::Menus::SshKeysMenu8258 # order random8259 behaves like User settings menu #render? method8260 #render?8261 when user is logged in8262 renders8263 when user is not logged in8264 does not render8265 behaves like User settings menu8266 does not contain any sub menu8267 renders the correct link8268 renders the correct title8269 renders the correct icon8270 defines correct active route8271BulkImports::ExportBatch8272 # order random8273 validations8274 is expected to validate that :batch_number cannot be empty/falsy8275 is expected to validate that :batch_number is case-sensitively unique within the scope of :export_id8276 associations8277 is expected to belong to export required: false8278 is expected to have one upload8279Gitlab::Tracking::Destinations::SnowplowMicro8280 #hostname8281 when snowplow_micro config is set8282 returns proper URI8283 when gitlab config has https scheme8284 returns proper URI8285 when snowplow_micro config is not set8286 returns localhost hostname8287 #options8288 includes protocol with the correct value8289 includes port with the correct value8290 includes forceSecureTracker with value false8291ProjectAccessTokenSerializer8292 #represent8293 can render a single token8294 can render a collection of tokens8295Gitlab::GithubImport::Stage::ImportCollaboratorsWorker8296 # order random8297 #import8298 raises an error8299 when user has push access for this repo8300 imports all collaborators8301 when user do not have push access for this repo8302 skips stage8303 when stage is disabled8304 skips collaborators import and calls next stage8305Uploads::Local8306 model with uploads8307 #keys8308 returns keys8309 #delete_keys8310 deletes multiple data8311Users::EmailVerification::GenerateTokenService8312 #execute8313 with a valid attribute8314 attr: :unlock_token8315 returns a token and it's digest8316 attr: :confirmation_token8317 returns a token and it's digest8318 with an invalid attribute8319 raises an error8320 when similar tokens are generated8321 generates a unique digest8322TestSuiteComparerEntity8323 #as_json8324 when head suite has a newly failed test case which does not exist in base8325 contains correct compared test suite details8326 when head suite has a new error test case which does not exist in base8327 contains correct compared test suite details8328 when head suite still has a failed test case which failed in base8329 contains correct compared test suite details8330 when head suite has a success test case which failed in base8331 contains correct compared test suite details8332 when head suite has suite error8333 contains suite error for head suite8334 when base suite has suite error8335 contains suite error for head suite8336 when base and head suite both have suite errors8337 contains suite error for head suite8338Ci::Runners::StaleManagersCleanupService8339 # order random8340 with some stale runner managers8341 only leaves non-stale runners8342 with more stale runners than SUB_BATCH_LIMIT8343 only leaves non-stale runners8344 with more stale runners than MAX_DELETIONS8345 only leaves non-stale runners8346 with no stale runner managers8347 does not clean any runner managers and returns :success status8348Achievements::DestroyService8349 # order random8350 #execute8351 when user does not have permission8352 returns an error8353 when user has permission8354 deletes the achievement8355Types::Ci::RunnerArchitectureType8356 is expected to eq "RunnerArchitecture"8357 exposes the expected fields8358Gitlab::Cache::Metrics8359 # order random8360 #increment_cache_miss8361 increments number of misses8362 when labels redefine defaults8363 increments number of misses8364 #observe_cache_generation8365 updates histogram metric8366 when labels redefine defaults8367 updates histogram metric8368 #increment_cache_hit8369 increments number of hits8370 when labels redefine defaults8371 increments number of hits8372Resolvers::WorkItemResolver8373 #resolve8374 when the user can read the work item8375 is expected to eq #<WorkItem id:340 namespace1354/project-1356#1>8376 when the user can not read the work item8377 raises a resource not available error8378bin/diagnostic-reports-uploader8379 # order random8380 when GITLAB_GCP_KEY_PATH is missing8381 raises RuntimeError8382 when GITLAB_DIAGNOSTIC_REPORTS_BUCKET is missing8383 raises RuntimeError8384 when necessary ENV vars are set8385 runs successfully8386 when GITLAB_DIAGNOSTIC_REPORTS_PROJECT is missing8387 raises RuntimeError8388 when GITLAB_DIAGNOSTIC_REPORTS_PATH is missing8389 raises RuntimeError8390Types::PermissionTypes::BasePermissionType8391 .permission_field8392 adds a field for the required permission8393 .ability_field8394 adds a field for the required permission8395 does not add a resolver block if another resolving param is passed8396 .abilities8397 adds a field for the passed permissions8398 extensions8399 has the extension8400Gitlab::BitbucketServerImport::Stage::FinishImportWorker8401 # order random8402 #perform8403 finalises the import process8404 behaves like Gitlab::BitbucketServerImport::StageMethods8405 .sidekiq_retries_exhausted8406 tracks the import failure8407Gitlab::Database::PgClass8408 #cardinality_estimate8409 when no information is available8410 returns nil for the estimate8411 with reltuples available8412 returns the reltuples for the estimate8413 .for_table8414 returns PgClass for this table8415 matches the relname8416RuboCop::Cop::Database::DisableReferentialIntegrity8417 # order random8418 flags the use of disable_referential_integrity with a full definition8419 flags the use of disable_referential_integrity with a nil receiver8420 does not flag the use of disable_referential_integrity with a send receiver8421 flags the use of disable_referential_integrity when passing a block8422PersonalAccessTokenSerializer8423 #represent8424 can render a single token8425 can render a collection of tokens8426Gitlab::Usage::Metrics::Instrumentations::RedisHLLMetric8427 raise exception if events options is not present8428 for 28d8429 behaves like a correct instrumented metric value8430 has correct value8431 for 7d8432 behaves like a correct instrumented metric value8433 has correct value8434 children classes8435 availability not defined8436 returns default availability8437 availability defined8438 returns defined availability8439Namespaces::UpdateRootStatisticsWorker8440 enqueues ScheduleAggregationWorker8441 behaves like subscribes to event8442 consumes the published event8443 behaves like an idempotent worker8444 is labeled as idempotent8445 performs multiple times sequentially without raising an exception8446Releases::LinkPresenter8447 #direct_asset_url8448 when filepath is provided8449 is expected to eq "http://localhost/namespace1356/project-1358/-/releases/v1.4.0/downloads/bin/bigfile.exe"8450 when filepath is not provided8451 is expected to eq "https://google.com/-/jobs/140463678/artifacts/download"8452help/instance_configuration8453 General Sections:8454 has links to several sections8455 has several sections8456SentryErrorPresenter8457 #frequency8458 returns an array of frequency structs8459 converts the times into UTC time objects8460 returns the correct counts8461 #project_id8462 returns a global ID of the correct type8463Members::StandardMemberBuilder8464 #execute8465 returns member from existing members hash8466 builds a new member8467API::Entities::GroupDetail8468 #as_json8469 includes prevent_sharing_groups_outside_hierarchy for a root group8470 excludes prevent_sharing_groups_outside_hierarchy for a subgroup8471GroupDeployKeysGroup8472 Associations8473 is expected to belong to group_deploy_key required: false8474 is expected to belong to group required: false8475 Validation8476 is expected to validate that :group_id cannot be empty/falsy8477 is expected to validate that :group_deploy_key cannot be empty/falsy8478Projects::AppleTargetPlatformDetectorService8479 when project is not an xcode project8480 returns an empty array8481 when project is an xcode project8482 when setting string is found8483 sdk: "iphoneos", filename: "project.pbxproj", result: [:ios]8484 returns an array of unique detected targets8485 sdk: "iphoneos", filename: "*.xcconfig", result: [:ios]8486 returns an array of unique detected targets8487 when setting string is not found8488 returns an empty array8489Gitlab::Memory::Watchdog::Monitor::UniqueMemoryGrowth8490 # order random8491 #call8492 gets memory_usage_uss_pss8493 when monitor is called twice8494 reference memory is calculated only once8495 when process exceeds threshold8496 returns if threshold is violated and payload8497 when process does not exceed threshold8498 returns if threshold is violated and payload8499Types::ReleaseAssetLinkInputType8500 is expected to eq "ReleaseAssetLinkInput"8501 has the correct arguments8502 sets the type of link_type argument to ReleaseAssetLinkTypeEnum8503Types::MergeRequestStateEnum8504 is expected to eq "MergeRequestState"8505 exposes all the existing merge request states8506 behaves like issuable state8507 exposes all the existing issuable states8508Import::GithubFailureSerializer8509 # order random8510 represents GithubFailureEntity entities8511 #represent8512 when a single object is being serialized8513 serializes import failure8514 when multiple objects are being serialized8515 serializes array of import failures8516Custom URLs milestone8517 # order random8518 milestone8519 with project8520 creates directs8521 with group8522 creates directs8523Packages::Debian::ExtractDebMetadataService8524 with correct file8525 return as expected8526 with incorrect file8527 raise error8528Types::Packages::PackageDetailsType8529 is expected to eq "Represents a package details in the Package Registry"8530 is expected to require graphql authorizations :read_package8531 includes all the package fields8532MicrosoftTeams::Notifier8533 #ping8534 expects to receive successful answer8535 #body8536 returns Markdown-based body when HTML was passed8537 fails when empty Hash was passed8538notify/new_achievement_email.html.haml8539 # order random8540 contains achievement information8541Mattermost::Command8542 #create8543 for valid trigger word8544 returns a token8545 for error message8546 raises an error with message8547Sidebars::Projects::SuperSidebarMenus::CodeMenu8548 # order random8549 defines list of NilMenuItem placeholders8550 has title and sprite_icon8551RuboCop::Cop::UserAdmin8552 # order random8553 flags a method call8554 flags a method call with safe operator8555Gitlab::Database::Migrations::Observers::QueryLog8556 writes a file with the query log8557 does not change the default logger8558Gitlab::SidekiqMiddleware::ExtraDoneLogMetadata8559 #call8560 merges Application#logging_extras in to job8561 does not raise when the worker does not respond to #done_log_extra_metadata8562Types::CommitActionModeEnum8563 is expected to eq "CommitActionMode"8564 exposes all the existing commit actions8565Types::Ci::RunnerSetupType8566 is expected to eq "RunnerSetup"8567 exposes the expected fields8568RuboCop::Cop::Gemspec::AvoidExecutingGit8569 # order random8570 flags violation for executing git8571 does not flag violation for using a glob8572Gitlab::Git::Conflict::Resolver8573 #conflicts8574 returns list of conflicts8575 when GRPC::FailedPrecondition is raised8576 rescues and raises Gitlab::Git::Conflict::Resolver::ConflictSideMissing8577Gitlab::GrapeLogging::Loggers::TokenLogger8578 .parameters8579 when no token information is available8580 returns an empty hash8581 when token information is available8582 adds the token information to log parameters8583Types::UploadType8584 is expected to require graphql authorizations :read_upload8585 has the expected fields8586ErrorTracking::SentryClient::Token8587 # order random8588 .masked_token?8589 with masked token8590 is expected to be truthy8591 without masked token8592 is expected to be falsey8593TodosDestroyer::DestroyedIssuableWorker8594 calls the Todos::Destroy::DestroyedIssuableService8595Gitlab::Ci::Reports::Security::Scan8596 #initialize8597 when all params are given8598 initializes an instance8599 #to_hash8600 returns expected hash8601API::Entities::Nuget::SearchResult8602 is expected to eq {:@type=>"Package", :authors=>"Author", :iconUrl=>"http://sandbox.com/icon", :id=>"PackageTest", :lic..."1.2.3", :versions=>[{:@id=>"http://sandbox.com/json/package", :downloads=>100, :version=>"1.2.3"}]}8603Gitlab::Ci::Status::Build::WaitingForResource8604 is expected to be < Gitlab::Ci::Status::Processable::WaitingForResource8605UpdateContainerRegistryInfoWorker8606 #perform8607 calls UpdateContainerRegistryInfoService8608Types::PermissionTypes::Snippet8609 returns the snippets permissions8610RuboCop::Cop::Gitlab::Union8611 # order random8612 flags the use of Gitlab::SQL::Union.new8613Gitlab::Ci::Reports::Sbom::Reports8614 #add_report8615 appends the report to the report list8616Gitlab::Patch::DrawRoute8617 evaluates CE only route8618Types::EventableType8619 exposes events field8620Types::PermissionTypes::Environment8621 # order random8622 is expected to have graphql field :stop_environment8623Knapsack report was generated. Preview:8624{8625 "spec/lib/gitlab/ci/templates/auto_devops_gitlab_ci_yaml_spec.rb": 342.626713398,8626 "spec/models/note_spec.rb": 172.7757909830002,8627 "spec/models/ci/job_artifact_spec.rb": 91.60889979800004,8628 "spec/lib/gitlab/diff/file_spec.rb": 101.99599475000014,8629 "spec/helpers/projects_helper_spec.rb": 29.996541861999958,8630 "spec/models/concerns/resolvable_note_spec.rb": 53.36102545600011,8631 "spec/services/packages/debian/generate_distribution_service_spec.rb": 52.50107938499991,8632 "spec/models/members/project_member_spec.rb": 36.965196172000105,8633 "spec/lib/gitlab/bitbucket_server_import/importer_spec.rb": 41.02663171999984,8634 "spec/lib/gitlab/git/blob_spec.rb": 8.726898227999982,8635 "spec/models/award_emoji_spec.rb": 24.28077686199981,8636 "spec/lib/gitlab/ssh_public_key_spec.rb": 8.835957559000008,8637 "spec/uploaders/avatar_uploader_spec.rb": 17.671661978999964,8638 "spec/lib/gitlab/gitaly_client_spec.rb": 6.192830667999942,8639 "spec/services/design_management/copy_design_collection/copy_service_spec.rb": 26.954477950999944,8640 "spec/graphql/mutations/merge_requests/set_locked_spec.rb": 29.234823731999995,8641 "spec/models/alert_management/alert_spec.rb": 8.989540356999896,8642 "spec/models/error_tracking/project_error_tracking_setting_spec.rb": 7.695021932999907,8643 "spec/policies/project_snippet_policy_spec.rb": 12.204916561000118,8644 "spec/lib/gitlab/import_export/project/relation_tree_restorer_spec.rb": 22.437146364,8645 "spec/services/groups/create_service_spec.rb": 17.763552061000155,8646 "spec/lib/gitlab/repository_cache_adapter_spec.rb": 15.41113220599982,8647 "spec/policies/packages/policies/project_policy_spec.rb": 8.102072169000166,8648 "spec/graphql/resolvers/todos_resolver_spec.rb": 20.904241852999803,8649 "spec/services/namespaces/package_settings/update_service_spec.rb": 11.17518626900005,8650 "spec/services/issues/build_service_spec.rb": 14.887484043999848,8651 "spec/lib/gitlab/ci/config/external/mapper/verifier_spec.rb": 12.657864939999854,8652 "spec/models/concerns/approvable_spec.rb": 20.023540492999928,8653 "spec/rubocop/code_reuse_helpers_spec.rb": 2.2854910400001245,8654 "spec/serializers/analytics_build_entity_spec.rb": 10.430059244999939,8655 "spec/models/commit_signatures/gpg_signature_spec.rb": 7.022794184000077,8656 "spec/lib/gitlab/import_export/json/streaming_serializer_spec.rb": 13.39800881500014,8657 "spec/services/system_notes/design_management_service_spec.rb": 12.96221968299983,8658 "spec/models/members/last_group_owner_assigner_spec.rb": 9.557404660999964,8659 "spec/graphql/mutations/namespace/package_settings/update_spec.rb": 10.086399364999806,8660 "spec/experiments/application_experiment_spec.rb": 3.552634987999909,8661 "spec/models/audit_event_spec.rb": 3.3734422550001,8662 "spec/services/issues/resolve_discussions_spec.rb": 11.152166161999958,8663 "spec/lib/gitlab/ci/pipeline/chain/ensure_environments_spec.rb": 11.072626669000101,8664 "spec/views/projects/tags/index.html.haml_spec.rb": 10.109527252000134,8665 "spec/services/packages/npm/create_tag_service_spec.rb": 8.408621552000113,8666 "spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/duplicate_job_spec.rb": 3.4195591000002423,8667 "spec/lib/gitlab/metrics/dashboard/finder_spec.rb": 7.12282670400009,8668 "spec/lib/gitlab/diff/lines_unfolder_spec.rb": 11.225322746000074,8669 "spec/lib/gitlab/x509/certificate_spec.rb": 2.819122792000144,8670 "spec/services/work_items/create_from_task_service_spec.rb": 7.176035721000062,8671 "spec/services/incident_management/incidents/create_service_spec.rb": 7.396467880999808,8672 "spec/models/label_note_spec.rb": 5.030222888000026,8673 "spec/views/projects/commit/show.html.haml_spec.rb": 9.055516226000236,8674 "spec/services/ci/pipeline_artifacts/destroy_all_expired_service_spec.rb": 9.658728942999915,8675 "spec/services/bulk_imports/relation_export_service_spec.rb": 5.762136484999701,8676 "spec/serializers/fork_namespace_entity_spec.rb": 5.338736992000122,8677 "spec/graphql/resolvers/group_milestones_resolver_spec.rb": 6.584241378000115,8678 "spec/models/organizations/organization_spec.rb": 1.530172402000062,8679 "spec/serializers/build_action_entity_spec.rb": 5.649003363000247,8680 "spec/lib/gitlab/memory/reporter_spec.rb": 2.4500924730000406,8681 "spec/services/pages/migrate_legacy_storage_to_deployment_service_spec.rb": 7.574260971000058,8682 "spec/lib/gitlab/instrumentation/redis_interceptor_spec.rb": 1.4290175090000048,8683 "spec/graphql/mutations/container_expiration_policies/update_spec.rb": 5.050888123999812,8684 "spec/models/projects/import_export/relation_export_spec.rb": 2.984294098999726,8685 "spec/models/clusters/agents/authorizations/user_access/project_authorization_spec.rb": 3.34288591800032,8686 "spec/lib/gitlab/database/migrations/timeout_helpers_spec.rb": 6.833449864000158,8687 "spec/lib/gitlab/path_traversal_spec.rb": 1.2971646209998653,8688 "spec/lib/gitlab/database/partitioning/monthly_strategy_spec.rb": 1.5937913850002587,8689 "spec/finders/ci/commit_statuses_finder_spec.rb": 4.122694582999884,8690 "spec/finders/milestones_finder_spec.rb": 1.7844260699998813,8691 "spec/services/merge_requests/add_context_service_spec.rb": 6.338994664999973,8692 "spec/lib/gitlab/ci/config/extendable/entry_spec.rb": 1.0462403920000725,8693 "spec/lib/gitlab/ssh/signature_spec.rb": 1.461925876999885,8694 "spec/lib/gitlab/instrumentation/redis_base_spec.rb": 1.2211044370001218,8695 "spec/graphql/resolvers/design_management/designs_resolver_spec.rb": 5.620900505999998,8696 "spec/services/packages/mark_packages_for_destruction_service_spec.rb": 2.7765635159998965,8697 "spec/models/service_desk/custom_email_credential_spec.rb": 1.6032601849997263,8698 "spec/workers/issues/rebalancing_worker_spec.rb": 1.6268861630001084,8699 "spec/presenters/gitlab/blame_presenter_spec.rb": 6.000738605000151,8700 "spec/services/google_cloud/create_cloudsql_instance_service_spec.rb": 2.4690492120003,8701 "spec/lib/gitlab/graphql/pagination/externally_paginated_array_connection_spec.rb": 1.3587444549998509,8702 "spec/lib/gitlab/redis/boolean_spec.rb": 0.9102451429998837,8703 "spec/workers/run_pipeline_schedule_worker_spec.rb": 3.099011168999823,8704 "spec/finders/contributed_projects_finder_spec.rb": 7.31482525399997,8705 "spec/services/work_items/import_csv_service_spec.rb": 4.523688828000104,8706 "spec/helpers/invite_members_helper_spec.rb": 1.9191165479996926,8707 "spec/lib/banzai/reference_parser/project_parser_spec.rb": 3.2798653339996235,8708 "spec/lib/gitlab/database/postgres_partition_spec.rb": 1.1815364410003895,8709 "spec/models/legacy_diff_discussion_spec.rb": 4.420371937999789,8710 "spec/graphql/resolvers/nested_groups_resolver_spec.rb": 1.8125226470001508,8711 "spec/lib/gitlab/ci/config/entry/port_spec.rb": 1.0989594269999543,8712 "spec/workers/projects/import_export/parallel_project_export_worker_spec.rb": 3.1464018850001594,8713 "spec/lib/gitlab/ci/pipeline/expression/lexeme/string_spec.rb": 0.7785712650002097,8714 "spec/lib/gitlab/metrics/dashboard/service_selector_spec.rb": 0.9313845410001704,8715 "spec/presenters/projects/import_export/project_export_presenter_spec.rb": 4.13795398100001,8716 "spec/lib/safe_zip/extract_params_spec.rb": 0.8471057890001248,8717 "spec/policies/clusters/agent_policy_spec.rb": 3.744559744000071,8718 "spec/services/projects/group_links/create_service_spec.rb": 3.1922687309997855,8719 "spec/services/ci/create_pipeline_service/custom_config_content_spec.rb": 2.512665918000039,8720 "spec/config/application_spec.rb": 0.7837499530000969,8721 "spec/lib/gitlab/feature_categories_spec.rb": 0.7364230779999161,8722 "spec/models/namespace/detail_spec.rb": 1.3289350080003715,8723 "spec/lib/gitlab/github_import/importer/pull_requests/all_merged_by_importer_spec.rb": 1.494837773999734,8724 "spec/lib/gitlab/sanitizers/exception_message_spec.rb": 0.6324696770002447,8725 "spec/services/ci/pipeline_schedules/update_service_spec.rb": 1.6033498450001389,8726 "spec/lib/gitlab/usage/metrics/name_suggestion_spec.rb": 0.8227035000004435,8727 "spec/services/database/consistency_fix_service_spec.rb": 2.8850287670002217,8728 "spec/rubocop/cop/rspec/shared_groups_metadata_spec.rb": 0.5846947610002644,8729 "spec/lib/gitlab/slash_commands/run_spec.rb": 3.059462762000294,8730 "spec/services/compare_service_spec.rb": 3.846695225000076,8731 "spec/lib/gitlab/database/partitioning_migration_helpers/foreign_key_helpers_spec.rb": 0.8050276430003578,8732 "spec/lib/gitlab/ci/config/header/root_spec.rb": 0.7219984190001014,8733 "spec/workers/issues/close_worker_spec.rb": 1.8675853429999734,8734 "spec/lib/gitlab/ci/build/credentials/registry/dependency_proxy_spec.rb": 1.9787600039999234,8735 "spec/graphql/types/base_object_spec.rb": 1.7182418449997385,8736 "spec/workers/ci/stuck_builds/drop_scheduled_worker_spec.rb": 0.4598742510002012,8737 "spec/lib/gitlab/global_id_spec.rb": 1.0297554430003402,8738 "spec/graphql/mutations/clusters/agent_tokens/revoke_spec.rb": 1.2950356910000664,8739 "spec/services/personal_access_tokens/rotate_service_spec.rb": 1.0123681750001197,8740 "spec/workers/packages/npm/create_metadata_cache_worker_spec.rb": 1.4220518699999047,8741 "spec/lib/gitlab/usage_data_counters/cycle_analytics_counter_spec.rb": 0.5651524320001045,8742 "spec/finders/resource_milestone_event_finder_spec.rb": 2.559278385000198,8743 "spec/services/projects/move_users_star_projects_service_spec.rb": 2.385708978999901,8744 "spec/workers/groups/update_two_factor_requirement_for_members_worker_spec.rb": 1.0499557719999757,8745 "spec/workers/dependency_proxy/cleanup_dependency_proxy_worker_spec.rb": 0.8699068269997952,8746 "spec/lib/gitlab/ci/config/entry/hooks_spec.rb": 0.4878599089997806,8747 "spec/lib/gitlab/usage_data_counters/wiki_page_counter_spec.rb": 0.9059939939998003,8748 "spec/models/merge_request_context_commit_spec.rb": 3.021218245,8749 "spec/services/import/gitlab_projects/file_acquisition_strategies/remote_file_spec.rb": 1.1254207349998069,8750 "spec/lib/gitlab/local_and_remote_storage_migration/pages_deployment_migrater_spec.rb": 2.5310072860002037,8751 "spec/services/ci/catalog/validate_resource_service_spec.rb": 3.2006604600001083,8752 "spec/models/concerns/sha_attribute_spec.rb": 1.1914955489996828,8753 "spec/lib/gitlab/instrumentation/redis_spec.rb": 0.6597637139998369,8754 "spec/lib/system_check/orphans/repository_check_spec.rb": 1.452211287999944,8755 "spec/lib/gitlab/database/type/symbolized_jsonb_spec.rb": 0.7306002179998359,8756 "spec/lib/gitlab/git/attributes_at_ref_parser_spec.rb": 2.8870933370003513,8757 "spec/lib/gitlab/metrics/prometheus_spec.rb": 1.5082120030001533,8758 "spec/lib/gitlab/ci/ansi2json/result_spec.rb": 0.43883056399999987,8759 "spec/services/emails/destroy_service_spec.rb": 0.6752722830001403,8760 "spec/workers/ci/build_prepare_worker_spec.rb": 0.9155189229995813,8761 "spec/models/work_items/widget_definition_spec.rb": 1.2343045560000974,8762 "spec/lib/gitlab/ci/status/created_spec.rb": 0.5246558259996164,8763 "spec/models/preloaders/projects/notes_preloader_spec.rb": 2.9950677570000153,8764 "spec/lib/gitlab/usage/metrics/instrumentations/count_ml_experiments_metric_spec.rb": 0.7189137390000724,8765 "spec/lib/banzai/filter/inline_diff_filter_spec.rb": 0.8012555720001728,8766 "spec/workers/propagate_integration_inherit_worker_spec.rb": 2.0204258690000643,8767 "spec/lib/gitlab/utils/log_limited_array_spec.rb": 0.5596906320001835,8768 "spec/initializers/rails_yaml_safe_load_spec.rb": 0.7883625730000858,8769 "spec/rubocop/cop/migration/with_lock_retries_disallowed_method_spec.rb": 0.6018792200002281,8770 "spec/lib/gitlab/pagination/offset_header_builder_with_controller_spec.rb": 1.81911241600028,8771 "spec/lib/gitlab/ci/config/entry/ports_spec.rb": 0.5183841369998845,8772 "spec/lib/gitlab/import_export/uploads_saver_spec.rb": 3.59144171700018,8773 "spec/lib/gitlab/git_post_receive_spec.rb": 1.4030810510002993,8774 "spec/models/concerns/packages/downloadable_spec.rb": 0.6703612139999677,8775 "spec/models/concerns/runners_token_prefixable_spec.rb": 0.37077907799994136,8776 "spec/lib/serializers/unsafe_json_spec.rb": 0.41493404499988173,8777 "spec/models/concerns/recoverable_by_any_email_spec.rb": 1.088000947999717,8778 "spec/tasks/gitlab/sidekiq_rake_spec.rb": 2.008567920999667,8779 "spec/services/packages/rpm/repository_metadata/build_repomd_xml_service_spec.rb": 0.668367362999561,8780 "spec/lib/gitlab/utils/mime_type_spec.rb": 1.980553332999989,8781 "spec/lib/gitlab/graphql/present/field_extension_spec.rb": 0.7256875190000756,8782 "spec/lib/gitlab/config/entry/composable_hash_spec.rb": 0.8555011469998135,8783 "spec/policies/release_policy_spec.rb": 1.6930920670001797,8784 "spec/services/projects/import_error_filter_spec.rb": 0.3965447270002187,8785 "spec/lib/gitlab/terraform_registry_token_spec.rb": 1.4854695439998977,8786 "spec/lib/gitlab/email/handler_spec.rb": 1.0924985179999567,8787 "spec/lib/gitlab/query_limiting/active_support_subscriber_spec.rb": 0.4968680479996692,8788 "spec/finders/user_groups_counter_spec.rb": 1.878022190000138,8789 "spec/policies/protected_branch_access_policy_spec.rb": 1.7115067139998246,8790 "spec/lib/bitbucket/representation/pull_request_comment_spec.rb": 0.694857401000263,8791 "spec/lib/gitlab/noteable_metadata_spec.rb": 1.1931353889999627,8792 "spec/services/projects/all_issues_count_service_spec.rb": 1.3702959340002963,8793 "spec/scripts/api/get_package_and_test_job_spec.rb": 0.690782770000169,8794 "spec/services/ci/abort_pipelines_service_spec.rb": 1.5273485489997256,8795 "spec/services/users/registrations_build_service_spec.rb": 0.8238612100003593,8796 "spec/lib/sidebars/admin/menus/applications_menu_spec.rb": 0.7057586000000811,8797 "spec/lib/sidebars/groups/menus/kubernetes_menu_spec.rb": 0.9153795219999665,8798 "spec/graphql/resolvers/work_items/types_resolver_spec.rb": 1.202412736000042,8799 "spec/lib/gitlab/ci/config/entry/kubernetes_spec.rb": 0.7277309289997902,8800 "spec/lib/gitlab/auth/crowd/authentication_spec.rb": 0.7597532340000726,8801 "spec/lib/gitlab/dependency_linker/requirements_txt_linker_spec.rb": 0.6023152190000474,8802 "spec/lib/sidebars/user_settings/menus/ssh_keys_menu_spec.rb": 0.6733479829999851,8803 "spec/models/bulk_imports/export_batch_spec.rb": 0.6580378220000966,8804 "spec/lib/gitlab/tracking/destinations/snowplow_micro_spec.rb": 0.635325284999908,8805 "spec/serializers/project_access_token_serializer_spec.rb": 1.0066232439999112,8806 "spec/workers/gitlab/github_import/stage/import_collaborators_worker_spec.rb": 0.7885021520000919,8807 "spec/models/uploads/local_spec.rb": 1.2505244439998933,8808 "spec/services/users/email_verification/generate_token_service_spec.rb": 0.8276795209999364,8809 "spec/serializers/test_suite_comparer_entity_spec.rb": 0.6329005669999788,8810 "spec/services/ci/runners/stale_managers_cleanup_service_spec.rb": 0.8846518340001239,8811 "spec/services/achievements/destroy_service_spec.rb": 0.9581392489999416,8812 "spec/graphql/types/ci/runner_architecture_type_spec.rb": 0.4179049350000241,8813 "spec/lib/gitlab/cache/metrics_spec.rb": 0.5695423920001303,8814 "spec/graphql/resolvers/work_item_resolver_spec.rb": 1.1246510050000325,8815 "spec/bin/diagnostic_reports_uploader_spec.rb": 0.7023291210002753,8816 "spec/graphql/types/permission_types/base_permission_type_spec.rb": 0.5543590829997811,8817 "spec/workers/gitlab/bitbucket_server_import/stage/finish_import_worker_spec.rb": 0.878995035999651,8818 "spec/lib/gitlab/database/pg_class_spec.rb": 0.5001469769999858,8819 "spec/rubocop/cop/database/disable_referential_integrity_spec.rb": 0.5120029659997272,8820 "spec/serializers/personal_access_token_serializer_spec.rb": 0.8069256329999916,8821 "spec/lib/gitlab/usage/metrics/instrumentations/redis_hll_metric_spec.rb": 0.5959400490000917,8822 "spec/workers/namespaces/update_root_statistics_worker_spec.rb": 0.49147388900018996,8823 "spec/presenters/releases/link_presenter_spec.rb": 0.7942339030000767,8824 "spec/views/help/instance_configuration.html.haml_spec.rb": 0.6644235140001911,8825 "spec/presenters/sentry_error_presenter_spec.rb": 0.4799046789999011,8826 "spec/services/members/standard_member_builder_spec.rb": 0.8593867079998745,8827 "spec/lib/api/entities/group_detail_spec.rb": 0.5679117720001159,8828 "spec/models/group_deploy_keys_group_spec.rb": 0.5999003689998972,8829 "spec/services/projects/apple_target_platform_detector_service_spec.rb": 0.5104780570000003,8830 "spec/lib/gitlab/memory/watchdog/monitor/unique_memory_growth_spec.rb": 0.48232991899976696,8831 "spec/graphql/types/release_asset_link_input_type_spec.rb": 0.4583359210000708,8832 "spec/graphql/types/merge_request_state_enum_spec.rb": 0.4828540090002207,8833 "spec/serializers/import/github_failure_serializer_spec.rb": 0.4500235119999161,8834 "spec/routing/directs/milestone_spec.rb": 0.449058332000277,8835 "spec/services/packages/debian/extract_deb_metadata_service_spec.rb": 0.5132858960000704,8836 "spec/graphql/types/packages/package_details_type_spec.rb": 0.4506369219998305,8837 "spec/lib/microsoft_teams/notifier_spec.rb": 0.5006031879997863,8838 "spec/views/notify/new_achievement_email.html.haml_spec.rb": 0.536593043999801,8839 "spec/lib/mattermost/command_spec.rb": 0.46424637000018265,8840 "spec/lib/sidebars/projects/super_sidebar_menus/code_menu_spec.rb": 0.40234831599991594,8841 "spec/rubocop/cop/user_admin_spec.rb": 0.39471216699985234,8842 "spec/lib/gitlab/database/migrations/observers/query_log_spec.rb": 0.39185354599976563,8843 "spec/lib/gitlab/sidekiq_middleware/extra_done_log_metadata_spec.rb": 0.4107463549999011,8844 "spec/graphql/types/commit_action_mode_enum_spec.rb": 0.4626373210003294,8845 "spec/graphql/types/ci/runner_setup_type_spec.rb": 0.40085763600018254,8846 "spec/rubocop/cop/gemspec/avoid_executing_git_spec.rb": 0.439376682999864,8847 "spec/lib/gitlab/git/conflict/resolver_spec.rb": 0.40881944500006284,8848 "spec/lib/gitlab/grape_logging/loggers/token_logger_spec.rb": 0.400989725999807,8849 "spec/graphql/types/upload_type_spec.rb": 0.4103621849999399,8850 "spec/lib/error_tracking/sentry_client/token_spec.rb": 0.3862160070002574,8851 "spec/workers/todos_destroyer/destroyed_issuable_worker_spec.rb": 0.36740207900038513,8852 "spec/lib/gitlab/ci/reports/security/scan_spec.rb": 0.4020268260001103,8853 "spec/lib/api/entities/nuget/search_result_spec.rb": 0.37102321900010793,8854 "spec/lib/gitlab/ci/status/build/waiting_for_resource_spec.rb": 0.3554225499997301,8855 "spec/workers/update_container_registry_info_worker_spec.rb": 0.3715523979999489,8856 "spec/graphql/types/permission_types/snippet_spec.rb": 0.37615848800032836,8857 "spec/rubocop/cop/gitlab/union_spec.rb": 0.37753141800021695,8858 "spec/lib/gitlab/ci/reports/sbom/reports_spec.rb": 0.37407560800011197,8859 "spec/lib/gitlab/patch/draw_route_spec.rb": 0.38178211800004647,8860 "spec/graphql/types/eventable_type_spec.rb": 0.38519369699997696,8861 "spec/graphql/types/permission_types/environment_spec.rb": 0.37946609800019368862}8863Knapsack global time execution for tests: 27m 55s8864Pending: (Failures listed here are expected and do not affect your suite's status)8865 1) AvatarUploader behaves like builds correct paths #cache_dir behaves like matches the method pattern 8866 # No pattern provided, skipping.8867 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88868 2) AvatarUploader behaves like builds correct paths #work_dir behaves like matches the method pattern 8869 # No pattern provided, skipping.8870 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88871 3) AvatarUploader behaves like builds correct paths #relative_path is relative8872 # Path not set, skipping.8873 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:408874 4) AvatarUploader behaves like builds correct paths .base_dir behaves like matches the method pattern 8875 # No pattern provided, skipping.8876 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88877 5) AvatarUploader object_store is REMOTE behaves like builds correct paths #cache_dir behaves like matches the method pattern 8878 # No pattern provided, skipping.8879 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88880 6) AvatarUploader object_store is REMOTE behaves like builds correct paths #work_dir behaves like matches the method pattern 8881 # No pattern provided, skipping.8882 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88883 7) AvatarUploader object_store is REMOTE behaves like builds correct paths #relative_path is relative8884 # Path not set, skipping.8885 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:408886 8) AvatarUploader object_store is REMOTE behaves like builds correct paths .absolute_path behaves like matches the method pattern 8887 # No pattern provided, skipping.8888 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88889 9) AvatarUploader object_store is REMOTE behaves like builds correct paths .base_dir behaves like matches the method pattern 8890 # No pattern provided, skipping.8891 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88892Finished in 28 minutes 0 seconds (files took 1 minute 44.54 seconds to load)88933812 examples, 0 failures, 9 pending8894Randomized with seed 124838895[TEST PROF INFO] Time spent in factories: 13:57.105 (48.44% of total time)8896RSpec exited with 0.8897No examples to retry, congrats!8899Running after script...8900$ echo -e "\e[0Ksection_start:`date +%s`:report_results_section[collapsed=true]\r\e[0KReport results"8907Not uploading cache ruby-gems-debian-bullseye-ruby-3.0-16 due to policy8909Uploading artifacts...8910coverage/: found 5 matching artifact files and directories 8911WARNING: crystalball/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 8912deprecations/: found 10 matching artifact files and directories 8913knapsack/: found 4 matching artifact files and directories 8914query_recorder/: found 2 matching artifact files and directories 8915rspec/: found 10 matching artifact files and directories 8916WARNING: tmp/capybara/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 8917log/*.log: found 18 matching artifact files and directories 8918WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/4541357758/artifacts?artifact_format=zip&artifact_type=archive&expire_in=31d new-url=https://gitlab.com8919WARNING: Retrying... context=artifacts-uploader error=request redirected8920Uploading artifacts as "archive" to coordinator... 201 Created id=4541357758 responseStatus=201 Created token=64_aca8L8921Uploading artifacts...8922rspec/rspec-*.xml: found 1 matching artifact files and directories 8923WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/4541357758/artifacts?artifact_format=gzip&artifact_type=junit&expire_in=31d new-url=https://gitlab.com8924WARNING: Retrying... context=artifacts-uploader error=request redirected8925Uploading artifacts as "junit" to coordinator... 201 Created id=4541357758 responseStatus=201 Created token=64_aca8L8927Job succeeded