rspec unit pg12 9/20
Passed Started
by
@DylanGriffith

Dylan Griffith
1Running with gitlab-runner 14.4.0-rc1 (bc99a056)2 on blue-1.private.runners-manager.gitlab.com/gitlab.com/gitlab-org 1zzGUpzq3 feature flags: FF_USE_FASTZIP:true6Using Docker executor with image registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.7.patched-golang-1.16-git-2.33-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-12-graphicsmagick-1.3.36 ...7Starting service postgres:12 ...8Pulling docker image postgres:12 ...9Using docker image sha256:5c4789e9bb7bb119b87daeffe7ac587b6e6eff4072a1b43b11a5a4209ed7c265 for postgres:12 with digest postgres@sha256:03a821bf55c06afc5b1eca7d1ba2ca0fd13edbe0e2794a90d741f1fea31787af ...10Starting service redis:5.0-alpine ...11Pulling docker image redis:5.0-alpine ...12Using docker image sha256:a7a6051077c6c9cfc9ad478778271b49900cb5c4667e64a4128306d8f41a5396 for redis:5.0-alpine with digest redis@sha256:cb5840073dc475b45bf856eb666f5e4d19e3b1ae882e0f3a1396d399cfa23702 ...13Waiting for services to be up and running...14Authenticating with credentials from job payload (GitLab Registry)15Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.7.patched-golang-1.16-git-2.33-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-12-graphicsmagick-1.3.36 ...16Using docker image sha256:b8b4629afe237f58781d0f297f9802abe7234c61d769cef19072e62e539b44db for registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.7.patched-golang-1.16-git-2.33-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-12-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images@sha256:eafffa71075a6c3a6132f20dee186f63e8e6446d7fbde8f8a3aa5c1f8e66ba98 ...18Running on runner-1zzgupzq-project-278964-concurrent-0 via runner-1zzgupzq-private-1635279879-5d48d3ee...20$ eval "$CI_PRE_CLONE_SCRIPT"21Downloading archived master...22Connecting to storage.googleapis.com (172.217.193.128:443)23saving to '/tmp/gitlab.tar.gz'24gitlab.tar.gz 38% |************ | 133M 0:00:01 ETA25gitlab.tar.gz 100% |********************************| 342M 0:00:00 ETA26'/tmp/gitlab.tar.gz' saved27Extracting tarball into /builds/gitlab-org/gitlab...28Fetching changes with git depth set to 20...29Initialized empty Git repository in /builds/gitlab-org/gitlab/.git/30Created fresh repository.31remote: Enumerating objects: 127042, done. 32remote: Counting objects: 100% (127042/127042), done. 33remote: Compressing objects: 100% (85632/85632), done. 34remote: Total 127042 (delta 58018), reused 87454 (delta 36683), pack-reused 0 35Receiving objects: 100% (127042/127042), 124.85 MiB | 29.71 MiB/s, done.36Resolving deltas: 100% (58018/58018), done.38 * [new ref] e28bf2006022fa717b8e023304aaae32593982e4 -> refs/pipelines/39605215339 * [new branch] master -> origin/master40Checking out e28bf200 as master...41Skipping Git submodules setup43Checking cache for ruby-gems-v1-5...44cache.zip is up to date 45Successfully extracted cache46Checking cache for gitaly-ruby-gems-v1-5...47cache.zip is up to date 48Successfully extracted cache50Downloading artifacts for compile-test-assets (1718320136)...51Downloading artifacts from coordinator... ok id=1718320136 responseStatus=200 OK token=ransSmQE52Downloading artifacts for retrieve-tests-metadata (1718320147)...53Downloading artifacts from coordinator... ok id=1718320147 responseStatus=200 OK token=u5F8xuWx54Downloading artifacts for setup-test-env (1718320139)...55Downloading artifacts from coordinator... ok id=1718320139 responseStatus=200 OK token=GEzxAMiL57Using docker image sha256:b8b4629afe237f58781d0f297f9802abe7234c61d769cef19072e62e539b44db for registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.7.patched-golang-1.16-git-2.33-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-12-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images@sha256:eafffa71075a6c3a6132f20dee186f63e8e6446d7fbde8f8a3aa5c1f8e66ba98 ...58$ echo $FOSS_ONLY59$ [ "$FOSS_ONLY" = "1" ] && rm -rf ee/ qa/spec/ee/ qa/qa/specs/features/ee/ qa/qa/ee/ qa/qa/ee.rb60$ export GOPATH=$CI_PROJECT_DIR/.go61$ mkdir -p $GOPATH62$ source scripts/utils.sh63$ source scripts/prepare_build.sh64Bundler version 2.1.465production:development66Settings are listed in order of priority. The top value will be used.67path68Set for the current user (/root/.bundle/config): "/builds/gitlab-org/gitlab/vendor"69clean70Set for the current user (/root/.bundle/config): "true"71without72Set via BUNDLE_WITHOUT: [:production, :development]73install_flags74Set via BUNDLE_INSTALL_FLAGS: "--jobs=$(nproc) --retry=3 --quiet"75$ bundle install --jobs=$(nproc) --retry=3 --quiet && bundle check76The Gemfile's dependencies are satisfied77==> 'bundle install --jobs=$(nproc) --retry=3 --quiet && bundle check' succeeded in 2 seconds.78$ bundle pristine pg79Installing pg 1.2.3 with native extensions80==> 'bundle pristine pg' succeeded in 11 seconds.81$ setup_db_user_only82CREATE ROLE83GRANT84==> 'setup_db_user_only' succeeded in 0 seconds.85$ bundle exec rake db:drop db:create db:structure:load db:migrate gitlab:db:setup_ee86Dropped database 'gitlabhq_test'87Created database 'gitlabhq_test'88DEPRECATION WARNING: Using `bin/rails db:structure:load` is deprecated and will be removed in Rails 6.2. Configure the format using `config.active_record.schema_format = :sql` to use `structure.sql` and run `bin/rails db:schema:load` instead. (called from load at /builds/gitlab-org/gitlab/vendor/ruby/2.7.0/bin/rake:23)89Dropped database 'gitlabhq_geo_test'90Created database 'gitlabhq_geo_test'91==> 'bundle exec rake db:drop db:create db:structure:load db:migrate gitlab:db:setup_ee' succeeded in 31 seconds.92$ run_timed_command "gem install knapsack --no-document"93$ gem install knapsack --no-document94Successfully installed knapsack-4.0.0951 gem installed96==> 'gem install knapsack --no-document' succeeded in 1 seconds.97$ run_timed_command "scripts/gitaly-test-spawn"98$ scripts/gitaly-test-spawn99Don't run Bundler as root. Bundler can ask for sudo if it is needed, and100installing your bundle as root will break this application for all non-root101users on this machine.102Using abstract_type 0.0.7103Using concurrent-ruby 1.1.9104Using i18n 1.8.10105Using minitest 5.14.4106Using tzinfo 2.0.4107Using zeitwerk 2.4.2108Using activesupport 6.1.4.1109Using builder 3.2.4110Using erubi 1.10.0111Using mini_portile2 2.5.1112Using racc 1.5.2113Using nokogiri 1.11.7 (x86_64-linux)114Using rails-dom-testing 2.0.3115Using crass 1.0.6116Using loofah 2.12.0117Using rails-html-sanitizer 1.4.2118Using actionview 6.1.4.1119Using rack 2.2.3120Using rack-test 1.1.0121Using actionpack 6.1.4.1122Using ice_nine 0.11.2123Using thread_safe 0.3.6124Using memoizable 0.4.2125Using adamantium 0.2.0126Using public_suffix 4.0.6127Using addressable 2.7.0128Using ast 2.4.1129Using binding_ninja 0.2.3130Using bundler 2.1.4131Using charlock_holmes 0.7.7132Using coderay 1.1.2133Using equalizer 0.0.11134Using concord 0.1.5135Using diff-lcs 1.3136Using dotenv 2.7.6137Using escape_utils 1.2.1138Using factory_bot 5.0.2139Using multipart-post 2.1.1140Using faraday 1.0.1141Using ffi 1.15.3142Using json 2.5.1143Using gemojione 3.3.0144Using mini_mime 1.0.2145Using rugged 1.2.0146Using github-linguist 7.12.1147Using github-markup 1.7.0148Using mime-types-data 3.2020.1104149Using mime-types 3.3.1150Using gitlab-gollum-rugged_adapter 0.4.4.4.gitlab.1151Using rouge 3.26.0152Using nokogumbo 1.5.0153Using sanitize 4.6.6154Using stringex 2.8.5155Using gitlab-gollum-lib 4.2.7.10.gitlab.1156Using google-protobuf 3.17.3 (x86_64-linux)157Using googleapis-common-protos-types 1.1.0158Using grpc 1.30.2 (x86_64-linux)159Using opentracing 0.5.0160Using thrift 0.15.0161Using jaeger-client 1.1.0162Using pg_query 2.1.1163Using redis 4.4.0164Using gitlab-labkit 0.21.2165Using gitlab-markup 1.7.1166Using grpc-tools 1.30.2167Using sawyer 0.8.2168Using octokit 4.20.0169Using reverse_markdown 1.4.0170Using thor 1.1.0171Using licensee 9.14.1172Using method_source 0.9.2173Using msgpack 1.3.3174Using optimist 3.0.1175Using parallel 1.19.2176Using parser 2.7.2.0177Using procto 0.0.3178Using unparser 0.4.7179Using proc_to_ast 0.1.0180Using pry 0.12.2181Using rainbow 3.0.0182Using rbtrace 0.4.14183Using rdoc 6.3.2184Using regexp_parser 1.8.1185Using rexml 3.2.4186Using rspec-support 3.8.0187Using rspec-core 3.8.0188Using rspec-expectations 3.8.3189Using rspec-mocks 3.8.0190Using rspec 3.8.0191Using rspec-parameterized 0.4.2192Using rubocop-ast 0.2.0193Using ruby-progressbar 1.10.1194Using unicode-display_width 1.7.0195Using rubocop 0.86.0196Using sentry-raven 3.0.4197Using timecop 0.9.1198Bundle complete! 21 Gemfile dependencies, 96 gems now installed.199Gems in the groups production and development were not installed.200Bundled gems are installed into `/builds/gitlab-org/gitlab/vendor/gitaly-ruby`201Checking gitaly-ruby Gemfile...202Checking gitaly-ruby bundle...203The Gemfile's dependencies are satisfied204Trying to connect to gitaly: ............................................... OK205Trying to connect to gitaly2: ............................................................... OK206Trying to connect to praefect: ......... OK207==> 'scripts/gitaly-test-spawn' succeeded in 13 seconds.208$ source ./scripts/rspec_helpers.sh209$ rspec_paralellized_job "--tag ~quarantine --tag ~geo --tag ~level:migration"210KNAPSACK_TEST_FILE_PATTERN: spec/{bin,channels,config,db,dependencies,elastic,elastic_integration,experiments,factories,finders,frontend,graphql,haml_lint,helpers,initializers,javascripts,lib,models,policies,presenters,rack_servers,replicators,routing,rubocop,scripts,serializers,services,sidekiq,spam,support_specs,tasks,uploaders,validators,views,workers,tooling}{,/**/}*_spec.rb211Knapsack node specs:212spec/models/user_spec.rb213spec/models/issue_spec.rb214spec/models/namespace/traversal_hierarchy_spec.rb215spec/models/integrations/jira_spec.rb216spec/models/clusters/applications/ingress_spec.rb217spec/lib/gitlab/import_export/relation_tree_restorer_spec.rb218spec/models/operations/feature_flags/strategy_spec.rb219spec/helpers/visibility_level_helper_spec.rb220spec/models/integrations/slack_spec.rb221spec/models/integration_spec.rb222spec/services/projects/update_service_spec.rb223spec/services/auto_merge/base_service_spec.rb224spec/lib/gitlab/background_migration/populate_missing_vulnerability_dismissal_information_spec.rb225spec/finders/releases_finder_spec.rb226spec/lib/gitlab/background_migration/set_default_iteration_cadences_spec.rb227spec/lib/gitlab/ci/config_spec.rb228spec/lib/gitlab/background_migration/populate_dismissed_state_for_vulnerabilities_spec.rb229spec/lib/gitlab/bitbucket_server_import/importer_spec.rb230spec/services/alert_management/create_alert_issue_service_spec.rb231spec/lib/gitlab/import_export/members_mapper_spec.rb232spec/lib/gitlab/url_blocker_spec.rb233spec/lib/gitlab/utils/markdown_spec.rb234spec/services/search_service_spec.rb235spec/models/operations/feature_flags/user_list_spec.rb236spec/models/notification_recipient_spec.rb237spec/presenters/clusters/cluster_presenter_spec.rb238spec/routing/group_routing_spec.rb239spec/finders/ci/runner_jobs_finder_spec.rb240spec/lib/banzai/filter/references/project_reference_filter_spec.rb241spec/finders/ci/runners_finder_spec.rb242spec/lib/gitlab/email/handler/create_note_on_issuable_handler_spec.rb243spec/lib/container_registry/client_spec.rb244spec/lib/gitlab/ci/templates/npm_spec.rb245spec/services/lfs/file_transformer_spec.rb246spec/serializers/pipeline_details_entity_spec.rb247spec/helpers/icons_helper_spec.rb248spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb249spec/lib/gitlab/ci/config/entry/release_spec.rb250spec/lib/gitlab/gpg_spec.rb251spec/lib/gitlab/legacy_github_import/importer_spec.rb252spec/helpers/user_callouts_helper_spec.rb253spec/lib/gitlab/search/found_blob_spec.rb254spec/services/ci/create_web_ide_terminal_service_spec.rb255spec/uploaders/ci/pipeline_artifact_uploader_spec.rb256spec/lib/gitlab/ci/ansi2json_spec.rb257spec/lib/gitlab/ci/trace/chunked_io_spec.rb258spec/helpers/nav/top_nav_helper_spec.rb259spec/lib/banzai/filter/inline_metrics_redactor_filter_spec.rb260spec/graphql/mutations/merge_requests/set_assignees_spec.rb261spec/lib/gitlab/metrics/web_transaction_spec.rb262spec/lib/banzai/filter/audio_link_filter_spec.rb263spec/services/projects/after_import_service_spec.rb264spec/services/projects/protect_default_branch_service_spec.rb265spec/models/packages/debian/group_component_file_spec.rb266spec/lib/gitlab/ci/pipeline/expression/lexeme/and_spec.rb267spec/rack_servers/puma_spec.rb268spec/finders/merge_requests/oldest_per_commit_finder_spec.rb269spec/workers/remove_expired_group_links_worker_spec.rb270spec/services/quick_actions/target_service_spec.rb271spec/lib/gitlab/instrumentation/redis_cluster_validator_spec.rb272spec/lib/gitlab/consul/internal_spec.rb273spec/lib/gitlab/graphql/deprecation_spec.rb274spec/models/ci/job_token/project_scope_link_spec.rb275spec/lib/gitlab/ci/parsers/test/junit_spec.rb276spec/lib/gitlab/ci/artifact_file_reader_spec.rb277spec/finders/design_management/versions_finder_spec.rb278spec/lib/gitlab/sanitizers/exif_spec.rb279spec/lib/gitlab/sidekiq_migrate_jobs_spec.rb280spec/lib/gitlab/ci/config/entry/product/matrix_spec.rb281spec/lib/gitlab/ci/status/build/scheduled_spec.rb282spec/bin/sidekiq_cluster_spec.rb283spec/lib/gitlab/serverless/service_spec.rb284spec/services/metrics/dashboard/transient_embed_service_spec.rb285spec/helpers/projects/project_members_helper_spec.rb286spec/services/labels/create_service_spec.rb287spec/services/metrics/dashboard/annotations/delete_service_spec.rb288spec/lib/banzai/reference_redactor_spec.rb289spec/tooling/lib/tooling/kubernetes_client_spec.rb290spec/services/pages/zip_directory_service_spec.rb291spec/lib/gitlab/checks/changes_access_spec.rb292spec/graphql/resolvers/board_resolver_spec.rb293spec/lib/banzai/filter/upload_link_filter_spec.rb294spec/lib/gitlab/suggestions/file_suggestion_spec.rb295spec/lib/gitlab/local_and_remote_storage_migration/pages_deployment_migrater_spec.rb296spec/lib/gitlab/ci/jwt_spec.rb297spec/lib/gitlab/ci/templates/Jobs/test_gitlab_ci_yaml_spec.rb298spec/lib/gitlab/etag_caching/middleware_spec.rb299spec/models/project_deploy_token_spec.rb300spec/models/blob_viewer/metrics_dashboard_yml_spec.rb301spec/services/security/merge_reports_service_spec.rb302spec/lib/gitlab/prometheus/additional_metrics_parser_spec.rb303spec/models/packages/tag_spec.rb304spec/finders/user_finder_spec.rb305spec/services/alert_management/alerts/todo/create_service_spec.rb306spec/services/packages/debian/generate_distribution_key_service_spec.rb307spec/policies/deploy_keys_project_policy_spec.rb308spec/lib/gitlab/api_authentication/builder_spec.rb309spec/models/tree_spec.rb310spec/lib/gitlab/email/message/in_product_marketing/base_spec.rb311spec/helpers/time_zone_helper_spec.rb312spec/lib/gitlab/legacy_github_import/client_spec.rb313spec/workers/merge_requests/create_pipeline_worker_spec.rb314spec/models/integrations/chat_message/alert_message_spec.rb315spec/uploaders/favicon_uploader_spec.rb316spec/lib/gitlab/kas_spec.rb317spec/services/packages/nuget/sync_metadatum_service_spec.rb318spec/workers/gitlab/jira_import/stage/import_issues_worker_spec.rb319spec/serializers/jira_connect/app_data_serializer_spec.rb320spec/workers/incident_management/pager_duty/process_incident_worker_spec.rb321spec/models/ci/pipeline_variable_spec.rb322spec/lib/banzai/reference_parser/mentioned_user_parser_spec.rb323spec/lib/mattermost/team_spec.rb324spec/lib/gitlab/sidekiq_status_spec.rb325spec/lib/api/helpers/related_resources_helpers_spec.rb326spec/lib/gitlab/metrics/subscribers/external_http_spec.rb327spec/lib/gitlab/database/similarity_score_spec.rb328spec/graphql/mutations/security/ci_configuration/configure_sast_spec.rb329spec/graphql/mutations/terraform/state/lock_spec.rb330spec/lib/gitlab/slash_commands/issue_show_spec.rb331spec/lib/gitlab/ci/badge/coverage/report_spec.rb332spec/rubocop/cop/code_reuse/serializer_spec.rb333spec/serializers/trigger_variable_entity_spec.rb334spec/graphql/types/issue_sort_enum_spec.rb335spec/policies/release_policy_spec.rb336spec/services/discussions/capture_diff_note_position_service_spec.rb337spec/views/projects/commit/show.html.haml_spec.rb338spec/models/blob_viewer/package_json_spec.rb339spec/lib/gitlab/health_checks/redis/rate_limiting_check_spec.rb340spec/services/import/bitbucket_server_service_spec.rb341spec/models/container_registry/event_spec.rb342spec/lib/gitlab/usage_data_counters/snippet_counter_spec.rb343spec/services/projects/prometheus/metrics/update_service_spec.rb344spec/graphql/types/untrusted_regexp_spec.rb345spec/views/shared/notes/_form.html.haml_spec.rb346spec/validators/cron_validator_spec.rb347spec/lib/gitlab/ci/status/pipeline/common_spec.rb348spec/lib/bulk_imports/ndjson_pipeline_spec.rb349spec/lib/gitlab/github_import/importer/lfs_objects_importer_spec.rb350spec/lib/gitlab/ci/config/external/rules_spec.rb351spec/routing/openid_connect_spec.rb352spec/lib/banzai/filter/table_of_contents_tag_filter_spec.rb353spec/rubocop/cop/migration/complex_indexes_require_name_spec.rb354spec/rubocop/cop/gitlab/delegate_predicate_methods_spec.rb355spec/workers/object_pool/join_worker_spec.rb356spec/presenters/web_hook_log_presenter_spec.rb357spec/lib/gitlab/untrusted_regexp_spec.rb358spec/rubocop/cop/scalability/cron_worker_context_spec.rb359spec/views/admin/application_settings/general.html.haml_spec.rb360spec/policies/terraform/state_version_policy_spec.rb361spec/serializers/ci/daily_build_group_report_result_entity_spec.rb362spec/graphql/types/release_type_spec.rb363spec/rubocop/cop/scalability/file_uploads_spec.rb364spec/models/bulk_imports/file_transfer/group_config_spec.rb365spec/lib/gitlab/usage_data_counters/merge_request_counter_spec.rb366spec/models/concerns/cron_schedulable_spec.rb367spec/services/merge_requests/resolve_todos_service_spec.rb368spec/views/shared/milestones/_issuable.html.haml_spec.rb369spec/graphql/resolvers/design_management/design_at_version_resolver_spec.rb370spec/workers/bulk_imports/pipeline_worker_spec.rb371spec/lib/gitlab/cleanup/remote_uploads_spec.rb372spec/lib/banzai/filter/kroki_filter_spec.rb373spec/lib/gitlab/database/partitioning_migration_helpers/index_helpers_spec.rb374spec/presenters/event_presenter_spec.rb375spec/lib/gitlab/suggestions/commit_message_spec.rb376spec/lib/gitlab/query_limiting/middleware_spec.rb377spec/services/events/render_service_spec.rb378spec/helpers/webpack_helper_spec.rb379spec/services/wiki_pages/event_create_service_spec.rb380spec/lib/bulk_imports/groups/pipelines/milestones_pipeline_spec.rb381spec/lib/gitlab/graphql/loaders/batch_model_loader_spec.rb382spec/lib/gitlab/bullet/exclusions_spec.rb383spec/graphql/types/award_emojis/award_emoji_type_spec.rb384spec/lib/gitlab/sidekiq_middleware_spec.rb385spec/lib/gitlab/external_authorization_spec.rb386spec/finders/packages/pypi/package_finder_spec.rb387spec/models/merge_request_context_commit_spec.rb388spec/graphql/resolvers/users_resolver_spec.rb389spec/config/settings_spec.rb390spec/lib/gitlab/ci/config/entry/coverage_spec.rb391spec/models/blob_viewer/composer_json_spec.rb392spec/graphql/types/jira_user_type_spec.rb393spec/graphql/types/ci_configuration/sast/entity_type_spec.rb394spec/lib/gitlab/ci/status/build/skipped_spec.rb395spec/lib/gitlab/metrics/samplers/threads_sampler_spec.rb396spec/views/projects/services/_form.haml_spec.rb397spec/services/packages/nuget/create_dependency_service_spec.rb398spec/workers/bulk_imports/export_request_worker_spec.rb399spec/workers/ci/build_schedule_worker_spec.rb400spec/tooling/danger/sidekiq_queues_spec.rb401spec/graphql/types/tree/blob_type_spec.rb402spec/lib/gitlab/utils/delegator_override_spec.rb403spec/services/ci/create_pipeline_service/tags_spec.rb404spec/lib/gitlab/error_tracking/processor/grpc_error_processor_spec.rb405spec/presenters/sentry_error_presenter_spec.rb406spec/services/releases/create_evidence_service_spec.rb407spec/rubocop/cop/migration/add_reference_spec.rb408spec/lib/gitlab/ci/trace/metrics_spec.rb409spec/workers/gitlab_service_ping_worker_spec.rb410spec/models/alerting/project_alerting_setting_spec.rb411spec/lib/gitlab/import_export/after_export_strategy_builder_spec.rb412spec/rubocop/cop/migration/hash_index_spec.rb413spec/tasks/gitlab/packages/migrate_rake_spec.rb414spec/routing/projects/security/configuration_controller_routing_spec.rb415spec/helpers/graph_helper_spec.rb416spec/lib/gitlab/usage_data_counters/track_unique_events_spec.rb417spec/views/registrations/welcome/show.html.haml_spec.rb418spec/graphql/types/container_repository_details_type_spec.rb419spec/graphql/features/feature_flag_spec.rb420spec/workers/upload_checksum_worker_spec.rb421spec/lib/banzai/filter/front_matter_filter_spec.rb422spec/workers/build_hooks_worker_spec.rb423spec/serializers/feature_flag_entity_spec.rb424spec/models/integrations/jira_tracker_data_spec.rb425spec/rubocop/cop/usage_data/distinct_count_by_large_foreign_key_spec.rb426spec/finders/feature_flags_user_lists_finder_spec.rb427spec/workers/ci/create_cross_project_pipeline_worker_spec.rb428spec/lib/gitlab/config/entry/composable_array_spec.rb429spec/lib/gitlab/import_export/project/sample/date_calculator_spec.rb430spec/services/ci/create_pipeline_service/pre_post_stages_spec.rb431spec/tasks/admin_mode_spec.rb432spec/lib/generators/gitlab/usage_metric_generator_spec.rb433spec/models/concerns/token_authenticatable_strategies/base_spec.rb434spec/lib/gitlab/ci/status/manual_spec.rb435spec/models/bulk_imports/failure_spec.rb436spec/rubocop/cop/migration/add_index_spec.rb437spec/lib/gitlab/logging/cloudflare_helper_spec.rb438spec/lib/system_check/base_check_spec.rb439spec/lib/rouge/formatters/html_gitlab_spec.rb440spec/lib/gitlab/slash_commands/presenters/error_spec.rb441spec/lib/api/entities/group_detail_spec.rb442spec/lib/gitlab/ci/yaml_processor/dag_spec.rb443spec/views/shared/milestones/_issuables.html.haml_spec.rb444spec/lib/api/github/entities_spec.rb445spec/lib/gitlab/static_site_editor/config/file_config/entry/image_upload_path_spec.rb446spec/services/captcha/captcha_verification_service_spec.rb447spec/rubocop/cop/prefer_class_methods_over_module_spec.rb448spec/presenters/ci/bridge_presenter_spec.rb449spec/lib/gitlab/metrics/dashboard/validator/client_spec.rb450spec/lib/banzai/pipeline/email_pipeline_spec.rb451spec/services/award_emojis/base_service_spec.rb452spec/rubocop/cop/gitlab/finder_with_find_by_spec.rb453spec/initializers/asset_proxy_setting_spec.rb454spec/workers/expire_build_artifacts_worker_spec.rb455spec/lib/gitlab/sidekiq_versioning_spec.rb456spec/graphql/types/permission_types/project_spec.rb457spec/lib/gitlab/github_import/representation/lfs_object_spec.rb458spec/graphql/types/merge_request_review_state_enum_spec.rb459spec/helpers/projects/security/configuration_helper_spec.rb460spec/graphql/types/tree/tree_entry_type_spec.rb461spec/lib/gitlab/tcp_checker_spec.rb462spec/graphql/types/ci/job_artifact_file_type_enum_spec.rb463spec/serializers/project_mirror_serializer_spec.rb464spec/rubocop/cop/migration/timestamps_spec.rb465spec/graphql/types/invitation_interface_spec.rb466spec/workers/update_project_statistics_worker_spec.rb467spec/graphql/types/ci/template_type_spec.rb468spec/lib/gitlab/ci/parsers/instrumentation_spec.rb469spec/workers/ci/schedule_delete_objects_cron_worker_spec.rb470Filter specs:471Running specs:472Running all node tests without filter473spec/models/user_spec.rb474spec/models/issue_spec.rb475spec/models/namespace/traversal_hierarchy_spec.rb476spec/models/integrations/jira_spec.rb477spec/models/clusters/applications/ingress_spec.rb478spec/lib/gitlab/import_export/relation_tree_restorer_spec.rb479spec/models/operations/feature_flags/strategy_spec.rb480spec/helpers/visibility_level_helper_spec.rb481spec/models/integrations/slack_spec.rb482spec/models/integration_spec.rb483spec/services/projects/update_service_spec.rb484spec/services/auto_merge/base_service_spec.rb485spec/lib/gitlab/background_migration/populate_missing_vulnerability_dismissal_information_spec.rb486spec/finders/releases_finder_spec.rb487spec/lib/gitlab/background_migration/set_default_iteration_cadences_spec.rb488spec/lib/gitlab/ci/config_spec.rb489spec/lib/gitlab/background_migration/populate_dismissed_state_for_vulnerabilities_spec.rb490spec/lib/gitlab/bitbucket_server_import/importer_spec.rb491spec/services/alert_management/create_alert_issue_service_spec.rb492spec/lib/gitlab/import_export/members_mapper_spec.rb493spec/lib/gitlab/url_blocker_spec.rb494spec/lib/gitlab/utils/markdown_spec.rb495spec/services/search_service_spec.rb496spec/models/operations/feature_flags/user_list_spec.rb497spec/models/notification_recipient_spec.rb498spec/presenters/clusters/cluster_presenter_spec.rb499spec/routing/group_routing_spec.rb500spec/finders/ci/runner_jobs_finder_spec.rb501spec/lib/banzai/filter/references/project_reference_filter_spec.rb502spec/finders/ci/runners_finder_spec.rb503spec/lib/gitlab/email/handler/create_note_on_issuable_handler_spec.rb504spec/lib/container_registry/client_spec.rb505spec/lib/gitlab/ci/templates/npm_spec.rb506spec/services/lfs/file_transformer_spec.rb507spec/serializers/pipeline_details_entity_spec.rb508spec/helpers/icons_helper_spec.rb509spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb510spec/lib/gitlab/ci/config/entry/release_spec.rb511spec/lib/gitlab/gpg_spec.rb512spec/lib/gitlab/legacy_github_import/importer_spec.rb513spec/helpers/user_callouts_helper_spec.rb514spec/lib/gitlab/search/found_blob_spec.rb515spec/services/ci/create_web_ide_terminal_service_spec.rb516spec/uploaders/ci/pipeline_artifact_uploader_spec.rb517spec/lib/gitlab/ci/ansi2json_spec.rb518spec/lib/gitlab/ci/trace/chunked_io_spec.rb519spec/helpers/nav/top_nav_helper_spec.rb520spec/lib/banzai/filter/inline_metrics_redactor_filter_spec.rb521spec/graphql/mutations/merge_requests/set_assignees_spec.rb522spec/lib/gitlab/metrics/web_transaction_spec.rb523spec/lib/banzai/filter/audio_link_filter_spec.rb524spec/services/projects/after_import_service_spec.rb525spec/services/projects/protect_default_branch_service_spec.rb526spec/models/packages/debian/group_component_file_spec.rb527spec/lib/gitlab/ci/pipeline/expression/lexeme/and_spec.rb528spec/rack_servers/puma_spec.rb529spec/finders/merge_requests/oldest_per_commit_finder_spec.rb530spec/workers/remove_expired_group_links_worker_spec.rb531spec/services/quick_actions/target_service_spec.rb532spec/lib/gitlab/instrumentation/redis_cluster_validator_spec.rb533spec/lib/gitlab/consul/internal_spec.rb534spec/lib/gitlab/graphql/deprecation_spec.rb535spec/models/ci/job_token/project_scope_link_spec.rb536spec/lib/gitlab/ci/parsers/test/junit_spec.rb537spec/lib/gitlab/ci/artifact_file_reader_spec.rb538spec/finders/design_management/versions_finder_spec.rb539spec/lib/gitlab/sanitizers/exif_spec.rb540spec/lib/gitlab/sidekiq_migrate_jobs_spec.rb541spec/lib/gitlab/ci/config/entry/product/matrix_spec.rb542spec/lib/gitlab/ci/status/build/scheduled_spec.rb543spec/bin/sidekiq_cluster_spec.rb544spec/lib/gitlab/serverless/service_spec.rb545spec/services/metrics/dashboard/transient_embed_service_spec.rb546spec/helpers/projects/project_members_helper_spec.rb547spec/services/labels/create_service_spec.rb548spec/services/metrics/dashboard/annotations/delete_service_spec.rb549spec/lib/banzai/reference_redactor_spec.rb550spec/tooling/lib/tooling/kubernetes_client_spec.rb551spec/services/pages/zip_directory_service_spec.rb552spec/lib/gitlab/checks/changes_access_spec.rb553spec/graphql/resolvers/board_resolver_spec.rb554spec/lib/banzai/filter/upload_link_filter_spec.rb555spec/lib/gitlab/suggestions/file_suggestion_spec.rb556spec/lib/gitlab/local_and_remote_storage_migration/pages_deployment_migrater_spec.rb557spec/lib/gitlab/ci/jwt_spec.rb558spec/lib/gitlab/ci/templates/Jobs/test_gitlab_ci_yaml_spec.rb559spec/lib/gitlab/etag_caching/middleware_spec.rb560spec/models/project_deploy_token_spec.rb561spec/models/blob_viewer/metrics_dashboard_yml_spec.rb562spec/services/security/merge_reports_service_spec.rb563spec/lib/gitlab/prometheus/additional_metrics_parser_spec.rb564spec/models/packages/tag_spec.rb565spec/finders/user_finder_spec.rb566spec/services/alert_management/alerts/todo/create_service_spec.rb567spec/services/packages/debian/generate_distribution_key_service_spec.rb568spec/policies/deploy_keys_project_policy_spec.rb569spec/lib/gitlab/api_authentication/builder_spec.rb570spec/models/tree_spec.rb571spec/lib/gitlab/email/message/in_product_marketing/base_spec.rb572spec/helpers/time_zone_helper_spec.rb573spec/lib/gitlab/legacy_github_import/client_spec.rb574spec/workers/merge_requests/create_pipeline_worker_spec.rb575spec/models/integrations/chat_message/alert_message_spec.rb576spec/uploaders/favicon_uploader_spec.rb577spec/lib/gitlab/kas_spec.rb578spec/services/packages/nuget/sync_metadatum_service_spec.rb579spec/workers/gitlab/jira_import/stage/import_issues_worker_spec.rb580spec/serializers/jira_connect/app_data_serializer_spec.rb581spec/workers/incident_management/pager_duty/process_incident_worker_spec.rb582spec/models/ci/pipeline_variable_spec.rb583spec/lib/banzai/reference_parser/mentioned_user_parser_spec.rb584spec/lib/mattermost/team_spec.rb585spec/lib/gitlab/sidekiq_status_spec.rb586spec/lib/api/helpers/related_resources_helpers_spec.rb587spec/lib/gitlab/metrics/subscribers/external_http_spec.rb588spec/lib/gitlab/database/similarity_score_spec.rb589spec/graphql/mutations/security/ci_configuration/configure_sast_spec.rb590spec/graphql/mutations/terraform/state/lock_spec.rb591spec/lib/gitlab/slash_commands/issue_show_spec.rb592spec/lib/gitlab/ci/badge/coverage/report_spec.rb593spec/rubocop/cop/code_reuse/serializer_spec.rb594spec/serializers/trigger_variable_entity_spec.rb595spec/graphql/types/issue_sort_enum_spec.rb596spec/policies/release_policy_spec.rb597spec/services/discussions/capture_diff_note_position_service_spec.rb598spec/views/projects/commit/show.html.haml_spec.rb599spec/models/blob_viewer/package_json_spec.rb600spec/lib/gitlab/health_checks/redis/rate_limiting_check_spec.rb601spec/services/import/bitbucket_server_service_spec.rb602spec/models/container_registry/event_spec.rb603spec/lib/gitlab/usage_data_counters/snippet_counter_spec.rb604spec/services/projects/prometheus/metrics/update_service_spec.rb605spec/graphql/types/untrusted_regexp_spec.rb606spec/views/shared/notes/_form.html.haml_spec.rb607spec/validators/cron_validator_spec.rb608spec/lib/gitlab/ci/status/pipeline/common_spec.rb609spec/lib/bulk_imports/ndjson_pipeline_spec.rb610spec/lib/gitlab/github_import/importer/lfs_objects_importer_spec.rb611spec/lib/gitlab/ci/config/external/rules_spec.rb612spec/routing/openid_connect_spec.rb613spec/lib/banzai/filter/table_of_contents_tag_filter_spec.rb614spec/rubocop/cop/migration/complex_indexes_require_name_spec.rb615spec/rubocop/cop/gitlab/delegate_predicate_methods_spec.rb616spec/workers/object_pool/join_worker_spec.rb617spec/presenters/web_hook_log_presenter_spec.rb618spec/lib/gitlab/untrusted_regexp_spec.rb619spec/rubocop/cop/scalability/cron_worker_context_spec.rb620spec/views/admin/application_settings/general.html.haml_spec.rb621spec/policies/terraform/state_version_policy_spec.rb622spec/serializers/ci/daily_build_group_report_result_entity_spec.rb623spec/graphql/types/release_type_spec.rb624spec/rubocop/cop/scalability/file_uploads_spec.rb625spec/models/bulk_imports/file_transfer/group_config_spec.rb626spec/lib/gitlab/usage_data_counters/merge_request_counter_spec.rb627spec/models/concerns/cron_schedulable_spec.rb628spec/services/merge_requests/resolve_todos_service_spec.rb629spec/views/shared/milestones/_issuable.html.haml_spec.rb630spec/graphql/resolvers/design_management/design_at_version_resolver_spec.rb631spec/workers/bulk_imports/pipeline_worker_spec.rb632spec/lib/gitlab/cleanup/remote_uploads_spec.rb633spec/lib/banzai/filter/kroki_filter_spec.rb634spec/lib/gitlab/database/partitioning_migration_helpers/index_helpers_spec.rb635spec/presenters/event_presenter_spec.rb636spec/lib/gitlab/suggestions/commit_message_spec.rb637spec/lib/gitlab/query_limiting/middleware_spec.rb638spec/services/events/render_service_spec.rb639spec/helpers/webpack_helper_spec.rb640spec/services/wiki_pages/event_create_service_spec.rb641spec/lib/bulk_imports/groups/pipelines/milestones_pipeline_spec.rb642spec/lib/gitlab/graphql/loaders/batch_model_loader_spec.rb643spec/lib/gitlab/bullet/exclusions_spec.rb644spec/graphql/types/award_emojis/award_emoji_type_spec.rb645spec/lib/gitlab/sidekiq_middleware_spec.rb646spec/lib/gitlab/external_authorization_spec.rb647spec/finders/packages/pypi/package_finder_spec.rb648spec/models/merge_request_context_commit_spec.rb649spec/graphql/resolvers/users_resolver_spec.rb650spec/config/settings_spec.rb651spec/lib/gitlab/ci/config/entry/coverage_spec.rb652spec/models/blob_viewer/composer_json_spec.rb653spec/graphql/types/jira_user_type_spec.rb654spec/graphql/types/ci_configuration/sast/entity_type_spec.rb655spec/lib/gitlab/ci/status/build/skipped_spec.rb656spec/lib/gitlab/metrics/samplers/threads_sampler_spec.rb657spec/views/projects/services/_form.haml_spec.rb658spec/services/packages/nuget/create_dependency_service_spec.rb659spec/workers/bulk_imports/export_request_worker_spec.rb660spec/workers/ci/build_schedule_worker_spec.rb661spec/tooling/danger/sidekiq_queues_spec.rb662spec/graphql/types/tree/blob_type_spec.rb663spec/lib/gitlab/utils/delegator_override_spec.rb664spec/services/ci/create_pipeline_service/tags_spec.rb665spec/lib/gitlab/error_tracking/processor/grpc_error_processor_spec.rb666spec/presenters/sentry_error_presenter_spec.rb667spec/services/releases/create_evidence_service_spec.rb668spec/rubocop/cop/migration/add_reference_spec.rb669spec/lib/gitlab/ci/trace/metrics_spec.rb670spec/workers/gitlab_service_ping_worker_spec.rb671spec/models/alerting/project_alerting_setting_spec.rb672spec/lib/gitlab/import_export/after_export_strategy_builder_spec.rb673spec/rubocop/cop/migration/hash_index_spec.rb674spec/tasks/gitlab/packages/migrate_rake_spec.rb675spec/routing/projects/security/configuration_controller_routing_spec.rb676spec/helpers/graph_helper_spec.rb677spec/lib/gitlab/usage_data_counters/track_unique_events_spec.rb678spec/views/registrations/welcome/show.html.haml_spec.rb679spec/graphql/types/container_repository_details_type_spec.rb680spec/graphql/features/feature_flag_spec.rb681spec/workers/upload_checksum_worker_spec.rb682spec/lib/banzai/filter/front_matter_filter_spec.rb683spec/workers/build_hooks_worker_spec.rb684spec/serializers/feature_flag_entity_spec.rb685spec/models/integrations/jira_tracker_data_spec.rb686spec/rubocop/cop/usage_data/distinct_count_by_large_foreign_key_spec.rb687spec/finders/feature_flags_user_lists_finder_spec.rb688spec/workers/ci/create_cross_project_pipeline_worker_spec.rb689spec/lib/gitlab/config/entry/composable_array_spec.rb690spec/lib/gitlab/import_export/project/sample/date_calculator_spec.rb691spec/services/ci/create_pipeline_service/pre_post_stages_spec.rb692spec/tasks/admin_mode_spec.rb693spec/lib/generators/gitlab/usage_metric_generator_spec.rb694spec/models/concerns/token_authenticatable_strategies/base_spec.rb695spec/lib/gitlab/ci/status/manual_spec.rb696spec/models/bulk_imports/failure_spec.rb697spec/rubocop/cop/migration/add_index_spec.rbKnapsack report generator started!698Run options: exclude {:quarantine=>true, :geo=>true, :level=>"migration"}699==> /builds/gitlab-org/gitlab/tmp/tests/gitlab-test_bare set up in 0.102364904 seconds...700Test environment set up in 2.592283961 seconds701User702 behaves like having unique enum values703 has unique values in "user_type"704 has unique values in "layout"705 has unique values in "dashboard"706 has unique values in "project_view"707 has unique values in "role"708 has unique values in "roadmap_layout"709 has unique values in "group_view"710 modules711 is expected to includes the Gitlab::ConfigHelper module712 is expected to includes the Referable module713 is expected to includes the Sortable module714 is expected to includes the TokenAuthenticatable module715 is expected to includes the BlocksJsonSerialization module716 is expected to includes the AsyncDeviseEmail module717 constants718 is expected to be a kind of Integer719 is expected to be a kind of Integer720 is expected to be a kind of Integer721 delegations722 is expected to delegate #namespace_path to the #namespace object as #path723 is expected to delegate #notes_filter_for to the #user_preference object724 is expected to delegate #set_notes_filter to the #user_preference object725 is expected to delegate #first_day_of_week to the #user_preference object726 is expected to delegate #first_day_of_week= to the #user_preference object passing arguments [:args]727 is expected to delegate #timezone to the #user_preference object728 is expected to delegate #timezone= to the #user_preference object passing arguments [:args]729 is expected to delegate #time_display_relative to the #user_preference object730 is expected to delegate #time_display_relative= to the #user_preference object passing arguments [:args]731 is expected to delegate #time_format_in_24h to the #user_preference object732 is expected to delegate #time_format_in_24h= to the #user_preference object passing arguments [:args]733 is expected to delegate #show_whitespace_in_diffs to the #user_preference object734 is expected to delegate #show_whitespace_in_diffs= to the #user_preference object passing arguments [:args]735 is expected to delegate #view_diffs_file_by_file to the #user_preference object736 is expected to delegate #view_diffs_file_by_file= to the #user_preference object passing arguments [:args]737 is expected to delegate #tab_width to the #user_preference object738 is expected to delegate #tab_width= to the #user_preference object passing arguments [:args]739 is expected to delegate #sourcegraph_enabled to the #user_preference object740 is expected to delegate #sourcegraph_enabled= to the #user_preference object passing arguments [:args]741 is expected to delegate #gitpod_enabled to the #user_preference object742 is expected to delegate #gitpod_enabled= to the #user_preference object passing arguments [:args]743 is expected to delegate #setup_for_company to the #user_preference object744 is expected to delegate #setup_for_company= to the #user_preference object passing arguments [:args]745 is expected to delegate #render_whitespace_in_code to the #user_preference object746 is expected to delegate #render_whitespace_in_code= to the #user_preference object passing arguments [:args]747 is expected to delegate #markdown_surround_selection to the #user_preference object748 is expected to delegate #markdown_surround_selection= to the #user_preference object passing arguments [:args]749 is expected to delegate #job_title to the #user_detail object, allowing #user_detail to return nil750 is expected to delegate #job_title= to the #user_detail object passing arguments [:args], allowing #user_detail to return nil751 is expected to delegate #pronouns to the #user_detail object, allowing #user_detail to return nil752 is expected to delegate #pronouns= to the #user_detail object passing arguments [:args], allowing #user_detail to return nil753 is expected to delegate #pronunciation to the #user_detail object, allowing #user_detail to return nil754 is expected to delegate #pronunciation= to the #user_detail object passing arguments [:args], allowing #user_detail to return nil755 is expected to delegate #bio to the #user_detail object, allowing #user_detail to return nil756 is expected to delegate #bio= to the #user_detail object passing arguments [:args], allowing #user_detail to return nil757 is expected to delegate #registration_objective to the #user_detail object, allowing #user_detail to return nil758 is expected to delegate #registration_objective= to the #user_detail object passing arguments [:args], allowing #user_detail to return nil759 associations760 is expected to have one namespace761 is expected to have one status762 is expected to have one user_detail763 is expected to have one atlassian_identity764 is expected to have one user_highest_role765 is expected to have one credit_card_validation766 is expected to have one banned_user767 is expected to have many snippets dependent => destroy768 is expected to have many members769 is expected to have many project_members770 is expected to have many group_members771 is expected to have many groups772 is expected to have many keys dependent => destroy773 is expected to have many expired_and_unnotified_keys774 is expected to have many deploy_keys dependent => nullify775 is expected to have many group_deploy_keys776 is expected to have many events dependent => delete_all777 is expected to have many issues dependent => destroy778 is expected to have many notes dependent => destroy779 is expected to have many merge_requests dependent => destroy780 is expected to have many identities dependent => destroy781 is expected to have many spam_logs dependent => destroy782 is expected to have many todos783 is expected to have many award_emoji dependent => destroy784 is expected to have many builds dependent => nullify785 is expected to have many pipelines dependent => nullify786 is expected to have many chat_names dependent => destroy787 is expected to have many uploads788 is expected to have many reported_abuse_reports class_name => AbuseReport dependent => destroy789 is expected to have many custom_attributes class_name => UserCustomAttribute790 is expected to have many releases dependent => nullify791 is expected to have many metrics_users_starred_dashboards inverse_of => user792 is expected to have many reviews inverse_of => author793 is expected to have many merge_request_assignees inverse_of => assignee794 is expected to have many merge_request_reviewers inverse_of => reviewer795 is expected to have many created_custom_emoji inverse_of => creator796 is expected to have many in_product_marketing_emails797 is expected to have many timelogs798 is expected to have many callouts class_name => UserCallout799 is expected to have many group_callouts class_name => Users::GroupCallout800 #user_detail801 does not persist `user_detail` by default802 creates `user_detail` when `bio` is given803 delegates `bio` to `user_detail`804 delegates `pronouns` to `user_detail`805 delegates `pronunciation` to `user_detail`806 creates `user_detail` when `bio` is first updated807 #abuse_report808 is expected to have one abuse_report809 refers to the abuse report whose user_id is the current user810 does not refer to the abuse report whose reporter_id is the current user811 does not update the user_id of an abuse report when the user is updated812 #group_members813 does not include group memberships for which user is a requester814 #project_members815 does not include project memberships for which user is a requester816 Devise emails817 behaviour818 sends emails asynchronously819 emails sent on changing password820 when password is updated821 default behaviour822 enqueues the `password changed` email823 does not enqueue the `admin changed your password` email824 `admin changed your password` email825 is enqueued only when explicitly allowed826 `password changed` email is not enqueued if it is explicitly allowed827 is not enqueued if sending notifications on password updates is turned off as per Devise config828 when password is not updated829 does not enqueue the `admin changed your password` email even if explicitly allowed830 validations831 has a DB-level NOT NULL constraint on projects_limit832 is expected to validate that :projects_limit cannot be empty/falsy833 is expected to validate that :projects_limit looks like a number834 is expected to allow :projects_limit to be ‹0›835 is expected not to allow :projects_limit to be ‹-1›836 is expected not to allow :projects_limit to be ‹2147483648›837 password838 length839 is expected to validate that the length of :password is between 10 and 130840 length validator841 for a short password842 does not run the default Devise password length validation843 runs the custom password length validator844 for a long password845 does not run the default Devise password length validation846 runs the custom password length validator847 name848 is expected to validate that :name cannot be empty/falsy849 is expected to validate that the length of :name is at most 255850 first name851 is expected to validate that the length of :first_name is at most 127852 last name853 is expected to validate that the length of :last_name is at most 127854 preferred_language855 when its value is nil in the database856 falls back to I18n.default_locale when empty in the database857 falls back to english when I18n.default_locale is not an available language858 username859 validates presence860 rejects denied names861 allows child names862 allows wildcard names863 validates format864 validates format on updated record865 when username is changed866 validates move_dir is allowed for the namespace867 when the username is in use by another user868 is invalid869 behaves like an object with email-formatted attributes870 specifically its :email attribute871 with a value of 'info@example.com'872 is valid873 with a value of 'info+test@example.com'874 is valid875 with a value of 'o'reilly@example.com'876 is valid877 with a value of 'mailto:test@example.com'878 is valid879 with a value of 'lol!'+=?><#$%^&*()@gmail.com'880 is valid881 with a value of 'foobar'882 is invalid883 with a value of 'test@test@example.com'884 is invalid885 behaves like an object with RFC3696 compliant email-formatted attributes886 specifically its :public_email attribute887 with a value of 'info@example.com'888 is valid889 with a value of 'info+test@example.com'890 is valid891 with a value of 'o'reilly@example.com'892 is valid893 with a value of 'foobar'894 is invalid895 with a value of 'test@test@example.com'896 is invalid897 with a value of 'test.test.@example.com'898 is invalid899 with a value of '.test.test@example.com'900 is invalid901 with a value of 'mailto:test@example.com'902 is invalid903 with a value of 'lol!'+=?><#$%^&*()@gmail.com'904 is invalid905 specifically its :notification_email attribute906 with a value of 'info@example.com'907 is valid908 with a value of 'info+test@example.com'909 is valid910 with a value of 'o'reilly@example.com'911 is valid912 with a value of 'foobar'913 is invalid914 with a value of 'test@test@example.com'915 is invalid916 with a value of 'test.test.@example.com'917 is invalid918 with a value of '.test.test@example.com'919 is invalid920 with a value of 'mailto:test@example.com'921 is invalid922 with a value of 'lol!'+=?><#$%^&*()@gmail.com'923 is invalid924 #commit_email_or_default925 defaults to the primary email926 defaults to the primary email when the column in the database is null927 returns the private commit email when commit_email has _private928 #commit_email=929 can be set to a confirmed email930 can not be set to an unconfirmed email931 can not be set to a non-existent email932 can not be set to an invalid email, even if confirmed933 email934 when no signup domains allowed935 accepts any email936 bad regex937 does not hang on evil input938 when a signup domain is allowed and subdomains are allowed939 accepts info@example.com940 accepts info@test.example.com941 rejects example@test.com942 when a signup domain is allowed and subdomains are not allowed943 accepts info@example.com944 rejects info@test.example.com945 rejects example@test.com946 accepts example@test.com when added by another user947 domain denylist948 bad regex949 does not hang on evil input950 when a signup domain is denied951 accepts info@test.com952 rejects info@example.com953 accepts info@example.com when added by another user954 when a signup domain is denied but a wildcard subdomain is allowed955 gives priority to allowlist and allow info@test.example.com956 with both lists containing a domain957 accepts info@test.com958 rejects info@example.com959 email restrictions960 when email restriction is disabled961 does accept email address962 when email restrictions is enabled963 does not accept email address with + characters964 does not accept email with a gitlab domain965 adds an error message when email is not accepted966 does accept a valid email address967 when created_by_id is set968 does accept the email address969 when secondary email is same as primary970 lets user change primary email without failing validations971 when commit_email is changed to _private972 passes user validations973 scopes974 blocked users975 .blocked976 returns only blocked users977 .blocked_pending_approval978 returns only pending approval users979 .banned980 returns only banned users981 .with_two_factor982 returns users with 2fa enabled via OTP983 and U2F984 behaves like returns the right users985 returns users with 2fa enabled via hardware token986 returns users with 2fa enabled via OTP and hardware token987 works with ORDER BY988 and WebAuthn989 behaves like returns the right users990 returns users with 2fa enabled via hardware token991 returns users with 2fa enabled via OTP and hardware token992 works with ORDER BY993 .without_two_factor994 excludes users with 2fa enabled via OTP995 and u2f996 excludes users with 2fa enabled via U2F997 excludes users with 2fa enabled via OTP and U2F998 and webauthn999 excludes users with 2fa enabled via WebAuthn1000 excludes users with 2fa enabled via OTP and WebAuthn1001 .random_password1002 length1003 conforms to the current password length settings1004 .password_length1005 is expected to be a Range1006 minimum value1007 is determined by the current value of `minimum_password_length` attribute of application_setting1008 maximum value1009 is determined by the current value of `Devise.password_length.max`1010 .limit_to_todo_authors1011 when filtering by todo authors1012 only returns users that have authored todos1013 ignores users that do not have a todo in the matching state1014 when not filtering by todo authors1015 returns the input relation1016 when no user is provided1017 returns the input relation1018 .by_username1019 finds users regardless of the case passed1020 finds a single user regardless of the case passed1021 .with_expiring_and_not_notified_personal_access_tokens1022 in one day1023 doesn't include an user1024 in three days1025 only includes user21026 .with_personal_access_tokens_expired_today1027 returns users whose token has expired today1028 SSH key expiration scopes1029 .with_ssh_key_expiring_soon1030 returns users whose keys will expire soon1031 .active_without_ghosts1032 returns all active users but ghost users1033 .without_ghosts1034 returns users without ghosts users1035 .by_id_and_login1036 finds a user regardless of case1037 finds a user when login is an email address regardless of case1038 .for_todos1039 returns users for the given todos1040 Respond to1041 is expected to respond to #admin?1042 is expected to respond to #name1043 is expected to respond to #external?1044 before save hook1045 #default_private_profile_to_false1046 converts nil to false1047 when saving an external user1048 sets other properties as well1049 #check_for_verified_email1050 allows a verified secondary email to be used as the primary without needing reconfirmation1051 after commit hook1052 #update_emails_with_primary_email1053 gets called when email updated1054 adds old primary to secondary emails when secondary is a new email1055 adds old primary to secondary emails if secondary is becoming a primary1056 transfers old confirmation values into new secondary1057 when the first email was unconfirmed and the second email gets confirmed1058 updates user.email1059 confirms user.email1060 keeps the unconfirmed email unconfirmed1061 has only one email association1062 when an existing email record is set as primary1063 when it is unconfirmed1064 keeps the user confirmed1065 keeps the original email1066 when the email gets confirmed1067 keeps the user confirmed1068 updates the email1069 when it is confirmed1070 keeps the user confirmed1071 updates the email1072 moves the old email1073 when unconfirmed user deletes a confirmed additional email1074 does not affect the confirmed status1075 when changing email1076 if notification_email was nil1077 sets :unconfirmed_email1078 does not change notification_email or notification_email_or_default before email is confirmed1079 updates notification_email_or_default to the new email once confirmed1080 when notification_email is set to a secondary email1081 does not change notification_email to email before email is confirmed1082 does not change notification_email to email once confirmed1083 #update_invalid_gpg_signatures1084 does nothing when the name is updated1085 synchronizes the gpg keys when the email is updated1086 name getters1087 derives first name from full name, if not present1088 derives last name from full name, if not present1089 #highest_role1090 when user_highest_role does not exist1091 returns NO_ACCESS1092 when user_highest_role exists1093 stored highest access level is nil1094 returns Gitlab::Access::NO_ACCESS1095 stored highest access level present1096 with association :user_highest_role1097 returns the correct highest role1098 #credit_card_validated_at1099 when credit_card_validation does not exist1100 returns nil1101 when credit_card_validation exists1102 returns the credit card validated time1103 #update_tracked_fields!1104 writes trackable attributes1105 does not write trackable attributes when called a second time within the hour1106 writes trackable attributes for a different user1107 does not write if the DB is in read-only mode1108 #keys1109 with key and deploy key stored1110 returns stored key, but not deploy_key1111 #accessible_deploy_keys1112 user can only see deploy keys accessible to right projects1113 #deploy_keys1114 with key and deploy key stored1115 returns stored deploy key, but not normal key1116 #confirm1117 returns unconfirmed1118 confirms a user1119 #to_reference1120 returns a String reference to the object1121 #generate_password1122 does not generate password by default1123 ensure user preference1124 has user preference upon user initialization1125 ensure incoming email token1126 has incoming email token1127 uses SecureRandom to generate the incoming email token1128 #ensure_user_rights_and_limits1129 with external user1130 receives callback when external changes1131 ensures correct rights and limits for user1132 without external user1133 receives callback when external changes1134 ensures correct rights and limits for user1135 feed token1136 ensures a feed token on read1137 ensures no feed token when disabled1138 static object token1139 ensures a static object token on read1140 #recently_sent_password_reset?1141 is false when reset_password_sent_at is nil1142 is false when sent more than one minute ago1143 is true when sent less than one minute ago1144 #disable_two_factor!1145 clears all 2FA-related fields1146 #two_factor_otp_enabled?1147 when 2FA is enabled by an MFA Device1148 is expected to eq true1149 FortiAuthenticator1150 when enabled via GitLab settings1151 when feature is disabled for the user1152 is expected to eq false1153 when feature is enabled for the user1154 is expected to eq true1155 when disabled via GitLab settings1156 is expected to eq false1157 FortiTokenCloud1158 when enabled via GitLab settings1159 when feature is disabled for the user1160 is expected to eq false1161 when feature is enabled for the user1162 is expected to eq true1163 when disabled via GitLab settings1164 is expected to eq false1165 projects1166 is expected to include #<Project id:17 user230/project17>>1167 is expected to include #<Project id:21 group4/project21>>1168 is expected to include #<Project id:25 group7/project25>>1169 is expected to include #<Project id:26 user239/project26>>1170 is expected not to include #<Project id:30 group10/project30>>1171 is expected not to include #<Project id:34 group13/project34>>1172 is expected to include #<Project id:35 user248/project35>>1173 is expected not to include #<Project id:39 group16/project39>>1174 is expected not to include #<Project id:43 group19/project43>>1175 groups1176 is expected to be truthy1177 is expected to eq [#<Group id:259 @group21>]1178 is expected to eq [#<Group id:261 @group22>]1179 is expected to contain exactly #<Namespaces::UserNamespace id: 264, name: "John Doe420", path: "user260", owner_id: 241, created_at:...runners_enabled: true, allow_descendants_override_disabled_shared_runners: false, traversal_ids: []> and #<Group id:263 @group23>1180 is expected to contain exactly #<Namespaces::UserNamespace id: 266, name: "John Doe421", path: "user261", owner_id: 242, created_at:...runners_enabled: true, allow_descendants_override_disabled_shared_runners: false, traversal_ids: []> and #<Group id:265 @group24>1181 with owned groups only1182 is expected to contain exactly #<Namespaces::UserNamespace id: 268, name: "John Doe422", path: "user262", owner_id: 243, created_at:...runners_enabled: true, allow_descendants_override_disabled_shared_runners: false, traversal_ids: []> and #<Group id:267 @group25>1183 with child groups1184 #manageable_namespaces1185 includes all the namespaces the user can manage1186 #manageable_groups1187 behaves like manageable groups examples1188 includes all the namespaces the user can manage1189 does not include duplicates if a membership was added for the subgroup1190 when feature flag :linear_user_manageable_groups is disabled1191 behaves like manageable groups examples1192 includes all the namespaces the user can manage1193 does not include duplicates if a membership was added for the subgroup1194 #manageable_groups_with_routes1195 eager loads routes from manageable groups1196 group multiple owners1197 is expected to be truthy1198 namespaced1199 is expected to be falsey1200 is expected to eq [#<Namespaces::UserNamespace id: 293, name: "John Doe432", path: "user272", owner_id: 253, created_at...unners_enabled: true, allow_descendants_override_disabled_shared_runners: false, traversal_ids: []>]1201 blocking user1202 blocks user1203 when user has running CI pipelines1204 aborts all running pipelines and related jobs1205 when user has active CI pipeline schedules1206 disables any pipeline schedules1207 deactivating a user1208 an active user1209 can be deactivated1210 when user deactivation emails are disabled1211 does not send deactivated user an email1212 when user deactivation emails are enabled1213 sends deactivated user an email1214 a user who is blocked1215 cannot be deactivated1216 blocking a user pending approval1217 an active user1218 can be blocked pending approval1219 behaves like a blocked user1220 .instance_access_request_approvers_to_be_notified1221 returns up to the ten most recently active instance admins1222 banning and unbanning a user1223 banning a user1224 bans and blocks the user1225 creates a BannedUser record1226 unbanning a user1227 unbans the user1228 deletes the BannedUser record1229 .filter_items1230 filters by active users by default1231 filters by admins1232 filters by blocked1233 filters by banned1234 filters by blocked pending approval1235 filters by deactivated1236 filters by two_factor_disabled1237 filters by two_factor_enabled1238 filters by wop1239 .without_projects1240 is expected not to include #<User id:279 @user296>1241 is expected to include #<User id:286 @user301>1242 is expected to include #<User id:293 @user306>1243 user creation1244 normal user1245 is expected to be falsey1246 is expected to be truthy1247 is expected to be truthy1248 is expected to be truthy1249 is expected to eq "John"1250 is expected to be falsey1251 with defaults1252 applies defaults to user1253 with default overrides1254 applies defaults to user1255 does not undo projects_limit setting if it matches old DB default of 101256 when Gitlab::CurrentSettings.user_default_external is true1257 creates external user by default1258 with default overrides1259 creates a non-external user1260 #require_ssh_key?1261 has correct require_ssh_key?1262 has correct require_ssh_key?1263 has correct require_ssh_key?1264 returns false when the user has 1 or more SSH keys1265 .find_for_database_authentication1266 strips whitespace from login1267 .find_by_any_email1268 finds user through private commit email1269 finds by primary email1270 finds by uppercased email1271 returns nil when nothing found1272 returns nil when user is not confirmed1273 finds by secondary email1274 primary email confirmed1275 secondary email confirmed1276 finds user respecting the confirmed flag1277 secondary email not confirmed1278 finds user respecting the confirmed flag1279 primary email not confirmed1280 finds user respecting the confirmed flag1281 .by_any_email1282 returns an ActiveRecord::Relation1283 returns a relation of users1284 returns a relation of users for confirmed users1285 finds user through a private commit email1286 finds user through a private commit email in an array1287 .search1288 returns no matches for an empty string1289 returns no matches for nil1290 name matching1291 returns users with a matching name with exact match first1292 returns users with a partially matching name1293 returns users with a matching name regardless of the casing1294 returns users with a exact matching name shorter than 3 chars1295 returns users with a exact matching name shorter than 3 chars regardless of the casing1296 email matching1297 returns users with a matching Email1298 does not return users with a partially matching Email1299 returns users with a matching Email regardless of the casing1300 secondary email matching1301 returns users with a matching secondary email1302 does not return users with a matching part of secondary email1303 returns users with a matching secondary email regardless of the casing1304 username matching1305 returns users with a matching username1306 returns users with a matching username starting with a @1307 returns users with a partially matching username1308 returns users with a partially matching username starting with @1309 returns users with a matching username regardless of the casing1310 returns users with a exact matching username shorter than 3 chars1311 returns users with a exact matching username shorter than 3 chars regardless of the casing1312 .search_without_secondary_emails1313 returns users with a matching name1314 returns users with a partially matching name1315 returns users with a matching name regardless of the casing1316 returns users with a matching email1317 does not return users with a partially matching email1318 returns users with a matching email regardless of the casing1319 returns users with a matching username1320 returns users with a partially matching username1321 returns users with a matching username regardless of the casing1322 does not return users with a matching whole secondary email1323 does not return users with a matching part of secondary email1324 returns no matches for an empty string1325 returns no matches for nil1326 .search_with_secondary_emails1327 returns users with a matching name1328 returns users with a partially matching name1329 returns users with a matching name regardless of the casing1330 returns users with a matching email1331 does not return users with a partially matching email1332 returns users with a matching email regardless of the casing1333 returns users with a matching username1334 returns users with a partially matching username1335 returns users with a matching username regardless of the casing1336 returns users with a matching whole secondary email1337 does not return users with a matching part of secondary email1338 returns no matches for an empty string1339 returns no matches for nil1340 .find_by_ssh_key_id1341 only performs a single query1342 using an existing SSH key ID1343 returns the corresponding User1344 using an invalid SSH key ID1345 returns nil1346 .by_login1347 gets the correct user1348 .find_by_username1349 returns nil if not found1350 is case-insensitive1351 .find_by_username!1352 raises RecordNotFound1353 is case-insensitive1354 .find_by_full_path1355 namespace_type: :namespace1356 with a route matching the given path1357 returns the user1358 is case-insensitive1359 with a redirect route matching the given path1360 without the follow_redirects option1361 returns nil1362 with the follow_redirects option set to true1363 returns the user1364 is case-insensitive1365 without a route or a redirect route matching the given path1366 without the follow_redirects option1367 returns nil1368 with the follow_redirects option set to true1369 returns nil1370 with a group route matching the given path1371 when the group namespace has an owner_id (legacy data)1372 returns nil1373 when the group namespace does not have an owner_id1374 returns nil1375 namespace_type: :user_namespace1376 with a route matching the given path1377 returns the user1378 is case-insensitive1379 with a redirect route matching the given path1380 without the follow_redirects option1381 returns nil1382 with the follow_redirects option set to true1383 returns the user1384 is case-insensitive1385 without a route or a redirect route matching the given path1386 without the follow_redirects option1387 returns nil1388 with the follow_redirects option set to true1389 returns nil1390 with a group route matching the given path1391 when the group namespace has an owner_id (legacy data)1392 returns nil1393 when the group namespace does not have an owner_id1394 returns nil1395 all_ssh_keys1396 is expected to have many keys dependent => destroy1397 has all ssh keys1398 #avatar_type1399 is true if avatar is image1400 is false if avatar is html page1401 #avatar_url1402 when avatar file is uploaded1403 shows correct avatar url1404 #clear_avatar_caches1405 clears the avatar cache when saving1406 #accept_pending_invitations!1407 accepts all the user members pending invitations and returns the accepted_members1408 #all_emails1409 when `include_private_email` is true1410 returns all emails1411 when `include_private_email` is false1412 does not include the private commit email1413 #verified_emails1414 returns only confirmed emails1415 #public_verified_emails1416 returns only confirmed public emails1417 returns confirmed public emails plus main user email when user is not confirmed1418 #verified_email?1419 returns true when the email is verified/confirmed1420 returns true when user is found through private commit email1421 returns true for an outdated private commit email1422 returns false when the email is not verified/confirmed1423 crowd synchronized user1424 #crowd_user?1425 is true if provider is crowd1426 is false for other providers1427 is false if no extern_uid is provided1428 #requires_ldap_check?1429 is false when LDAP is disabled1430 when LDAP is enabled1431 is false for non-LDAP users1432 and when the user is an LDAP user1433 is true when the user has never had an LDAP check before1434 is true when the last LDAP check happened over 1 hour ago1435 ldap synchronized user1436 #ldap_user?1437 is true if provider name starts with ldap1438 is false for other providers1439 is false if no extern_uid is provided1440 #ldap_identity1441 returns ldap identity1442 #matches_identity?1443 finds the identity when the DN is formatted differently1444 #ldap_block1445 blocks user flaging the action caming from ldap1446 on a read-only instance1447 does not block user1448 #full_website_url1449 begins with http if website url omits it1450 begins with http if website url begins with http1451 begins with https if website url begins with https1452 #short_website_url1453 does not begin with http if website url omits it1454 does not begin with http if website url begins with http1455 does not begin with https if website url begins with https1456 #sanitize_attrs1457 encodes HTML entities in the Skype attribute1458 does not encode HTML entities in the name attribute1459 sanitizes attr from html tags1460 sanitizes attr from js scripts1461 sanitizes attr from iframe scripts1462 #starred?1463 determines if user starred a project1464 #toggle_star1465 toggles stars1466 #following?1467WARNING: Active Record does not support composite primary key.1468user_follow_users has composite primary key. Composite primary key is ignored.1469 check if following another user1470 #follow1471 follow another user1472 follow itself is not possible1473 #unfollow1474 unfollow another user1475 #notification_email_or_default1476 when the column in the database is null1477 defaults to the primary email1478 .find_by_private_commit_email1479 returns nil when email is nil1480 with email1481 returns user through private commit email1482 returns nil when email other than private_commit_email is used1483 #sort_by_attribute1484 sorts users in descending order by their creation time1485 sorts users in ascending order by their creation time1486 sorts users by id in descending order when nil is passed1487 when sort by recent_sign_in1488 sorts users by recent sign-in time1489 pushes users who never signed in to the end1490 when sort by oldest_sign_in1491 sorts users by the oldest sign-in time1492 pushes users who never signed in to the end1493 #last_active_at1494 for a user that has `last_activity_on` set1495 returns `last_activity_on` with current time zone1496 for a user that has `current_sign_in_at` set1497 returns `current_sign_in_at`1498 for a user that has both `current_sign_in_at` & ``last_activity_on`` set1499 returns the latest among `current_sign_in_at` & `last_activity_on`1500 for a user that does not have both `current_sign_in_at` & `last_activity_on` set1501 returns nil1502 #can_be_deactivated?1503 a user who is not active1504 behaves like not eligible for deactivation1505 returns false1506 a user who has activity within the specified minimum inactive days1507 behaves like not eligible for deactivation1508 returns false1509 a user who has signed in within the specified minimum inactive days1510 behaves like not eligible for deactivation1511 returns false1512 a user who has no activity within the specified minimum inactive days1513 behaves like eligible for deactivation1514 returns true1515 a user who has not signed in within the specified minimum inactive days1516 behaves like eligible for deactivation1517 returns true1518 a user who is internal1519 returns false1520 #contributed_projects1521 includes IDs for projects the user has pushed to1522 includes IDs for projects the user has had merge requests merged into1523 doesn't include IDs for unrelated projects1524 #fork_of1525 returns a user's fork of a project1526 returns nil if the project does not have a fork network1527 #can_be_removed?1528 no owned groups1529 is expected to be truthy1530 has owned groups1531DEPRECATION WARNING: Merging ("members"."access_level" != $1) and ("members"."access_level" = $1) no longer maintain both conditions, and will be replaced by the latter in Rails 6.2. To migrate to Rails 6.2's behavior, use `relation.merge(other, rewhere: true)`. (called from solo_owned_groups at /builds/gitlab-org/gitlab/app/models/user.rb:1331)1532 is expected to be falsey1533 #solo_owned_groups1534 no owned groups1535 is expected to be empty1536 has owned groups1537 not solo owner1538DEPRECATION WARNING: Merging ("members"."access_level" != $1) and ("members"."access_level" = $1) no longer maintain both conditions, and will be replaced by the latter in Rails 6.2. To migrate to Rails 6.2's behavior, use `relation.merge(other, rewhere: true)`. (called from solo_owned_groups at /builds/gitlab-org/gitlab/app/models/user.rb:1331)1539 is expected to be empty1540 solo owner1541DEPRECATION WARNING: Merging ("members"."access_level" != $1) and ("members"."access_level" = $1) no longer maintain both conditions, and will be replaced by the latter in Rails 6.2. To migrate to Rails 6.2's behavior, use `relation.merge(other, rewhere: true)`. (called from solo_owned_groups at /builds/gitlab-org/gitlab/app/models/user.rb:1331)1542 is expected to include #<Group id:502 @group51>1543DEPRECATION WARNING: Merging ("members"."access_level" != $1) and ("members"."access_level" = $1) no longer maintain both conditions, and will be replaced by the latter in Rails 6.2. To migrate to Rails 6.2's behavior, use `relation.merge(other, rewhere: true)`. (called from solo_owned_groups at /builds/gitlab-org/gitlab/app/models/user.rb:1331)1544DEPRECATION WARNING: Merging ("members"."access_level" != $1) and ("members"."access_level" = $1) no longer maintain both conditions, and will be replaced by the latter in Rails 6.2. To migrate to Rails 6.2's behavior, use `relation.merge(other, rewhere: true)`. (called from solo_owned_groups at /builds/gitlab-org/gitlab/app/models/user.rb:1331)1545 avoids N+1 queries1546 #can_remove_self?1547 returns true1548 #recent_push1549 returns the last push event for the user1550 returns the last push event for a project when one is given1551 #authorized_groups1552 is expected to contain exactly #<Group id:507 @group53> and #<Group id:509 @group55>1553 with shared memberships1554 is expected to include #<Group id:518 @group59>1555 is expected not to include #<Group id:527 @group65>1556 #membership_groups1557 behaves like returns groups where the user is a member1558 is expected to contain exactly #<Group id:529 @group66> and #<Group id:530 @group66/group67>1559 when feature flag :linear_user_membership_groups is disabled1560 behaves like returns groups where the user is a member1561 is expected to contain exactly #<Group id:529 @group66> and #<Group id:530 @group66/group67>1562 #authorizations_for_projects1563 includes projects that belong to a user, but no other projects1564 includes projects a user has access to, but no other projects1565 with min_access_level1566 when developer access1567 includes projects a user has access to1568 when owner access1569 does not include projects with higher access level1570 #authorized_projects1571 includes user's personal projects1572 includes personal projects user has been given access to1573 includes projects of groups user has been added to1574 does not include projects of groups user has been removed from1575 includes projects shared with user's group1576 does not include destroyed projects user had access to1577 does not include projects of destroyed groups user had access to1578 with a minimum access level1579 includes projects for which the user is an owner1580 includes projects for which the user is a maintainer1581 #projects_where_can_admin_issues1582 includes projects for which the user access level is above or equal to reporter1583 does not include for which the user access level is below reporter1584 does not include archived projects1585 does not include projects for which issues are disabled1586 #ci_owned_runners1587 without any projects nor groups1588 does not load any runner1589 returns false for owns_runner?1590 with runner in a personal project1591 behaves like project_owner1592 when the user is the owner of a project1593 loads the runner belonging to the project1594 returns true for owns_runner?1595 with group runner in a non owned group1596 behaves like group_member1597 when the user is a maintainer1598 does not load the runners of the group1599 returns false for owns_runner?1600 when the user is a developer1601 does not load any runner1602 returns false for owns_runner?1603 when the user is a reporter1604 does not load any runner1605 returns false for owns_runner?1606 when the user is a guest1607 does not load any runner1608 returns false for owns_runner?1609 with group runner in an owned group1610 behaves like group_owner1611 when the user is the owner of a one level group1612 loads the runners in the group1613 returns true for owns_runner?1614 with group runner in an owned group and group runner in a different owner subgroup1615 behaves like nested_groups_owner1616 when the user is the owner of a multi-level group1617 loads all the runners in the tree of groups1618 returns true for owns_runner?1619 with personal project runner in an an owned group and a group runner in that same group1620 behaves like nested_groups_owner1621 when the user is the owner of a multi-level group1622 loads all the runners in the tree of groups1623 returns true for owns_runner?1624 with personal project runner in an owned group and a group runner in a subgroup1625 behaves like nested_groups_owner1626 when the user is the owner of a multi-level group1627 loads all the runners in the tree of groups1628 returns true for owns_runner?1629 with personal project runner in an owned group in an owned namespace and a group runner in that group1630 behaves like nested_groups_owner1631 when the user is the owner of a multi-level group1632 loads all the runners in the tree of groups1633 returns true for owns_runner?1634 with personal project runner in an owned namespace, an owned group, a subgroup and a group runner in that subgroup1635 behaves like nested_groups_owner1636 when the user is the owner of a multi-level group1637 loads all the runners in the tree of groups1638 returns true for owns_runner?1639 with a project runner that belong to projects that belong to a not owned group1640 behaves like project_member1641 when the user is a maintainer1642 loads the runners of the project1643 returns true for owns_runner?1644 when the user is a developer1645 does not load any runner1646 returns false for owns_runner?1647 when the user is a reporter1648 does not load any runner1649 returns false for owns_runner?1650 when the user is a guest1651 does not load any runner1652 returns false for owns_runner?1653 with project runners that belong to projects that do not belong to any group1654 does not load any runner1655 with a group runner that belongs to a subgroup of a group owned by another user1656 behaves like group_member1657 when the user is a maintainer1658 does not load the runners of the group1659 returns false for owns_runner?1660 when the user is a developer1661 does not load any runner1662 returns false for owns_runner?1663 when the user is a reporter1664 does not load any runner1665 returns false for owns_runner?1666 when the user is a guest1667 does not load any runner1668 returns false for owns_runner?1669 #projects_with_reporter_access_limited_to1670 returns the projects when using a single project ID1671 returns the projects when using an Array of project IDs1672 returns the projects when using an ActiveRecord relation1673 does not return projects you do not have reporter access to1674 #all_expanded_groups1675 user is not a member of any group1676 returns an empty array1677 user is member of all groups1678 returns all groups1679 user is member of the top group1680 returns all groups1681 user is member of the first child (internal node), branch 11682 returns the groups in the hierarchy1683 user is member of the first child (internal node), branch 21684 returns the groups in the hierarchy1685 user is member of the last child (leaf node)1686 returns the groups in the hierarchy1687 when the user is not saved1688 returns empty when there are no groups or ancestor groups for the user1689 #refresh_authorized_projects1690 refreshes the list of authorized projects1691 stores the correct access levels1692 #access_level=1693 does nothing for an invalid access level1694 assigns the 'admin' access level1695 doesn't clear existing access levels when an invalid access level is passed in1696 accepts string values in addition to symbols1697 #can_read_all_resources?1698 returns false for regular user1699 for admin user1700 when admin mode is disabled1701 returns false1702 when admin mode is enabled1703 returns true1704 #can_admin_all_resources?1705 returns false for regular user1706 for admin user1707 when admin mode is disabled1708 returns false1709 when admin mode is enabled1710 returns true1711 .ghost1712 creates a ghost user if one isn't already present1713 does not create a second ghost user if one is already present1714 when a regular user exists with the username 'ghost'1715 creates a ghost user with a non-conflicting username1716 when a regular user exists with the email 'ghost@example.com'1717 creates a ghost user with a non-conflicting email1718 when a domain allowlist is in place1719 creates a ghost user1720 #update_two_factor_requirement1721 with 2FA requirement on groups1722 requires 2FA1723 uses the shortest grace period1724 with 2FA requirement from expanded groups1725 requires 2FA1726 with 2FA requirement on nested child group1727 requires 2FA1728 with 2FA requirement from shared project's group1729 does not require 2FA1730 without 2FA requirement on groups1731 does not require 2FA1732 falls back to the default grace period1733 when the user is not saved1734 does not raise an ActiveRecord::StatementInvalid statement exception1735 #source_groups_of_two_factor_authentication_requirement1736 when user is direct member of group requiring 2FA1737 returns group requiring 2FA1738 when user is member of group which parent requires 2FA1739 returns group requiring 2FA1740 when user is member of group which child requires 2FA1741 returns group requiring 2FA1742 .active1743 only counts active and non internal users1744 preferred language1745 is English by default1746 #invalidate_issue_cache_counts1747 invalidates cache for issue counter1748 #invalidate_merge_request_cache_counts1749 invalidates cache for Merge Request counter1750 #invalidate_personal_projects_count1751 invalidates cache for personal projects counter1752 #allow_password_authentication_for_web?1753 returns false for ldap user1754 regular user1755 returns true when password authentication is enabled for the web interface1756 returns false when password authentication is disabled for the web interface1757 #allow_password_authentication_for_git?1758 returns false for ldap user1759 regular user1760 returns true when password authentication is enabled for Git1761 returns false when password authentication is disabled Git1762 #assigned_open_merge_requests_count1763 returns number of open merge requests from non-archived projects1764 #review_requested_open_merge_requests_count1765 returns number of open merge requests from non-archived projects1766 #assigned_open_issues_count1767 returns number of open issues from non-archived projects1768 #personal_projects_count1769 returns the number of personal projects using a single query1770 #projects_limit_left1771 returns the number of projects that can be created by the user1772 #ensure_namespace_correct1773 for a new user1774 creates the namespace1775 creates the namespace setting1776 for an existing user1777 when the user is updated1778 when the username or name is changed1779 changes the namespace (just to compare to when username is not changed)1780 updates the namespace path when the username was changed1781 updates the namespace name if the name was changed1782 updates nested routes for the namespace if the name was changed1783 when there is a validation error (namespace name taken) while updating namespace1784 causes the user save to fail1785 adds the namespace errors to the user1786 when the username is not changed1787 does not change the namespace1788 #username_changed_hook1789 for a new user1790 does not trigger system hook1791 for an existing user1792 when the username is changed1793 triggers the rename system hook1794 when the username is not changed1795 does not trigger system hook1796 #will_save_change_to_login?1797 when the username is changed1798 is expected to equal true1799 when the email is changed1800 is expected to equal true1801 when both email and username are changed1802 is expected to equal true1803 when email and username aren't changed1804 is expected to be falsy1805 #sync_attribute?1806 oauth user1807 returns true if name can be synced1808 returns true if email can be synced1809 returns true if location can be synced1810 returns false if name can not be synced1811 returns false if email can not be synced1812 returns false if location can not be synced1813 returns true for all syncable attributes if all syncable attributes can be synced1814 returns false for all syncable attributes but email if no syncable attributes are declared1815 ldap user1816 returns true for email if ldap user1817 returns true for email and location if ldap user and location declared as syncable1818 #confirm_deletion_with_password?1819 password_automatically_set: true, ldap_user: true, password_authentication_disabled: true1820 returns false unless all inputs are true1821 password_automatically_set: true, ldap_user: true, password_authentication_disabled: false1822 returns false unless all inputs are true1823 password_automatically_set: true, ldap_user: false, password_authentication_disabled: true1824 returns false unless all inputs are true1825 password_automatically_set: true, ldap_user: false, password_authentication_disabled: false1826 returns false unless all inputs are true1827 password_automatically_set: false, ldap_user: true, password_authentication_disabled: true1828 returns false unless all inputs are true1829 password_automatically_set: false, ldap_user: true, password_authentication_disabled: false1830 returns false unless all inputs are true1831 password_automatically_set: false, ldap_user: false, password_authentication_disabled: true1832 returns false unless all inputs are true1833 password_automatically_set: false, ldap_user: false, password_authentication_disabled: false1834 returns false unless all inputs are true1835 #delete_async1836 blocks the user then schedules them for deletion if a hard delete is specified1837 schedules user for deletion without blocking them1838 #max_member_access_for_project_ids1839 with RequestStore enabled1840 returns correct roles for different projects1841 does not perform extra queries when asked for projects who have already been found1842 only requests the extra projects when uncached projects are passed1843 with RequestStore disabled1844 returns correct roles for different projects1845 #max_member_access_for_group_ids1846 with RequestStore enabled1847 returns correct roles for different groups1848 does not perform extra queries when asked for groups who have already been found1849 only requests the extra groups when uncached groups are passed1850 with RequestStore disabled1851 returns correct roles for different groups1852 changing a username1853 creates a redirect route1854 deletes the redirect when a user with the old username was created1855 #required_terms_not_accepted?1856 when terms are not enforced1857 is expected to be falsey1858 when terms are enforced1859 is not accepted by the user1860 is accepted by the user1861 auto accepts the term for project bots1862 #increment_failed_attempts!1863 logs failed sign-in attempts1864 does not log failed sign-in attempts when in a GitLab read-only instance1865 #requires_usage_stats_consent?1866 in single-user environment1867 requires user consent after one week1868 requires user consent after one week if there is another ghost user1869 does not require consent in the first week1870 does not require consent if usage stats were set by this user1871 in multi-user environment1872 does not require consent1873 with uploads1874 behaves like model with uploads1875 .destroy1876 with mounted uploader1877 deletes remote uploads1878 with not mounted uploads1879 with local files1880 deletes any FileUploader uploads which are not mounted (PENDING: No reason given)1881 deletes local files (PENDING: No reason given)1882 with remote files1883 deletes any FileUploader uploads which are not mounted (PENDING: No reason given)1884 deletes remote files (PENDING: No reason given)1885 .union_with_user1886 when no user ID is provided1887 returns the input relation1888 when a user ID is provided1889 includes the user object in the returned relation1890 does not re-apply any WHERE conditions on the outer query1891 .optionally_search1892 using nil as the argument1893 returns the current relation1894 using an empty String as the argument1895 returns the current relation1896 using a non-empty String1897 returns users matching the search query1898 .where_not_in1899 without an argument1900 returns the current relation1901 using a list of user IDs1902 excludes the users from the returned relation1903 .reorder_by_name1904 reorders the input relation1905 #notification_settings_for1906 when source is nil1907 returns a blank global notification settings object1908 when source is a Group1909 when group has no existing notification settings1910 when group has no ancestors1911 will be a default Global notification setting1912 when group has ancestors1913 when an ancestor has a level other than Global1914 has the same level set1915 has the same email set1916 when inherit is false1917 does not inherit settings1918 when an ancestor has a Global level but has an email set1919 has the same email set1920 #notification_settings_for_groups1921 when given an ActiveRecord relationship1922 uses #select to maintain lazy querying behavior1923 behaves like notification_settings_for_groups method1924 returns NotificationSetting objects for provided groups1925 when given an Array of Groups1926 behaves like notification_settings_for_groups method1927 returns NotificationSetting objects for provided groups1928 #notification_email_for1929 when group is nil1930 returns global notification email1931 when group has no notification email set1932 returns global notification email1933 when group has notification email set1934 returns group notification email1935 #password_expired?1936 when password_expires_at is not set1937 returns false1938 when password_expires_at is in the past1939 returns true1940 when password_expires_at is in the future1941 returns false1942 #password_expired_if_applicable?1943 with a regular user1944 when password_expires_at is not set1945 returns false1946 when password_expires_at is in the past1947 returns true1948 when password_expires_at is in the future1949 returns false1950 when user is a bot1951 behaves like password expired not applicable1952 when password_expires_at is not set1953 returns false1954 when password_expires_at is in the past1955 returns false1956 when password_expires_at is in the future1957 returns false1958 when password_automatically_set is true1959 behaves like password expired not applicable1960 when password_expires_at is not set1961 returns false1962 when password_expires_at is in the past1963 returns false1964 when password_expires_at is in the future1965 returns false1966 when allow_password_authentication is false1967 behaves like password expired not applicable1968 when password_expires_at is not set1969 returns false1970 when password_expires_at is in the past1971 returns false1972 when password_expires_at is in the future1973 returns false1974 #read_only_attribute?1975 when synced attributes metadata is present1976 delegates to synced_attributes_metadata1977 when synced attributes metadata is not present1978 is false for any attribute1979 .active_without_ghosts1980 returns all active users including active bots but ghost users1981 #dismissed_callout?1982 when no callout dismissal record exists1983 returns false when no ignore_dismissal_earlier_than provided1984 when dismissed callout exists1985 returns true when no ignore_dismissal_earlier_than provided1986 returns true when ignore_dismissal_earlier_than is earlier than dismissed_at1987 returns false when ignore_dismissal_earlier_than is later than dismissed_at1988 #find_or_initialize_callout1989 when callout exists1990 returns existing callout1991 when callout does not exist1992 when feature name is valid1993 initializes a new callout1994 is valid1995 when feature name is not valid1996 initializes a new callout1997 is not valid1998 #dismissed_callout_for_group?1999 when no callout dismissal record exists2000 returns false when no ignore_dismissal_earlier_than provided2001 when dismissed callout exists2002 returns true when no ignore_dismissal_earlier_than provided2003 returns true when ignore_dismissal_earlier_than is earlier than dismissed_at2004 returns false when ignore_dismissal_earlier_than is later than dismissed_at2005 #find_or_initialize_group_callout2006 when callout exists2007 returns existing callout2008 when callout does not exist2009 when feature name is valid2010 initializes a new callout2011 is valid2012 when feature name is not valid2013 initializes a new callout2014 is not valid2015 #hook_attrs2016 includes id, name, username, avatar_url, and email2017 user credit card validation2018 when user is initialized2019 is expected not to be present2020 when create user without credit card validation2021 is expected not to be present2022 when user credit card validation exists2023 is expected to be persisted2024 user detail2025 when user is initialized2026 is expected to be present2027 is expected not to be persisted2028 when user detail exists2029 is expected to be persisted2030 #current_highest_access_level2031 when no memberships exist2032 returns nil2033 when memberships exist2034 returns the highest access level for non requested memberships2035 when after_commit :update_highest_role2036 create user2037 schedules a job in the future2038 when user already exists2039 update user2040 attributes: {:state=>"blocked"}2041 when state was changed2042 when lease is obtained2043 takes the lease but does not release it2044 schedules a job in the future2045 when lease cannot be obtained2046 only schedules one job2047 attributes: {:user_type=>:ghost}2048 when state was changed2049 when lease is obtained2050 takes the lease but does not release it2051 schedules a job in the future2052 when lease cannot be obtained2053 only schedules one job2054 attributes: {:user_type=>:alert_bot}2055 when state was changed2056 when lease is obtained2057 takes the lease but does not release it2058 schedules a job in the future2059 when lease cannot be obtained2060 only schedules one job2061 attributes: {:user_type=>:support_bot}2062 when state was changed2063 when lease is obtained2064 takes the lease but does not release it2065 schedules a job in the future2066 when lease cannot be obtained2067 only schedules one job2068 attributes: {:user_type=>:security_bot}2069 when state was changed2070 when lease is obtained2071 takes the lease but does not release it2072 schedules a job in the future2073 when lease cannot be obtained2074 only schedules one job2075 attributes: {:user_type=>:automation_bot}2076 when state was changed2077 when lease is obtained2078 takes the lease but does not release it2079 schedules a job in the future2080 when lease cannot be obtained2081 only schedules one job2082 when state was not changed2083 does not obtain an exclusive lease2084 destroy user2085 does not obtain an exclusive lease2086 #active_for_authentication?2087 when user is blocked2088 is expected to equal false2089 when user is a ghost user2090 is expected to equal false2091 based on user type2092 user_type: "human", expected_result: true2093 is expected to equal true2094 user_type: "alert_bot", expected_result: false2095 is expected to equal false2096 user_type: "support_bot", expected_result: false2097 is expected to equal false2098 user_type: "security_bot", expected_result: false2099 is expected to equal false2100 user_type: "automation_bot", expected_result: false2101 is expected to equal false2102 #inactive_message2103 when user is blocked2104 is expected to eq :blocked2105 when user is an internal user2106 is expected to equal :forbidden2107 when user is locked2108 is expected to equal :locked2109 when user is blocked pending approval2110 is expected to equal :blocked_pending_approval2111 #password_required?2112 when user is an internal user2113 behaves like does not require password to be present2114 is expected not to validate that :password cannot be empty/falsy2115 is expected not to validate that :password_confirmation cannot be empty/falsy2116 when user is a project bot user2117 behaves like does not require password to be present2118 is expected not to validate that :password cannot be empty/falsy2119 is expected not to validate that :password_confirmation cannot be empty/falsy2120 can_trigger_notifications?2121 when user is not confirmed2122 returns false2123 when user is blocked2124 returns false2125 when user is a ghost2126 returns false2127 when user is confirmed and neither blocked or a ghost2128 returns true2129 bot users2130 behaves like bot users2131 creates the user if it does not exist2132 creates a route for the namespace of the created user2133 does not create a new user if it already exists2134 behaves like bot users2135 creates the user if it does not exist2136 creates a route for the namespace of the created user2137 does not create a new user if it already exists2138 behaves like bot users2139 creates the user if it does not exist2140 creates a route for the namespace of the created user2141 does not create a new user if it already exists2142 behaves like bot users2143 creates the user if it does not exist2144 creates a route for the namespace of the created user2145 does not create a new user if it already exists2146 behaves like bot users2147 creates the user if it does not exist2148 creates a route for the namespace of the created user2149 does not create a new user if it already exists2150 behaves like bot users2151 creates the user if it does not exist2152 creates a route for the namespace of the created user2153 does not create a new user if it already exists2154 behaves like bot user avatars2155 sets the custom avatar for the created bot2156 behaves like bot user avatars2157 sets the custom avatar for the created bot2158 behaves like bot user avatars2159 sets the custom avatar for the created bot2160 behaves like bot user avatars2161 sets the custom avatar for the created bot2162 when bot is the support_bot2163 is expected to be confirmed2164 #confirmation_required_on_sign_in?2165 when user is confirmed2166 is falsey2167 when user is not confirmed2168 is truthy when soft_email_confirmation feature is disabled2169 when soft_email_confirmation feature is enabled2170 is falsey when confirmation period is valid2171 is truthy when confirmation period is expired2172 when user has no confirmation email sent2173 is truthy2174 #default_dashboard?2175 is the default dashboard2176 is not the default dashboard2177 .dormant2178 returns dormant users2179 .with_no_activity2180 returns users with no activity2181 .by_provider_and_extern_uid2182 calls Identity model scope to ensure case-insensitive query2183 #unset_secondary_emails_matching_deleted_email!2184 when no secondary email matches the deleted email2185 does nothing2186 when a secondary email matches the deleted_email2187 un-sets the secondary email2188 #groups_with_developer_maintainer_project_access2189 behaves like groups_with_developer_maintainer_project_access examples2190 is expected to contain exactly #<Group id:1081 @group233>2191 when feature flag :linear_user_groups_with_developer_maintainer_project_access is disabled2192 behaves like groups_with_developer_maintainer_project_access examples2193 is expected to contain exactly #<Group id:1081 @group233>2194 .get_ids_by_username2195 returns the id of each record matching username2196Issue2197 Associations2198 is expected to belong to milestone required:2199 is expected to belong to iteration required:2200 is expected to belong to project required:2201 is expected to have one namespace through project2202 is expected to belong to work_item_type class_name => WorkItem::Type required:2203 is expected to belong to moved_to class_name => Issue required:2204 is expected to have one moved_from class_name => Issue2205 is expected to belong to duplicated_to class_name => Issue required:2206 is expected to belong to closed_by class_name => User required:2207 is expected to have many assignees2208 is expected to have many user_mentions class_name => IssueUserMention2209 is expected to have many designs2210 is expected to have many design_versions2211 is expected to have one sentry_issue2212 is expected to have one alert_management_alert2213 is expected to have many resource_milestone_events2214 is expected to have many resource_state_events2215 is expected to have and belong to many prometheus_alert_events2216 is expected to have and belong to many self_managed_prometheus_alert_events2217 is expected to have many prometheus_alerts2218 is expected to have many issue_email_participants2219 is expected to have many timelogs2220 is expected to have one incident_management_issuable_escalation_status2221 is expected to have many issue_customer_relations_contacts2222 is expected to have many customer_relations_contacts2223 versions.most_recent2224 returns the most recent version2225 modules2226 is expected to includes the Issuable module2227 is expected to includes the Referable module2228 is expected to includes the Sortable module2229 is expected to includes the Taskable module2230 is expected to includes the MilestoneEventable module2231 is expected to includes the StateEventable module2232 behaves like AtomicInternalId2233 .has_internal_id2234 Module inclusion2235 is expected to includes the AtomicInternalId module2236 Validation2237 when presence validation is required2238 when creating an object2239 raises an error if the internal id is blank2240 when updating an object2241 raises an error if the internal id is blank2242 when presence validation is not required2243 when creating an object2244 does not raise an error if the internal id is blank (PENDING: No reason given)2245 when updating an object2246 does not raise an error if the internal id is blank (PENDING: No reason given)2247 Creating an instance2248 saves a new instance properly2249 internal id generation2250 calls InternalId.generate_next and sets internal id attribute2251 does not overwrite an existing internal id2252 when the instance has an internal ID set2253 calls InternalId.update_last_value and sets the `last_value` to that of the instance2254 unsetting the instance internal id on rollback2255 when the internal id has been changed2256 when the internal id is automatically set2257 clears it on the instance2258 when the internal id is manually set2259 does not clear it on the instance2260 when the internal id has not been changed2261 preserves the value on the instance2262 supply of internal ids2263 provides a persistent supply of IID values, sensitive to the current state2264 #reset_scope_internal_id_attribute2265 rewinds the allocated IID2266 allocates the same IID2267 validations2268 issue_type2269 when a valid type2270 is expected to eq true2271 empty type2272 is expected to eq false2273 callbacks2274 #ensure_metrics2275 creates metrics after saving2276 does not create duplicate metrics for an issue2277 records current metrics2278 when metrics record is missing2279 creates the metrics record2280 #record_create_action2281 records the creation action after saving2282 order by upvotes2283 .order_upvotes_desc2284 orders on upvotes2285 .order_upvotes_asc2286 orders on upvotes2287 .with_alert_management_alerts2288 gets only issues with alerts2289 .simple_sorts2290 includes all keys2291 .with_issue_type2292 gives issues with the given issue type2293 gives issues with the given issue type2294 .order_severity2295 sorting ascending2296 is expected to eq [#<Issue id:58 namespace168/project191#1>, #<Issue id:57 namespace167/project190#1>, #<Issue id:56 namespace166/project189#1>]2297 sorting descending2298 is expected to eq [#<Issue id:56 namespace166/project189#1>, #<Issue id:57 namespace167/project190#1>, #<Issue id:58 namespace168/project191#1>]2299 .order_title2300 sorting ascending2301 is expected to eq [#<Issue id:60 namespace170/project193#1>, #<Issue id:61 namespace171/project194#1>, #<Issue id:62 namespace172/project195#1>, #<Issue id:59 namespace169/project192#1>]2302 sorting descending2303 is expected to eq [#<Issue id:59 namespace169/project192#1>, #<Issue id:62 namespace172/project195#1>, #<Issue id:61 namespace171/project194#1>, #<Issue id:60 namespace170/project193#1>]2304 #order_by_relative_position2305 returns ordered list2306 #sort2307 by relative_position2308 sorts asc with nulls at the end2309 #card_attributes2310 includes the author name2311 includes the assignee name2312 #close2313 sets closed_at to Time.current when an issue is closed2314 changes the state to closed2315 when an argument is provided2316 and the argument is a User2317 changes closed_by to the given user2318 and the argument is a not a User2319 does not change closed_by2320 when an argument is not provided2321 does not change closed_by2322 #reopen2323 sets closed_at to nil when an issue is reopened2324 sets closed_by to nil when an issue is reopened2325 changes the state to opened2326 #to_reference2327 when nil argument2328 returns issue id2329 returns complete path to the issue with full: true2330 when argument is a project2331 when same project2332 returns issue id2333 returns full reference with full: true2334 when cross-project in same namespace2335 returns a cross-project reference2336 when cross-project in different namespace2337 returns complete path to the issue2338 when argument is a namespace2339 when same as issue2340 returns path to the issue with the project name2341 returns full reference with full: true2342 when different to issue namespace2343 returns full path to the issue with full: true2344 #assignee_or_author?2345 returns true for a user that is assigned to an issue2346 returns true for a user that is the author of an issue2347 returns false for a user that is not the assignee or author2348 #related_issues2349 returns only authorized related issues for given user2350 returns issues with valid issue_link_type2351 returns issues including the link creation time2352 returns issues including the link update time2353 when a user cannot read cross project2354 only returns issues within the same project2355 #can_move?2356 user is not a member of project issue belongs to2357 is expected to eq false2358 user is reporter in project issue belongs to2359 is expected to eq true2360 issue not persisted2361 is expected to eq false2362 checking destination project also2363 destination project allowed2364 is expected to eq true2365 destination project not allowed2366 is expected to eq false2367 #moved?2368 when issue has not been moved2369 is expected not to be moved2370 when issue has already been moved2371 is expected to be moved2372 #duplicated?2373 issue not duplicated2374 is expected to eq false2375 issue already duplicated2376 is expected to eq true2377 #from_service_desk?2378 when issue author is support bot2379 is expected to be truthy2380 when issue author is not support bot2381 is expected to be falsey2382 #suggested_branch_name2383 #to_branch_name does not exists2384 returns #to_branch_name2385 #to_branch_name exists not ending with -index2386 returns #to_branch_name ending with -22387 #to_branch_name exists ending with -index2388 returns #to_branch_name ending with max index + 12389 #has_related_branch?2390 branch found2391 is expected to eq true2392 branch not found2393 is expected to eq false2394 behaves like an editable mentionable2395 creates new cross-reference notes when the mentionable text is edited2396 behaves like a mentionable2397 generates a descriptive back-reference2398 extracts references from its reference property2399 creates cross-reference notes2400 when there are cached markdown fields2401 sends in cached markdown fields when appropriate2402 when there are cached markdown fields2403 refreshes markdown cache if necessary2404 when the markdown cache is stale2405 persists the refreshed cache so that it does not have to be refreshed every time2406 behaves like a Taskable2407 with multiple tasks2408 returns the correct task status2409 #tasks?2410 returns true when object has tasks2411 returns false when object has no tasks2412 with nested tasks2413 returns the correct task status2414 with an incomplete task2415 returns the correct task status2416 with tasks that are not formatted correctly2417 returns the correct task status2418 with a complete task2419 returns the correct task status2420 with tasks in blockquotes2421 returns the correct task status2422 .to_branch_name2423 parameterizes arguments and joins with dashes2424 preserves the case in the first argument2425 truncates branch name to at most 100 characters2426 truncates dangling parts of the branch name2427 #to_branch_name2428 returns a branch name with the issue title if not confidential2429 returns a generic branch name if confidential2430 #can_be_worked_on?2431 is expected to be can be worked on2432 is closed2433 is expected not to be can be worked on2434 project is forked2435 is expected not to be can be worked on2436 #participants2437 using a public project2438 includes the issue author2439 includes the authors of the notes2440 using a private project2441 does not include mentioned users that do not have access to the project2442 cached counts2443 updates when assignees change2444 #visible_to_user?2445 with a project2446 returns false when feature is disabled2447 returns false when restricted for members2448 without a user2449 returns true when the issue is publicly visible2450 returns false when the issue is not publicly visible2451 with a user2452 with an admin user2453 when admin mode is enabled2454 behaves like issue readable by user2455 is expected to eq true2456 behaves like confidential issue readable by user2457 is expected to eq true2458 behaves like hidden issue readable by user2459 is expected to eq true2460 when admin mode is disabled2461 behaves like issue not readable by user2462 is expected to eq false2463 behaves like confidential issue not readable by user2464 is expected to eq false2465 behaves like hidden issue not readable by user2466 is expected to eq false2467 with an owner2468 behaves like issue readable by user2469 is expected to eq true2470 behaves like confidential issue readable by user2471 is expected to eq true2472 behaves like hidden issue not readable by user2473 is expected to eq false2474 with a reporter user2475 behaves like issue readable by user2476 is expected to eq true2477 behaves like confidential issue readable by user2478 is expected to eq true2479 behaves like hidden issue not readable by user2480 is expected to eq false2481 with a guest user2482 behaves like issue readable by user2483 is expected to eq true2484 behaves like confidential issue not readable by user2485 is expected to eq false2486 behaves like hidden issue not readable by user2487 is expected to eq false2488 when user is an assignee2489 behaves like issue readable by user2490 is expected to eq true2491 behaves like confidential issue readable by user2492 is expected to eq true2493 behaves like hidden issue not readable by user2494 is expected to eq false2495 when user is the author2496 behaves like issue readable by user2497 is expected to eq true2498 behaves like confidential issue readable by user2499 is expected to eq true2500 behaves like hidden issue not readable by user2501 is expected to eq false2502 with a user that is not a member2503 using a public project2504 behaves like issue readable by user2505 is expected to eq true2506 behaves like confidential issue not readable by user2507 is expected to eq false2508 behaves like hidden issue not readable by user2509 is expected to eq false2510 using an internal project2511 using an internal user2512 behaves like issue readable by user2513 is expected to eq true2514 behaves like confidential issue not readable by user2515 is expected to eq false2516 behaves like hidden issue not readable by user2517 is expected to eq false2518 using an external user2519 behaves like issue not readable by user2520 is expected to eq false2521 behaves like confidential issue not readable by user2522 is expected to eq false2523 behaves like hidden issue not readable by user2524 is expected to eq false2525 using an external user2526 behaves like issue not readable by user2527 is expected to eq false2528 behaves like confidential issue not readable by user2529 is expected to eq false2530 behaves like hidden issue not readable by user2531 is expected to eq false2532 with an external authentication service2533 is `false` when an external authorization service is enabled2534 checks the external service to determine if an issue is readable by a user2535 does not check the external service if a user does not have access to the project2536 with an admin2537 when admin mode is enabled2538 does not check the external webservice2539 when admin mode is disabled2540 checks the external service to determine if an issue is readable by the admin2541 when issue is moved to a private project2542 when user is the author of the original issue2543 behaves like issue visible if user has guest access2544 when user is not a member2545 behaves like issue not readable by user2546 is expected to eq false2547 behaves like confidential issue not readable by user2548 is expected to eq false2549 when user is a guest2550 behaves like issue readable by user2551 is expected to eq true2552 behaves like confidential issue readable by user2553 is expected to eq true2554 when user is an assignee in the original issue2555 behaves like issue visible if user has guest access2556 when user is not a member2557 behaves like issue not readable by user2558 is expected to eq false2559 behaves like confidential issue not readable by user2560 is expected to eq false2561 when user is a guest2562 behaves like issue readable by user2563 is expected to eq true2564 behaves like confidential issue readable by user2565 is expected to eq true2566 when user is not the author or an assignee in original issue2567 when user is a guest2568 behaves like issue readable by user2569 is expected to eq true2570 behaves like confidential issue not readable by user2571 is expected to eq false2572 when user is a reporter2573 behaves like issue readable by user2574 is expected to eq true2575 behaves like confidential issue readable by user2576 is expected to eq true2577 #publicly_visible?2578 using a public project2579 returns true for a regular issue2580 returns false for a confidential issue2581 using an internal project2582 returns false for a regular issue2583 returns false for a confidential issue2584 using a private project2585 returns false for a regular issue2586 returns false for a confidential issue2587 #hook_attrs2588 delegates to Gitlab::HookData::IssueBuilder#build2589 #check_for_spam?2590 support_bot?: false, visibility_level: 20, confidential: false, new_attributes: {:description=>"new"}, check_for_spam?: true2591 checks for spam when necessary2592 support_bot?: false, visibility_level: 20, confidential: false, new_attributes: {:title=>"new"}, check_for_spam?: true2593 checks for spam when necessary2594 support_bot?: false, visibility_level: 20, confidential: true, new_attributes: {:confidential=>false}, check_for_spam?: true2595 checks for spam when necessary2596 support_bot?: false, visibility_level: 20, confidential: false, new_attributes: {:confidential=>true}, check_for_spam?: false2597 checks for spam when necessary2598 support_bot?: false, visibility_level: 20, confidential: true, new_attributes: {:description=>"new"}, check_for_spam?: false2599 checks for spam when necessary2600 support_bot?: false, visibility_level: 20, confidential: false, new_attributes: {:title=>"new", :confidential=>true}, check_for_spam?: false2601 checks for spam when necessary2602 support_bot?: false, visibility_level: 20, confidential: false, new_attributes: {:description=>"original description"}, check_for_spam?: false2603 checks for spam when necessary2604 support_bot?: false, visibility_level: 20, confidential: false, new_attributes: {:weight=>3}, check_for_spam?: false2605 checks for spam when necessary2606 support_bot?: false, visibility_level: 10, confidential: false, new_attributes: {:description=>"new"}, check_for_spam?: false2607 checks for spam when necessary2608 support_bot?: false, visibility_level: 0, confidential: false, new_attributes: {:description=>"new"}, check_for_spam?: false2609 checks for spam when necessary2610 support_bot?: true, visibility_level: 20, confidential: true, new_attributes: {:confidential=>false}, check_for_spam?: true2611 checks for spam when necessary2612 support_bot?: true, visibility_level: 20, confidential: false, new_attributes: {:confidential=>true}, check_for_spam?: false2613 checks for spam when necessary2614 support_bot?: true, visibility_level: 20, confidential: true, new_attributes: {:description=>"new"}, check_for_spam?: true2615 checks for spam when necessary2616 support_bot?: true, visibility_level: 20, confidential: false, new_attributes: {:title=>"new", :confidential=>true}, check_for_spam?: true2617 checks for spam when necessary2618 support_bot?: true, visibility_level: 10, confidential: false, new_attributes: {:description=>"new"}, check_for_spam?: true2619 checks for spam when necessary2620 support_bot?: true, visibility_level: 0, confidential: false, new_attributes: {:title=>"new"}, check_for_spam?: true2621 checks for spam when necessary2622 support_bot?: true, visibility_level: 20, confidential: false, new_attributes: {:description=>"original description"}, check_for_spam?: false2623 checks for spam when necessary2624 support_bot?: true, visibility_level: 0, confidential: true, new_attributes: {:weight=>3}, check_for_spam?: false2625 checks for spam when necessary2626 removing an issue2627 refreshes the number of open issues of the project2628 .public_only2629 only returns public issues2630 when feature flag is disabled2631 returns public and hidden issues2632 .confidential_only2633 only returns confidential_only issues2634 .without_hidden2635 only returns without_hidden issues2636 when feature flag is disabled2637 returns public and hidden issues2638 .by_project_id_and_iid2639 behaves like a where_composite scope2640 we pass an empty array2641 returns a null relation2642 we pass nil2643 returns a null relation2644 we pass a singleton composite id2645 finds the first result2646 we pass group of ids2647 finds all the results2648 performance2649 is not O(N)2650 .service_desk2651 returns the service desk issue2652 behaves like throttled touch2653 #touch2654 updates the updated_at timestamp2655 updates the object at most once per minute2656 #labels_hook_attrs2657 returns a list of label hook attributes2658 relative positioning2659 is not blocked for repositioning by default2660 behaves like a class that supports relative positioning2661 #scoped_items2662 includes all items with the same scope2663 #relative_siblings2664 includes all items with the same scope, except self2665 .move_nulls_to_end2666 moves items with null relative_position to the end2667 preserves relative position2668 moves the item near the start position when there are no existing positions2669 does not perform any moves if all items have their relative_position set2670 manages to move nulls to the end even if there is a sequence at the end2671 manages to move nulls to the end even if there is not enough space2672 manages to move nulls to the end, stacking if we cannot create enough space2673 manages to move nulls found in the relative scope2674 can move many nulls2675 does not have an N+1 issue2676 .move_nulls_to_start2677 moves items with null relative_position to the start2678 moves the item near the start position when there are no existing positions2679 preserves relative position2680 does not perform any moves if all items have their relative_position set2681 manages to move nulls to the start even if there is not enough space2682 manages to move nulls to the end, stacking if we cannot create enough space2683 #move_before2684 moves item before2685 can move the item before an item at the start2686 can move the item before an item at MIN_POSITION2687 can move the item before an item bunched up at MIN_POSITION2688 when there is no space2689 moves items correctly2690 leap-frogging to the left2691 can leap-frog STEPS times before needing to rebalance2692 there is no space to the left after moving STEPS times2693 rebalances to the right2694 #move_after2695 moves item after2696 can move the item after an item bunched up at MAX_POSITION2697 when there is no space2698 can move the item after an item at MAX_POSITION2699 moves items correctly2700 leap-frogging2701 rebalances after STEPS jumps2702 #move_to_start2703 places items at most IDEAL_DISTANCE from the start when the range is open2704 moves item to the end2705 positions the item at MIN_POSITION when there is only one space left2706 rebalances when there is already an item at the MIN_POSITION2707 deals with a run of elements at the start2708 #move_to_end2709 places items at most IDEAL_DISTANCE from the start when the range is open2710 moves item to the end2711 positions the item at MAX_POSITION when there is only one space left2712 rebalances when there is already an item at the MAX_POSITION2713 deals with a run of elements at the end2714 #move_between2715 positions item between two other2716 positions item between on top2717 positions item between to end2718 positions items even when after and before positions are the same2719 positions item in the middle of other two if distance is big enough2720 positions item closer to the middle if we are at the very top2721 positions item closer to the middle if we are at the very bottom2722 positions item in the middle of other two2723 positions item right if we pass non-sequential parameters2724 avoids N+1 queries when rebalancing other items2725 the two items are next to each other2726 behaves like moves item between2727 moves the middle item to between left and right2728 there is no space2729 behaves like moves item between2730 moves the middle item to between left and right2731 there is a bunch of items2732 handles bunches correctly2733 behaves like moves item between2734 moves the middle item to between left and right2735 when block_issue_repositioning flag is enabled for group2736 is blocked for repositioning2737 does not move issues with null position2738 behaves like versioned description2739 associations2740 is expected to have many description_versions2741 save_description_version2742 when description was changed2743 saves the old and new description for the first update2744 only saves the new description for subsequent updates2745 sets the new description version to `saved_description_version`2746 clears `saved_description_version` after another save that does not change description2747 when description was not changed2748 does not save any description version2749 #previous_updated_at2750 returns updated_at value if updated_at did not change at all2751 returns updated_at value if `previous_changes` has nil value for `updated_at`2752 returns updated_at value if previous updated_at value is not present2753 returns previous updated_at when present2754 #design_collection2755 returns a design collection2756 current designs2757 an issue has no designs2758 is expected to be empty2759 an issue only has current designs2760 is expected to include #<DesignManagement::Design id:4 namespace146/project169#1/designs[homescreen-4.jpg]>, #<DesignManagement::Design id:5 namespace146/project169#1/designs[homescreen-5.jpg]>, and #<DesignManagement::Design id:6 namespace146/project169#1/designs[homescreen-6.jpg]>2761 an issue only has deleted designs2762 is expected to be empty2763 an issue has a mixture of current and deleted designs2764 is expected to contain exactly #<DesignManagement::Design id:10 namespace146/project169#1/designs[homescreen-10.jpg]> and #<DesignManagement::Design id:12 namespace146/project169#1/designs[homescreen-12.jpg]>2765 .with_label_attributes2766 gets issues with given label attributes2767 excludes issues without given label attributes2768 banzai_render_context2769 sets the label_url_method in the context2770 scheduling rebalancing2771 when project in user namespace2772 behaves like schedules issues rebalancing2773 schedules rebalancing if there is no space left2774 when project in a group namespace2775 behaves like schedules issues rebalancing2776 schedules rebalancing if there is no space left2777 #allows_reviewers?2778 returns false as we do not support reviewers on issues yet2779 #issue_type_supports?2780 raises error when feature is invalid2781 #supports_time_tracking?2782 issue_type: :issue, supports_time_tracking: true2783 is expected to eq true2784 issue_type: :incident, supports_time_tracking: true2785 is expected to eq true2786 #supports_move_and_clone?2787 issue_type: :issue, supports_move_and_clone: true2788 is expected to eq true2789 issue_type: :incident, supports_move_and_clone: true2790 is expected to eq true2791 #email_participants_emails2792 returns a list of emails2793 #email_participants_downcase2794 returns a list of emails with all uppercase letters replaced with their lowercase counterparts2795Namespace::TraversalHierarchy2796 .for_namespace2797 with root group2798 is expected to eq #<Group id:1194 @group238>2799 with child group2800 is expected to eq #<Group id:1279 @group323>2801 with group outside of hierarchy2802 is expected not to eq #<Group id:1364 @group408>2803 .new2804 with root group2805 is expected to eq #<Group id:1450 @group493>2806 with child group2807 is expected to raise StandardError with "Must specify a root node"2808 #incorrect_traversal_ids2809 is expected to contain exactly #<Group id:1620 @group663>, #<Group id:1621 @group663/group664>, #<Group id:1622 @group663/group664/group665>, #<Group id:1623 @group663/group664/group665/group666>, #<Group id:1624 @group663/group664/group665/group667>, #<Group id:1625 @group663/group664/group665/group668>, #<Group id:1626 @group663/group664/group665/group669>, #<Group id:1627 @group663/group664/group670>, #<Group id:1628 @group663/group664/group670/group671>, #<Group id:1629 @group663/group664/group670/group672>, #<Group id:1630 @group663/group664/group670/group673>, #<Group id:1631 @group663/group664/group670/group674>, #<Group id:1632 @group663/group664/group675>, #<Group id:1633 @group663/group664/group675/group676>, #<Group id:1634 @group663/group664/group675/group677>, #<Group id:1635 @group663/group664/group675/group678>, #<Group id:1636 @group663/group664/group675/group679>, #<Group id:1637 @group663/group664/group680>, #<Group id:1638 @group663/group664/group680/group681>, #<Group id:1639 @group663/group664/group680/group682>, #<Group id:1640 @group663/group664/group680/group683>, #<Group id:1641 @group663/group664/group680/group684>, #<Group id:1642 @group663/group685>, #<Group id:1643 @group663/group685/group686>, #<Group id:1644 @group663/group685/group686/group687>, #<Group id:1645 @group663/group685/group686/group688>, #<Group id:1646 @group663/group685/group686/group689>, #<Group id:1647 @group663/group685/group686/group690>, #<Group id:1648 @group663/group685/group691>, #<Group id:1649 @group663/group685/group691/group692>, #<Group id:1650 @group663/group685/group691/group693>, #<Group id:1651 @group663/group685/group691/group694>, #<Group id:1652 @group663/group685/group691/group695>, #<Group id:1653 @group663/group685/group696>, #<Group id:1654 @group663/group685/group696/group697>, #<Group id:1655 @group663/group685/group696/group698>, #<Group id:1656 @group663/group685/group696/group699>, #<Group id:1657 @group663/group685/group696/group700>, #<Group id:1658 @group663/group685/group701>, #<Group id:1659 @group663/group685/group701/group702>, #<Group id:1660 @group663/group685/group701/group703>, #<Group id:1661 @group663/group685/group701/group704>, #<Group id:1662 @group663/group685/group701/group705>, #<Group id:1663 @group663/group706>, #<Group id:1664 @group663/group706/group707>, #<Group id:1665 @group663/group706/group707/group708>, #<Group id:1666 @group663/group706/group707/group709>, #<Group id:1667 @group663/group706/group707/group710>, #<Group id:1668 @group663/group706/group707/group711>, #<Group id:1669 @group663/group706/group712>, #<Group id:1670 @group663/group706/group712/group713>, #<Group id:1671 @group663/group706/group712/group714>, #<Group id:1672 @group663/group706/group712/group715>, #<Group id:1673 @group663/group706/group712/group716>, #<Group id:1674 @group663/group706/group717>, #<Group id:1675 @group663/group706/group717/group718>, #<Group id:1676 @group663/group706/group717/group719>, #<Group id:1677 @group663/group706/group717/group720>, #<Group id:1678 @group663/group706/group717/group721>, #<Group id:1679 @group663/group706/group722>, #<Group id:1680 @group663/group706/group722/group723>, #<Group id:1681 @group663/group706/group722/group724>, #<Group id:1682 @group663/group706/group722/group725>, #<Group id:1683 @group663/group706/group722/group726>, #<Group id:1684 @group663/group727>, #<Group id:1685 @group663/group727/group728>, #<Group id:1686 @group663/group727/group728/group729>, #<Group id:1687 @group663/group727/group728/group730>, #<Group id:1688 @group663/group727/group728/group731>, #<Group id:1689 @group663/group727/group728/group732>, #<Group id:1690 @group663/group727/group733>, #<Group id:1691 @group663/group727/group733/group734>, #<Group id:1692 @group663/group727/group733/group735>, #<Group id:1693 @group663/group727/group733/group736>, #<Group id:1694 @group663/group727/group733/group737>, #<Group id:1695 @group663/group727/group738>, #<Group id:1696 @group663/group727/group738/group739>, #<Group id:1697 @group663/group727/group738/group740>, #<Group id:1698 @group663/group727/group738/group741>, #<Group id:1699 @group663/group727/group738/group742>, #<Group id:1700 @group663/group727/group743>, #<Group id:1701 @group663/group727/group743/group744>, #<Group id:1702 @group663/group727/group743/group745>, #<Group id:1703 @group663/group727/group743/group746>, and #<Group id:1704 @group663/group727/group743/group747>2810 #sync_traversal_ids!2811 is expected to be empty2812 behaves like hierarchy with traversal_ids2813 will be valid2814 behaves like locked row2815 has locked row2816 when deadlocked2817 is expected to raise ActiveRecord::Deadlocked2818 increment db_deadlock counter2819Integrations::Jira2820 #options2821 sets the URL properly2822 leaves out trailing slashes in context2823 provides additional cookies to allow basic auth with oracle webgate2824 URL without a path2825 leaves out trailing slashes in context2826 URL with query string parameters2827 removes query string parameters2828 username with trailing whitespaces2829 leaves out trailing whitespaces in username2830 using api URL2831 leaves out trailing slashes in context2832 #fields2833 returns custom fields2834 .reference_pattern2835 key: "#123", result: ""2836 is expected to eq ""2837 key: "1#23#12", result: ""2838 is expected to eq ""2839 key: "JIRA-1234A", result: "JIRA-1234"2840 is expected to eq "JIRA-1234"2841 key: "JIRA-1234-some_tag", result: "JIRA-1234"2842 is expected to eq "JIRA-1234"2843 key: "JIRA-1234_some_tag", result: "JIRA-1234"2844 is expected to eq "JIRA-1234"2845 key: "EXT_EXT-1234", result: "EXT_EXT-1234"2846 is expected to eq "EXT_EXT-1234"2847 key: "EXT3_EXT-1234", result: "EXT3_EXT-1234"2848 is expected to eq "EXT3_EXT-1234"2849 key: "3EXT_EXT-1234", result: ""2850 is expected to eq ""2851 #create2852 does not store data into properties2853 stores data in data_fields correctly2854 when loading serverInfo2855 with a Cloud instance2856 is detected2857 with a Server instance2858 is detected2859 from an Unknown instance2860 and URL ends in .atlassian.net2861 deployment_type is set to cloud2862 and URL is something else2863 deployment_type is set to server2864 and no ServerInfo response is received2865 and URL ends in .atlassian.net2866 deployment_type is set to cloud2867 and URL is something else2868 deployment_type is set to server2869 overriding properties2870 when data are stored in properties2871 behaves like handles jira fields2872 reading data2873 reads data correctly2874 #update2875 basic update2876 stores updated data in jira_tracker_data table2877 when updating the url, api_url, username, or password2878 calls serverInfo for url2879 calls serverInfo for api_url2880 calls serverInfo for username2881 calls serverInfo for password2882 when updating the integration2883 updates deployment type2884 when removing the integration2885 updates deployment type2886 when not updating the url, api_url, username, or password2887 does not update deployment type2888 stored password invalidation2889 when a password was previously set2890 when only web url present2891 resets password if url changed2892 does not reset password if url "changed" to the same url as before2893 resets password if url not changed but api url added2894 does not reset password if new url is set together with password, even if it's the same password2895 resets password if url changed, even if setter called multiple times2896 does not reset password if username changed2897 does not reset password if password changed2898 does not reset password if the password is touched and same as before2899 when both web and api url present2900 resets password if api url changed2901 does not reset password if url changed2902 resets password if api url set to empty2903 when no password was previously set2904 saves password if new url is set together with password2905 when data are stored in separated fields2906 behaves like handles jira fields2907 reading data2908 reads data correctly2909 #update2910 basic update2911 stores updated data in jira_tracker_data table2912 when updating the url, api_url, username, or password2913 calls serverInfo for url2914 calls serverInfo for api_url2915 calls serverInfo for username2916 calls serverInfo for password2917 when updating the integration2918 updates deployment type2919 when removing the integration2920 updates deployment type2921 when not updating the url, api_url, username, or password2922 does not update deployment type2923 stored password invalidation2924 when a password was previously set2925 when only web url present2926 resets password if url changed2927 does not reset password if url "changed" to the same url as before2928 resets password if url not changed but api url added2929 does not reset password if new url is set together with password, even if it's the same password2930 resets password if url changed, even if setter called multiple times2931 does not reset password if username changed2932 does not reset password if password changed2933 does not reset password if the password is touched and same as before2934 when both web and api url present2935 resets password if api url changed2936 does not reset password if url changed2937 resets password if api url set to empty2938 when no password was previously set2939 saves password if new url is set together with password2940 when data are stored in both properties and separated fields2941 behaves like handles jira fields2942 reading data2943 reads data correctly2944 #update2945 basic update2946 stores updated data in jira_tracker_data table2947 when updating the url, api_url, username, or password2948 calls serverInfo for url2949 calls serverInfo for api_url2950 calls serverInfo for username2951 calls serverInfo for password2952 when updating the integration2953 updates deployment type2954 when removing the integration2955 updates deployment type2956 when not updating the url, api_url, username, or password2957 does not update deployment type2958 stored password invalidation2959 when a password was previously set2960 when only web url present2961 resets password if url changed2962 does not reset password if url "changed" to the same url as before2963 resets password if url not changed but api url added2964 does not reset password if new url is set together with password, even if it's the same password2965 resets password if url changed, even if setter called multiple times2966 does not reset password if username changed2967 does not reset password if password changed2968 does not reset password if the password is touched and same as before2969 when both web and api url present2970 resets password if api url changed2971 does not reset password if url changed2972 resets password if api url set to empty2973 when no password was previously set2974 saves password if new url is set together with password2975 #client2976 uses the default GitLab::HTTP timeouts2977 #find_issue2978 calls the Jira API to get the issue2979 with options2980 calls the Jira API with the options to get the issue2981 #close_issue2982 when resource is a merge request2983 behaves like close_issue2984 calls Jira API2985 tracks usage2986 does not fail if remote_link.all on issue returns nil2987 creates Remote Link reference in Jira for comment2988 does not send comment or remote links to issues already closed2989 does not send comment or remote links to issues with unknown resolution2990 references the GitLab commit2991 references the GitLab commit2992 logs exception when transition id is not valid2993 calls the api with jira_issue_transition_id2994 when "comment_on_event_enabled" is set to false2995 creates Remote Link reference but does not create comment2996 when Remote Link already exists2997 does not create comment2998 when custom transition IDs are blank2999 does not transition the issue3000 when using automatic issue transitions3001 uses the next transition with a status category of done3002 when no done transition is available3003 does not attempt to transition3004 when no valid transitions are returned3005 does not attempt to transition3006 when using multiple transition ids3007 calls the api with transition ids separated by comma3008 calls the api with transition ids separated by semicolon3009 when a transition fails3010 stops the sequence3011 when resource is a commit3012 behaves like close_issue3013 calls Jira API3014 tracks usage3015 does not fail if remote_link.all on issue returns nil3016 creates Remote Link reference in Jira for comment3017 does not send comment or remote links to issues already closed3018 does not send comment or remote links to issues with unknown resolution3019 references the GitLab commit3020 references the GitLab commit3021 logs exception when transition id is not valid3022 calls the api with jira_issue_transition_id3023 when "comment_on_event_enabled" is set to false3024 creates Remote Link reference but does not create comment3025 when Remote Link already exists3026 does not create comment3027 when custom transition IDs are blank3028 does not transition the issue3029 when using automatic issue transitions3030 uses the next transition with a status category of done3031 when no done transition is available3032 does not attempt to transition3033 when no valid transitions are returned3034 does not attempt to transition3035 when using multiple transition ids3036 calls the api with transition ids separated by comma3037 calls the api with transition ids separated by semicolon3038 when a transition fails3039 stops the sequence3040 #create_cross_reference_note3041 when resource is a commit3042 when disabled3043 is expected to eq "Events for commits are disabled."3044 when enabled3045 behaves like creates a comment on Jira3046 creates a comment on Jira3047 tracks usage3048 with jira_use_first_ref_by_oid feature flag disabled3049 creates a comment on Jira3050 when resource is a merge request3051 when disabled3052 is expected to eq "Events for merge requests are disabled."3053 when enabled3054 behaves like creates a comment on Jira3055 creates a comment on Jira3056 tracks usage3057 with jira_use_first_ref_by_oid feature flag disabled3058 creates a comment on Jira3059 #test3060 when the test succeeds3061 gets Jira project with URL when API URL not set3062 gets Jira project with API URL if set3063 when the test fails3064 returns result with the error3065 project and issue urls3066 removes trailing slashes from url3067 when gitlab.yml was initialized3068 is prepopulated with the settings3069 favicon urls3070 includes the standard favicon3071 includes returns the custom favicon3072 generating external URLs3073 #web_url3074 handles paths, slashes, and query string3075 preserves existing query string3076 returns an empty string if URL is not set3077 includes Atlassian referrer for gitlab.com3078 includes Atlassian referrer for self-managed3079 #project_url3080 returns the correct URL3081 returns an empty string if URL is not set3082 #issues_url3083 returns the correct URL3084 returns an empty string if URL is not set3085 #new_issue_url3086 returns the correct URL3087 returns an empty string if URL is not set3088 #issue_transition_enabled?3089 returns true if automatic transitions are enabled3090 returns true if custom transitions are set3091 returns false if automatic and custom transitions are disabled3092 valid_connection? and configured?3093 when the test fails3094 is falsey3095 implies that configured? is also falsey3096 when the test succeeds3097 is truthy3098 when the integration is active3099 implies that configured? is also truthy3100 when the integration is inactive3101 implies that configured? is falsey3102Clusters::Applications::Ingress3103 is expected to belong to cluster required:3104 is expected to validate that :cluster cannot be empty/falsy3105 behaves like having unique enum values3106 has unique values in "ingress_type"3107 #can_uninstall?3108 calls allowed_to_uninstall?3109 #name3110 is .application_name3111 is recorded in Clusters::Cluster::APPLICATIONS3112 .association_name3113 is expected to eq :application_ingress3114 #helm_command_module3115 helm_major_version: 2, expected_helm_command_module: Gitlab::Kubernetes::Helm::V23116 is expected to eq Gitlab::Kubernetes::Helm::V23117 helm_major_version: 3, expected_helm_command_module: Gitlab::Kubernetes::Helm::V33118 is expected to eq Gitlab::Kubernetes::Helm::V33119 #status_states3120 returns a hash of state values3121 returns an integer for installed state value3122 .available3123 is expected to contain exactly #<Clusters::Applications::Ingress id: 1, cluster_id: 12, created_at: "2021-10-26 21:29:46.521166235 +...", version: "1.40.2", cluster_ip: nil, status_reason: nil, external_ip: nil, external_hostname: nil> and #<Clusters::Applications::Ingress id: 2, cluster_id: 18, created_at: "2021-10-26 21:29:47.480427272 +...", version: "1.40.2", cluster_ip: nil, status_reason: nil, external_ip: nil, external_hostname: nil>3124 status state machine3125 #make_installing3126 is installing3127 #make_installed3128 is installed3129 does not update the helm version3130 the cluster has no helm installed3131 runs without errors3132 application is updating3133 is updated3134 does not update the helm version3135 the cluster has no helm installed3136 runs without errors3137 #make_errored3138 is errored3139 application is updating3140 is update_errored3141 application is uninstalling3142 is uninstall_errored3143 #make_externally_installed3144 is installed3145 helm record does not exist3146 does not create a helm record3147 helm record exists3148 does not update helm version3149 application is updated3150 is installed3151 application is errored3152 is installed3153 clears #status_reason3154 #make_externally_uninstalled3155 is uninstalled3156 application is updated3157 is uninstalled3158 application is errored3159 is uninstalled3160 clears #status_reason3161 #make_scheduled3162 is scheduled3163 when installed3164 is scheduled3165 when was errored3166 clears #status_reason3167 when was updated_errored3168 clears #status_reason3169 when was uninstall_errored3170 clears #status_reason3171 #make_uninstalling3172 is uninstalling3173 #available?3174 trait: :not_installable, available: false3175 is expected not to be available3176 trait: :installable, available: false3177 is expected not to be available3178 trait: :scheduled, available: false3179 is expected not to be available3180 trait: :installing, available: false3181 is expected not to be available3182 trait: :installed, available: true3183 is expected to be available3184 trait: :updating, available: false3185 is expected not to be available3186 trait: :updated, available: true3187 is expected to be available3188 trait: :errored, available: false3189 is expected not to be available3190 trait: :update_errored, available: false3191 is expected not to be available3192 trait: :uninstalling, available: false3193 is expected not to be available3194 trait: :uninstall_errored, available: false3195 is expected not to be available3196 trait: :uninstalled, available: false3197 is expected not to be available3198 trait: :timed_out, available: false3199 is expected not to be available3200 trait: :externally_installed, available: true3201 is expected to be available3202 update_available?3203 version is not the same as VERSION3204 is expected to be truthy3205 version is the same as VERSION3206 is expected to be falsey3207 #make_installed3208 sets the correct version of the application3209 application is updating3210 updates the version of the application3211 #make_externally_installed3212 sets to a special version3213 #uninstall_command3214 is expected to be an instance of Gitlab::Kubernetes::Helm::V3::DeleteCommand3215 has files3216 is rbac3217 on a non rbac enabled cluster3218 is expected not to be rbac3219 #files3220 does not include cert files3221 when cluster does not have helm installed3222 does not include cert files3223 #status3224 sets a default status3225 #can_uninstall?3226 with jupyter installed3227 returns false if external_ip_or_hostname? is true3228 returns false if external_ip_or_hostname? is false3229 with jupyter installable3230 returns true if external_ip_or_hostname? is true3231 returns false if external_ip_or_hostname? is false3232 with jupyter nil3233 returns false if external_ip_or_hostname? is false3234 if external_ip_or_hostname? is true3235 with IP3236 is expected to be truthy3237 with hostname3238 is expected to be truthy3239 #make_installed!3240 schedules a ClusterWaitForIngressIpAddressWorker3241 #schedule_status_update3242 schedules a ClusterWaitForIngressIpAddressWorker3243 when the application is not installed3244 does not schedule a ClusterWaitForIngressIpAddressWorker3245 when there is already an external_ip3246 does not schedule a ClusterWaitForIngressIpAddressWorker3247 when there is already an external_hostname3248 does not schedule a ClusterWaitForIngressIpAddressWorker3249 #install_command3250 is expected to be an instance of Gitlab::Kubernetes::Helm::V3::InstallCommand3251 is initialized with ingress arguments3252 on a non rbac enabled cluster3253 is expected not to be rbac3254 application failed to install previously3255 is initialized with the locked version3256 #files3257 includes ingress valid keys in values3258Gitlab::ImportExport::RelationTreeRestorer3259 when restoring a project3260 using legacy reader3261 behaves like import project successfully3262 imported project3263 has the project attributes and relations3264 logging of relations creation3265 when log_import_export_relation_creation feature flag is enabled3266 logs top-level relation creation3267 when log_import_export_relation_creation feature flag is disabled3268 does not log top-level relation creation3269 using ndjson reader3270 behaves like import project successfully3271 imported project3272 has the project attributes and relations3273 when inside a group3274 behaves like import project successfully3275 imported project3276 has the project attributes and relations3277 with invalid relations3278 logs the invalid relation and its errors3279 when restoring a group3280 restores group tree3281 when log_import_export_relation_creation feature flag is enabled3282 logs top-level relation creation3283 when log_import_export_relation_creation feature flag is disabled3284 does not log top-level relation creation3285Operations::FeatureFlags::Strategy3286 validations3287 is expected to validate that :name is either ‹"default"›, ‹"gradualRolloutUserId"›, ‹"flexibleRollout"›, ‹"userWithId"›, or ‹"gitlabUserList"›, producing a custom validation error on failure3288 parameters3289 when the strategy name is invalid3290 invalid_name: nil3291 skips parameters validation3292 invalid_name: {}3293 skips parameters validation3294 invalid_name: []3295 skips parameters validation3296 invalid_name: "nothing"3297 skips parameters validation3298 invalid_name: 33299 skips parameters validation3300 when the strategy name is gradualRolloutUserId3301 allows the parameters in any order3302 invalid_parameters: nil3303 must have valid parameters for the strategy3304 invalid_parameters: {}3305 must have valid parameters for the strategy3306 invalid_parameters: {:percentage=>"40", :groupId=>"mygroup", :userIds=>"4"}3307 must have valid parameters for the strategy3308 invalid_parameters: {:percentage=>"40"}3309 must have valid parameters for the strategy3310 invalid_parameters: {:percentage=>"40", :groupId=>"mygroup", :extra=>nil}3311 must have valid parameters for the strategy3312 invalid_parameters: {:groupId=>"mygroup"}3313 must have valid parameters for the strategy3314 percentage3315 invalid_value: 503316 must be a string value between 0 and 100 inclusive and without a percentage sign3317 invalid_value: 40.03318 must be a string value between 0 and 100 inclusive and without a percentage sign3319 invalid_value: {:key=>"value"}3320 must be a string value between 0 and 100 inclusive and without a percentage sign3321 invalid_value: "garbage"3322 must be a string value between 0 and 100 inclusive and without a percentage sign3323 invalid_value: "101"3324 must be a string value between 0 and 100 inclusive and without a percentage sign3325 invalid_value: "-1"3326 must be a string value between 0 and 100 inclusive and without a percentage sign3327 invalid_value: "-10"3328 must be a string value between 0 and 100 inclusive and without a percentage sign3329 invalid_value: "1000"3330 must be a string value between 0 and 100 inclusive and without a percentage sign3331 invalid_value: "10.0"3332 must be a string value between 0 and 100 inclusive and without a percentage sign3333 invalid_value: "5%"3334 must be a string value between 0 and 100 inclusive and without a percentage sign3335 invalid_value: "25%"3336 must be a string value between 0 and 100 inclusive and without a percentage sign3337 invalid_value: "100hi"3338 must be a string value between 0 and 100 inclusive and without a percentage sign3339 invalid_value: "e100"3340 must be a string value between 0 and 100 inclusive and without a percentage sign3341 invalid_value: "30m"3342 must be a string value between 0 and 100 inclusive and without a percentage sign3343 invalid_value: " "3344 must be a string value between 0 and 100 inclusive and without a percentage sign3345 invalid_value: "\r\n"3346 must be a string value between 0 and 100 inclusive and without a percentage sign3347 invalid_value: "\n"3348 must be a string value between 0 and 100 inclusive and without a percentage sign3349 invalid_value: "\t"3350 must be a string value between 0 and 100 inclusive and without a percentage sign3351 invalid_value: "\n10"3352 must be a string value between 0 and 100 inclusive and without a percentage sign3353 invalid_value: "20\n"3354 must be a string value between 0 and 100 inclusive and without a percentage sign3355 invalid_value: "\n100"3356 must be a string value between 0 and 100 inclusive and without a percentage sign3357 invalid_value: "100\n"3358 must be a string value between 0 and 100 inclusive and without a percentage sign3359 invalid_value: "\n "3360 must be a string value between 0 and 100 inclusive and without a percentage sign3361 invalid_value: nil3362 must be a string value between 0 and 100 inclusive and without a percentage sign3363 valid_value: "0"3364 must be a string value between 0 and 100 inclusive and without a percentage sign3365 valid_value: "1"3366 must be a string value between 0 and 100 inclusive and without a percentage sign3367 valid_value: "10"3368 must be a string value between 0 and 100 inclusive and without a percentage sign3369 valid_value: "38"3370 must be a string value between 0 and 100 inclusive and without a percentage sign3371 valid_value: "100"3372 must be a string value between 0 and 100 inclusive and without a percentage sign3373 valid_value: "93"3374 must be a string value between 0 and 100 inclusive and without a percentage sign3375 groupId3376 invalid_value: nil3377 must be a string value of up to 32 lowercase characters3378 invalid_value: 43379 must be a string value of up to 32 lowercase characters3380 invalid_value: 50.03381 must be a string value of up to 32 lowercase characters3382 invalid_value: {}3383 must be a string value of up to 32 lowercase characters3384 invalid_value: "spaces bad"3385 must be a string value of up to 32 lowercase characters3386 invalid_value: "bad$"3387 must be a string value of up to 32 lowercase characters3388 invalid_value: "%bad"3389 must be a string value of up to 32 lowercase characters3390 invalid_value: "<bad"3391 must be a string value of up to 32 lowercase characters3392 invalid_value: "bad>"3393 must be a string value of up to 32 lowercase characters3394 invalid_value: "!bad"3395 must be a string value of up to 32 lowercase characters3396 invalid_value: ".bad"3397 must be a string value of up to 32 lowercase characters3398 invalid_value: "Bad"3399 must be a string value of up to 32 lowercase characters3400 invalid_value: "bad1"3401 must be a string value of up to 32 lowercase characters3402 invalid_value: ""3403 must be a string value of up to 32 lowercase characters3404 invalid_value: " "3405 must be a string value of up to 32 lowercase characters3406 invalid_value: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"3407 must be a string value of up to 32 lowercase characters3408 invalid_value: "ba_d"3409 must be a string value of up to 32 lowercase characters3410 invalid_value: "ba\nd"3411 must be a string value of up to 32 lowercase characters3412 valid_value: "somegroup"3413 must be a string value of up to 32 lowercase characters3414 valid_value: "anothergroup"3415 must be a string value of up to 32 lowercase characters3416 valid_value: "okay"3417 must be a string value of up to 32 lowercase characters3418 valid_value: "g"3419 must be a string value of up to 32 lowercase characters3420 valid_value: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"3421 must be a string value of up to 32 lowercase characters3422 when the strategy name is flexibleRollout3423 allows the parameters in the order rollout, stickiness, groupId3424 allows the parameters in the order rollout, groupId, stickiness3425 allows the parameters in the order stickiness, rollout, groupId3426 allows the parameters in the order stickiness, groupId, rollout3427 allows the parameters in the order groupId, rollout, stickiness3428 allows the parameters in the order groupId, stickiness, rollout3429 invalid_parameters: nil3430 must have valid parameters for the strategy3431 invalid_parameters: {}3432 must have valid parameters for the strategy3433 invalid_parameters: {:rollout=>"40"}3434 must have valid parameters for the strategy3435 invalid_parameters: {:groupId=>"mygroup"}3436 must have valid parameters for the strategy3437 invalid_parameters: {:stickiness=>"default"}3438 must have valid parameters for the strategy3439 invalid_parameters: {:rollout=>"40", :groupId=>"mygroup"}3440 must have valid parameters for the strategy3441 invalid_parameters: {:rollout=>"40", :stickiness=>"default"}3442 must have valid parameters for the strategy3443 invalid_parameters: {:groupId=>"mygroup", :stickiness=>"default"}3444 must have valid parameters for the strategy3445 invalid_parameters: {:rollout=>"40", :groupId=>"mygroup", :stickiness=>"default", :userIds=>"4"}3446 must have valid parameters for the strategy3447 invalid_parameters: {:rollout=>"40", :groupId=>"mygroup", :stickiness=>"default", :extra=>nil}3448 must have valid parameters for the strategy3449 rollout3450 invalid_value: 503451 must be a string value between 0 and 100 inclusive and without a percentage sign3452 invalid_value: 40.03453 must be a string value between 0 and 100 inclusive and without a percentage sign3454 invalid_value: {:key=>"value"}3455 must be a string value between 0 and 100 inclusive and without a percentage sign3456 invalid_value: "garbage"3457 must be a string value between 0 and 100 inclusive and without a percentage sign3458 invalid_value: "101"3459 must be a string value between 0 and 100 inclusive and without a percentage sign3460 invalid_value: "-1"3461 must be a string value between 0 and 100 inclusive and without a percentage sign3462 invalid_value: " "3463 must be a string value between 0 and 100 inclusive and without a percentage sign3464 invalid_value: "-10"3465 must be a string value between 0 and 100 inclusive and without a percentage sign3466 invalid_value: "1000"3467 must be a string value between 0 and 100 inclusive and without a percentage sign3468 invalid_value: "10.0"3469 must be a string value between 0 and 100 inclusive and without a percentage sign3470 invalid_value: "5%"3471 must be a string value between 0 and 100 inclusive and without a percentage sign3472 invalid_value: "25%"3473 must be a string value between 0 and 100 inclusive and without a percentage sign3474 invalid_value: "100hi"3475 must be a string value between 0 and 100 inclusive and without a percentage sign3476 invalid_value: "e100"3477 must be a string value between 0 and 100 inclusive and without a percentage sign3478 invalid_value: "30m"3479 must be a string value between 0 and 100 inclusive and without a percentage sign3480 invalid_value: "\r\n"3481 must be a string value between 0 and 100 inclusive and without a percentage sign3482 invalid_value: "\n"3483 must be a string value between 0 and 100 inclusive and without a percentage sign3484 invalid_value: "\t"3485 must be a string value between 0 and 100 inclusive and without a percentage sign3486 invalid_value: "\n10"3487 must be a string value between 0 and 100 inclusive and without a percentage sign3488 invalid_value: "20\n"3489 must be a string value between 0 and 100 inclusive and without a percentage sign3490 invalid_value: "\n100"3491 must be a string value between 0 and 100 inclusive and without a percentage sign3492 invalid_value: "100\n"3493 must be a string value between 0 and 100 inclusive and without a percentage sign3494 invalid_value: "\n "3495 must be a string value between 0 and 100 inclusive and without a percentage sign3496 invalid_value: nil3497 must be a string value between 0 and 100 inclusive and without a percentage sign3498 valid_value: "0"3499 must be a string value between 0 and 100 inclusive and without a percentage sign3500 valid_value: "1"3501 must be a string value between 0 and 100 inclusive and without a percentage sign3502 valid_value: "10"3503 must be a string value between 0 and 100 inclusive and without a percentage sign3504 valid_value: "38"3505 must be a string value between 0 and 100 inclusive and without a percentage sign3506 valid_value: "100"3507 must be a string value between 0 and 100 inclusive and without a percentage sign3508 valid_value: "93"3509 must be a string value between 0 and 100 inclusive and without a percentage sign3510 groupId3511 invalid_value: nil3512 must be a string value of up to 32 lowercase characters3513 invalid_value: 43514 must be a string value of up to 32 lowercase characters3515 invalid_value: 50.03516 must be a string value of up to 32 lowercase characters3517 invalid_value: {}3518 must be a string value of up to 32 lowercase characters3519 invalid_value: "spaces bad"3520 must be a string value of up to 32 lowercase characters3521 invalid_value: "bad$"3522 must be a string value of up to 32 lowercase characters3523 invalid_value: "%bad"3524 must be a string value of up to 32 lowercase characters3525 invalid_value: "<bad"3526 must be a string value of up to 32 lowercase characters3527 invalid_value: "bad>"3528 must be a string value of up to 32 lowercase characters3529 invalid_value: "!bad"3530 must be a string value of up to 32 lowercase characters3531 invalid_value: ".bad"3532 must be a string value of up to 32 lowercase characters3533 invalid_value: "Bad"3534 must be a string value of up to 32 lowercase characters3535 invalid_value: "bad1"3536 must be a string value of up to 32 lowercase characters3537 invalid_value: ""3538 must be a string value of up to 32 lowercase characters3539 invalid_value: " "3540 must be a string value of up to 32 lowercase characters3541 invalid_value: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"3542 must be a string value of up to 32 lowercase characters3543 invalid_value: "ba_d"3544 must be a string value of up to 32 lowercase characters3545 invalid_value: "ba\nd"3546 must be a string value of up to 32 lowercase characters3547 valid_value: "somegroup"3548 must be a string value of up to 32 lowercase characters3549 valid_value: "anothergroup"3550 must be a string value of up to 32 lowercase characters3551 valid_value: "okay"3552 must be a string value of up to 32 lowercase characters3553 valid_value: "g"3554 must be a string value of up to 32 lowercase characters3555 valid_value: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"3556 must be a string value of up to 32 lowercase characters3557 stickiness3558 invalid_value: nil3559 must be a string representing a supported stickiness setting3560 invalid_value: " "3561 must be a string representing a supported stickiness setting3562 invalid_value: "DEFAULT"3563 must be a string representing a supported stickiness setting3564 invalid_value: "DEFAULT\n"3565 must be a string representing a supported stickiness setting3566 invalid_value: "UserId"3567 must be a string representing a supported stickiness setting3568 invalid_value: "USER"3569 must be a string representing a supported stickiness setting3570 invalid_value: "USERID "3571 must be a string representing a supported stickiness setting3572 valid_value: "default"3573 must be a string representing a supported stickiness setting3574 valid_value: "userId"3575 must be a string representing a supported stickiness setting3576 valid_value: "sessionId"3577 must be a string representing a supported stickiness setting3578 valid_value: "random"3579 must be a string representing a supported stickiness setting3580 when the strategy name is userWithId3581 invalid_parameters: nil3582 must have valid parameters for the strategy3583 invalid_parameters: {:userIds=>"sam", :percentage=>"40"}3584 must have valid parameters for the strategy3585 invalid_parameters: {:userIds=>"sam", :some=>"param"}3586 must have valid parameters for the strategy3587 invalid_parameters: {:percentage=>"40"}3588 must have valid parameters for the strategy3589 invalid_parameters: {}3590 must have valid parameters for the strategy3591 userIds3592 valid_value: ""3593 is valid with a string of comma separated values3594 valid_value: "sam"3595 is valid with a string of comma separated values3596 valid_value: "1"3597 is valid with a string of comma separated values3598 valid_value: "a"3599 is valid with a string of comma separated values3600 valid_value: "uuid-of-some-kind"3601 is valid with a string of comma separated values3602 valid_value: "sam,fred,tom,jane,joe,mike"3603 is valid with a string of comma separated values3604 valid_value: "gitlab@example.com"3605 is valid with a string of comma separated values3606 valid_value: "123,4"3607 is valid with a string of comma separated values3608 valid_value: "UPPER,Case,charActeRS"3609 is valid with a string of comma separated values3610 valid_value: "0"3611 is valid with a string of comma separated values3612 valid_value: "$valid$email#2345\#$%..{}+=-)?\\/@example.com"3613 is valid with a string of comma separated values3614 valid_value: "spaces allowed"3615 is valid with a string of comma separated values3616 valid_value: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"3617 is valid with a string of comma separated values3618 valid_value: "a,bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb,ccc"3619 is valid with a string of comma separated values3620 valid_value: "many spaces"3621 is valid with a string of comma separated values3622 invalid_value: 13623 is invalid3624 invalid_value: 2.53625 is invalid3626 invalid_value: {}3627 is invalid3628 invalid_value: []3629 is invalid3630 invalid_value: nil3631 is invalid3632 invalid_value: "123\n456"3633 is invalid3634 invalid_value: "1,2,3,12\t3"3635 is invalid3636 invalid_value: "\n"3637 is invalid3638 invalid_value: "\n\r"3639 is invalid3640 invalid_value: "joe\r,sam"3641 is invalid3642 invalid_value: "1,2,2"3643 is invalid3644 invalid_value: "1,,2"3645 is invalid3646 invalid_value: "1,2,,,,"3647 is invalid3648 invalid_value: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"3649 is invalid3650 invalid_value: "1, ,2"3651 is invalid3652 invalid_value: "tim, ,7"3653 is invalid3654 invalid_value: " "3655 is invalid3656 invalid_value: " "3657 is invalid3658 invalid_value: " ,1"3659 is invalid3660 invalid_value: "1, "3661 is invalid3662 invalid_value: " leading,1"3663 is invalid3664 invalid_value: "1,trailing "3665 is invalid3666 invalid_value: "1, both ,2"3667 is invalid3668 when the strategy name is default3669 must be empty3670 invalid_value: {:groupId=>"hi", :percentage=>"7"}3671 must be empty3672 invalid_value: ""3673 must be empty3674 invalid_value: "nothing"3675 must be empty3676 invalid_value: 73677 must be empty3678 invalid_value: nil3679 must be empty3680 invalid_value: []3681 must be empty3682 invalid_value: 2.53683 must be empty3684 when the strategy name is gitlabUserList3685 must be empty3686 invalid_value: {:groupId=>"default", :percentage=>"7"}3687 must be empty3688 invalid_value: ""3689 must be empty3690 invalid_value: "nothing"3691 must be empty3692 invalid_value: 73693 must be empty3694 invalid_value: nil3695 must be empty3696 invalid_value: []3697 must be empty3698 invalid_value: 2.53699 must be empty3700 invalid_value: {:userIds=>"user1"}3701 must be empty3702 associations3703 when name is gitlabUserList3704 is valid when associated with a user list3705 is invalid without a user list3706 is invalid when associated with a user list from another project3707 when name is default3708 is invalid when associated with a user list3709 is valid without a user list3710 when name is userWithId3711 is invalid when associated with a user list3712 is valid without a user list3713 when name is gradualRolloutUserId3714 is invalid when associated with a user list3715 is valid without a user list3716 when name is flexibleRollout3717 is invalid when associated with a user list3718 is valid without a user list3719VisibilityLevelHelper3720 visibility_icon_description3721 used with a Project3722 delegates projects to #project_visibility_icon_description3723 used with a ProjectPresenter3724 delegates projects to #project_visibility_icon_description3725 used with a Group3726 delegates groups to #group_visibility_icon_description3727 visibility_level_label3728 level_value: 0, level_name: "Private"3729 returns the name of the visibility level3730 level_value: 10, level_name: "Internal"3731 returns the name of the visibility level3732 level_value: 20, level_name: "Public"3733 returns the name of the visibility level3734 visibility_level_description3735 used with a Project3736 returns different project related descriptions depending on visibility level3737 used with a Group3738 returns different group related descriptions depending on visibility level3739 disallowed_visibility_level?3740 forks3741 disallows levels3742 non-forked project3743 disallows levels3744 group3745 disallows levels3746 sub-group3747 disallows levels3748 snippet3749 disallows levels3750 selected_visibility_level3751 requested_level: 20, max_allowed: 20, global_default_level: 20, restricted_levels: [], expected: 203752 provides correct visibility level for forked project3753 provides correct visibility level for project in group3754 requested_level: 20, max_allowed: 20, global_default_level: 20, restricted_levels: [20], expected: 103755 provides correct visibility level for forked project3756 provides correct visibility level for project in group3757 requested_level: 10, max_allowed: 20, global_default_level: 20, restricted_levels: [], expected: 103758 provides correct visibility level for forked project3759 provides correct visibility level for project in group3760 requested_level: 10, max_allowed: 0, global_default_level: 0, restricted_levels: [], expected: 03761 provides correct visibility level for forked project3762 provides correct visibility level for project in group3763 requested_level: 0, max_allowed: 20, global_default_level: 20, restricted_levels: [], expected: 03764 provides correct visibility level for forked project3765 provides correct visibility level for project in group3766 requested_level: 20, max_allowed: 0, global_default_level: 10, restricted_levels: [], expected: 03767 provides correct visibility level for forked project3768 provides correct visibility level for project in group3769 requested_level: 20, max_allowed: 10, global_default_level: 20, restricted_levels: [], expected: 103770 provides correct visibility level for forked project3771 provides correct visibility level for project in group3772 requested_level: 20, max_allowed: 0, global_default_level: 20, restricted_levels: [], expected: 03773 provides correct visibility level for forked project3774 provides correct visibility level for project in group3775 requested_level: 20, max_allowed: 10, global_default_level: 10, restricted_levels: [], expected: 103776 provides correct visibility level for forked project3777 provides correct visibility level for project in group3778 requested_level: 20, max_allowed: 20, global_default_level: 10, restricted_levels: [], expected: 203779 provides correct visibility level for forked project3780 provides correct visibility level for project in group3781 #available_visibility_levels3782 behaves like available visibility level3783 excludes disallowed visibility levels3784 restricted_visibility_levels: [], expected: [0, 10, 20]3785 is expected to eq [0, 10, 20]3786 restricted_visibility_levels: [0], expected: [10, 20]3787 is expected to eq [10, 20]3788 restricted_visibility_levels: [0, 10], expected: [20]3789 is expected to eq [20]3790 restricted_visibility_levels: [0, 20], expected: [10]3791 is expected to eq [10]3792 restricted_visibility_levels: [10], expected: [0, 20]3793 is expected to eq [0, 20]3794 restricted_visibility_levels: [10, 0], expected: [20]3795 is expected to eq [20]3796 restricted_visibility_levels: [10, 20], expected: [0]3797 is expected to eq [0]3798 restricted_visibility_levels: [20], expected: [0, 10]3799 is expected to eq [0, 10]3800 restricted_visibility_levels: [20, 0], expected: [10]3801 is expected to eq [10]3802 restricted_visibility_levels: [20, 10], expected: [0]3803 is expected to eq [0]3804 behaves like available visibility level3805 excludes disallowed visibility levels3806 restricted_visibility_levels: [], expected: [0, 10, 20]3807 is expected to eq [0, 10, 20]3808 restricted_visibility_levels: [0], expected: [10, 20]3809 is expected to eq [10, 20]3810 restricted_visibility_levels: [0, 10], expected: [20]3811 is expected to eq [20]3812 restricted_visibility_levels: [0, 20], expected: [10]3813 is expected to eq [10]3814 restricted_visibility_levels: [10], expected: [0, 20]3815 is expected to eq [0, 20]3816 restricted_visibility_levels: [10, 0], expected: [20]3817 is expected to eq [20]3818 restricted_visibility_levels: [10, 20], expected: [0]3819 is expected to eq [0]3820 restricted_visibility_levels: [20], expected: [0, 10]3821 is expected to eq [0, 10]3822 restricted_visibility_levels: [20, 0], expected: [10]3823 is expected to eq [10]3824 restricted_visibility_levels: [20, 10], expected: [0]3825 is expected to eq [0]3826 behaves like available visibility level3827 excludes disallowed visibility levels3828 restricted_visibility_levels: [], expected: [0, 10, 20]3829 is expected to eq [0, 10, 20]3830 restricted_visibility_levels: [0], expected: [10, 20]3831 is expected to eq [10, 20]3832 restricted_visibility_levels: [0, 10], expected: [20]3833 is expected to eq [20]3834 restricted_visibility_levels: [0, 20], expected: [10]3835 is expected to eq [10]3836 restricted_visibility_levels: [10], expected: [0, 20]3837 is expected to eq [0, 20]3838 restricted_visibility_levels: [10, 0], expected: [20]3839 is expected to eq [20]3840 restricted_visibility_levels: [10, 20], expected: [0]3841 is expected to eq [0]3842 restricted_visibility_levels: [20], expected: [0, 10]3843 is expected to eq [0, 10]3844 restricted_visibility_levels: [20, 0], expected: [10]3845 is expected to eq [10]3846 restricted_visibility_levels: [20, 10], expected: [0]3847 is expected to eq [0]3848 behaves like available visibility level3849 excludes disallowed visibility levels3850 restricted_visibility_levels: [], expected: [0, 10, 20]3851 is expected to eq [0, 10, 20]3852 restricted_visibility_levels: [0], expected: [10, 20]3853 is expected to eq [10, 20]3854 restricted_visibility_levels: [0, 10], expected: [20]3855 is expected to eq [20]3856 restricted_visibility_levels: [0, 20], expected: [10]3857 is expected to eq [10]3858 restricted_visibility_levels: [10], expected: [0, 20]3859 is expected to eq [0, 20]3860 restricted_visibility_levels: [10, 0], expected: [20]3861 is expected to eq [20]3862 restricted_visibility_levels: [10, 20], expected: [0]3863 is expected to eq [0]3864 restricted_visibility_levels: [20], expected: [0, 10]3865 is expected to eq [0, 10]3866 restricted_visibility_levels: [20, 0], expected: [10]3867 is expected to eq [10]3868 restricted_visibility_levels: [20, 10], expected: [0]3869 is expected to eq [0]3870 #snippets_selected_visibility_level3871 returns the selected visibility level3872 fallbacks using the lowest available visibility level when selected level isn't available3873 multiple_visibility_levels_restricted?3874 restricted_visibility_levels: [20], expected: false3875 is expected to eq false3876 restricted_visibility_levels: [20, 10], expected: true3877 is expected to eq true3878 restricted_visibility_levels: [20, 10, 0], expected: true3879 is expected to eq true3880 all_visibility_levels_restricted?3881 restricted_visibility_levels: [20], expected: false3882 is expected to eq false3883 restricted_visibility_levels: [20, 10], expected: false3884 is expected to eq false3885 restricted_visibility_levels: [0, 10, 20], expected: true3886 is expected to eq true3887 #visibility_level_options3888 returns the desired mapping3889Integrations::Slack3890 behaves like Integrations::SlackMattermostNotifier3891 Associations3892 is expected to belong to project required:3893 is expected to have one service_hook3894 Validations3895 when service is active3896 is expected to validate that :webhook cannot be empty/falsy3897 behaves like issue tracker integration URL attribute3898 is expected to allow :webhook to be ‹"https://example.com"›3899 is expected not to allow :webhook to be ‹"example.com"›3900 is expected not to allow :webhook to be ‹"ftp://example.com"›3901 is expected not to allow :webhook to be ‹"herp-and-derp"›3902 when service is inactive3903 is expected not to validate that :webhook cannot be empty/falsy3904 #execute3905 with username for slack configured3906 uses the username as an option3907 push events3908 behaves like calls the service API with the event message3909 is expected to request POST https://8.8.8.9/ 1 time3910 with event channel3911 uses the right channel for push event3912 tag_push events3913 behaves like calls the service API with the event message3914 is expected to request POST https://8.8.8.9/ 1 time3915 issue events3916 behaves like calls the service API with the event message3917 is expected to request POST https://8.8.8.9/ 1 time3918 whith event channel3919 uses the right channel for issue event3920 for confidential issues3921 falls back to issue channel3922 and confidential_issue_channel is defined3923 uses the confidential issue channel when it is defined3924 merge request events3925 behaves like calls the service API with the event message3926 is expected to request POST https://8.8.8.9/ 1 time3927 with event channel3928 uses the right channel for merge request event3929 wiki page events3930 behaves like calls the service API with the event message3931 is expected to request POST https://8.8.8.9/ 1 time3932 with event channel3933 uses the right channel for wiki event3934 deployment events3935 behaves like calls the service API with the event message3936 is expected to request POST https://8.8.8.9/ 1 time3937 note event3938 behaves like calls the service API with the event message3939 is expected to request POST https://8.8.8.9/ 1 time3940 with event channel3941 uses the right channel3942 for confidential notes3943 falls back to note channel3944 and confidential_note_channel is defined3945 uses confidential channel3946 Push events3947 on default branch3948 pushing tags3949 behaves like triggered Slack service3950 notifies about push events3951 notification enabled only for default branch3952 behaves like triggered Slack service3953 notifies about push events3954 notification enabled only for protected branches3955 behaves like untriggered Slack service3956 notifies about push events3957 notification enabled only for default and protected branches3958 behaves like triggered Slack service3959 notifies about push events3960 notification enabled for all branches3961 behaves like triggered Slack service3962 notifies about push events3963 on a protected branch3964 pushing tags3965 behaves like triggered Slack service3966 notifies about push events3967 notification enabled only for default branch3968 behaves like untriggered Slack service3969 notifies about push events3970 notification enabled only for protected branches3971 behaves like triggered Slack service3972 notifies about push events3973 notification enabled only for default and protected branches3974 behaves like triggered Slack service3975 notifies about push events3976 notification enabled for all branches3977 behaves like triggered Slack service3978 notifies about push events3979 on a protected branch with protected branches defined using wildcards3980 pushing tags3981 behaves like triggered Slack service3982 notifies about push events3983 notification enabled only for default branch3984 behaves like untriggered Slack service3985 notifies about push events3986 notification enabled only for protected branches3987 behaves like triggered Slack service3988 notifies about push events3989 notification enabled only for default and protected branches3990 behaves like triggered Slack service3991 notifies about push events3992 notification enabled for all branches3993 behaves like triggered Slack service3994 notifies about push events3995 on a neither protected nor default branch3996 pushing tags3997 behaves like triggered Slack service3998 notifies about push events3999 notification enabled only for default branch4000 behaves like untriggered Slack service4001 notifies about push events4002 notification enabled only for protected branches4003 behaves like untriggered Slack service4004 notifies about push events4005 notification enabled only for default and protected branches4006 behaves like untriggered Slack service4007 notifies about push events4008 notification enabled for all branches4009 behaves like triggered Slack service4010 notifies about push events4011 Note events4012 when commit comment event executed4013 behaves like triggered Slack service4014 notifies about commit comment events4015 when merge request comment event executed4016 behaves like triggered Slack service4017 notifies about merge request comment events4018 when issue comment event executed4019 behaves like triggered Slack service4020 notifies about issue comment events4021 when snippet comment event executed4022 behaves like triggered Slack service4023 notifies about snippet comment events4024 Pipeline events4025 with succeeded pipeline4026 with default to notify_only_broken_pipelines4027 behaves like untriggered Slack service4028 notifies about pipeline events4029 with setting notify_only_broken_pipelines to false4030 behaves like triggered Slack service4031 notifies about pipeline events4032 with failed pipeline4033 on default branch4034 notification enabled only for default branch4035 behaves like triggered Slack service4036 notifies about pipeline events4037 notification enabled only for protected branches4038 behaves like untriggered Slack service4039 notifies about pipeline events4040 notification enabled only for default and protected branches4041 behaves like triggered Slack service4042 notifies about pipeline events4043 notification enabled for all branches4044 behaves like triggered Slack service4045 notifies about pipeline events4046 on a protected branch4047 notification enabled only for default branch4048 behaves like untriggered Slack service4049 notifies about pipeline events4050 notification enabled only for protected branches4051 behaves like triggered Slack service4052 notifies about pipeline events4053 notification enabled only for default and protected branches4054 behaves like triggered Slack service4055 notifies about pipeline events4056 notification enabled for all branches4057 behaves like triggered Slack service4058 notifies about pipeline events4059 on a protected branch with protected branches defined usin wildcards4060 notification enabled only for default branch4061 behaves like untriggered Slack service4062 notifies about pipeline events4063 notification enabled only for protected branches4064 behaves like triggered Slack service4065 notifies about pipeline events4066 notification enabled only for default and protected branches4067 behaves like triggered Slack service4068 notifies about pipeline events4069 notification enabled for all branches4070 behaves like triggered Slack service4071 notifies about pipeline events4072 on a neither protected nor default branch4073 notification enabled only for default branch4074 behaves like untriggered Slack service4075 notifies about pipeline events4076 notification enabled only for protected branches4077 behaves like untriggered Slack service4078 notifies about pipeline events4079 notification enabled only for default and protected branches4080 behaves like untriggered Slack service4081 notifies about pipeline events4082 notification enabled for all branches4083 behaves like triggered Slack service4084 notifies about pipeline events4085 #execute4086 uses only known events4087 hook data includes a user object4088 event is not supported for usage log4089 does not increase the usage data counter4090 issue notification4091 behaves like increases the usage data counter4092 increases the usage data counter4093 push notification4094 behaves like increases the usage data counter4095 increases the usage data counter4096 deployment notification4097 behaves like increases the usage data counter4098 increases the usage data counter4099 wiki_page notification4100 behaves like increases the usage data counter4101 increases the usage data counter4102 merge_request notification4103 behaves like increases the usage data counter4104 increases the usage data counter4105 note notification4106 behaves like increases the usage data counter4107 increases the usage data counter4108 tag_push notification4109 behaves like increases the usage data counter4110 increases the usage data counter4111 confidential note notification4112 behaves like increases the usage data counter4113 increases the usage data counter4114 confidential issue notification4115 behaves like increases the usage data counter4116 increases the usage data counter4117 hook data does not include a user4118 does not increase the usage data counter4119Integration4120 Associations4121 is expected to belong to project required: inverse_of => integrations4122 is expected to belong to group required: inverse_of => integrations4123 is expected to have one service_hook inverse_of => integration4124 is expected to have one issue_tracker_data class_name => Integrations::IssueTrackerData inverse_of => integration4125 is expected to have one jira_tracker_data class_name => Integrations::JiraTrackerData inverse_of => integration4126 validations4127 is expected to validate that :type cannot be empty/falsy4128 is expected to validate that :type is neither ‹"Integrations::BaseChatNotification"›, ‹"Integrations::BaseCi"›, ‹"Integrations::BaseIssueTracker"›, ‹"Integrations::BaseMonitoring"›, nor ‹"Integrations::BaseSlashCommands"›4129 project_id: 1, group_id: nil, instance: false, valid: true4130 validates the service4131 project_id: nil, group_id: 1, instance: false, valid: true4132 validates the service4133 project_id: nil, group_id: nil, instance: true, valid: true4134 validates the service4135 project_id: nil, group_id: nil, instance: false, valid: false4136 validates the service4137 project_id: 1, group_id: 1, instance: false, valid: false4138 validates the service4139 project_id: 1, group_id: nil, instance: false, valid: true4140 validates the service4141 project_id: 1, group_id: nil, instance: true, valid: false4142 validates the service4143 project_id: nil, group_id: 1, instance: false, valid: true4144 validates the service4145 project_id: nil, group_id: 1, instance: true, valid: false4146 validates the service4147 with existing services4148 allows only one instance service per type4149 allows only one project service per type4150 allows only one group service per type4151 Scopes4152 .with_default_settings4153 returns the correct integrations4154 .with_custom_settings4155 returns the correct integrations4156 .by_type4157 when type is "JiraService"4158 is expected to contain exactly #<Integrations::Jira id: 89, type: "JiraService", project_id: 443, created_at: "2021-10-26 21:33:28.8...inherit_from_id: nil, alert_events: true, group_id: nil, type_new: nil, vulnerability_events: false> and #<Integrations::Jira id: 90, type: "JiraService", project_id: 444, created_at: "2021-10-26 21:33:29.2...inherit_from_id: nil, alert_events: true, group_id: nil, type_new: nil, vulnerability_events: false>4159 when type is "RedmineService"4160 is expected to contain exactly #<Integrations::Redmine id: 94, type: "RedmineService", project_id: 448, created_at: "2021-10-26 21:3...inherit_from_id: nil, alert_events: true, group_id: nil, type_new: nil, vulnerability_events: false>4161 .for_group4162 returns the right group service4163 .confidential_note_hooks4164 includes services where confidential_note_events is true4165 excludes services where confidential_note_events is false4166 .alert_hooks4167 includes services where alert_events is true4168 excludes services where alert_events is false4169 #operating?4170 is false when the service is not active4171 is false when the service is not persisted4172 is true when the service is active and persisted4173 #testable?4174 when integration is project-level4175 is expected to be testable4176 when integration is not project-level4177 is expected not to be testable4178 #test4179 calls #execute4180 returns a result4181 #project_level?4182 is true when service has a project4183 is false when service has no project4184 #group_level?4185 is true when service has a group4186 is false when service has no group4187 #instance_level?4188 is true when service has instance-level integration4189 is false when service does not have instance-level integration4190 .find_or_initialize_non_project_specific_integration4191 returns the right integration4192 does not create a new integration4193 .find_or_initialize_all_non_project_specific4194 behaves like service instances4195 returns the available service instances4196 does not create service instances4197 with all existing instances4198 behaves like service instances4199 returns the available service instances4200 does not create service instances4201 with a previous existing service (MockCiService) and a new service (Asana)4202 behaves like service instances4203 returns the available service instances4204 does not create service instances4205 with a few existing instances4206 behaves like service instances4207 returns the available service instances4208 does not create service instances4209 .build_from_integration4210 when integration is invalid4211 sets integration to inactive4212 when integration is an instance-level integration4213 sets inherit_from_id from integration4214 when integration is a group-level integration4215 sets inherit_from_id from integration4216 build issue tracker from an integration4217 when data is stored in properties4218 behaves like service creation from an integration4219 creates a correct service for a project integration4220 creates a correct service for a group integration4221 when data are stored in separated fields4222 behaves like service creation from an integration4223 creates a correct service for a project integration4224 creates a correct service for a group integration4225 when data are stored in both properties and separated fields4226 behaves like service creation from an integration4227 creates a correct service for a project integration4228 creates a correct service for a group integration4229 .default_integration4230 with an instance-level integration4231 returns the instance integration4232 returns nil for nonexistent integration type4233 with a group integration4234 returns the group integration for a project4235 returns the instance integration for a group4236 with a subgroup4237 returns the closest group integration for a project4238 returns the closest group integration for a subgroup4239 having a integration with custom settings4240 returns the closest group integration for a project4241 having a integration inheriting settings4242 returns the closest group integration which does not inherit from its parent for a project4243 .create_from_active_default_integrations4244 with an active instance-level integration4245 creates an integration from the instance-level integration4246 passing a group4247 creates an integration from the instance-level integration4248 with an active group-level integration4249 creates an integration from the group-level integration4250 passing a group4251 creates an integration from the group-level integration4252 with an active subgroup4253 creates an integration from the subgroup-level integration4254 passing a group4255 traversal queries4256 recursive4257 creates an integration from the subgroup-level integration4258 having an integration inheriting settings4259 creates an integration from the group-level integration4260 linear4261 creates an integration from the subgroup-level integration4262 having an integration inheriting settings4263 creates an integration from the group-level integration4264 .inherited_descendants_from_self_or_ancestors_from4265 returns the groups and projects inheriting from integration ancestors4266 .integration_name_to_model4267 returns the model for the given service name4268 raises an error if service name is invalid4269 {property}_changed?4270 returns false when the property has not been assigned a new value4271 returns true when the property has been assigned a different value4272 returns true when the property has been assigned a different value twice4273 returns false when the property has been re-assigned the same value4274 returns false when the property has been assigned a new value then saved4275 {property}_touched?4276 returns false when the property has not been assigned a new value4277 returns true when the property has been assigned a different value4278 returns true when the property has been assigned a different value twice4279 returns true when the property has been re-assigned the same value4280 returns false when the property has been assigned a new value then saved4281 {property}_was4282 returns nil when the property has not been assigned a new value4283 returns the previous value when the property has been assigned a different value4284 returns initial value when the property has been re-assigned the same value4285 returns initial value when the property has been assigned multiple values4286 returns nil when the property has been assigned a new value then saved4287 initialize service with no properties4288 does not raise error4289 sets data correctly4290 #api_field_names4291 filters out sensitive fields4292 logging4293 logs info messages using json logger4294 logs error messages using json logger4295 when project is nil4296 logs info messages using json logger4297 .available_integration_names4298 calls the right methods4299 does not call project_specific_integration_names with include_project_specific false4300 does not call dev_integration_names with include_dev false4301 is expected to include "jenkins"4302 .project_specific_integration_names4303 is expected to include "jenkins"4304 #password_fields4305 returns all fields with type `password`4306 returns an empty array if no password fields exist4307Projects::UpdateService4308 #execute4309 when changing visibility level4310 when visibility_level changes to INTERNAL4311 updates the project to internal4312 when visibility_level changes to PUBLIC4313 updates the project to public4314 and project is PRIVATE4315 does not unlink project from fork network4316 when visibility_level changes to PRIVATE4317 updates the project to private4318 when visibility levels are restricted to PUBLIC only4319 when visibility_level is INTERNAL4320 updates the project to internal4321 when visibility_level is PUBLIC4322 does not update the project to public4323 when updated by an admin4324 when admin mode is enabled4325 updates the project to public4326 when admin mode is disabled4327 does not update the project to public4328 when project visibility is higher than parent group4329 does not update project visibility level even if admin4330 when updating shared runners4331 can enable shared runners4332 enables shared runners4333 cannot enable shared runners4334 does not enable shared runners4335 when updating project that has forks4336 and unlink forks feature flag is off4337 updates forks visibility level when parent set to more restrictive4338 does not update forks visibility level when parent set to less restrictive4339 and unlink forks feature flag is on4340 does not change visibility of forks4341 when updating a default branch4342 changes default branch, tracking the previous branch4343 does not change a default branch4344 when we update project but not enabling a wiki4345 does not try to create an empty wiki4346 handles empty project feature attributes4347 when enabling a wiki4348 creates a wiki4349 logs an error and creates a metric when wiki can not be created4350 when changing feature visibility to private4351 updates the visibility correctly4352 when updating a project that contains container images4353 does not allow to rename the project4354 allows to update other settings4355 when renaming a project4356 with legacy storage4357 does not allow renaming when new path matches existing repository on disk4358 when hashed storage is enabled4359 migrates project to a hashed storage instead of renaming the repo to another legacy name4360 with hashed storage4361 does not check if new path matches existing repository on disk4362 when passing invalid parameters4363 returns an error result when record cannot be updated4364 when updating #pages_https_only4365 updates the attribute4366 behaves like updating pages configuration4367 schedules the `PagesUpdateConfigurationWorker` when pages are deployed4368 does not schedule a job when pages aren't deployed4369 when updating #pages_access_level4370 updates the attribute4371 behaves like updating pages configuration4372 schedules the `PagesUpdateConfigurationWorker` when pages are deployed4373 does not schedule a job when pages aren't deployed4374 when updating #emails_disabled4375 updates the attribute for the project owner4376 does not update when not project owner4377 when updating runners settings4378 when project has shared runners enabled4379 updates builds queue when shared runners get disabled4380 when project has shared runners disabled4381 updates builds queue when shared runners get enabled4382 when project has group runners enabled4383 updates builds queue when group runners get disabled4384 when project has group runners disabled4385 updates builds queue when group runners get enabled4386 with external authorization enabled4387 does not save the project with an error if the service denies access4388 saves the new label if the service allows access4389 checks the default label when the classification label was cleared4390 does not check the label when it does not change4391 when updating nested attributes for prometheus integration4392 prometheus integration exists4393 updates existing record4394 prometheus integration does not exist4395 valid parameters4396 creates new record4397 invalid parameters4398 does not create new record4399 when changing repository_storage4400 authenticated as admin4401 when admin mode is enabled4402 schedules the transfer of the repository to the new storage and locks the project4403 when admin mode is disabled4404 behaves like the transfer was not scheduled4405 does not schedule the transfer4406 the repository is read-only4407 behaves like the transfer was not scheduled4408 does not schedule the transfer4409 the storage has not changed4410 behaves like the transfer was not scheduled4411 does not schedule the transfer4412 the storage does not exist4413 behaves like the transfer was not scheduled4414 does not schedule the transfer4415 authenticated as user4416 behaves like the transfer was not scheduled4417 does not schedule the transfer4418 when updating topics4419 update using topics4420 update using topic_list4421 update using tag_list (deprecated)4422 #run_auto_devops_pipeline?4423 when master contains a .gitlab-ci.yml file4424 is expected to eq false4425 when auto devops is nil4426 is expected to eq false4427 when auto devops is explicitly enabled4428 is expected to eq true4429 when auto devops is explicitly disabled4430 is expected to eq false4431 when auto devops is set to instance setting4432 when auto devops is enabled system-wide4433 is expected to eq true4434 when auto devops is disabled system-wide4435 is expected to eq false4436AutoMerge::BaseService4437 #execute4438 sets properies to the merge request4439 yields block4440 returns activated strategy name4441 when merge parameters are given4442 sets merge parameters4443 when strategy is merge when pipeline succeeds4444 sets the auto merge strategy4445 returns activated strategy name4446 calls AutoMergeProcessWorker4447 when failed to save merge request4448 does not yield block4449 returns failed4450 tracks the exception4451 when exception happens in yield block4452 returns failed status4453 rollback the transaction4454 tracks the exception4455 #update4456 when merge params are specified4457 updates merge params4458 #cancel4459 behaves like Canceled or Dropped4460 removes properies from the merge request4461 yields block4462 returns success status4463 when merge params are set4464 removes merge parameters4465 when failed to save4466 does not yield block4467 when failed to save merge request4468 returns error status4469 when exception happens in yield block4470 returns error4471 rollback the transaction4472 tracks the exception4473 #abort4474 behaves like Canceled or Dropped4475 removes properies from the merge request4476 yields block4477 returns success status4478 when merge params are set4479 removes merge parameters4480 when failed to save4481 does not yield block4482 when failed to save4483 returns error status4484 when exception happens in yield block4485 returns error4486 rollback the transaction4487 tracks the exception4488ReleasesFinder4489 when parent is a project4490 behaves like when the user is not part of the project4491 returns no releases4492 when the user is a project developer4493 sorts by release date4494 with sorting parameters4495 by default is released_at in descending order4496 is expected to eq [#<Release id: 11, tag: "v1.1.0", description: [FILTERED], project_id: 604, created_at: "2021-10-23 2...ha: "b83d6e391c22777fca1ed3012fce84f633d7fed0", released_at: "2021-10-24 21:35:13.808351371 +0000">]4497 released_at in ascending order4498 is expected to eq [#<Release id: 12, tag: "v1.0.0", description: [FILTERED], project_id: 605, created_at: "2021-10-26 2...ha: "b83d6e391c22777fca1ed3012fce84f633d7fed0", released_at: "2021-10-25 21:35:15.083340960 +0000">]4499 order by created_at in descending order4500 is expected to eq [#<Release id: 14, tag: "v1.0.0", description: [FILTERED], project_id: 606, created_at: "2021-10-26 2...ha: "b83d6e391c22777fca1ed3012fce84f633d7fed0", released_at: "2021-10-25 21:35:16.440900791 +0000">]4501 order by created_at in ascending order4502 is expected to eq [#<Release id: 17, tag: "v1.1.0", description: [FILTERED], project_id: 607, created_at: "2021-10-23 2...ha: "b83d6e391c22777fca1ed3012fce84f633d7fed0", released_at: "2021-10-24 21:35:17.309316716 +0000">]4503 behaves like preload4504 preloads associations4505 when preload is false4506 does not preload associations4507 behaves like when tag is nil4508 ignores rows with a nil tag4509 behaves like when a tag parameter is passed4510 only returns the release with the matching tag4511 when parent is a group4512 without subgroups4513 behaves like when the user is not part of the project4514 returns no releases4515 when the user is a project developer on one sibling project4516 sorts by release date4517 when the user is a project developer on all projects4518 sorts by release date4519 behaves like when a tag parameter is passed4520 only returns the release with the matching tag4521 with subgroups4522 with a single-level subgroup4523 behaves like when the user is not part of the project4524 returns no releases4525 when the user a project developer in the subgroup project4526 returns only the subgroup releases4527 when the user a project developer in both projects4528 returns all releases4529 behaves like when a tag parameter is passed4530 only returns the release with the matching tag4531 with a multi-level subgroup4532 behaves like when the user is not part of the project4533 returns no releases4534 when the user a project developer in the subgroup and subsubgroup project4535 returns only the subgroup and subsubgroup releases4536 when the user a project developer in the subsubgroup project4537 returns only the subsubgroup releases4538 when the user a project developer in all projects4539 returns all releases4540 behaves like when a tag parameter is passed4541 only returns the release with the matching tag4542Gitlab::Ci::Config4543 when config is valid4544 #to_hash4545 returns hash created from string4546 #valid?4547 is valid4548 has no errors4549 #stages4550 with default stages4551 is expected to eq [".pre", "build", "test", "deploy", ".post"]4552 with custom stages4553 is expected to eq [".pre", "stage1", "stage2", ".post"]4554 #included_templates4555 is expected to contain exactly "Jobs/Deploy.gitlab-ci.yml" and "Jobs/Build.gitlab-ci.yml"4556 when using extendable hash4557 correctly extends the hash4558 when config is invalid4559 when yml is incorrect4560 .new4561 raises error4562 when yml is too big4563 .new4564 raises error4565 when config logic is incorrect4566 #valid?4567 is not valid4568 has errors4569 #errors4570 returns an array of strings4571 when invalid extended hash has been provided4572 raises an error4573 when ports have been set4574 in the main image4575 raises an error4576 in the job image4577 raises an error4578 in the services4579 raises an error4580 when yaml uses circular !reference4581 raises error4582 when using 'include' directive4583 when gitlab_ci_yml has valid 'include' defined4584 returns a composed hash4585 handling variables4586 contains all project variables4587 contains all group variables4588 contains all instance variables4589 overriding a group variable at project level4590 successfully overrides4591 when gitlab_ci.yml has invalid 'include' defined4592 raises ConfigError4593 when gitlab_ci.yml has ambigious 'include' defined4594 raises ConfigError4595 when it takes too long to evaluate includes4596 raises error TimeoutError4597 external file version4598 when external local file SHA is defined4599 is using a defined value4600 when external local file SHA is not defined4601 is using latest SHA on the default branch4602 when both external files and gitlab_ci.yml defined the same key4603 takes precedence4604 when both external files and gitlab_ci.yml define a dictionary of distinct variables4605 merges the variables dictionaries4606 when both external files and gitlab_ci.yml define a dictionary of overlapping variables4607 later declarations should take precedence4608 when both external files and gitlab_ci.yml define a job4609 merges the jobs4610 when the script key is in both4611 uses the script from the gitlab_ci.yml4612 when including file from artifact4613 disallows the use in parent pipelines4614 when used in the context of a child pipeline4615 returns valid config4616 when job key is missing4617 raises an error4618 when artifact key is missing4619 raises an error4620 when including multiple files from a project4621 returns a composed hash4622 when an 'include' has rules4623 when the rules condition is satisfied4624 includes the file4625 when the rules condition is satisfied4626 does not include the file4627Gitlab::BitbucketServerImport::Importer4628 #import_repository4629 adds a remote4630 raises a Gitlab::Shell exception in the fetch4631 raises an unhandled exception in the fetch4632 #import_pull_requests4633 imports merge event4634 falls back to comments if diff comments fail to validate4635 reports an error if an exception is raised4636 pull request author user mapping4637 when bitbucket_server_user_mapping_by_username feature flag is disabled4638 when email is not present4639 maps user4640 when email is present4641 maps user4642 when bitbucket_server_user_mapping_by_username feature flag is enabled4643 when username is not present4644 maps user4645 when username is present4646 maps user4647 when user is not found4648 maps importer user4649 comments4650 when bitbucket_server_user_mapping_by_username feature flag is disabled4651 imports comments4652 when bitbucket_server_user_mapping_by_username feature flag is enabled4653 imports comments4654 when username is not present4655 defaults to import user4656 when username is present4657 maps by username4658 metrics4659 counts and measures duration of imported projects4660 counts imported pull requests4661 threaded discussions4662 when bitbucket_server_user_mapping_by_username feature flag is disabled4663 imports threaded discussions4664 when bitbucket_server_user_mapping_by_username feature flag is enabled4665 imports threaded discussions4666 when username is not present4667 defaults to import user4668 when user is not found4669 maps importer user4670 import pull requests with caching4671 only imports one Merge Request, as the other on is in the cache4672 inaccessible branches4673 #restore_branches4674 #delete_temp_branches4675 lfs files4676 downloads lfs objects if lfs_enabled is enabled for project4677 adds the error message when the lfs download fails4678AlertManagement::CreateAlertIssueService4679 #execute4680 when a user is allowed to create an issue4681 checks permissions4682 with alert severity4683 alert_severity: "critical", incident_severity: "critical"4684 sets the correct severity level4685 alert_severity: "high", incident_severity: "high"4686 sets the correct severity level4687 alert_severity: "medium", incident_severity: "medium"4688 sets the correct severity level4689 alert_severity: "low", incident_severity: "low"4690 sets the correct severity level4691 alert_severity: "info", incident_severity: "unknown"4692 sets the correct severity level4693 alert_severity: "unknown", incident_severity: "unknown"4694 sets the correct severity level4695 when the alert is prometheus alert4696 behaves like creating an alert issue4697 creates an issue4698 returns a created issue4699 has a successful status4700 updates alert.issue_id4701 creates a system note4702 behaves like setting an issue attributes4703 sets issue author to the current user4704 sets the issue title4705 sets the issue description4706 when the alert is generic4707 behaves like creating an alert issue4708 creates an issue4709 returns a created issue4710 has a successful status4711 updates alert.issue_id4712 creates a system note4713 behaves like setting an issue attributes4714 sets issue author to the current user4715 sets the issue title4716 sets the issue description4717 when alert title matches the default title exactly4718 updates issue title with the IID4719 when the alert title contains the default title4720 does not change issue title4721 when issue cannot be created4722 has an unsuccessful status4723 when alert cannot be updated4724 responds with error4725 when alert already has an attached issue4726 does not create yet another issue4727 responds with error4728 when a user is not allowed to create an issue4729 checks permissions4730 responds with error4731Gitlab::ImportExport::MembersMapper4732 map members4733 when importable is Project4734 includes the exported user ID in the map4735 maps a member4736 defaults to importer member if it does not exist4737 has invited members with no user4738 removes old user_id from member_hash to avoid conflict with user key4739 adds users to project members4740 maps an owner as a maintainer4741 logging4742 logs member addition4743 when exporter member is invalid4744 logs member addition failure4745 user is not an admin4746 does not map a member4747 defaults to importer member if it does not exist4748 chooses the one with an email4749 maps the member that has a matching email4750 when user has email exported4751 maps a member4752 importer same as group member4753 maps the project member4754 maps the project member if it already exists4755 importing group members4756 maps the importer4757 maps the group member4758 when importer mapping fails4759 includes importer specific error message4760 when importable is Group4761 includes the exported user ID in the map4762 maps a member4763 defaults to importer member if it does not exist4764 has invited members with no user4765 removes old user_id from member_hash to avoid conflict with user key4766 does not lower owner access level4767 logging4768 logs member addition4769 when exporter member is invalid4770 logs member addition failure4771 user is not an admin4772 does not map a member4773 defaults to importer member if it does not exist4774 chooses the one with an email4775 maps the member that has a matching email4776 when user has email exported4777 maps a member4778Gitlab::UrlBlocker4779 #validate!4780 when URI is nil4781 behaves like validates URI and hostname4782 runs the url validations4783 when URI is internal4784 behaves like validates URI and hostname4785 runs the url validations4786 when the URL hostname is a domain4787 when domain can be resolved4788 behaves like validates URI and hostname4789 runs the url validations4790 when domain cannot be resolved4791 raises an error4792 when domain is too long4793 raises an error4794 when the URL hostname is an IP address4795 behaves like validates URI and hostname4796 runs the url validations4797 when the address is invalid4798 raises an error4799 DNS rebinding protection with IP allowed4800 behaves like validates URI and hostname4801 runs the url validations4802 disabled DNS rebinding protection4803 when URI is internal4804 behaves like validates URI and hostname4805 runs the url validations4806 when the URL hostname is a domain4807 when domain can be resolved4808 behaves like validates URI and hostname4809 runs the url validations4810 when domain cannot be resolved4811 behaves like validates URI and hostname4812 runs the url validations4813 when the URL hostname is an IP address4814 behaves like validates URI and hostname4815 runs the url validations4816 when it is invalid4817 behaves like validates URI and hostname4818 runs the url validations4819 #blocked_url?4820 allows imports from configured web host and port4821 allows mirroring from configured SSH host and port4822 returns true for bad localhost hostname4823 returns true for bad port4824 returns true for bad scheme4825 returns true for bad protocol on configured web/SSH host and ports4826 returns true for localhost IPs4827 returns true for loopback IP4828 returns true for alternative version of 127.0.0.1 (0177.1)4829 returns true for alternative version of 127.0.0.1 (017700000001)4830 returns true for alternative version of 127.0.0.1 (0x7f.1)4831 returns true for alternative version of 127.0.0.1 (0x7f.0.0.1)4832 returns true for alternative version of 127.0.0.1 (0x7f000001)4833 returns true for alternative version of 127.0.0.1 (2130706433)4834 returns true for alternative version of 127.0.0.1 (127.000.000.001)4835 returns true for alternative version of 127.0.0.1 (127.0.1)4836 returns true for a non-alphanumeric hostname4837 returns true for invalid URL4838 returns false for legitimate URL4839 blocks urls with invalid ip address4840 blocks urls whose hostname cannot be resolved4841 with ipv6 mapped address4842 returns true for localhost IPs4843 returns true for loopback IPs4844 when allow_local_network is4845 true (default)4846 behaves like allows local requests4847 does not block urls from private networks4848 allows localhost endpoints4849 allows loopback endpoints4850 allows IPv4 link-local endpoints4851 allows IPv6 link-local endpoints4852 false4853 blocks urls from private networks4854 blocks IPv4 link-local endpoints4855 blocks IPv6 link-local endpoints4856 when local domain/IP is allowed4857 with IPs in allowlist4858 allows IP when dns_rebind_protection is disabled4859 behaves like allows local requests4860 does not block urls from private networks4861 allows localhost endpoints4862 allows loopback endpoints4863 allows IPv4 link-local endpoints4864 allows IPv6 link-local endpoints4865 with domains in allowlist4866 allows domains present in allowlist4867 works with unicode and idna encoded domains4868 when the domain cannot be resolved4869 behaves like dns rebinding checks4870 when dns_rebinding_setting is4871 enabled4872 behaves like allowlists the domain4873 is expected not to be blocked url "http://foobar.x" and {:dns_rebind_protection=>true}4874 disabled4875 behaves like allowlists the domain4876 is expected not to be blocked url "http://foobar.x" and {:dns_rebind_protection=>false}4877 when the domain can be resolved4878 behaves like dns rebinding checks4879 when dns_rebinding_setting is4880 enabled4881 behaves like allowlists the domain4882 is expected not to be blocked url "http://example.com" and {:dns_rebind_protection=>true}4883 disabled4884 behaves like allowlists the domain4885 is expected not to be blocked url "http://example.com" and {:dns_rebind_protection=>false}4886 with ports4887 allows domain with port when resolved ip has port allowed4888 when enforce_user is4889 false (default)4890 does not block urls with a non-alphanumeric username4891 true4892 blocks urls with a non-alphanumeric username4893 when ascii_only is true4894 returns true for unicode domain4895 returns true for unicode tld4896 returns true for unicode path4897 returns true for IDNA deviations4898 #validate_hostname4899 does not raise error for valid Ip addresses4900Gitlab::Utils::Markdown4901 #string_to_anchor4902 converts string to anchor4903 when string has punctuation4904 removes punctuation4905 when string starts and ends with spaces4906 removes extra spaces4907 when string has multiple spaces and dashes in the middle4908 removes consecutive dashes4909 when string contains only digits4910 adds anchor prefix4911 when string has a product suffix4912 CORE4913 ignores a product suffix4914 with "*" around a product suffix4915 ignores a product suffix4916 CORE ONLY4917 ignores a product suffix4918 with "*" around a product suffix4919 ignores a product suffix4920 CORE SELF4921 ignores a product suffix4922 with "*" around a product suffix4923 ignores a product suffix4924 CORE SASS4925 ignores a product suffix4926 with "*" around a product suffix4927 ignores a product suffix4928 STARTER4929 ignores a product suffix4930 with "*" around a product suffix4931 ignores a product suffix4932 STARTER ONLY4933 ignores a product suffix4934 with "*" around a product suffix4935 ignores a product suffix4936 STARTER SELF4937 ignores a product suffix4938 with "*" around a product suffix4939 ignores a product suffix4940 STARTER SASS4941 ignores a product suffix4942 with "*" around a product suffix4943 ignores a product suffix4944 PREMIUM4945 ignores a product suffix4946 with "*" around a product suffix4947 ignores a product suffix4948 PREMIUM ONLY4949 ignores a product suffix4950 with "*" around a product suffix4951 ignores a product suffix4952 PREMIUM SELF4953 ignores a product suffix4954 with "*" around a product suffix4955 ignores a product suffix4956 PREMIUM SASS4957 ignores a product suffix4958 with "*" around a product suffix4959 ignores a product suffix4960 ULTIMATE4961 ignores a product suffix4962 with "*" around a product suffix4963 ignores a product suffix4964 ULTIMATE ONLY4965 ignores a product suffix4966 with "*" around a product suffix4967 ignores a product suffix4968 ULTIMATE SELF4969 ignores a product suffix4970 with "*" around a product suffix4971 ignores a product suffix4972 ULTIMATE SASS4973 ignores a product suffix4974 with "*" around a product suffix4975 ignores a product suffix4976 FREE4977 ignores a product suffix4978 with "*" around a product suffix4979 ignores a product suffix4980 FREE ONLY4981 ignores a product suffix4982 with "*" around a product suffix4983 ignores a product suffix4984 FREE SELF4985 ignores a product suffix4986 with "*" around a product suffix4987 ignores a product suffix4988 FREE SASS4989 ignores a product suffix4990 with "*" around a product suffix4991 ignores a product suffix4992 BRONZE4993 ignores a product suffix4994 with "*" around a product suffix4995 ignores a product suffix4996 BRONZE ONLY4997 ignores a product suffix4998 with "*" around a product suffix4999 ignores a product suffix5000 BRONZE SELF5001 ignores a product suffix5002 with "*" around a product suffix5003 ignores a product suffix5004 BRONZE SASS5005 ignores a product suffix5006 with "*" around a product suffix5007 ignores a product suffix5008 SILVER5009 ignores a product suffix5010 with "*" around a product suffix5011 ignores a product suffix5012 SILVER ONLY5013 ignores a product suffix5014 with "*" around a product suffix5015 ignores a product suffix5016 SILVER SELF5017 ignores a product suffix5018 with "*" around a product suffix5019 ignores a product suffix5020 SILVER SASS5021 ignores a product suffix5022 with "*" around a product suffix5023 ignores a product suffix5024 GOLD5025 ignores a product suffix5026 with "*" around a product suffix5027 ignores a product suffix5028 GOLD ONLY5029 ignores a product suffix5030 with "*" around a product suffix5031 ignores a product suffix5032 GOLD SELF5033 ignores a product suffix5034 with "*" around a product suffix5035 ignores a product suffix5036 GOLD SASS5037 ignores a product suffix5038 with "*" around a product suffix5039 ignores a product suffix5040 when string is empty5041 returns an empty string5042SearchService5043 #project5044 when the project is accessible5045 returns the project5046 returns the project for guests5047 when the project is not accessible5048 returns nil5049 when there is no project_id5050 returns nil5051 #group5052 when the group is accessible5053 returns the group5054 when the group is not accessible5055 returns nil5056 when there is no group_id5057 returns nil5058 #show_snippets?5059 when :snippets is 'true'5060 returns true5061 when :snippets is not 'true'5062 returns false5063 when :snippets is missing5064 returns false5065 #scope5066 with accessible project_id5067 and allowed scope5068 returns the specified scope5069 and disallowed scope5070 returns the default scope5071 and no scope5072 returns the default scope5073 with 'true' snippets5074 and allowed scope5075 returns the specified scope5076 and disallowed scope5077 returns the default scope5078 and no scope5079 returns the default scope5080 with no project_id, no snippets5081 and allowed scope5082 returns the specified scope5083 and disallowed scope5084 returns the default scope5085 and no scope5086 returns the default scope5087 #search_results5088 with accessible project_id5089 returns an instance of Gitlab::ProjectSearchResults5090 with accessible project_id and 'true' snippets5091 returns an instance of Gitlab::ProjectSearchResults5092 with 'true' snippets5093 returns an instance of Gitlab::SnippetSearchResults5094 with no project_id and no snippets5095 returns an instance of Gitlab::SearchResults5096 #search_objects5097 per_page: parameter5098 when nil5099 defaults to 205100 when empty string5101 defaults to 205102 when negative5103 defaults to 205104 when present5105 converts to integer and passes to search results5106 when greater than 2005107 passes 2005108 page: parameter5109 when < 15110 defaults to 15111 when nil5112 defaults to 15113 with accessible project_id5114 returns objects in the project5115 with accessible project_id and 'true' snippets5116 returns objects in the project5117 with 'true' snippets5118 returns objects in snippets5119 with accessible group_id5120 returns objects in the group5121 with no project_id, group_id or snippets5122 returns objects in global5123 redacting search results5124 issues5125 redacts the inaccessible issue5126 notes5127 redacts the inaccessible note5128 merge_requests5129 redacts the inaccessible merge request5130 with :with_api_entity_associations5131 behaves like redaction limits N+1 queries5132 does not exceed the query limit5133 project repository blobs5134 redacts the inaccessible blob5135 project wiki blobs5136 redacts the inaccessible blob5137 project snippets5138 redacts the inaccessible snippet5139 with :with_api_entity_associations5140 behaves like redaction limits N+1 queries5141 does not exceed the query limit5142 personal snippets5143 redacts the inaccessible snippet5144 with :with_api_entity_associations5145 behaves like redaction limits N+1 queries5146 does not exceed the query limit5147 commits5148 redacts the inaccessible commit5149 users5150 passes the users through5151Operations::FeatureFlags::UserList5152 validations5153 is expected to validate that :project cannot be empty/falsy5154 is expected to validate that :name cannot be empty/falsy5155 is expected to validate that :name is case-sensitively unique within the scope of :project_id5156 is expected to validate that the length of :name is between 1 and 2555157 user_xids5158 valid_value: ""5159 is valid with a string of comma separated values5160 valid_value: "sam"5161 is valid with a string of comma separated values5162 valid_value: "1"5163 is valid with a string of comma separated values5164 valid_value: "a"5165 is valid with a string of comma separated values5166 valid_value: "uuid-of-some-kind"5167 is valid with a string of comma separated values5168 valid_value: "sam,fred,tom,jane,joe,mike"5169 is valid with a string of comma separated values5170 valid_value: "gitlab@example.com"5171 is valid with a string of comma separated values5172 valid_value: "123,4"5173 is valid with a string of comma separated values5174 valid_value: "UPPER,Case,charActeRS"5175 is valid with a string of comma separated values5176 valid_value: "0"5177 is valid with a string of comma separated values5178 valid_value: "$valid$email#2345\#$%..{}+=-)?\\/@example.com"5179 is valid with a string of comma separated values5180 valid_value: "spaces allowed"5181 is valid with a string of comma separated values5182 valid_value: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"5183 is valid with a string of comma separated values5184 valid_value: "a,bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb,ccc"5185 is valid with a string of comma separated values5186 valid_value: "many spaces"5187 is valid with a string of comma separated values5188 typecast_value: 15189 automatically casts values of other types5190 typecast_value: 2.55191 automatically casts values of other types5192 typecast_value: {}5193 automatically casts values of other types5194 typecast_value: []5195 automatically casts values of other types5196 invalid_value: nil5197 is invalid5198 invalid_value: "123\n456"5199 is invalid5200 invalid_value: "1,2,3,12\t3"5201 is invalid5202 invalid_value: "\n"5203 is invalid5204 invalid_value: "\n\r"5205 is invalid5206 invalid_value: "joe\r,sam"5207 is invalid5208 invalid_value: "1,2,2"5209 is invalid5210 invalid_value: "1,,2"5211 is invalid5212 invalid_value: "1,2,,,,"5213 is invalid5214 invalid_value: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"5215 is invalid5216 invalid_value: "1, ,2"5217 is invalid5218 invalid_value: "tim, ,7"5219 is invalid5220 invalid_value: " "5221 is invalid5222 invalid_value: " "5223 is invalid5224 invalid_value: " ,1"5225 is invalid5226 invalid_value: "1, "5227 is invalid5228 invalid_value: " leading,1"5229 is invalid5230 invalid_value: "1,trailing "5231 is invalid5232 invalid_value: "1, both ,2"5233 is invalid5234 url_helpers5235 generates paths based on the internal id5236 #destroy5237 deletes the model if it is not associated with any feature flag strategies5238 does not delete the model if it is associated with a feature flag strategy5239 .for_name_like5240 returns a found name5241 returns an empty array when no lists match the query5242 behaves like AtomicInternalId5243 .has_internal_id5244 Module inclusion5245 is expected to includes the AtomicInternalId module5246 Validation5247 when presence validation is required5248 when creating an object5249 raises an error if the internal id is blank5250 when updating an object5251 raises an error if the internal id is blank5252 when presence validation is not required5253 when creating an object5254 does not raise an error if the internal id is blank (PENDING: No reason given)5255 when updating an object5256 does not raise an error if the internal id is blank (PENDING: No reason given)5257 Creating an instance5258 saves a new instance properly5259 internal id generation5260 calls InternalId.generate_next and sets internal id attribute5261 does not overwrite an existing internal id5262 when the instance has an internal ID set5263 calls InternalId.update_last_value and sets the `last_value` to that of the instance5264 unsetting the instance internal id on rollback5265 when the internal id has been changed5266 when the internal id is automatically set5267 clears it on the instance5268 when the internal id is manually set5269 does not clear it on the instance5270 when the internal id has not been changed5271 preserves the value on the instance5272 supply of internal ids5273 provides a persistent supply of IID values, sensitive to the current state5274 #reset_scope_internal_id_attribute5275 rewinds the allocated IID5276 allocates the same IID5277NotificationRecipient5278 #notifiable?5279 when emails are disabled5280 returns false if group disabled5281 returns false if project disabled5282 when emails are enabled5283 returns true if group enabled5284 returns true if project enabled5285 #has_access?5286 user cannot read cross project5287 returns false5288 user cannot read build5289 returns false5290 user cannot read commit5291 returns false5292 target has no policy5293 returns true5294 #notification_setting5295 for child groups5296 when notification setting is global5297 considers notification setting from the first parent without global setting5298 when notification setting is not global5299 considers notification setting from lowest group member in hierarchy5300 #suitable_notification_level?5301 when notification level is mention5302 when type is mention5303 returns true5304 when type is not mention5305 returns false5306 when notification level is participating5307 when type is participating5308 returns true5309 when type is mention5310 returns true5311 with custom action5312 when action is failed_pipeline5313 returns true5314 when action is fixed_pipeline5315 returns true5316 when action is not fixed_pipeline or failed_pipeline5317 returns false5318 when notification level is custom5319 when type is participating5320 with custom event enabled5321 returns true5322 without custom event enabled5323 returns true5324 when type is mention5325 with custom event enabled5326 returns true5327 without custom event enabled5328 returns true5329 when type is watch5330 with custom event enabled5331 returns true5332 without custom event enabled5333 returns false5334 when custom_action is fixed_pipeline and success_pipeline event is enabled5335 returns true5336 with merge_when_pipeline_succeeds5337 custom event enabled5338 returns true5339 custom event disabled5340 returns false5341 when notification level is watch5342 when type is watch5343 without excluded watcher events5344 returns true5345 with excluded watcher events5346 returns false5347 when type is not watch5348 without excluded watcher events5349 returns true5350 with excluded watcher events5351 returns true5352Clusters::ClusterPresenter5353 inherits from Gitlab::View::Presenter::Delegated5354 #initialize5355 takes a cluster and optional params5356 exposes cluster5357 forwards missing methods to cluster5358 #provider_label5359 AWS provider5360 is expected to eq "Elastic Kubernetes Service"5361 GCP provider5362 is expected to eq "Google Kubernetes Engine"5363 #provider_management_url5364 AWS provider5365 is expected to include "us-east-1"5366 is expected to include "test-cluster"5367 GCP provider5368 is expected to include "us-central1-a"5369 is expected to include "test-cluster"5370 #show_path5371 project_type cluster5372 is expected to eq "/namespace734/project844/-/clusters/344"5373 group_type cluster5374 is expected to eq "/groups/group1344/-/clusters/347"5375 instance_type cluster5376 is expected to eq "/admin/clusters/350"5377 #read_only_kubernetes_platform_fields?5378 with a user-provided cluster5379 is expected to be falsy5380 with a GCP-provided cluster5381 is expected to be truthy5382 #health_data5383 with project cluster5384 behaves like cluster health data5385 is expected to include {:"clusters-path" => "/namespace735/project845/-/clusters", :"dashboard-endpoint" => "/namespace735/project845/-/clusters/353/metrics_dashboard", :"documentation-path" => "/help/user/project/clusters/index#monitoring-your-kubernetes-cluster", :"add-dashboard-documentation-path" => "/help/operations/metrics/dashboards/index.md#add-a-new-dashboard-to-your-project", :"empty-getting-started-svg-path" => (match asset path "/assets/illustrations/monitoring/getting_started.svg"), :"empty-loading-svg-path" => (match asset path "/assets/illustrations/monitoring/loading.svg"), :"empty-no-data-svg-path" => (match asset path "/assets/illustrations/monitoring/no_data.svg"), :"empty-no-data-small-svg-path" => (match asset path "illustrations/chart-empty-state-small.svg"), :"empty-unable-to-connect-svg-path" => (match asset path "/assets/illustrations/monitoring/unable_to_connect.svg"), :"settings-path" => "", :"project-path" => "", :"tags-path" => ""}5386 with group cluster5387 behaves like cluster health data5388 is expected to include {:"clusters-path" => "/groups/group1345/-/clusters", :"dashboard-endpoint" => "/groups/group1345/-/clusters/356/metrics_dashboard", :"documentation-path" => "/help/user/project/clusters/index#monitoring-your-kubernetes-cluster", :"add-dashboard-documentation-path" => "/help/operations/metrics/dashboards/index.md#add-a-new-dashboard-to-your-project", :"empty-getting-started-svg-path" => (match asset path "/assets/illustrations/monitoring/getting_started.svg"), :"empty-loading-svg-path" => (match asset path "/assets/illustrations/monitoring/loading.svg"), :"empty-no-data-svg-path" => (match asset path "/assets/illustrations/monitoring/no_data.svg"), :"empty-no-data-small-svg-path" => (match asset path "illustrations/chart-empty-state-small.svg"), :"empty-unable-to-connect-svg-path" => (match asset path "/assets/illustrations/monitoring/unable_to_connect.svg"), :"settings-path" => "", :"project-path" => "", :"tags-path" => ""}5389 #gitlab_managed_apps_logs_path5390 user can read logs5391 returns path to logs5392 cluster has elastic stack integration enabled5393 returns path to logs5394 group cluster5395 user can read logs5396 there are projects within group5397 returns path to logs5398 there are no projects within group5399 returns nil5400 instance cluster5401 user can read logs5402 returns path to logs5403 user can NOT read logs5404 returns nil5405Groups routing5406 complex group path with dot5407 to #show5408 also supports nested groups5409 also display group#show on the short path5410 to #details5411 to #activity5412 to #issues5413 to #members5414 to #labels5415 to #milestones5416 to #runner_setup_scripts5417 routes to the avatars controller5418 routes to the boards controller5419 group path starting with help5420 to #show5421 also supports nested groups5422 also display group#show on the short path5423 to #details5424 to #activity5425 to #issues5426 to #members5427 to #labels5428 to #milestones5429 to #runner_setup_scripts5430 routes to the avatars controller5431 routes to the boards controller5432 group path starting with projects5433 to #show5434 also supports nested groups5435 also display group#show on the short path5436 to #details5437 to #activity5438 to #issues5439 to #members5440 to #labels5441 to #milestones5442 to #runner_setup_scripts5443 routes to the avatars controller5444 routes to the boards controller5445 dependency proxy for containers5446 routes to #authenticate5447 image name without namespace5448 routes to #manifest5449 routes to #blob5450 does not route to #blob with an invalid sha5451 does not route to #blob with an invalid image5452 image name with namespace5453 routes to #manifest5454 routes to #blob5455Ci::RunnerJobsFinder5456 #execute5457 when params is empty5458 returns all jobs assigned to Runner5459 when params contains status5460 when status is created5461 returns matched job5462 when status is waiting_for_resource5463 returns matched job5464 when status is preparing5465 returns matched job5466 when status is pending5467 returns matched job5468 when status is running5469 returns matched job5470 when status is success5471 returns matched job5472 when status is failed5473 returns matched job5474 when status is canceled5475 returns matched job5476 when status is skipped5477 returns matched job5478 when status is manual5479 returns matched job5480 when status is scheduled5481 returns matched job5482 when order_by and sort are specified5483 when order_by id and sort is asc5484 sorts as id: :asc5485 when order_by is specified and sort is not specified5486 when order_by id and sort is not specified5487 sorts as id: :desc5488Banzai::Filter::References::ProjectReferenceFilter5489 ignores invalid projects5490 allows references with text after the > character5491 ignores valid references contained inside 'pre' element5492 ignores valid references contained inside 'code' element5493 ignores valid references contained inside 'a' element5494 ignores valid references contained inside 'style' element5495 includes default classes5496 behaves like user reference or project reference5497 supports an :only_path context5498 mentioning a resource5499 links to a resource5500 links to a resource with a period5501 links to a resource with an underscore5502 links to a resource with different case-sensitivity5503 behaves like a reference containing an element node5504 does not escape inner html5505 behaves like it contains a data- attribute5506 includes a data- attribute5507 referencing a resource in a link href5508 links to the resource5509 links with adjacent text5510 behaves like it contains a data- attribute5511 includes a data- attribute5512 when invalid reference strings are very long5513 behaves like fails fast5514 fails fast for long strings5515 behaves like fails fast5516 fails fast for long strings5517 in group context5518 supports mentioning a project5519 supports mentioning a project in a nested group5520 #projects_hash5521 returns a Hash containing all Projects5522 #projects5523 returns the projects mentioned in a document5524 checking N+15525 does not have N+1 per multiple project references5526Ci::RunnersFinder5527 admin5528 #execute5529 with 2 runners5530 with empty params5531 returns all runners5532 with nil group5533 returns all runners5534 with preload param set to :tag_name true5535 requests tags5536 with preload param set to :tag_name false5537 does not request tags5538 filtering5539 by search term5540 calls Ci::Runner.search5541 by status5542 calls the corresponding :active scope on Ci::Runner5543 calls the corresponding :paused scope on Ci::Runner5544 calls the corresponding :online scope on Ci::Runner5545 calls the corresponding :offline scope on Ci::Runner5546 calls the corresponding :not_connected scope on Ci::Runner5547 by runner type5548 calls the corresponding scope on Ci::Runner5549 by tag_name5550 calls the corresponding scope on Ci::Runner5551 sorting5552 without sort param5553 behaves like sorts by created_at descending5554 sorts by created_at descending5555 with sort param equal to created_date5556 behaves like sorts by created_at descending5557 sorts by created_at descending5558 with sort param equal to created_at_desc5559 behaves like sorts by created_at descending5560 sorts by created_at descending5561 with sort param equal to created_at_asc5562 sorts by created_at ascending5563 with sort param equal to contacted_asc5564 sorts by contacted_at ascending5565 with sort param equal to contacted_desc5566 sorts by contacted_at descending5567 by non admin user5568 returns no runners5569 when user is nil5570 returns no runners5571 group5572 #execute5573 with user as group owner5574 with :group as target group5575 passing no params5576 behaves like membership equal to :descendants5577 returns all descendant runners5578 with :descendants membership5579 behaves like membership equal to :descendants5580 returns all descendant runners5581 with :direct membership5582 returns runners belonging to group5583 with unknown membership5584 raises an error5585 with nil group5586 returns no runners5587 with sort param5588 sorts by specified attribute5589 filtering5590 by search term5591 returns correct runner5592 by status5593 returns correct runner5594 by tag_name5595 returns correct runner5596 by runner type5597 returns correct runners5598 when user is not group owner5599 user_permission: :maintainer5600 returns no runners5601 user_permission: :developer5602 returns no runners5603 user_permission: :reporter5604 returns no runners5605 user_permission: :guest5606 returns no runners5607 when user has no access5608 returns no runners5609 when user is nil5610 returns no runners5611 #sort_key5612 without params5613 returns created_at_desc5614 with params5615 returns contacted_asc5616Gitlab::Email::Handler::CreateNoteOnIssuableHandler5617 behaves like reply_processing_shared_examples5618 when the user could not be found5619 raises a UserNotFoundError5620 when the user is not authorized to the project5621 raises a ProjectNotFound5622 behaves like note_handler_shared_examples5623 when the noteable could not be found5624 raises a NoteableNotFoundError5625 when the note could not be saved5626 raises an InvalidNoteError5627 because the note was update commands only5628 and current user cannot update noteable5629 does not raise an error5630 and current user can update noteable5631 does not raise an error5632 when the note contains quick actions5633 and current user cannot update the noteable5634 only executes the commands that the user can perform5635 and current user can update noteable5636 posts a note and updates the noteable5637 when the reply is blank5638WARNING: Using `expect { }.not_to raise_error(SpecificErrorClass)` risks false positives, since literally any other error would cause the expectation to pass, including those raised by Ruby (e.g. `NoMethodError`, `NameError` and `ArgumentError`), meaning the code you are intending to test may not even get reached. Instead consider using `expect { }.not_to raise_error` or `expect { }.to raise_error(DifferentSpecificErrorClass)`. This message can be suppressed by setting: `RSpec::Expectations.configuration.on_potential_false_positives = :nothing`. Called from /builds/gitlab-org/gitlab/spec/support/shared_contexts/email_shared_context.rb:151:in `block (3 levels) in <top (required)>'.5639 allows email to only have quoted text5640 when discussion is locked5641 behaves like checks_permissions_on_noteable_examples5642 when user has access5643 creates a comment5644 when user does not have access5645 raises UserNotAuthorizedError5646 when everything is fine5647 adds all attachments5648 when the service desk5649 is enabled5650 when issues are enabled for everyone5651 creates a comment5652 when quick actions are present5653 when author is a normal user5654 extracted the quick actions5655 when issues are protected members only5656 creates a comment5657 when issues are disabled5658 does not create a comment5659 when the recipient address does not include a mail key5660 raises an UnknownIncomingEmail5661 when issue is confidential5662 behaves like checks_permissions_on_noteable_examples5663 when user has access5664 creates a comment5665 when user does not have access5666 raises UserNotAuthorizedError5667ContainerRegistry::Client5668 #repository_manifest5669 behaves like handling repository manifest5670 GET /v2/:name/manifests/mytag5671 behaves like handling timeouts5672 handles network timeouts5673 logs the error5674 behaves like handling repository manifest5675 GET /v2/:name/manifests/mytag5676 behaves like handling timeouts5677 handles network timeouts5678 logs the error5679 #blob5680 GET /v2/:name/blobs/:digest5681 follows 307 redirect for GET /v2/:name/blobs/:digest5682 behaves like handling timeouts5683 handles network timeouts5684 logs the error5685 #upload_blob5686 with successful uploads5687 starts the upload and posts the blob5688 with a failed upload5689 returns a failure5690 #generate_empty_manifest5691 uploads a random image and returns the manifest5692 when upload fails5693 is expected to equal nil5694 #put_tag5695 uploads the manifest and returns the digest5696 #delete_repository_tag_by_name5697 when the tag exists5698 is expected to be truthy5699 when the tag does not exist5700 is expected to be truthy5701 when an error occurs5702 is expected to be falsey5703 #supports_tag_delete?5704 registry_tags_support_enabled: true, is_on_dot_com: true, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: true5705 returns the expected result5706 registry_tags_support_enabled: true, is_on_dot_com: false, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: true, expected_result: true5707 returns the expected result5708 registry_tags_support_enabled: true, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: true5709 returns the expected result5710 registry_tags_support_enabled: true, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: true5711 returns the expected result5712 registry_tags_support_enabled: false, is_on_dot_com: true, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: true5713 returns the expected result5714 registry_tags_support_enabled: false, is_on_dot_com: false, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: true, expected_result: false5715 returns the expected result5716 registry_tags_support_enabled: false, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: false5717 returns the expected result5718 registry_tags_support_enabled: false, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: false5719 returns the expected result5720 #registry_info5721 behaves like handling repository info5722 when the check is successful5723 when using the GitLab container registry5724 identifies the vendor as "gitlab"5725 identifies version and features5726 when using a third-party container registry5727 identifies the vendor as "other"5728 does not identify version or features5729 when the check is not successful5730 does not identify vendor, version or features5731 .supports_tag_delete?5732 registry_api_url: "http://sandbox.local", registry_enabled: true, registry_tags_support_enabled: true, is_on_dot_com: true, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: true5733 returns the expected result5734 registry_api_url: "http://sandbox.local", registry_enabled: true, registry_tags_support_enabled: true, is_on_dot_com: false, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: true, expected_result: true5735 returns the expected result5736 registry_api_url: "http://sandbox.local", registry_enabled: true, registry_tags_support_enabled: false, is_on_dot_com: true, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: true5737 returns the expected result5738 registry_api_url: "http://sandbox.local", registry_enabled: true, registry_tags_support_enabled: false, is_on_dot_com: false, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: true, expected_result: false5739 returns the expected result5740 registry_api_url: "http://sandbox.local", registry_enabled: false, registry_tags_support_enabled: true, is_on_dot_com: true, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false5741 returns the expected result5742 registry_api_url: "http://sandbox.local", registry_enabled: false, registry_tags_support_enabled: true, is_on_dot_com: false, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false5743 returns the expected result5744 registry_api_url: "http://sandbox.local", registry_enabled: false, registry_tags_support_enabled: false, is_on_dot_com: true, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false5745 returns the expected result5746 registry_api_url: "http://sandbox.local", registry_enabled: false, registry_tags_support_enabled: false, is_on_dot_com: false, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false5747 returns the expected result5748 registry_api_url: "http://sandbox.local", registry_enabled: true, registry_tags_support_enabled: true, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: true5749 returns the expected result5750 registry_api_url: "http://sandbox.local", registry_enabled: true, registry_tags_support_enabled: true, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: true5751 returns the expected result5752 registry_api_url: "http://sandbox.local", registry_enabled: true, registry_tags_support_enabled: false, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: false5753 returns the expected result5754 registry_api_url: "http://sandbox.local", registry_enabled: true, registry_tags_support_enabled: false, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: false5755 returns the expected result5756 registry_api_url: "http://sandbox.local", registry_enabled: false, registry_tags_support_enabled: true, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false5757 returns the expected result5758 registry_api_url: "http://sandbox.local", registry_enabled: false, registry_tags_support_enabled: true, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false5759 returns the expected result5760 registry_api_url: "http://sandbox.local", registry_enabled: false, registry_tags_support_enabled: false, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false5761 returns the expected result5762 registry_api_url: "http://sandbox.local", registry_enabled: false, registry_tags_support_enabled: false, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false5763 returns the expected result5764 registry_api_url: "", registry_enabled: true, registry_tags_support_enabled: true, is_on_dot_com: true, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false5765 returns the expected result5766 registry_api_url: "", registry_enabled: true, registry_tags_support_enabled: true, is_on_dot_com: false, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false5767 returns the expected result5768 registry_api_url: "", registry_enabled: true, registry_tags_support_enabled: false, is_on_dot_com: true, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false5769 returns the expected result5770 registry_api_url: "", registry_enabled: true, registry_tags_support_enabled: false, is_on_dot_com: false, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false5771 returns the expected result5772 registry_api_url: "", registry_enabled: false, registry_tags_support_enabled: true, is_on_dot_com: true, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false5773 returns the expected result5774 registry_api_url: "", registry_enabled: false, registry_tags_support_enabled: true, is_on_dot_com: false, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false5775 returns the expected result5776 registry_api_url: "", registry_enabled: false, registry_tags_support_enabled: false, is_on_dot_com: true, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false5777 returns the expected result5778 registry_api_url: "", registry_enabled: false, registry_tags_support_enabled: false, is_on_dot_com: false, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false5779 returns the expected result5780 registry_api_url: "", registry_enabled: true, registry_tags_support_enabled: true, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false5781 returns the expected result5782 registry_api_url: "", registry_enabled: true, registry_tags_support_enabled: true, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false5783 returns the expected result5784 registry_api_url: "", registry_enabled: true, registry_tags_support_enabled: false, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false5785 returns the expected result5786 registry_api_url: "", registry_enabled: true, registry_tags_support_enabled: false, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false5787 returns the expected result5788 registry_api_url: "", registry_enabled: false, registry_tags_support_enabled: true, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false5789 returns the expected result5790 registry_api_url: "", registry_enabled: false, registry_tags_support_enabled: true, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false5791 returns the expected result5792 registry_api_url: "", registry_enabled: false, registry_tags_support_enabled: false, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false5793 returns the expected result5794 registry_api_url: "", registry_enabled: false, registry_tags_support_enabled: false, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false5795 returns the expected result5796 .registry_info5797 behaves like handling repository info5798 when the check is successful5799 when using the GitLab container registry5800 identifies the vendor as "gitlab"5801 identifies version and features5802 when using a third-party container registry5803 identifies the vendor as "other"5804 does not identify version or features5805 when the check is not successful5806 does not identify vendor, version or features5807npm.gitlab-ci.yml5808 the created pipeline5809 on default branch5810 when package.json has been changed5811 behaves like publish job created5812 creates a pipeline with a single job: publish5813 when package.json does not exist or has not been changed5814 behaves like no pipeline created5815 does not create a pipeline because the only job (publish) is not created5816 when the branch name is v1.0.05817 behaves like publish job created5818 creates a pipeline with a single job: publish5819 when the tag name is v1.0.05820 behaves like publish job created5821 creates a pipeline with a single job: publish5822 when the branch name is v2.1.0-alpha5823 behaves like publish job created5824 creates a pipeline with a single job: publish5825 when the tag name is v2.1.0-alpha5826 behaves like publish job created5827 creates a pipeline with a single job: publish5828 when the branch name is patch-15829 behaves like no pipeline created5830 does not create a pipeline because the only job (publish) is not created5831 when the tag name is patch-15832 behaves like no pipeline created5833 does not create a pipeline because the only job (publish) is not created5834 when the branch name is my-feature-branch5835 behaves like no pipeline created5836 does not create a pipeline because the only job (publish) is not created5837 when the tag name is my-feature-branch5838 behaves like no pipeline created5839 does not create a pipeline because the only job (publish) is not created5840 when the branch name is v15841 behaves like no pipeline created5842 does not create a pipeline because the only job (publish) is not created5843 when the tag name is v15844 behaves like no pipeline created5845 does not create a pipeline because the only job (publish) is not created5846 when the branch name is v1.05847 behaves like no pipeline created5848 does not create a pipeline because the only job (publish) is not created5849 when the tag name is v1.05850 behaves like no pipeline created5851 does not create a pipeline because the only job (publish) is not created5852 when the branch name is 2.1.05853 behaves like no pipeline created5854 does not create a pipeline because the only job (publish) is not created5855 when the tag name is 2.1.05856 behaves like no pipeline created5857 does not create a pipeline because the only job (publish) is not created5858Lfs::FileTransformer5859 #new_file5860 with lfs disabled5861 skips gitattributes check5862 returns untransformed content5863 returns untransformed encoding5864 with lfs enabled5865 reuses cached gitattributes5866 creates an LfsObject with the file's content5867 returns an LFS pointer5868 returns LFS pointer encoding as text5869 links LfsObjects to project5870 saves the repository_type to LfsObjectsProject5871 when an actual file is passed5872 creates an LfsObject with the file's content5873 when repository is a design repository5874 creates an LfsObject with the file's content5875 saves the correct repository_type to LfsObjectsProject5876 when doesn't use LFS5877 doesn't create LFS pointers5878 when LfsObject already exists5879 links LfsObjects to project5880 when the LfsObject is already linked to project5881 and the service is called again with the same repository type5882 is expected not to change `project.lfs_objects.count`5883 does not create a new LfsObjectsProject record5884 and the service is called again with a different repository type5885 is expected not to change `project.lfs_objects.count`5886 creates a new LfsObjectsProject record5887 sets the correct repository_type on the new LfsObjectsProject record5888PipelineDetailsEntity5889 inherits from PipelineEntity5890 #as_json5891 when pipeline is empty5892 contains details5893 contains flags5894 when pipeline is retryable5895 does not contain code_quality_build_path in details5896 user has ability to retry pipeline5897 retryable flag is true5898 user does not have ability to retry pipeline5899 retryable flag is false5900 when option code_quality_walkthrough is set and pipeline is a success5901 contains details.code_quality_build_path5902 when pipeline is cancelable5903 user has ability to cancel pipeline5904 cancelable flag is true5905 user does not have ability to cancel pipeline5906 cancelable flag is false5907 when pipeline has commit statuses5908 contains stages5909 when pipeline has YAML errors5910 contains information about error5911 contains flag that indicates there are errors5912 when pipeline does not have YAML errors5913 does not contain field that normally holds an error5914 contains flag that indicates there are no errors5915 when pipeline is triggered by other pipeline5916 contains an information about depedent pipeline5917 when pipeline triggered other pipeline5918 contains an information about dependent pipeline5919IconsHelper5920 sprite_icon_path5921 returns relative path5922 only calls image_path once when called multiple times5923 when an asset_host is set in the config it will return an absolute local URL5924 returns an absolute URL on that asset host5925 sprite_icon5926 returns svg icon html with DEFAULT_ICON_SIZE5927 returns svg icon html without size class5928 returns svg icon html + size classes5929 returns svg icon html + size classes + additional class5930 non existing icon5931 raises in development mode5932 raises in test mode5933 does not raise in production mode5934 audit icon5935 returns right icon name for standard auth5936 returns right icon name for two-factor auth5937 returns right icon name for google_oauth2 auth5938 file_type_icon_class5939 returns folder-o class5940 returns share class5941 returns document class with .pdf5942 returns doc-image class with .jpg5943 returns doc-image class with .JPG5944 returns doc-image class with .png5945 returns doc-image class with .apng5946 returns doc-image class with .webp5947 returns doc-compressed class with .tar5948 returns doc-compressed class with .TAR5949 returns doc-compressed class with .tar.gz5950 returns volume-up class with .mp35951 returns volume-up class with .MP35952 returns volume-up class with .m4a5953 returns volume-up class with .wav5954 returns live-preview class with .avi5955 returns live-preview class with .AVI5956 returns live-preview class with .mp45957 returns doc-text class with .odt5958 returns doc-text class with .doc5959 returns doc-text class with .DOC5960 returns doc-text class with .docx5961 returns document class with .xls5962 returns document class with .XLS5963 returns document class with .xlsx5964 returns doc-chart class with .odp5965 returns doc-chart class with .ppt5966 returns doc-chart class with .PPT5967 returns doc-chart class with .pptx5968 returns doc-text class with .unknow5969 returns doc-text class with no extension5970 #external_snippet_icon5971 returns external snippet icon5972 loading_icon5973 returns span with gl-spinner class and default configuration5974 when css_class is provided5975 appends css_class to gl-spinner element5976 when container is true5977 creates a container that has the gl-spinner-container class selector5978Gitlab::SidekiqConfig::WorkerMatcher5979 #match?5980 with valid input5981 query: "worker_name=WorkerA", expected_metadatas: ["WorkerA"]5982 is expected to contain exactly "WorkerA"5983 query: "worker_name=WorkerA2", expected_metadatas: ["WorkerA2"]5984 is expected to contain exactly "WorkerA2"5985 query: "worker_name=WorkerB|worker_name=WorkerD", expected_metadatas: ["WorkerB"]5986 is expected to contain exactly "WorkerB"5987 query: "worker_name!=WorkerA", expected_metadatas: ["WorkerA2", "WorkerB", "WorkerC"]5988 is expected to contain exactly "WorkerA2", "WorkerB", and "WorkerC"5989 query: "feature_category=category_a", expected_metadatas: ["WorkerA", "WorkerA2"]5990 is expected to contain exactly "WorkerA" and "WorkerA2"5991 query: "feature_category=category_a,category_c", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerC"]5992 is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerC"5993 query: "feature_category=category_a|feature_category=category_c", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerC"]5994 is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerC"5995 query: "feature_category!=category_a", expected_metadatas: ["WorkerB", "WorkerC"]5996 is expected to contain exactly "WorkerB" and "WorkerC"5997 query: "has_external_dependencies=true", expected_metadatas: ["WorkerB"]5998 is expected to contain exactly "WorkerB"5999 query: "has_external_dependencies=false", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerC"]6000 is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerC"6001 query: "has_external_dependencies=true,false", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB", "WorkerC"]6002 is expected to contain exactly "WorkerA", "WorkerA2", "WorkerB", and "WorkerC"6003 query: "has_external_dependencies=true|has_external_dependencies=false", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB", "WorkerC"]6004 is expected to contain exactly "WorkerA", "WorkerA2", "WorkerB", and "WorkerC"6005 query: "has_external_dependencies!=true", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerC"]6006 is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerC"6007 query: "urgency=high", expected_metadatas: ["WorkerA2", "WorkerB"]6008 is expected to contain exactly "WorkerA2" and "WorkerB"6009 query: "urgency=low", expected_metadatas: ["WorkerA"]6010 is expected to contain exactly "WorkerA"6011 query: "urgency=high,low,throttled", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB", "WorkerC"]6012 is expected to contain exactly "WorkerA", "WorkerA2", "WorkerB", and "WorkerC"6013 query: "urgency=low|urgency=throttled", expected_metadatas: ["WorkerA", "WorkerC"]6014 is expected to contain exactly "WorkerA" and "WorkerC"6015 query: "urgency!=high", expected_metadatas: ["WorkerA", "WorkerC"]6016 is expected to contain exactly "WorkerA" and "WorkerC"6017 query: "name=a", expected_metadatas: ["WorkerA"]6018 is expected to contain exactly "WorkerA"6019 query: "name=a,b", expected_metadatas: ["WorkerA", "WorkerB"]6020 is expected to contain exactly "WorkerA" and "WorkerB"6021 query: "name=a,a:2|name=b", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB"]6022 is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerB"6023 query: "name!=a,a:2", expected_metadatas: ["WorkerB", "WorkerC"]6024 is expected to contain exactly "WorkerB" and "WorkerC"6025 query: "resource_boundary=memory", expected_metadatas: ["WorkerB", "WorkerC"]6026 is expected to contain exactly "WorkerB" and "WorkerC"6027 query: "resource_boundary=memory,cpu", expected_metadatas: ["WorkerA", "WorkerB", "WorkerC"]6028 is expected to contain exactly "WorkerA", "WorkerB", and "WorkerC"6029 query: "resource_boundary=memory|resource_boundary=cpu", expected_metadatas: ["WorkerA", "WorkerB", "WorkerC"]6030 is expected to contain exactly "WorkerA", "WorkerB", and "WorkerC"6031 query: "resource_boundary!=memory,cpu", expected_metadatas: ["WorkerA2"]6032 is expected to contain exactly "WorkerA2"6033 query: "tags=no_disk_io", expected_metadatas: ["WorkerA", "WorkerB"]6034 is expected to contain exactly "WorkerA" and "WorkerB"6035 query: "tags=no_disk_io,git_access", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB"]6036 is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerB"6037 query: "tags=no_disk_io|tags=git_access", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB"]6038 is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerB"6039 query: "tags=no_disk_io&tags=git_access", expected_metadatas: ["WorkerA"]6040 is expected to contain exactly "WorkerA"6041 query: "tags!=no_disk_io", expected_metadatas: ["WorkerA2", "WorkerC"]6042 is expected to contain exactly "WorkerA2" and "WorkerC"6043 query: "tags!=no_disk_io,git_access", expected_metadatas: ["WorkerC"]6044 is expected to contain exactly "WorkerC"6045 query: "tags=unknown_tag", expected_metadatas: []6046 is expected to contain exactly6047 query: "tags!=no_disk_io", expected_metadatas: ["WorkerA2", "WorkerC"]6048 is expected to contain exactly "WorkerA2" and "WorkerC"6049 query: "tags!=no_disk_io,git_access", expected_metadatas: ["WorkerC"]6050 is expected to contain exactly "WorkerC"6051 query: "tags!=unknown_tag", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB", "WorkerC"]6052 is expected to contain exactly "WorkerA", "WorkerA2", "WorkerB", and "WorkerC"6053 query: "feature_category=category_a&urgency=high", expected_metadatas: ["WorkerA2"]6054 is expected to contain exactly "WorkerA2"6055 query: "feature_category=category_a&urgency=high|feature_category=category_c", expected_metadatas: ["WorkerA2", "WorkerC"]6056 is expected to contain exactly "WorkerA2" and "WorkerC"6057 query: "*", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB", "WorkerC"]6058 is expected to contain exactly "WorkerA", "WorkerA2", "WorkerB", and "WorkerC"6059 with invalid input6060 query: "feature_category=\"category_a\"", error: Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm6061 is expected to raise Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm6062 query: "feature_category=", error: Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm6063 is expected to raise Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm6064 query: "feature_category~category_a", error: Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm6065 is expected to raise Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm6066 query: "invalid_term=a", error: Gitlab::SidekiqConfig::WorkerMatcher::UnknownPredicate6067 is expected to raise Gitlab::SidekiqConfig::WorkerMatcher::UnknownPredicate6068Gitlab::Ci::Config::Entry::Release6069 validation6070 when entry config value is correct6071 behaves like a valid entry6072 #value6073 returns release configuration6074 #valid?6075 is valid6076 when value includes 'assets' keyword6077 behaves like a valid entry6078 #value6079 returns release configuration6080 #valid?6081 is valid6082 when value includes 'name' keyword6083 behaves like a valid entry6084 #value6085 returns release configuration6086 #valid?6087 is valid6088 when value includes 'ref' keyword6089 behaves like a valid entry6090 #value6091 returns release configuration6092 #valid?6093 is valid6094 when value includes 'released_at' keyword6095 behaves like a valid entry6096 #value6097 returns release configuration6098 #valid?6099 is valid6100 when value includes 'milestones' keyword6101 for an array of milestones6102 behaves like a valid entry6103 #value6104 returns release configuration6105 #valid?6106 is valid6107 for a single milestone6108 behaves like a valid entry6109 #value6110 returns release configuration6111 #valid?6112 is valid6113 when value includes 'ref' keyword6114 when 'ref' is a full commit SHA6115 behaves like a valid entry6116 #value6117 returns release configuration6118 #valid?6119 is valid6120 when 'ref' is a short commit SHA6121 behaves like a valid entry6122 #value6123 returns release configuration6124 #valid?6125 is valid6126 when 'ref' is a branch name6127 behaves like a valid entry6128 #value6129 returns release configuration6130 #valid?6131 is valid6132 when 'ref' is a semantic versioning tag6133 behaves like a valid entry6134 #value6135 returns release configuration6136 #valid?6137 is valid6138 when 'ref' is a semantic versioning tag rc6139 behaves like a valid entry6140 #value6141 returns release configuration6142 #valid?6143 is valid6144 when value includes 'released_at' keyword6145 behaves like a valid entry6146 #value6147 returns release configuration6148 #valid?6149 is valid6150 when value includes 'milestones' keyword6151 for an array of milestones6152 behaves like a valid entry6153 #value6154 returns release configuration6155 #valid?6156 is valid6157 for a single milestone6158 behaves like a valid entry6159 #value6160 returns release configuration6161 #valid?6162 is valid6163 when entry value is not correct6164 #errors6165 when value of attribute is invalid6166 behaves like reports error6167 reports error6168 when release description is missing6169 behaves like reports error6170 reports error6171 when release tag_name is missing6172 behaves like reports error6173 reports error6174 when there is an unknown key present6175 behaves like reports error6176 reports error6177 when `released_at` is not a valid date6178 behaves like reports error6179 reports error6180 when `ref` is not valid6181 behaves like reports error6182 reports error6183 when `milestones` is not an array of strings6184 behaves like reports error6185 reports error6186Gitlab::Gpg6187 .fingerprints_from_key6188 returns CurrentKeyChain.fingerprints_from_key6189 .primary_keyids_from_key6190 returns the keyid6191 returns an empty array when the key is invalid6192 .subkeys_from_key6193 returns the subkeys by primary key6194 returns an empty array when there are not subkeys6195 .user_infos_from_key6196 returns the names and emails6197 returns an empty array when the key is invalid6198 downcases the email6199 rejects non UTF-8 names and addresses6200 .current_home_dir6201 returns the default value when no explicit home dir has been set6202 returns the explicitly set home dir6203 returns the default value when explicitly setting the home dir to nil6204 .using_tmp_keychain6205 the second thread does not change the first thread's directory6206 allows recursive execution in the same thread6207 keeps track of created and removed keychains in counters6208 cleans up the tmp directory after finishing6209 does not fail if the homedir was deleted while running6210 tracks an exception when cleaning up the tmp dir fails6211 behaves like multiple deletion attempts of the tmp-dir6212 tries for 1 or 15 times6213 tries at least 2 times to remove the tmp dir before raising6214 does not attempt multiple times when the deletion succeeds6215 when running in Sidekiq6216 behaves like multiple deletion attempts of the tmp-dir6217 tries for 10 or 15 times6218 tries at least 2 times to remove the tmp dir before raising6219 does not attempt multiple times when the deletion succeeds6220Gitlab::Gpg::CurrentKeyChain6221 .add6222 stores the key in the keychain6223 .fingerprints_from_key6224 returns the fingerprint6225 returns an empty array when the key is invalid6226Gitlab::LegacyGithubImport::Importer6227 when importing a GitHub project6228 behaves like Gitlab::LegacyGithubImport::Importer#execute6229 calls import methods6230 behaves like Gitlab::LegacyGithubImport::Importer#execute an error occurs6231 returns true6232 does not raise an error6233 stores error messages6234 behaves like Gitlab::LegacyGithubImport unit-testing6235 #clean_up_restored_branches6236 when pull request stills open6237 does not remove branches6238 when pull request is closed6239 does remove branches6240 #client6241 instantiates a Client6242 when importing a Gitea project6243 behaves like Gitlab::LegacyGithubImport::Importer#execute6244 calls import methods6245 behaves like Gitlab::LegacyGithubImport::Importer#execute an error occurs6246 returns true6247 does not raise an error6248 stores error messages6249 behaves like Gitlab::LegacyGithubImport unit-testing6250 #clean_up_restored_branches6251 when pull request stills open6252 does not remove branches6253 when pull request is closed6254 does remove branches6255 #client6256 instantiates a Client6257UserCalloutsHelper6258 .show_gke_cluster_integration_callout?6259 when user can create a cluster6260 when user has not dismissed6261 when active_nav_link is in the operations section6262 is expected to equal true6263 when active_nav_link is not in the operations section6264 is expected to equal false6265 when user dismissed6266 is expected to equal false6267 when user can not create a cluster6268 is expected to equal false6269 .show_customize_homepage_banner?6270 when user has not dismissed6271 when user is on the default dashboard6272 is expected to equal true6273 when user is not on the default dashboard6274 is expected to equal false6275 when user dismissed6276 is expected to equal false6277 .render_flash_user_callout6278 renders the flash_user_callout partial6279 .show_feature_flags_new_version?6280 when the feature flags new version info has not been dismissed6281 is expected to be truthy6282 when the feature flags new version has been dismissed6283 is expected to be falsy6284 .show_registration_enabled_user_callout?6285 when on gitlab.com6286 is expected to equal false6287 when `current_user` is not an admin6288 is expected to equal false6289 when signup is disabled6290 is expected to equal false6291 when user has dismissed callout6292 is expected to equal false6293 when not gitlab.com, `current_user` is an admin, signup is enabled, and user has not dismissed callout6294 is expected to equal true6295 .show_unfinished_tag_cleanup_callout?6296 when user has not dismissed6297 is expected to equal true6298 when user dismissed6299 is expected to equal false6300 .show_invite_banner?6301 when user has the admin ability for the group6302 when the invite_members_banner has not been dismissed6303 is expected to eq true6304 when a user has dismissed this banner via cookies already6305 is expected to eq false6306 creates the callout from cookie6307 when the group was just created6308 is expected to eq false6309 with concerning multiple members6310 on current group6311 is expected to eq false6312 on current group that is a subgroup6313 with only one user on parent and this group6314 is expected to eq true6315 when another user is on this group6316 is expected to eq false6317 when another user is on the parent group6318 is expected to eq false6319 when the invite_members_banner has been dismissed6320 is expected to eq false6321 when user does not have admin ability for the group6322 is expected to eq false6323 .show_security_newsletter_user_callout?6324 when `current_user` is not an admin6325 is expected to equal false6326 when user has dismissed callout6327 is expected to equal false6328 when `current_user` is an admin and user has not dismissed callout6329 is expected to equal true6330Gitlab::Search::FoundBlob6331 parsing content results6332 returns a valid FoundBlob6333 does not parse content if not needed6334 parses content only once when needed6335 when the matching filename contains a colon6336 returns a valid FoundBlob6337 when the matching content contains a number surrounded by colons6338 returns a valid FoundBlob6339 when the matching content contains multiple null bytes6340 returns a valid FoundBlob6341 when the search result ends with an empty line6342 returns a valid FoundBlob that ends with an empty line6343 when the search returns non-ASCII data6344 with UTF-86345 returns results as UTF-86346 with UTF-8 in the filename6347 returns results as UTF-86348 with ISO-8859-16349 returns results as UTF-86350 when filename has extension6351 is expected to eq "CONTRIBUTE.md"6352 is expected to eq "CONTRIBUTE"6353 when file is under directory6354 is expected to eq "a/b/c.md"6355 is expected to eq "a/b/c"6356 parsing title results6357 when file is under directory6358 is expected to eq "a/b/c.md"6359 is expected to eq "a/b/c"6360 when filename has multiple extensions6361 is expected to eq "a/b/c.whatever"6362 policy6363 works with policy6364Ci::CreateWebIdeTerminalService6365 #execute6366 for maintainer6367 when web-ide has valid configuration6368 for empty configuration6369 behaves like be successful6370 returns a success with pipeline object6371 calls ensure_project_iid explicitly6372 for configuration with container image6373 behaves like be successful6374 returns a success with pipeline object6375 calls ensure_project_iid explicitly6376 for configuration with ports6377 behaves like be successful6378 returns a success with pipeline object6379 calls ensure_project_iid explicitly6380 for configuration with variables6381 saves the variables6382 behaves like be successful6383 returns a success with pipeline object6384 calls ensure_project_iid explicitly6385 error handling6386 when user is developer6387 behaves like having insufficient permissions6388 behaves like having an error6389 returns an error6390 when user is maintainer6391 when terminal is already running6392 behaves like having an error6393 returns an error6394 when ref is non-existing6395 behaves like having an error6396 returns an error6397 when ref is a tag6398 behaves like having an error6399 returns an error6400 when terminal config is missing6401 behaves like having an error6402 returns an error6403 when webide config is present6404 config has invalid content6405 behaves like having an error6406 returns an error6407 config is valid, but does not have terminal6408 behaves like having an error6409 returns an error6410Ci::PipelineArtifactUploader6411 behaves like builds correct paths6412 #store_dir6413 behaves like matches the method pattern6414 is expected to match /\h{2}\/\h{2}\/\h{64}\/pipelines\/\d+\/artifacts\/\d+/6415 #cache_dir6416 behaves like matches the method pattern6417 is expected to match /artifacts\/tmp\/cache/6418 #work_dir6419 behaves like matches the method pattern6420 is expected to match /artifacts\/tmp\/work/6421 #upload_path6422 behaves like matches the method pattern6423 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)6424 #relative_path6425 is relative (PENDING: Path not set, skipping.)6426 .absolute_path6427 behaves like matches the method pattern6428 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)6429 .base_dir6430 behaves like matches the method pattern6431 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)6432 path traversal exploits6433 throws an exception6434 when object store is REMOTE6435 behaves like builds correct paths6436 #store_dir6437 behaves like matches the method pattern6438 is expected to match /\h{2}\/\h{2}\/\h{64}\/pipelines\/\d+\/artifacts\/\d+/6439 #cache_dir6440 behaves like matches the method pattern6441 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)6442 #work_dir6443 behaves like matches the method pattern6444 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)6445 #upload_path6446 behaves like matches the method pattern6447 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)6448 #relative_path6449 is relative (PENDING: Path not set, skipping.)6450 .absolute_path6451 behaves like matches the method pattern6452 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)6453 .base_dir6454 behaves like matches the method pattern6455 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)6456 path traversal exploits6457 throws an exception6458 when file is stored in valid local_path6459 is expected to match /\/builds\/gitlab-org\/gitlab\/tmp\/tests\/artifacts\/\h{2}\/\h{2}\/\h{64}\/pipelines\/137\/artifacts\/17\/code_coverage.json/6460Gitlab::Ci::Ansi2json6461 lines6462 prints non-ansi as-is6463 recognizes color changing ANSI sequences6464 recognizes color changing ANSI sequences across multiple lines6465 recognizes background and foreground colors6466 recognizes style changes within the same line6467 new lines6468 adds new line when encountering \n6469 adds new line when encountering \r\n6470 replace the current line when encountering \r6471 with section markers6472 marks the first line of the section as header6473 does not marks the other lines of the section as header6474 marks the last line of the section as footer6475 marks the first line as header and footer if is the only line in the section6476 does not add sections attribute to lines after the section is closed6477 ignores section_end marker if no section_start exists6478 prints HTML tags as is6479 when section name contains .-_ and capital letters6480 sanitizes the section name6481 when section name includes $6482 ignores the section6483 when section name includes <6484 ignores the section6485 with nested section6486 adds multiple sections to the lines inside the nested section6487 adds multiple sections to the lines inside the nested section and closes all sections together6488 with section options6489 provides section options when set6490 incremental updates6491 with split word6492 returns the full line6493 with split word on second line6494 returns all lines since last partially processed line6495 with split sequence across multiple lines6496 returns the line since last partially processed line6497 with split partial sequence6498 returns the line since last partially processed line6499 with split new line6500 returns a blank line and the next line6501 with split section6502 with split section body6503 returns the full line6504 with split section where header is also split6505 returns the full line6506 with split section end6507 returns the full line6508 trucates6509 returns truncated output6510 does not append output6511Gitlab::Ci::Trace::ChunkedIO6512 #initialize6513 when a chunk exists6514 is expected to eq 36515 when two chunks exist6516 is expected to eq 66517 when no chunks exists6518 is expected to eq 06519 #seek6520 when moves pos to end of the file6521 is expected to eq 1924416522 when moves pos to middle of the file6523 is expected to eq 962206524 when moves pos around6525 matches the result6526 #eof?6527 when current pos is at end of the file6528 is expected to be truthy6529 when current pos is not at end of the file6530 is expected to be falsey6531 #each_line6532 when buffer size is smaller than file size6533 yields lines6534 when buffer size is larger than file size6535 calls get_chunk only once6536 when buffer consist of many empty lines6537 yields lines6538 #read6539 when read the whole size6540 when buffer size is smaller than file size6541 is expected to eq "\e[0KRunning with gitlab-runner 10.6.0 (a3543a27)\n\e[0;m\e[0K on docker-auto-scale-com 30d62d59\n\...token\e[0;m=rusBKvxM\nsection_end:1522927520:upload_artifacts\n\e[0K\e[32;1mJob succeeded\n\e[0;m\n"6542 when buffer size is larger than file size6543 is expected to eq "\e[0KRunning with gitlab-runner 10.6.0 (a3543a27)\n\e[0;m\e[0K on docker-auto-scale-com 30d62d59\n\...token\e[0;m=rusBKvxM\nsection_end:1522927520:upload_artifacts\n\e[0K\e[32;1mJob succeeded\n\e[0;m\n"6544 when chunk is missing data6545 raises an error6546 when read only first 100 bytes6547 when buffer size is smaller than file size6548 reads a trace6549 when buffer size is larger than file size6550 reads a trace6551 when tries to read oversize6552 when buffer size is smaller than file size6553 reads a trace6554 when buffer size is larger than file size6555 reads a trace6556 when tries to read 0 bytes6557 when buffer size is smaller than file size6558 reads a trace6559 when buffer size is larger than file size6560 reads a trace6561 #readline6562 when buffer size is smaller than file size6563 behaves like all line matching6564 is expected to eq "\e[0;m\n"6565 when buffer size is larger than file size6566 behaves like all line matching6567 is expected to eq "\e[0;m\n"6568 when pos is at middle of the file6569 reads from pos6570 when chunk is missing data6571 raises an error6572 when utf-8 is being used6573 has known length6574 behaves like all line matching6575 is expected to eq "\xF0\x9F\x98\xBA"6576 #write6577 when data does not exist6578 when buffer size is smaller than file size6579 behaves like writes a trace6580 is expected to eq "\e[0KRunning with gitlab-runner 10.6.0 (a3543a27)\n\e[0;m\e[0K on docker-auto-scale-com 30d62d59\n\...token\e[0;m=rusBKvxM\nsection_end:1522927520:upload_artifacts\n\e[0K\e[32;1mJob succeeded\n\e[0;m\n"6581 when buffer size is larger than file size6582 behaves like writes a trace6583 is expected to eq "\e[0KRunning with gitlab-runner 10.6.0 (a3543a27)\n\e[0;m\e[0K on docker-auto-scale-com 30d62d59\n\...token\e[0;m=rusBKvxM\nsection_end:1522927520:upload_artifacts\n\e[0K\e[32;1mJob succeeded\n\e[0;m\n"6584 when data already exists6585 when buffer size is smaller than file size6586 behaves like appends a trace6587 is expected to eq "exist data\e[0KRunning with gitlab-runner 10.6.0 (a3543a27)\n\e[0;m\e[0K on docker-auto-scale-com 3...token\e[0;m=rusBKvxM\nsection_end:1522927520:upload_artifacts\n\e[0K\e[32;1mJob succeeded\n\e[0;m\n"6588 when buffer size is larger than file size6589 behaves like appends a trace6590 is expected to eq "exist data\e[0KRunning with gitlab-runner 10.6.0 (a3543a27)\n\e[0;m\e[0K on docker-auto-scale-com 3...token\e[0;m=rusBKvxM\nsection_end:1522927520:upload_artifacts\n\e[0K\e[32;1mJob succeeded\n\e[0;m\n"6591 #truncate6592 when data does not exist6593 when buffer size is smaller than file size6594 behaves like truncates a trace6595 is expected to eq "\e[0KRunnin"6596 when buffer size is larger than file size6597 behaves like truncates a trace6598 is expected to eq "\e[0KRunnin"6599 #destroy!6600 deletes6601 when the job does not have archived trace6602 leaves a message in sidekiq log6603Nav::TopNavHelper6604 #top_nav_view_model6605 has :activeTitle6606 when current_user is nil (anonymous)6607 has expected :primary6608 has expected :shortcuts6609 has expected :secondary6610 with current nav as project6611 has expected :active6612 when current_user is non-admin6613 has no menu items or views by default6614 with projects6615 has expected :primary6616 has expected :shortcuts6617 projects6618 has expected :currentUserName6619 has expected :namespace6620 has expected :linksPrimary6621 has expected :linksSecondary6622 with current nav as project6623 has expected :active6624 with persisted project6625 has project as :container6626 with groups6627 has expected :primary6628 has expected :shortcuts6629 groups6630 has expected :currentUserName6631 has expected :namespace6632 has expected :linksPrimary6633 has expected :linksSecondary6634 with external user6635 does not have create group link6636 with current nav as group6637 has expected :active6638 with persisted group6639 has expected :container6640 with milestones6641 has expected :primary6642 has expected :shortcuts6643 with snippets6644 has expected :primary6645 has expected :shortcuts6646 with activity6647 has expected :primary6648 has expected :shortcuts6649 when sherlock is enabled6650 has sherlock as last :secondary item6651 when current_user is admin6652 has admin as first :secondary item6653 with header link admin_mode true6654 has leave_admin_mode as last :secondary item6655 with header link admin_mode false6656 has enter_admin_mode as last :secondary item6657 #top_nav_responsive_view_model6658 has nil new subview6659 has nil search subview6660 with search6661 has search subview6662 with new6663 has new subview6664 with new and no menu_sections6665 has new subview6666Banzai::Filter::InlineMetricsRedactorFilter6667 without a metrics charts placeholder6668 leaves regular non-metrics links unchanged6669 with a metrics charts placeholder6670 behaves like redacts the embed placeholder6671 no user is logged in6672 redacts the placeholder6673 the user does not have permission do see charts6674 redacts the placeholder6675 behaves like retains the embed placeholder when applicable6676 the user has requisite permissions6677 leaves the placeholder6678 with /-/metrics?environment=:environment_id URL6679 behaves like redacts the embed placeholder6680 no user is logged in6681 redacts the placeholder6682 the user does not have permission do see charts6683 redacts the placeholder6684 behaves like retains the embed placeholder when applicable6685 the user has requisite permissions6686 leaves the placeholder6687 for a grafana dashboard6688 behaves like redacts the embed placeholder6689 no user is logged in6690 redacts the placeholder6691 the user does not have permission do see charts6692 redacts the placeholder6693 behaves like retains the embed placeholder when applicable6694 the user has requisite permissions6695 leaves the placeholder6696 for a cluster metric embed6697 with user who can read cluster6698 behaves like redacts the embed placeholder6699 no user is logged in6700 redacts the placeholder6701 the user does not have permission do see charts6702 redacts the placeholder6703 behaves like retains the embed placeholder when applicable6704 the user has requisite permissions6705 leaves the placeholder6706 without user who can read cluster6707 redacts the embed placeholder6708 the user has requisite permissions6709 for an internal non-dashboard url6710 leaves the placeholder6711 with over 100 embeds6712 redacts ill-advised embeds6713 for an alert embed6714 behaves like redacts the embed placeholder6715 no user is logged in6716 redacts the placeholder6717 the user does not have permission do see charts6718 redacts the placeholder6719 behaves like retains the embed placeholder when applicable6720 the user has requisite permissions6721 leaves the placeholder6722Mutations::MergeRequests::SetAssignees6723 when the user does not have permissions6724 #resolve6725 behaves like permission level for merge request mutation is correctly verified6726 when the user is not a project member6727 behaves like when the user does not have access to the resource6728 raises an error6729 even if assigned to the merge request6730 does not modify merge request6731 even if reviewer of the merge request6732 raises an error6733 even if author of the merge request6734 raises an error6735 when the user is a project member6736 with guest role6737 behaves like when the user does not have access to the resource6738 raises an error6739 even if assigned to the merge request6740 does not modify merge request6741 even if reviewer of the merge request6742 raises an error6743 even if author of the merge request6744 raises an error6745 with reporter role6746 behaves like when the user does not have access to the resource6747 raises an error6748 even if assigned to the merge request6749 does not modify merge request6750 even if reviewer of the merge request6751 raises an error6752 even if author of the merge request6753 raises an error6754 behaves like an assignable resource6755 #resolve6756 raises an error if the resource is not accessible to the user6757 does not change assignees if the resource is not accessible to the assignees6758 returns an operational error if the resource is not accessible to the assignees6759 when the user can update the resource6760 replaces the assignee6761 returns errors when resource could not be updated6762 when passing an empty assignee list6763 removes all assignees6764 when passing "append" as true6765 is a NO-OP in FOSS6766 when passing "remove" as true6767 removes named assignee6768 does not remove unnamed assignee6769Gitlab::Metrics::WebTransaction6770 #run6771 yields the supplied block6772 stores the transaction in the current thread6773 removes the transaction from the current thread upon completion6774 records the duration of the transaction if the request was successful6775 does not record the duration of the transaction if the request failed6776 does not record the duration of the transaction if it raised6777 returns the rack response6778 #labels6779 returns no labels when no route information is present in env6780 when request goes to Grape endpoint6781 provides labels with the method and path of the route in the grape endpoint6782 contains only the labels defined for transactions6783 does not provide labels if route infos are missing6784 when request goes to ActionController6785 tags a transaction with the name and action of a controller6786 contains only the labels defined for transactions6787 when the request content type is not :html6788 appends the mime type to the transaction action6789 when the request content type is not6790 does not append the MIME type to the transaction action6791 when the feature category is known6792 includes it in the feature category label6793 behaves like transaction metrics with labels6794 .prometheus_metric6795 adds a metric6796 #method_call_for6797 returns a MethodCall6798 #add_event6799 adds a metric6800 allows tracking of custom tags6801 with sensitive tags6802 filters tags6803 #increment6804 adds a metric6805 with block6806 overrides docstring6807 overrides labels6808 filters sensitive tags6809 #set6810 adds a metric6811 with block6812 overrides docstring6813 overrides labels6814 filters sensitive tags6815 #observe6816 adds a metric6817 with block6818 overrides docstring6819 overrides labels6820 filters sensitive tags6821Banzai::Filter::AudioLinkFilter6822 when the element src has an audio extension6823 behaves like an audio element6824 replaces the image tag with an audio tag6825 behaves like an audio element6826 replaces the image tag with an audio tag6827 behaves like an audio element6828 replaces the image tag with an audio tag6829 behaves like an audio element6830 replaces the image tag with an audio tag6831 behaves like an audio element6832 replaces the image tag with an audio tag6833 behaves like an audio element6834 replaces the image tag with an audio tag6835 behaves like an audio element6836 replaces the image tag with an audio tag6837 behaves like an audio element6838 replaces the image tag with an audio tag6839 behaves like an audio element6840 replaces the image tag with an audio tag6841 behaves like an audio element6842 replaces the image tag with an audio tag6843 when the element has no src attribute6844 behaves like an unchanged element6845 leaves the document unchanged6846 when the element src is an image6847 behaves like an unchanged element6848 leaves the document unchanged6849 when the element src has an invalid file extension6850 behaves like an unchanged element6851 leaves the document unchanged6852 when data-canonical-src is empty6853 and src is audio6854 behaves like an audio element6855 replaces the image tag with an audio tag6856 and src is an image6857 behaves like an unchanged element6858 leaves the document unchanged6859 when data-canonical-src is set6860 uses the correct src6861Projects::AfterImportService6862 #execute6863 performs housekeeping6864 with some refs in refs/pull/**/*6865 removes refs/pull/**/*6866 with a ref in refs/heads/tmp6867 does not remove refs/heads/tmp6868 with a ref in refs/tags/tmp6869 does not remove refs/tags/tmp6870 with a ref in refs/replace/tmp6871 does not remove refs/replace/tmp6872 with a ref in refs/environments/tmp6873 does not remove refs/environments/tmp6874 with a ref in refs/keep-around/tmp6875 does not remove refs/keep-around/tmp6876 with a ref in refs/pipelines/tmp6877 does not remove refs/pipelines/tmp6878 when after import action throw non-retriable exception6879 throws after import error6880 when housekeeping service lease is taken6881 logs the error message6882 when after import action throw retriable exception one time6883 removes refs/pull/**/*6884 records the failures in the database6885Projects::ProtectDefaultBranchService6886 #execute6887 without a default branch6888 does nothing6889 with a default branch6890 protects the default branch6891 #protect_default_branch6892 when branch protection is needed6893 changes the HEAD of the project6894 protects the default branch6895 when branch protection is not needed6896 changes the HEAD of the project6897 does not protect the default branch6898 when protected branch does not exist6899 changes the HEAD of the project6900 protects the default branch6901 when protected branch already exists6902 changes the HEAD of the project6903 does not protect the default branch6904 #create_protected_branch6905 creates the protected branch6906 #protect_branch?6907 when default branch protection is disabled6908 returns false6909 when default branch protection is enabled6910 returns false if the branch is already protected6911 returns true if the branch is not yet protected6912 #default_branch6913 returns the default branch of the project6914 #push_access_level6915 when developers can push6916 returns the DEVELOPER access level6917 when developers can not push6918 returns the MAINTAINER access level6919 #merge_access_level6920 when developers can merge6921 returns the DEVELOPER access level6922 when developers can not merge6923 returns the MAINTAINER access level6924Packages::Debian::GroupComponentFile6925 behaves like Debian Component File6926 relationships6927 with stubbed uploader6928 is expected to belong to component class_name => Packages::Debian::GroupComponent required: inverse_of => files6929 with packages file_type6930 is expected to belong to architecture class_name => Packages::Debian::GroupArchitecture required: inverse_of => files6931 with :source file_type6932 is expected to belong to architecture class_name => Packages::Debian::GroupArchitecture inverse_of => files optional: true6933 validations6934 #component6935 is expected to validate that :component cannot be empty/falsy6936 #architecture6937 with packages file_type6938 is expected to validate that :architecture cannot be empty/falsy6939 with :source file_type6940 is expected to validate that :architecture is empty/falsy6941 #file_type6942 is expected to validate that :file_type cannot be empty/falsy6943 is expected to allow :file_type to be ‹:packages›6944 #compression_type6945 is expected not to validate that :compression_type cannot be empty/falsy6946 is expected to allow :compression_type to be ‹nil›6947 is expected to allow :compression_type to be ‹:gz›6948 #file6949 the uploader api6950 is expected to respond to #store_dir6951 is expected to respond to #cache_dir6952 is expected to respond to #work_dir6953 #file_store6954 is expected to validate that :file_store cannot be empty/falsy6955 #file_md56956 is expected to validate that :file_md5 cannot be empty/falsy6957 #file_sha2566958 is expected to validate that :file_sha256 cannot be empty/falsy6959 scopes6960 .with_container6961 is expected to contain exactly #<Packages::Debian::GroupComponentFile id: 7, created_at: "2021-10-26 21:43:46.327068399 +0000", upda..., file: "Packages", file_md5: "12345abcde", file_sha256: "be93151dc23ac34a82752444556fe79b32c7a1ad">6962 .with_codename_or_suite6963 is expected to contain exactly #<Packages::Debian::GroupComponentFile id: 7, created_at: "2021-10-26 21:43:46.327068399 +0000", upda..., file: "Packages", file_md5: "12345abcde", file_sha256: "be93151dc23ac34a82752444556fe79b32c7a1ad">6964 .with_component_name6965 is expected to contain exactly #<Packages::Debian::GroupComponentFile id: 3, created_at: "2021-10-26 21:43:46.292120103 +0000", upda..., file: "Packages", file_md5: "12345abcde", file_sha256: "be93151dc23ac34a82752444556fe79b32c7a1ad">6966 .with_file_type6967 is expected to contain exactly #<Packages::Debian::GroupComponentFile id: 8, created_at: "2021-10-26 21:43:46.336802000 +0000", upda... 1, file: "Source", file_md5: "12345abcde", file_sha256: "be93151dc23ac34a82752444556fe79b32c7a1ad">6968 .with_architecture6969 is expected to contain exactly #<Packages::Debian::GroupComponentFile id: 2, created_at: "2021-10-26 21:43:46.283812763 +0000", upda..., file: "Packages", file_md5: "12345abcde", file_sha256: "be93151dc23ac34a82752444556fe79b32c7a1ad">6970 .with_architecture_name6971 is expected to contain exactly #<Packages::Debian::GroupComponentFile id: 2, created_at: "2021-10-26 21:43:46.283812763 +0000", upda..., file: "Packages", file_md5: "12345abcde", file_sha256: "be93151dc23ac34a82752444556fe79b32c7a1ad">6972 .with_compression_type6973 is expected to contain exactly #<Packages::Debian::GroupComponentFile id: 4, created_at: "2021-10-26 21:43:46.299288402 +0000", upda..., file: "Packages", file_md5: "12345abcde", file_sha256: "be93151dc23ac34a82752444556fe79b32c7a1ad">6974 .with_file_sha2566975 is expected to contain exactly #<Packages::Debian::GroupComponentFile id: 6, created_at: "2021-10-26 21:43:46.318267270 +0000", upda...ion_type: nil, file_store: 1, file: "Packages", file_md5: "12345abcde", file_sha256: "other_sha256">6976 .updated_before6977 is expected to contain exactly #<Packages::Debian::GroupComponentFile id: 10, created_at: "2021-10-26 21:43:47.608681028 +0000", upd..., file: "Packages", file_md5: "12345abcde", file_sha256: "be93151dc23ac34a82752444556fe79b32c7a1ad"> and #<Packages::Debian::GroupComponentFile id: 11, created_at: "2021-10-26 21:43:47.619068177 +0000", upd..., file: "Packages", file_md5: "12345abcde", file_sha256: "be93151dc23ac34a82752444556fe79b32c7a1ad">6978 callbacks6979 updates metadata columns6980 #relative_path6981 with a Packages file_type6982 is expected to eq "group-component-1/binary-group-arch-1/Packages"6983 with a Source file_type6984 is expected to eq "group-component-1/source/Source"6985 with a DI Packages file_type6986 is expected to eq "group-component-1/debian-installer/binary-group-arch-1/Packages"6987 with an xz compression_type6988 is expected to eq "group-component-1/binary-group-arch-1/Packages.xz"6989Gitlab::Ci::Pipeline::Expression::Lexeme::And6990 .build6991 creates a new instance of the token6992 with non-evaluable operands6993 raises an operator error6994 .type6995 is an operator6996 .precedence6997 has a precedence6998 #evaluate6999 when left and right are truthy7000 left_value: true, right_value: 17001 is expected to be truthy7002 is expected to eq 17003 left_value: true, right_value: "a"7004 is expected to be truthy7005 is expected to eq "a"7006 left_value: 1, right_value: true7007 is expected to be truthy7008 is expected to eq true7009 left_value: 1, right_value: "a"7010 is expected to be truthy7011 is expected to eq "a"7012 left_value: "a", right_value: true7013 is expected to be truthy7014 is expected to eq true7015 left_value: "a", right_value: 17016 is expected to be truthy7017 is expected to eq 17018 when left or right is falsey7019 left_value: true, right_value: false7020 is expected to be falsey7021 left_value: true, right_value: nil7022 is expected to be falsey7023 left_value: false, right_value: true7024 is expected to be falsey7025 left_value: false, right_value: nil7026 is expected to be falsey7027 left_value: nil, right_value: true7028 is expected to be falsey7029 left_value: nil, right_value: false7030 is expected to be falsey7031 when left and right are falsey7032 left_value: false, right_value: nil7033 is expected to be falsey7034 is expected to eq false7035 left_value: nil, right_value: false7036 is expected to be falsey7037 is expected to eq nil7038Puma7039{"timestamp":"2021-10-26T21:43:53.252Z","pid":4607,"message":"Puma starting in cluster mode..."}7040{"timestamp":"2021-10-26T21:43:53.252Z","pid":4607,"message":"* Puma version: 5.3.2 (ruby 2.7.4-p191) (\"Sweetnighter\")"}7041{"timestamp":"2021-10-26T21:43:53.252Z","pid":4607,"message":"* Min threads: 1"}7042{"timestamp":"2021-10-26T21:43:53.252Z","pid":4607,"message":"* Max threads: 4"}7043{"timestamp":"2021-10-26T21:43:53.252Z","pid":4607,"message":"* Environment: test"}7044{"timestamp":"2021-10-26T21:43:53.252Z","pid":4607,"message":"* Master PID: 4607"}7045{"timestamp":"2021-10-26T21:43:53.253Z","pid":4607,"message":"* Workers: 1"}7046{"timestamp":"2021-10-26T21:43:53.253Z","pid":4607,"message":"* Restarts: (✔) hot (✖) phased"}7047{"timestamp":"2021-10-26T21:43:53.253Z","pid":4607,"message":"* Preloading application"}7048{"timestamp":"2021-10-26T21:43:53.292Z","pid":4607,"message":"* Listening on unix:///builds/gitlab-org/gitlab/tmp/tests/puma.socket"}7049{"timestamp":"2021-10-26T21:43:53.292Z","pid":4607,"message":"Use Ctrl-C to stop"}7050{"timestamp":"2021-10-26T21:43:53.292Z","pid":4607,"message":"! WARNING: Detected running cluster mode with 1 worker."}7051{"timestamp":"2021-10-26T21:43:53.292Z","pid":4607,"message":"! Running Puma in cluster mode with a single worker is often a misconfiguration."}7052{"timestamp":"2021-10-26T21:43:53.292Z","pid":4607,"message":"! Consider running Puma in single-mode (workers = 0) in order to reduce memory overhead."}7053{"timestamp":"2021-10-26T21:43:53.292Z","pid":4607,"message":"! Set the `silence_single_worker_warning` option to silence this warning message."}7054{"timestamp":"2021-10-26T21:43:53.546Z","pid":4607,"message":"! Promoting existing objects to old generation..."}7055{"timestamp":"2021-10-26T21:43:53.554Z","pid":4607,"message":"! Compacting..."}7056{"timestamp":"2021-10-26T21:43:53.589Z","pid":4607,"message":"! Friendly fork preparation complete."}7057{"timestamp":"2021-10-26T21:43:53.591Z","pid":4607,"message":"- Worker 0 (PID: 4608) booted in 0.0s, phase: 0"}7058{"timestamp":"2021-10-26T21:43:54.329Z","pid":4607,"message":"- Worker 0 (PID: 4615) booted in 0.0s, phase: 0"}7059 has a worker that self-terminates on signal SIGQUIT7060{"timestamp":"2021-10-26T21:43:55.144Z","pid":4607,"message":"- Worker 0 (PID: 4622) booted in 0.0s, phase: 0"}7061 has a worker that self-terminates on signal SIGTERM7062{"timestamp":"2021-10-26T21:43:56.172Z","pid":4607,"message":"- Worker 0 (PID: 4629) booted in 0.0s, phase: 0"}7063 has a worker that self-terminates on signal SIGKILL7064{"timestamp":"2021-10-26T21:43:56.697Z","pid":4607,"message":"=== puma shutdown: 2021-10-26 21:43:56 +0000 ==="}7065{"timestamp":"2021-10-26T21:43:56.697Z","pid":4607,"message":"- Goodbye!"}7066{"timestamp":"2021-10-26T21:43:56.698Z","pid":4607,"message":"- Gracefully shutting down workers..."}7067MergeRequests::OldestPerCommitFinder7068 #execute7069 returns a Hash mapping commit SHAs to their oldest merge requests7070 skips merge requests that are not merged7071 includes the merge request for a merge commit7072 includes a merge request that was squashed into the target branch7073 includes a merge request for both a squash and merge commit7074 includes the oldest merge request when a merge commit is present in a newer merge request7075RemoveExpiredGroupLinksWorker7076 #perform7077 ProjectGroupLinks7078 removes expired group links7079 leaves group links that expire in the future7080 leaves group links that do not expire at all7081 removes project authorization7082 GroupGroupLinks7083 expired GroupGroupLink exists7084 calls Groups::GroupLinks::DestroyService7085 removes project authorization7086 expired GroupGroupLink does not exist7087 does not call Groups::GroupLinks::DestroyService7088QuickActions::TargetService7089 #execute7090 for issue7091 behaves like find target7092 returns the target7093 behaves like build target7094 builds a new target7095 behaves like build target7096 builds a new target7097 for merge request7098 behaves like find target7099 returns the target7100 behaves like build target7101 builds a new target7102 behaves like build target7103 builds a new target7104 for commit7105 behaves like find target7106 returns the target7107 behaves like no target7108 returns nil7109 with nil target_id7110 behaves like find target7111 returns the target7112 for unknown type7113 behaves like no target7114 returns nil7115Gitlab::Instrumentation::RedisClusterValidator7116 .validate!7117 Rails environments7118 env: "production", should_raise: false7119 is expected not to raise Exception7120 env: "staging", should_raise: false7121 is expected not to raise Exception7122 env: "development", should_raise: true7123 is expected to raise Gitlab::Instrumentation::RedisClusterValidator::CrossSlotError7124 env: "test", should_raise: true7125 is expected to raise Gitlab::Instrumentation::RedisClusterValidator::CrossSlotError7126 command: :rename, arguments: ["foo", "bar"], should_raise: true7127 is expected to raise Gitlab::Instrumentation::RedisClusterValidator::CrossSlotError7128 command: :RENAME, arguments: ["foo", "bar"], should_raise: true7129 is expected to raise Gitlab::Instrumentation::RedisClusterValidator::CrossSlotError7130 command: "rename", arguments: ["foo", "bar"], should_raise: true7131 is expected to raise Gitlab::Instrumentation::RedisClusterValidator::CrossSlotError7132 command: "RENAME", arguments: ["foo", "bar"], should_raise: true7133 is expected to raise Gitlab::Instrumentation::RedisClusterValidator::CrossSlotError7134 command: :rename, arguments: ["iaa", "ahy"], should_raise: false7135 is expected not to raise Exception7136 command: :rename, arguments: ["{foo}:1", "{foo}:2"], should_raise: false7137 is expected not to raise Exception7138 command: :rename, arguments: ["foo", "foo", "bar"], should_raise: false7139 is expected not to raise Exception7140 command: :mget, arguments: ["foo", "bar"], should_raise: true7141 is expected to raise Gitlab::Instrumentation::RedisClusterValidator::CrossSlotError7142 command: :mget, arguments: ["foo", "foo", "bar"], should_raise: true7143 is expected to raise Gitlab::Instrumentation::RedisClusterValidator::CrossSlotError7144 command: :mget, arguments: ["foo", "foo"], should_raise: false7145 is expected not to raise Exception7146 command: :blpop, arguments: ["foo", "bar", "1"], should_raise: true7147 is expected to raise Gitlab::Instrumentation::RedisClusterValidator::CrossSlotError7148 command: :blpop, arguments: ["foo", "foo", "1"], should_raise: false7149 is expected not to raise Exception7150 command: :mset, arguments: ["foo", "a", "bar", "a"], should_raise: true7151 is expected to raise Gitlab::Instrumentation::RedisClusterValidator::CrossSlotError7152 command: :mset, arguments: ["foo", "a", "foo", "a"], should_raise: false7153 is expected not to raise Exception7154 command: :del, arguments: ["foo", "bar"], should_raise: true7155 is expected to raise Gitlab::Instrumentation::RedisClusterValidator::CrossSlotError7156 command: :del, arguments: [["foo", "bar"]], should_raise: true7157 is expected to raise Gitlab::Instrumentation::RedisClusterValidator::CrossSlotError7158 command: :del, arguments: ["foo", "foo"], should_raise: false7159 is expected not to raise Exception7160 command: :hset, arguments: ["foo", "bar"], should_raise: false7161 is expected not to raise Exception7162 command: :mget, arguments: [], should_raise: false7163 is expected not to raise Exception7164 .allow_cross_slot_commands7165 does not raise for invalid arguments7166 allows nested invocation7167Gitlab::Consul::Internal7168 .api_url7169 returns correct value7170 when consul setting is not present in gitlab.yml7171 does not fail7172 .discover_service7173 behaves like returns nil given blank value of7174 is expected to be nil7175 is expected to be nil7176 behaves like returns nil given blank value of7177 is expected to be nil7178 is expected to be nil7179 one service discovered7180 returns the service address and port7181 multiple services discovered7182 uses the first service7183 behaves like handles failure response7184 raises Gitlab::Consul::Internal::SocketError when SocketError is rescued7185 raises Gitlab::Consul::Internal::SSLError when OpenSSL::SSL::SSLError is rescued7186 raises Gitlab::Consul::Internal::ECONNREFUSED when Errno::ECONNREFUSED is rescued7187 raises Consul::Internal::UnexpectedResponseError when StandardError is rescued7188 raises Consul::Internal::UnexpectedResponseError when request returns 5007189 raises Consul::Internal::UnexpectedResponseError when request returns non json data7190 .discover_prometheus_server_address7191 returns the server address7192 behaves like returns nil given blank value of7193 is expected to be nil7194 is expected to be nil7195 behaves like handles failure response7196 raises Gitlab::Consul::Internal::SocketError when SocketError is rescued7197 raises Gitlab::Consul::Internal::SSLError when OpenSSL::SSL::SSLError is rescued7198 raises Gitlab::Consul::Internal::ECONNREFUSED when Errno::ECONNREFUSED is rescued7199 raises Consul::Internal::UnexpectedResponseError when StandardError is rescued7200 raises Consul::Internal::UnexpectedResponseError when request returns 5007201 raises Consul::Internal::UnexpectedResponseError when request returns non json data7202Gitlab::Graphql::Deprecation7203 .parse7204 with nil7205 parses to nil7206 with empty options7207 parses to an empty deprecation7208 with defined options7209 assigns the properties7210 validations7211 is expected to be valid7212 when the milestone is absent7213 is expected not to be valid7214 when the milestone is not milestone-ish7215 is expected not to be valid7216 when the milestone is not a string7217 is expected not to be valid7218 when the reason is absent7219 is expected not to be valid7220 when the reason is not a known reason7221 is expected not to be valid7222 when the reason is a string7223 is expected to be valid7224 when the reason is a string ending with a period7225 is expected not to be valid7226 #deprecation_reason7227 when there is a replacement7228 renders as reason-replacement-milestone7229 when there is no replacement7230 renders as reason-milestone7231 processing of reason7232 when the reason is a known reason such as :renamed7233 renders the reason_text correctly7234 when the reason is a known reason such as :discouraged7235 renders the reason_text correctly7236 when the reason is any other string7237 appends a period7238 #edit_description7239 appends milestone:reason with a leading space if there is a description7240 returns nil if there is no description7241 #original_description7242 records the description passed to it7243 #markdown7244 when there is a replacement7245 when the context is :inline7246 renders on one line7247 when the context is :block7248 renders a warning note7249 when there is no replacement7250 when the context is :inline7251 renders on one line7252 when the context is :block7253 renders a warning note7254Ci::JobToken::ProjectScopeLink7255 is expected to belong to source_project required:7256 is expected to belong to target_project required:7257 is expected to belong to added_by required:7258 unique index7259 raises an error7260 validations7261 must have a source project7262 must have a target project7263 must have a target project different than source project7264 .from_project7265 returns only the links having the given source project7266 .to_project7267 returns only the links having the given target project7268 .for_source_and_target7269 when link is found7270 is expected to eq #<Ci::JobToken::ProjectScopeLink id: 7, source_project_id: 1077, target_project_id: 1084, added_by_id: 2729, created_at: "2021-10-26 21:44:27.223955325 +0000">7271 when link is not found7272 is expected to be nil7273Gitlab::Ci::Parsers::Test::Junit7274 #parse!7275 when data is JUnit style XML7276 when there are no <testcases> in <testsuite>7277 ignores the case7278 when there are no <testcases> in <testsuites>7279 ignores the case7280 when there is only one <testsuite> in <testsuites>7281 parses XML and adds a test case to a suite7282 when there is <testcase>7283 and has failure7284 behaves like <testcase> XML parser7285 parses XML and adds a test case to the suite7286 and has error7287 behaves like <testcase> XML parser7288 parses XML and adds a test case to the suite7289 and has skipped7290 behaves like <testcase> XML parser7291 parses XML and adds a test case to the suite7292 with an empty double-tag7293 behaves like <testcase> XML parser7294 parses XML and adds a test case to the suite7295 and has an unknown type7296 behaves like <testcase> XML parser7297 parses XML and adds a test case to the suite7298 and has no content7299 behaves like <testcase> XML parser7300 parses XML and adds a test case to the suite7301 PHPUnit7302 parses XML and adds a test case to a suite7303 when there are two test cases7304 parses XML and adds test cases to a suite7305 when there are two test suites7306 parses XML and adds test cases to a suite7307 when number of test cases exceeds the max_test_cases limit7308 and test cases are unique7309 behaves like rejecting too many test cases7310 attaches an error to the TestSuite object7311 and test cases are duplicates7312 behaves like rejecting too many test cases7313 attaches an error to the TestSuite object7314 when data is not JUnit style XML7315 attaches an error to the TestSuite object7316 when data is malformed JUnit XML7317 attaches an error to the TestSuite object7318 returns 0 tests cases7319 returns a failure status7320 when data is not XML7321 attaches an error to the TestSuite object7322 returns 0 tests cases7323 returns a failure status7324 when attachment is specified in failed test case7325 assigns correct attributes to the test case7326 when data contains multiple attachments tag7327 adds the first match attachment to a test case7328 when data does not match attachment tag regex7329 does not add attachment to a test case7330 when attachment is specified in test case with error7331 assigns correct attributes to the test case7332Gitlab::Ci::ArtifactFileReader7333 #read7334 when job has artifacts and metadata7335 returns the content at the path7336 when FF ci_new_artifact_file_reader is disabled7337 returns the content at the path7338 when path does not exist7339 raises an error7340 when path points to a directory7341 raises an error7342 when path is nested7343 returns the content at the nested path7344 when artifact archive size is greater than the limit7345 raises an error7346 when metadata entry shows size greater than the limit7347 raises an error7348 when job does not have metadata artifacts7349 raises an error7350 when job does not have artifacts7351 raises ArgumentError7352DesignManagement::VersionsFinder7353 #execute7354 when user cannot read designs of an issue7355 returns no results when passed a DesignCollection7356 when passed a Design7357 returns no results when passed a Design7358 when user can read designs of an issue7359 when design management feature is disabled7360 returns no results when passed a DesignCollection7361 when passed a Design7362 returns no results when passed a Design7363 when design management feature is enabled7364 passing a DesignCollection or a Design for the initial scoping7365 returns the versions scoped to the DesignCollection7366 when passed a Design7367 returns the versions scoped to the Design7368 returning versions earlier or equal to a version7369 when argument is the first version7370 is expected to eq [#<DesignManagement::Version id: 17, sha: "5161f5f4cc7352831213578729381911effad672", issue_id: 749, created_at: "2021-10-26 21:44:34.565356000 +0000", author_id: 2741>]7371 when argument is the second version7372 is expected to contain exactly #<DesignManagement::Version id: 17, sha: "5161f5f4cc7352831213578729381911effad672", issue_id: 749, created_at: "2021-10-26 21:44:34.565356000 +0000", author_id: 2741> and #<DesignManagement::Version id: 18, sha: "a30e2bd5865a0b99777290ae4316eed009e9d2b3", issue_id: 749, created_at: "2021-10-26 21:44:34.610420000 +0000", author_id: 2741>7373 returning versions by SHA7374 when argument is the first version7375 is expected to contain exactly #<DesignManagement::Version id: 17, sha: "5161f5f4cc7352831213578729381911effad672", issue_id: 749, created_at: "2021-10-26 21:44:34.565356000 +0000", author_id: 2741>7376 when argument is the second version7377 is expected to contain exactly #<DesignManagement::Version id: 18, sha: "a30e2bd5865a0b99777290ae4316eed009e9d2b3", issue_id: 749, created_at: "2021-10-26 21:44:34.610420000 +0000", author_id: 2741>7378 returning versions by ID7379 when argument is the first version7380 is expected to contain exactly #<DesignManagement::Version id: 17, sha: "5161f5f4cc7352831213578729381911effad672", issue_id: 749, created_at: "2021-10-26 21:44:34.565356000 +0000", author_id: 2741>7381 when argument is the second version7382 is expected to contain exactly #<DesignManagement::Version id: 18, sha: "a30e2bd5865a0b99777290ae4316eed009e9d2b3", issue_id: 749, created_at: "2021-10-26 21:44:34.610420000 +0000", author_id: 2741>7383 mixing id and sha7384 when arguments are consistent7385 is expected to contain exactly #<DesignManagement::Version id: 17, sha: "5161f5f4cc7352831213578729381911effad672", issue_id: 749, created_at: "2021-10-26 21:44:34.565356000 +0000", author_id: 2741>7386 when arguments are in-consistent7387 is expected to be empty7388Gitlab::Sanitizers::Exif7389 #batch_clean7390 filters only jpg/tiff images by filename7391 with image uploads7392 processes all uploads if range ID is not set7393 processes only uploads in the selected range7394 processes only uploads for the selected uploader7395 processes only uploads created since specified date7396 pauses if sleep_time is set7397 #clean7398 no dry run7399 removes exif from the image7400 ignores image without exif7401 raises an error if the exiftool fails with an error7402 for files that do not have the correct MIME type7403 cleans only jpg/tiff images with the correct mime types7404 dry run7405 doesn't change the image7406 #extra_tags7407 returns a list of keys for exif file7408 returns an empty list for file with only whitelisted and ignored tags7409Gitlab::SidekiqMigrateJobs7410 #execute7411 scheduled jobs7412 behaves like processing a set7413 when the set is empty7414 returns the number of scanned and migrated jobs7415 when the set is not empty7416 returns the number of scanned and migrated jobs7417 when there are no matching jobs7418 does not change any queue names7419 when there are matching jobs7420 migrates only the workers matching the given worker from the set7421 allows migrating multiple workers at once7422 allows migrating multiple workers to the same queue7423 does not try to migrate jobs that are removed from the set during the migration7424 does not try to migrate unmatched jobs that are added to the set during the migration7425 iterates through the entire set of jobs7426 logs output at the start, finish, and every LOG_FREQUENCY jobs7427 retried jobs7428 behaves like processing a set7429 when the set is empty7430 returns the number of scanned and migrated jobs7431 when the set is not empty7432 returns the number of scanned and migrated jobs7433 when there are no matching jobs7434 does not change any queue names7435 when there are matching jobs7436 migrates only the workers matching the given worker from the set7437 allows migrating multiple workers at once7438 allows migrating multiple workers to the same queue7439 does not try to migrate jobs that are removed from the set during the migration7440 does not try to migrate unmatched jobs that are added to the set during the migration7441 iterates through the entire set of jobs7442 logs output at the start, finish, and every LOG_FREQUENCY jobs7443Gitlab::Ci::Config::Entry::Product::Matrix7444 validations7445 when entry config value is correct7446 #valid?7447 is expected to be valid7448 when entry config generates too many jobs7449 #valid?7450 is expected not to be valid7451 #errors7452 returns error about too many jobs7453 when entry config has only one variable with multiple values7454 #valid?7455 is expected to be valid7456 #errors7457 returns no errors7458 #value7459 returns the value without raising an error7460 when entry config has only one variable with one value7461 #valid?7462 is expected to be valid7463 #errors7464 returns no errors7465 #value7466 returns the value without raising an error7467 when config value has wrong type7468 #valid?7469 is expected not to be valid7470 #errors7471 returns error about incorrect type7472 .compose!7473 when valid job entries composed7474 #value7475 returns key value7476 #descendants7477 creates valid descendant nodes7478 with empty config7479 #value7480 returns empty value7481 #number_of_generated_jobs7482 with empty config7483 is expected to be zero7484 with only one variable7485 is expected to eq 107486 with two variables7487 is expected to eq 507488 with two sets of variables7489 is expected to eq 567490Gitlab::Ci::Status::Build::Scheduled7491 #illustration7492 is expected to include :image, :size, and :title7493 #status_tooltip7494 has a placeholder for the remaining time7495 .matches?7496 when build is scheduled and scheduled_at is present7497 is expected to be truthy7498 when build is scheduled7499 is expected to be falsy7500 when scheduled_at is present7501 is expected to be falsy7502bin/sidekiq-cluster7503 when selecting some queues and excluding others7504 args: ["--negate", "cronjob"], included: "-qdefault,1", excluded: "-qcronjob,1"7505 runs successfully7506 args: ["--queue-selector", "resource_boundary=cpu"], included: "-qupdate_merge_requests,1", excluded: "-qdefault,1"7507 runs successfully7508 when selecting all queues7509 runs successfully with `["*"]`7510 runs successfully with `["--queue-selector", "*"]`7511 when arguments contain newlines7512 raises an error7513Gitlab::Serverless::Service7514 exposes methods extracting data from the attributes hash7515 returns nil for missing attributes7516 #description7517 extracts the description in knative 7 format if available7518 extracts the description in knative 5/6 format if 7 is not available7519 #url7520 returns proxy URL if cluster has serverless domain7521 returns the URL from the knative 6/7 format7522 returns the URL from the knative 5 format7523Metrics::Dashboard::TransientEmbedService7524 .valid_params?7525 is expected to be truthy7526 missing embedded7527 is expected to be falsey7528 not embedded7529 is expected to be falsey7530 missing embed_json7531 is expected to be falsey7532 #get_dashboard7533 caches the unprocessed dashboard for subsequent calls7534 caches unique requests separately7535 behaves like valid embedded dashboard service response7536 behaves like valid dashboard service response for schema7537 returns a json representation of the dashboard7538 behaves like raises error for users with insufficient permissions7539 when the user does not have sufficient access7540 behaves like misconfigured dashboard service response7541 returns an appropriate message and status code7542 when the user is anonymous7543 behaves like misconfigured dashboard service response7544 returns an appropriate message and status code7545 when embed_json cannot be parsed as json7546 behaves like misconfigured dashboard service response7547 returns an appropriate message and status code7548Projects::ProjectMembersHelper7549 project members7550 #project_members_app_data_json7551 returns expected json7552 sets `members` property that matches json schema7553 sets `member_path` property7554 when pagination is not available7555 sets `pagination` attribute to expected json7556 when pagination is available7557 sets `pagination` attribute to expected json7558Labels::CreateService7559 #execute7560 in a project7561 with color in hex-code7562 creates a label7563 with color in allowed name7564 creates a label7565 with color in up-case allowed name7566 creates a label7567 with color surrounded by spaces7568 creates a label7569 with unknown color7570 doesn't create a label7571 with no color7572 doesn't create a label7573 in a group7574 with color in hex-code7575 creates a label7576 with color in allowed name7577 creates a label7578 with color in up-case allowed name7579 creates a label7580 with color surrounded by spaces7581 creates a label7582 with unknown color7583 doesn't create a label7584 with no color7585 doesn't create a label7586 in admin area7587 with color in hex-code7588 creates a label7589 with color in allowed name7590 creates a label7591 with color in up-case allowed name7592 creates a label7593 with color surrounded by spaces7594 creates a label7595 with unknown color7596 doesn't create a label7597 with no color7598 doesn't create a label7599Metrics::Dashboard::Annotations::DeleteService7600 .execute7601 with specific environment7602 with anonymous user7603 behaves like prevented annotation deletion7604 returns error response7605 does not change db state7606 with maintainer user7607 behaves like executed annotation deletion7608 returns success response7609 annotation failed to delete7610 returns error response7611 with specific cluster7612 with anonymous user7613 behaves like prevented annotation deletion7614 returns error response7615 does not change db state7616 with maintainer user7617 behaves like executed annotation deletion7618 returns success response7619 with owner user7620 behaves like executed annotation deletion7621 returns success response7622Banzai::ReferenceRedactor7623 #redact7624 when reference not visible to user7625 redacts an array of documents7626 replaces redacted reference with inner HTML7627 when data-original attribute provided7628 replaces redacted reference with original content7629 does not replace redacted reference with original content if href is given7630 uses the original content as the link content if given7631 when project is in pending delete7632 redacts an issue attached7633 redacts an external issue7634 when reference visible to user7635 does not redact an array of documents7636 when the user cannot read cross project7637 skips links to issues within the same project7638 removes info from a cross project reference7639 #redact_nodes7640 redacts an Array of nodes7641 #nodes_visible_to_user7642 returns a Set containing the visible nodes7643 handles invalid references gracefully7644Tooling::KubernetesClient7645 RESOURCE_LIST7646 returns the correct list of resources separated by commas7647 #cleanup_by_release7648Running command: `kubectl delete ingress,svc,pdb,hpa,deploy,statefulset,job,pod,secret,configmap,pvc,secret,clusterrole,clusterrolebinding,role,rolebinding,sa,crd --namespace "review-apps" --now --ignore-not-found --wait=true -l release="my-release"`7649 raises an error if the Kubernetes command fails7650 behaves like a kubectl command to delete resources7651 is expected to output to stdout7652 with multiple releases7653 behaves like a kubectl command to delete resources7654 is expected to output to stdout7655 with `wait: false`7656 behaves like a kubectl command to delete resources7657 is expected to output to stdout7658 #cleanup_by_created_at7659Running command: `kubectl delete pvc --namespace "review-apps" --now --ignore-not-found --wait=true pod-my-release-abcd`7660 raises an error if the Kubernetes command fails7661 behaves like a kubectl command to delete resources by older than given creation time7662 is expected to output to stdout7663 with multiple resource names7664 behaves like a kubectl command to delete resources by older than given creation time7665 is expected to output to stdout7666 with `wait: false`7667 behaves like a kubectl command to delete resources by older than given creation time7668 is expected to output to stdout7669 with no resource_type given7670 behaves like a kubectl command to delete resources by older than given creation time7671 is expected to output to stdout7672 with multiple resource_type given7673 behaves like a kubectl command to delete resources by older than given creation time7674 is expected to output to stdout7675 with no resources found7676 does not call #delete_by_exact_names7677 #cleanup_review_app_namespaces7678Running command: `kubectl delete namespace --now --ignore-not-found --wait=true review-abc-123 review-xyz-789`7679 raises an error if the Kubernetes command fails7680 behaves like a kubectl command to delete namespaces older than given creation time7681 is expected to output to stdout7682 with no namespaces found7683 does not call #delete_namespaces_by_exact_names7684 #raw_resource_names7685Running command: `kubectl get ingress,svc,pdb,hpa,deploy,statefulset,job,pod,secret,configmap,pvc,secret,clusterrole,clusterrolebinding,role,rolebinding,sa,crd --namespace "review-apps" -o name`7686 calls kubectl to retrieve the resource names7687 #resource_names_created_before7688 behaves like a kubectl command to retrieve resource names sorted by creationTimestamp7689Running command: `kubectl get pvc --namespace "review-apps" --sort-by='{.metadata.creationTimestamp}' -o json`7690 is expected to contain exactly "pvc-created-three-days-ago"7691 with no resource_type given7692 behaves like a kubectl command to retrieve resource names sorted by creationTimestamp7693Running command: `kubectl get --namespace "review-apps" --sort-by='{.metadata.creationTimestamp}' -o json`7694 is expected to contain exactly "pvc-created-three-days-ago"7695 with multiple resource_type given7696 behaves like a kubectl command to retrieve resource names sorted by creationTimestamp7697Running command: `kubectl get pvc,service --namespace "review-apps" --sort-by='{.metadata.creationTimestamp}' -o json`7698 is expected to contain exactly "pvc-created-three-days-ago"7699 #review_app_namespaces_created_before7700Running command: `kubectl get namespace -l tls=review-apps-tls --sort-by='{.metadata.creationTimestamp}' -o json`7701 is expected to contain exactly "namespace-created-three-days-ago"7702Pages::ZipDirectoryService7703 when work direcotry doesn't exist7704 returns success7705 when public directory is absent7706 returns success7707 when public directory is a symlink7708 returns success7709 when there is a public directory7710 creates the file next the public directory7711 includes public directory7712 returns number of entries7713 removes the old file if it exists7714 ignores other top level files and directories7715 includes index.html file7716 includes hidden file7717 includes nested directories and files7718 adds a valid symlink7719 includes raw symlink if it's target is a valid directory7720 when symlink points outside of public directory7721 raises error7722 when errors are ignored7723 does not create entry7724 when target of the symlink is absent7725 raises error7726 when errors are ignored7727 does not create entry7728 when targets itself7729 raises error7730 when errors are ignored7731 does not create entry7732 when symlink is absolute and points to outside of directory7733 raises error7734 when errors are ignored7735 does not create entry7736 when entry has unknown ftype7737 raises error7738 when errors are ignored7739 does not create entry7740 validating fixtures pages archives7741 fixture_path: "spec/fixtures/pages.zip"7742 a created archives contains exactly the same entries7743 fixture_path: "spec/fixtures/pages_non_writeable.zip"7744 a created archives contains exactly the same entries7745Gitlab::Checks::ChangesAccess7746 #validate!7747 without failed checks7748 doesn't raise an error7749 calls lfs checks7750 when time limit was reached7751 raises a TimeoutError7752 #commits7753 calls #new_commits7754 when changes contain empty revisions7755 returns only commits with non empty revisions7756 #commits_for7757 with no commits7758 behaves like a listing of new commits7759 returns expected commits7760 with unrelated commits7761 behaves like a listing of new commits7762 returns expected commits7763 with single related commit7764 behaves like a listing of new commits7765 returns expected commits7766 with single related and unrelated commit7767 behaves like a listing of new commits7768 returns expected commits7769 with multiple related commits7770 behaves like a listing of new commits7771 returns expected commits7772 with merge commits7773 behaves like a listing of new commits7774 returns expected commits7775 with criss-cross merges7776 behaves like a listing of new commits7777 returns expected commits7778 #single_change_accesses7779 with no changes7780 behaves like #single_change_access7781 returns an array of SingleChangeAccess7782 with a single change and no new commits7783 behaves like #single_change_access7784 returns an array of SingleChangeAccess7785 with a single change and new commits7786 behaves like #single_change_access7787 returns an array of SingleChangeAccess7788 with multiple changes7789 behaves like #single_change_access7790 returns an array of SingleChangeAccess7791Resolvers::BaseResolver.single7792 #resolve7793 when there is no parent7794 returns nil if parent is nil7795 when project boards7796 behaves like group and project boards resolver7797 does not create a default board7798 calls Boards::BoardsFinder7799 requires an ID7800 when querying for a single board7801 returns specified board7802 returns nil if board not found7803 when group boards7804 behaves like group and project boards resolver7805 does not create a default board7806 calls Boards::BoardsFinder7807 requires an ID7808 when querying for a single board7809 returns specified board7810 returns nil if board not found7811Banzai::Filter::UploadLinkFilter7812 preserves original url in data-canonical-src attribute7813 to a project upload7814 rebuilds relative URL for a link7815 rebuilds relative URL for an image7816 does not modify absolute URL7817 supports unescaped Unicode filenames7818 supports escaped Unicode filenames7819 with an absolute URL7820 rewrites the link correctly7821 to a group upload7822 rewrites the link correctly7823 rewrites the link correctly for subgroup7824 does not modify absolute URL7825 with an absolute URL7826 rewrites the link correctly7827 to a personal snippet7828 rewrites the link correctly7829 does not modify absolute URL7830 with an absolute URL7831 rewrites the link correctly7832 with a relative URL root7833 rewrites the link correctly7834 with an absolute URL7835 rewrites the link correctly7836 invalid input7837 name: "invalid URI", href: "://foo"7838 is expected not to raise Exception7839 name: "invalid UTF-8 byte sequences", href: "%FF"7840 is expected not to raise Exception7841 name: "garbled path", href: "open(/var/tmp/):%20/location%0Afrom:%20/test"7842 is expected not to raise Exception7843 name: "whitespace", href: "d18213acd3732630991986120e167e3d/Landscape_8.jpg\nand more"7844 is expected not to raise Exception7845 name: "null byte", href: "%00"7846 is expected not to raise Exception7847Gitlab::Suggestions::FileSuggestion7848 #line_conflict7849 when line ranges do not overlap7850 return false7851 when line ranges are identical7852 returns true7853 when one range starts, and the other ends, on the same line7854 returns true7855 when one line range contains the other7856 returns true7857 when line ranges overlap7858 returns true7859 when no suggestions have been added7860 returns false7861 #new_content7862 with two suggestions7863 returns a blob with the suggestions applied to it7864 when no suggestions have been added7865 returns an empty string7866 with multiline suggestions7867 when the previous suggestion increases the line count7868 returns a blob with the suggestions applied to it7869 when the previous suggestion decreases and increases the line count7870 returns a blob with the suggestions applied to it7871 when the previous suggestion replaces with the same number of lines7872 returns a blob with the suggestions applied to it7873 when the previous suggestion replaces multiple lines and the suggestions were applied out of order7874 returns a blob with the suggestions applied to it7875Gitlab::LocalAndRemoteStorageMigration::PagesDeploymentMigrater7876 behaves like local and remote storage migration7877 start_store: 1, end_store: 2, method: :migrate_to_remote_storage7878 successfully migrates7879 start_store: 2, end_store: 2, method: :migrate_to_remote_storage7880 successfully migrates7881 start_store: 2, end_store: 1, method: :migrate_to_local_storage7882 successfully migrates7883 start_store: 1, end_store: 1, method: :migrate_to_local_storage7884 successfully migrates7885 when migration fails7886 prints error7887Gitlab::Ci::Jwt7888 #payload7889 has correct values for the standard JWT attributes7890 has correct values for the custom attributes7891 skips user related custom attributes if build has no user assigned7892 ref type7893 branches7894 is "branch"7895 tags7896 is "tag"7897 merge requests7898 is "branch"7899 ref_protected7900 is false when ref is not protected7901 is true when ref is protected7902 environment7903 has correct values for environment attributes7904 .for_build7905 when ci_jwt_signing_key feature flag is disabled7906 behaves like generating JWT for build7907 when signing key is present7908 generates JWT with key id7909 generates JWT for the given job with ttl equal to build timeout7910 generates JWT for the given job with default ttl if build timeout is not set7911 when signing key is missing7912 raises NoSigningKeyError7913 when ci_jwt_signing_key feature flag is enabled7914 behaves like generating JWT for build7915 when signing key is present7916 generates JWT with key id7917 generates JWT for the given job with ttl equal to build timeout7918 generates JWT for the given job with default ttl if build timeout is not set7919 when signing key is missing7920 raises NoSigningKeyError7921Jobs/Test.gitlab-ci.yml7922 the created pipeline7923 on master7924 creates the test job7925 on another branch7926 creates the test job7927 on tag7928 creates the test job7929 on merge request7930 has no jobs7931 TEST_DISABLED is set7932 on master7933 has no jobs7934 on another branch7935 has no jobs7936 on tag7937 has no jobs7938Gitlab::EtagCaching::Middleware7939 .skip!7940 sets the skip header on the response7941 when ETag caching is not enabled for current route7942 does not add ETag headers7943 passes status code from app7944 does not set feature category attribute7945 when there is no ETag in store for given resource7946 generates ETag7947 when If-None-Match header was specified7948 tracks "etag_caching_key_not_found" event7949 when there is ETag in store for given resource7950 returns the correct headers7951 when the matching route requests that the ETag is skipped7952 returns the correct headers7953 when If-None-Match header matches ETag in store7954 does not call app7955 returns status code 3047956 sets correct headers7957 pushes route's feature category to the context7958 returns empty body7959 tracks "etag_caching_cache_hit" event7960 behaves like sends a process_action.action_controller notification7961 sends the expected payload7962 log subscriber processes action7963 when polling is disabled7964 returns status code 4297965 behaves like sends a process_action.action_controller notification7966 sends the expected payload7967 log subscriber processes action7968 when If-None-Match header does not match ETag in store7969 calls app7970 tracks "etag_caching_resource_changed" event7971 when If-None-Match header is not specified7972 tracks "etag_caching_header_missing" event7973 when GitLab instance is using a relative URL7974 uses full path as cache key7975ProjectDeployToken7976 is expected to belong to project required:7977 is expected to belong to deploy_token required:7978 is expected to validate that :deploy_token cannot be empty/falsy7979 is expected to validate that :project cannot be empty/falsy7980 is expected to validate that :deploy_token_id is case-sensitively unique within the scope of :project_id7981BlobViewer::MetricsDashboardYml7982 with metrics_dashboard_exhaustive_validations feature flag on7983 when the definition is valid7984 #valid?7985 calls prepare! on the viewer7986 processes dashboard yaml and returns true7987 #errors7988 returns empty array7989 when definition is invalid7990 #valid?7991 returns false7992 #errors7993 returns validation errors7994 when YAML syntax is invalid7995 #valid?7996 returns false7997 #errors7998 returns validation errors7999 when YAML loader raises error8000 is invalid8001 returns validation errors8002 with metrics_dashboard_exhaustive_validations feature flag off8003 when the definition is valid8004 #valid?8005 calls prepare! on the viewer8006 processes dashboard yaml and returns true8007 #errors8008 returns empty array8009 when definition is invalid8010 #valid?8011 returns false8012 #errors8013 returns validation errors8014 when YAML syntax is invalid8015 #valid?8016 returns false8017 #errors8018 returns validation errors8019 when YAML loader raises error8020 is invalid8021 returns validation errors8022Security::MergeReportsService#execute8023 copies scanners into target report and eliminates duplicates8024 copies identifiers into target report and eliminates duplicates8025 deduplicates (except cwe and wasc) and sorts the vulnerabilities by severity (desc) then by compare key8026 deduplicates scanned resources8027 errors on target report8028 is expected to eq [{:message=>"bar", :type=>"foo"}, {:message=>"baz", :type=>"zoo"}]8029 ordering reports for sast analyzers8030 when reports are gathered in an unprioritized order8031 is expected to eql #<Gitlab::Ci::Reports::Security::Scanner:0x00007f844cbc0d68 @external_id="bandit", @name="Bandit", @v...ty Scanner Vendor", @version="1.0.0", @sort_keys=[1, "bandit", "Bandit", "Security Scanner Vendor"]> and #<Gitlab::Ci::Reports::Security::Scanner:0x00007f844cc8a9b0 @external_id="semgrep", @name="Semgrep", ... Scanner Vendor", @version="1.0.0", @sort_keys=[2, "semgrep", "Semgrep", "Security Scanner Vendor"]>8032 is expected to eq 28033 is expected to eql #<Gitlab::Ci::Reports::Security::Identifier:0x00007f844a633820 @external_id="B403", @external_type="b...id", @name="bandit_test_id-B403", @url=nil, @fingerprint="9ea39e538d11434f325435e905bf238e7cf1f7a4"> and #<Gitlab::Ci::Reports::Security::Identifier:0x00007f844ae86e78 @external_id="CVE-2019-123", @external...="cve", @name="cve-CVE-2019-123", @url=nil, @fingerprint="6d834ff5767ac7544bef36b0e9996a9a3d6da5f1">8034 is expected to contain exactly #<Gitlab::Ci::Reports::Security::Identifier:0x00007f84497bd520 @external_id="rules.bandit.B105", @ext...e="semgrep_id-rules.bandit.B105", @url=nil, @fingerprint="86d65bee153188dc92a8fd17263d8319d9fbe4ee">8035 when a custom analyzer is completed before the known analyzers8036 is expected to eql #<Gitlab::Ci::Reports::Security::Scanner:0x00007f844a8b2a88 @external_id="bandit", @name="Bandit", @v...ty Scanner Vendor", @version="1.0.0", @sort_keys=[1, "bandit", "Bandit", "Security Scanner Vendor"]>, #<Gitlab::Ci::Reports::Security::Scanner:0x00007f844a9aed88 @external_id="semgrep", @name="Semgrep", ... Scanner Vendor", @version="1.0.0", @sort_keys=[2, "semgrep", "Semgrep", "Security Scanner Vendor"]>, and #<Gitlab::Ci::Reports::Security::Scanner:0x00007f844aa76928 @external_id="scanner-2", @name="Scanner ...ndor", @version="1.0.0", @sort_keys=[Infinity, "scanner-2", "Scanner 2", "Security Scanner Vendor"]>8037 is expected to eq 38038 is expected to contain exactly #<Gitlab::Ci::Reports::Security::Identifier:0x00007f8466a69068 @external_id="VULN-2", @external_type=...ner-2", @name="scanner-2-VULN-2", @url=nil, @fingerprint="8e683704c05c3d223f7572623a39cdf39ecc5f15"> and #<Gitlab::Ci::Reports::Security::Identifier:0x00007f8449ef6aa8 @external_id="CVE-2019-456", @external...="cve", @name="cve-CVE-2019-456", @url=nil, @fingerprint="47c8c718e4355e29c0b8e87fd62c2c7da65911dd">8039Gitlab::Prometheus::AdditionalMetricsParser8040 #load_groups_from_yaml8041 parsing sample yaml8042 parses to two metric groups with 2 and 1 metric respectively8043 provide group data8044 provides metrics data8045 provides query data8046 group required fields8047 behaves like required field8048 when metrics is nil8049 throws parsing error8050 when metrics are not specified8051 throws parsing error8052 behaves like required field8053 when name is nil8054 throws parsing error8055 when name are not specified8056 throws parsing error8057 behaves like required field8058 when priority is nil8059 throws parsing error8060 when priority are not specified8061 throws parsing error8062 metrics fields parsing8063 behaves like required field8064 when title is nil8065 throws parsing error8066 when title are not specified8067 throws parsing error8068 behaves like required field8069 when required metrics is nil8070 throws parsing error8071 when required metrics are not specified8072 throws parsing error8073 behaves like required field8074 when weight is nil8075 throws parsing error8076 when weight are not specified8077 throws parsing error8078 behaves like required field8079 when queries is nil8080 throws parsing error8081 when queries are not specified8082 throws parsing error8083Packages::Tag8084 relationships8085 is expected to belong to package required: inverse_of => tags8086 validations8087 is expected to validate that :package cannot be empty/falsy8088 is expected to validate that :name cannot be empty/falsy8089 .for_packages8090 is expected to contain exactly #<Packages::Tag id: 3, package_id: 6, name: "tag-3", created_at: "2021-10-26 21:45:55.187913783 +0000", updated_at: "2021-10-26 21:45:55.187913783 +0000">, #<Packages::Tag id: 4, package_id: 7, name: "tag-4", created_at: "2021-10-26 21:45:55.207069961 +0000", updated_at: "2021-10-26 21:45:55.207069961 +0000">, and #<Packages::Tag id: 5, package_id: 8, name: "tag-5", created_at: "2021-10-26 21:45:55.225377799 +0000", updated_at: "2021-10-26 21:45:55.225377799 +0000">8091 with too many tags8092 is expected to contain exactly #<Packages::Tag id: 7, package_id: 10, name: "tag-7", created_at: "2021-10-26 21:45:55.650071855 +0000", updated_at: "2021-10-26 21:45:55.650071855 +0000"> and #<Packages::Tag id: 8, package_id: 11, name: "tag-8", created_at: "2021-10-26 21:45:55.663578024 +0000", updated_at: "2021-10-26 21:45:55.663578024 +0000">8093 .with_name8094 is expected to contain exactly #<Packages::Tag id: 9, package_id: 12, name: "tag1", created_at: "2021-10-26 21:45:55.935162236 +0000", updated_at: "2021-10-26 21:45:55.935162236 +0000">8095 with nil name8096 is expected to eq []8097 with multiple names8098 is expected to contain exactly #<Packages::Tag id: 9, package_id: 12, name: "tag1", created_at: "2021-10-26 21:45:55.935162236 +0000", updated_at: "2021-10-26 21:45:55.935162236 +0000"> and #<Packages::Tag id: 11, package_id: 12, name: "tag3", created_at: "2021-10-26 21:45:55.941689035 +0000", updated_at: "2021-10-26 21:45:55.941689035 +0000">8099UserFinder8100 #find_by_id8101 when the user exists8102 returns the user8103 when the user exists (id as string)8104 returns the user8105 when the user does not exist8106 returns nil8107 #find_by_username8108 when the user exists8109 returns the user8110 when the user does not exist8111 returns nil8112 #find_by_id_or_username8113 when the user exists (id)8114 returns the user8115 when the user exists (id as string)8116 returns the user8117 when the user exists (username)8118 returns the user8119 when the user does not exist (username)8120 returns nil8121 when the user does not exist8122 returns nil8123 #find_by_id!8124 when the user exists8125 returns the user8126 when the user exists (id as string)8127 returns the user8128 when the user does not exist8129 raises ActiveRecord::RecordNotFound8130 #find_by_username!8131 when the user exists8132 returns the user8133 when the user does not exist8134 raises ActiveRecord::RecordNotFound8135 #find_by_id_or_username!8136 when the user exists (id)8137 returns the user8138 when the user exists (id as string)8139 returns the user8140 when the user exists (username)8141 returns the user8142 when the user does not exist (username)8143 raises ActiveRecord::RecordNotFound8144 when the user does not exist8145 raises ActiveRecord::RecordNotFound8146AlertManagement::Alerts::Todo::CreateService8147 #execute8148 when the user is anonymous8149 behaves like permissions error8150 returns an error8151 when the user does not have permission8152 behaves like permissions error8153 returns an error8154 when user has permission8155 creates a todo8156 returns the alert and todo in the payload8157 when the user has a marked todo for the alert8158 when todo is pending8159 does not create a todo8160 returns an error8161 when todo is done8162 is expected to equal true8163 is expected to change `Todo.count` by 18164Packages::Debian::GenerateDistributionKeyService8165 returns an Hash8166DeployKeysProjectPolicy8167 updating a deploy_keys_project8168 when a project maintainer8169 tries to update private deploy key attached to project8170 is expected to be disallowed :update_deploy_keys_project8171 tries to update public deploy key attached to project8172 is expected to be allowed :update_deploy_keys_project8173 when a non-maintainer project member8174 tries to update private deploy key attached to project8175 is expected to be disallowed :update_deploy_keys_project8176 tries to update public deploy key attached to project8177 is expected to be disallowed :update_deploy_keys_project8178 when a user is not a project member8179 tries to update public deploy key attached to project8180 is expected to be disallowed :update_deploy_keys_project8181Gitlab::APIAuthentication::Builder8182 #build8183 behaves like builds the correct result8184 with 1 token type(s) and 1 sent through(s)8185 works when passed together8186 works when token types are passed separately8187 works when sent throughs are passed separately8188 works when token types and sent throughs are passed separately8189 behaves like builds the correct result8190 with 1 token type(s) and 2 sent through(s)8191 works when passed together8192 works when token types are passed separately8193 works when sent throughs are passed separately8194 works when token types and sent throughs are passed separately8195 behaves like builds the correct result8196 with 2 token type(s) and 1 sent through(s)8197 works when passed together8198 works when token types are passed separately8199 works when sent throughs are passed separately8200 works when token types and sent throughs are passed separately8201 behaves like builds the correct result8202 with 2 token type(s) and 2 sent through(s)8203 works when passed together8204 works when token types are passed separately8205 works when sent throughs are passed separately8206 works when token types and sent throughs are passed separately8207 with a complex auth strategy8208 builds the correct result8209Tree8210 #readme8211 returns nil when repository does not contains a README file8212 returns nil when repository does not contains a previewable README file8213 returns README when repository contains a previewable README file8214 returns first previewable README when repository contains more than one8215 returns first plain text README when repository contains more than one8216 prioritizes previewable README file over one in plain text8217 #cursor8218 is expected to be an instance of Gitaly::PaginationCursor8219Gitlab::Email::Message::InProductMarketing::Base8220 initialize8221 when series does not exist8222 raises error8223 when series exists8224WARNING: Using `expect { }.not_to raise_error(SpecificErrorClass)` risks false positives, since literally any other error would cause the expectation to pass, including those raised by Ruby (e.g. `NoMethodError`, `NameError` and `ArgumentError`), meaning the code you are intending to test may not even get reached. Instead consider using `expect { }.not_to raise_error` or `expect { }.to raise_error(DifferentSpecificErrorClass)`. This message can be suppressed by setting: `RSpec::Expectations.configuration.on_potential_false_positives = :nothing`. Called from /builds/gitlab-org/gitlab/spec/lib/gitlab/email/message/in_product_marketing/base_spec.rb:27:in `block (4 levels) in <top (required)>'.8225 does not raise error8226 #logo_path8227 is expected to eq "mailers/in_product_marketing/create-0.png"8228 #unsubscribe8229 on gitlab.com8230 is expected to include "%tag_unsubscribe_url%"8231 not on gitlab.com8232 is expected to include "http://localhost/-/profile/notifications"8233 #cta_link8234 renders link8235 #progress8236 on gitlab.com8237 is expected to include "This is email 1 of 3 in the Create series"8238 not on gitlab.com8239 is expected to include "This is email 1 of 3 in the Create series" and "http://localhost/-/profile/notifications"8240 #series?8241 track: :create, result: true8242 is expected to eq true8243 track: :team_short, result: true8244 is expected to eq true8245 track: :trial_short, result: true8246 is expected to eq true8247 track: :admin_verify, result: true8248 is expected to eq true8249 track: :verify, result: true8250 is expected to eq true8251 track: :trial, result: true8252 is expected to eq true8253 track: :team, result: true8254 is expected to eq true8255 track: :experience, result: true8256 is expected to eq true8257 track: :invite_team, result: false8258 is expected to eq false8259TimeZoneHelper8260 #timezone_data8261 with short format8262 matches schema8263 formats for display8264 with full format8265 matches schema8266 formats for display8267 with unknown format8268 raises an exception8269 #local_time8270 when timezone is `nil`8271 returns `nil`8272 when timezone is blank8273 returns `nil`8274 when a valid timezone is passed8275 returns local time8276 when an invalid timezone is passed8277 returns local time using the configured default timezone (UTC in this case)8278Gitlab::LegacyGithubImport::Client8279 convert OAuth2 client options to symbols8280 does not crash (e.g. Settingslogic::MissingSetting) when verify_ssl config is not present8281 when config is missing8282 is still possible to get an Octokit client8283 is not be possible to get an OAuth2 client8284 allow SSL verification to be configurable on API8285 uses supplied value8286 #api_endpoint8287 when provider does not specity an API endpoint8288 uses GitHub root API endpoint8289 when provider specify a custom API endpoint8290 uses the custom API endpoint8291 when given a host8292 builds a endpoint with the given host and the default API version8293 when given an API version8294 does not use the API version without a host8295 when given a host and version8296 builds a endpoint with the given options8297 and hostname8298 builds a endpoint with the given options8299 github rate limit8300 does not raise error when rate limit is disabled8301 when wait for rate limit is disabled8302 raises the error limit error when requested8303MergeRequests::CreatePipelineWorker8304 #perform8305 when the objects exist8306 calls the merge request create pipeline service and calls update head pipeline8307 when the project does not exist8308 behaves like when object does not exist8309 does not call the create pipeline service8310 when the user does not exist8311 behaves like when object does not exist8312 does not call the create pipeline service8313 when the merge request does not exist8314 behaves like when object does not exist8315 does not call the create pipeline service8316Integrations::ChatMessage::AlertMessage8317 #message8318 returns the correct message8319 #attachments8320 returns an array of one8321 contains the correct attributes8322 returns the correct color8323 returns the correct attachment fields8324 returns the correctly formatted time8325FaviconUploader8326 accept whitelist file content type8327 mime_type: "image/png"8328 behaves like accepted carrierwave upload8329 will accept upload8330 will cache uploaded file8331 mime_type: "image/vnd.microsoft.icon"8332 behaves like accepted carrierwave upload8333 will accept upload8334 will cache uploaded file8335 upload non-whitelisted file content type8336 behaves like denied carrierwave upload8337 will deny upload8338 upload misnamed non-whitelisted file content type8339 behaves like denied carrierwave upload8340 will deny upload8341Gitlab::Kas8342 .verify_api_request8343 returns nil if fails to validate the JWT8344 returns the decoded JWT8345 .secret_path8346 returns default gitlab config8347 .enabled?8348 gitlab_config is not enabled8349 is expected to be falsey8350 gitlab_config is enabled8351 is expected to be truthy8352 enabled is unset8353 is expected to be falsey8354 .external_url8355 returns gitlab_kas external_url config8356 .tunnel_url8357 with a gitlab_kas.external_k8s_proxy_url setting8358 is expected to eq "abc"8359 without a gitlab_kas.external_k8s_proxy_url setting8360 external_url uses wss://8361 is expected to eq "https://kas.gitlab.example.com/k8s-proxy"8362 external_url uses ws://8363 is expected to eq "http://kas.gitlab.example.com/k8s-proxy"8364 external_url uses grpcs://8365 is expected to eq "https://kas.gitlab.example.com/k8s-proxy"8366 external_url uses grpc://8367 is expected to eq "http://kas.gitlab.example.com/k8s-proxy"8368 .internal_url8369 returns gitlab_kas internal_url config8370 .version8371 returns gitlab_kas version config8372 .ensure_secret!8373 secret file exists8374 does not call write_secret8375 secret file does not exist8376 calls write_secret8377Packages::Nuget::SyncMetadatumService8378 #execute8379 creates a nuget metadatum8380 behaves like saving metadatum attributes8381 saves nuget metadatum8382 with exisiting nuget metadatum8383 does not create a nuget metadatum8384 behaves like saving metadatum attributes8385 saves nuget metadatum8386 with empty metadata8387 destroys the nuget metadatum8388Gitlab::JiraImport::Stage::ImportIssuesWorker8389 modules8390 behaves like include import workers modules8391 is expected to includes the ApplicationWorker module8392 is expected to includes the Gitlab::JiraImport::QueueOptions module8393 is expected to includes the Gitlab::JiraImport::ImportWorker module8394 #perform8395 when import did not start8396 behaves like cannot do Jira import8397 does not advance to next stage8398 behaves like does not advance to next stage8399 does not advance to next stage8400 when import started8401 when start_at is nil8402 behaves like advance to next stage8403 advances to attachments stage8404 when start_at is zero8405 behaves like advance to next stage8406 advances to issues stage8407 when start_at is greater than zero8408 behaves like advance to next stage8409 advances to issues stage8410 when start_at is below zero8411 behaves like advance to next stage8412 advances to attachments stage8413JiraConnect::AppDataSerializer8414 #as_json8415 uses the subscription entity8416 includes a group path with already subscribed namespaces as skip_groups8417 is expected to include {:subscriptions_path => "/-/jira_connect/subscriptions"}8418 is expected to include {:login_path => "/-/jira_connect/users"}8419 when signed in8420 is expected to include {:login_path => nil}8421IncidentManagement::PagerDuty::ProcessIncidentWorker8422 #perform8423 with valid incident payload8424 creates a GitLab issue8425 with invalid incident payload8426 does not create a GitLab issue8427 logs a warning8428Ci::PipelineVariable8429 is expected to validate that :key cannot be empty/falsy8430 behaves like CI variable8431 is expected to includes the Ci::HasVariable module8432 strips whitespaces when assigning key8433 can convert to runner variable8434 variable type8435 defines variable types8436 defaults variable type to env_var8437 supports variable type file8438 #hook_attrs8439 is expected to be a kind of Hash8440 is expected to eq {:key=>"foo", :value=>"bar"}8441Banzai::ReferenceParser::MentionedUserParser8442 #gather_references8443 when the link has a data-group attribute8444 using an existing group ID8445 returns empty list of users8446 when the link has a data-project attribute8447 using an existing project ID8448 returns empty list of users8449 when the link has a data-user attribute8450 returns an Array of users8451Mattermost::Team8452 #all8453 for valid request8454 returns teams8455 for error message8456 raises an error with message8457 #create8458 for a new team8459 returns the new team8460 for existing team8461 raises an error with message8462 #delete8463 for an existing team8464 returns team status8465 for an unknown team8466 raises an error with message8467Gitlab::SidekiqStatus8468 .set8469 stores the job ID8470 .unset8471 removes the job ID8472 .all_completed?8473 returns true if all jobs have been completed8474 returns false if a job has not yet been completed8475 .running?8476 returns true if job is running8477 returns false if job is not found8478 .num_running8479 returns 0 if all jobs have been completed8480 returns 2 if two jobs are still running8481 .num_completed8482 returns 1 if all jobs have been completed8483 returns 1 if a job has not yet been completed8484 .key_for8485 returns the key for a job ID8486 completed8487 returns the completed job8488 returns only the jobs completed8489API::Helpers::RelatedResourcesHelpers8490 #expose_path8491 empty relative URL root8492 returns the existing path8493 slash relative URL root8494 returns the existing path8495 with relative URL root8496 returns the existing path8497 #expose_url8498 respects the protocol if it is HTTP8499 respects the protocol if it is HTTPS8500 accepts the host if it contains an underscore8501 accepts port to be nil8502 includes port if provided8503 includes the relative_url before the path if it is set8504 includes the path after the host8505Gitlab::Metrics::Subscribers::ExternalHttp8506 .detail_store8507 when external HTTP detail store is empty8508 returns an empty array8509 when the performance bar is not enabled8510 returns an empty array8511 when external HTTP detail store has some values8512 returns the external http detailed store8513 .payload8514 when SafeRequestStore does not have any item from external HTTP8515 returns an empty array8516 when external HTTP recorded some values8517 returns the external http detailed store8518 #request8519 tracks external HTTP request count8520 tracks external HTTP duration8521 tracks external HTTP exceptions8522 stores per-request counters8523 stores a portion of events into the detail store8524 when the performance bar is not enabled8525 does not capture detail store8526Gitlab::Database::SimilarityScore8527 when passing empty values8528 when search is nil8529 orders by a constant 0 value8530 when rules are empty8531 orders by a constant 0 value8532 when similarity scoring based on the path8533 when searching for `git`8534 is expected to eq ["git", "gitlab", "gitaly"]8535 when searching for `gitlab`8536 is expected to eq ["gitlab", "gitlab-styles", "gitlab-danger"]8537 when searching for something unrelated8538 results have 0 similarity score8539 score multiplier8540 ranks `path` matches higher8541 annotation8542 annotates the generated SQL expression8543Mutations::Security::CiConfiguration::ConfigureSast8544 is expected to require graphql authorizations :push_code8545 #resolve8546 raises an error if the resource is not accessible to the user8547 when user does not have enough permissions8548 raises an error8549 when user is a maintainer of a different project8550 raises an error8551 when the user does not have permission to create a new branch8552 returns an array of errors8553 when the user can create a merge request8554 when service successfully generates a path to create a new merge request8555 returns a success path8556 when service can not generate any path to create a new merge request8557 returns an array of errors8558Mutations::Terraform::State::Lock8559 is expected to eq "TerraformStateLock"8560 is expected to require graphql authorizations :admin_terraform_state8561 #resolve8562 user does not have permission8563 raises an error8564 user has permission8565 locks the state8566 state is already locked8567 does not modify the existing lock8568 with invalid params8569 raises an error8570Gitlab::SlashCommands::IssueShow8571 #execute8572 the issue exists8573 returns the issue8574 when its reference is given8575 shows the issue8576 the issue does not exist8577 returns not found8578 .match8579 matches the iid8580 accepts a reference8581Gitlab::Ci::Badge::Coverage::Report8582 #entity8583 describes a coverage8584 #metadata8585 returns correct metadata8586 #template8587 returns correct template8588 #status8589 with no job specified8590 returns the most recent successful pipeline coverage value8591 and no successful pipelines8592 returns nil8593 with a blank job name8594 returns the latest successful pipeline coverage value8595 with an unmatching job name specified8596 returns nil8597 with a matching job name specified8598 returns the pipeline coverage value8599 with a more recent running pipeline8600 returns the running pipeline coverage value8601 with a more recent failed pipeline8602 returns the failed pipeline coverage value8603RuboCop::Cop::CodeReuse::Serializer8604 flags the use of a Serializer in a Service class8605 flags the use of a Serializer in a Finder8606 flags the use of a Serializer in a Presenter8607 flags the use of a Serializer in a Serializer8608 flags the use of a Serializer in a model instance method8609 flags the use of a Serializer in a model class method8610 flags the use of a Serializer in a worker8611TriggerVariableEntity8612 exposes the variable key8613 when user has access to the value8614 when user is maintainer8615 exposes the variable value8616 when user is owner8617 exposes the variable value8618 when user does not have access to the value8619 does not expose the variable value8620Types::IssueSortEnum8621 is expected to eq "IssueSort"8622 exposes all the existing issue sort values8623 behaves like common sort values8624 exposes all the existing common sort values8625ReleasePolicy8626 when the user has access to the protected tag8627 allows the user to create, update and destroy a release8628 when the user does not have access to the protected tag8629 prevents the user from creating, updating and destroying a release8630Discussions::CaptureDiffNotePositionService8631 image note on diff8632 is note affected by the service8633 when empty paths are passed as a param8634 does not calculate positons8635 when position tracer returned position8636 which is nil8637 does not create diff note position8638 which does not have a corresponding line8639 does not create diff note position8640projects/commit/show.html.haml8641 inline diff view8642DEPRECATION WARNING: Rendering actions with '.' in the name is deprecated: shared/icons/_icon_commit.svg (called from block in custom_icon at /builds/gitlab-org/gitlab/app/helpers/icons_helper.rb:14)8643DEPRECATION WARNING: Rendering actions with '.' in the name is deprecated: shared/icons/_icon_commit.svg (called from block in custom_icon at /builds/gitlab-org/gitlab/app/helpers/icons_helper.rb:14)8644DEPRECATION WARNING: Rendering actions with '.' in the name is deprecated: shared/icons/_mr_bold.svg (called from block in custom_icon at /builds/gitlab-org/gitlab/app/helpers/icons_helper.rb:14)8645DEPRECATION WARNING: Rendering actions with '.' in the name is deprecated: shared/icons/_mr_bold.svg (called from block in custom_icon at /builds/gitlab-org/gitlab/app/helpers/icons_helper.rb:14)8646 has limited width8647 parallel diff view8648 spans full width8649 in the context of a merge request8650 shows that it is in the context of a merge request8651BlobViewer::PackageJson8652 #package_name8653 returns the package name8654 #package_url8655 returns the package URL8656 #package_type8657 returns "package"8658 when package.json has "private": true8659 #package_url8660 when the homepage has a valid URL8661 returns homepage URL8662 when the homepage has an invalid URL8663 returns nil8664 #package_type8665 returns "private package"8666Gitlab::HealthChecks::Redis::RateLimitingCheck8667 #metrics8668 Check is passing8669 is expected to include (have attributes {:name => "redis_rate_limiting_ping_success", :value => 1})8670 is expected to include (have attributes {:name => "redis_rate_limiting_ping_timeout", :value => 0})8671 is expected to include (have attributes {:name => "redis_rate_limiting_ping_latency_seconds", :value => (be >= 0)})8672 Check is misbehaving8673 is expected to include (have attributes {:name => "redis_rate_limiting_ping_success", :value => 0})8674 is expected to include (have attributes {:name => "redis_rate_limiting_ping_timeout", :value => 0})8675 is expected to include (have attributes {:name => "redis_rate_limiting_ping_latency_seconds", :value => (be >= 0)})8676 Check is timeouting8677 is expected to include (have attributes {:name => "redis_rate_limiting_ping_success", :value => 0})8678 is expected to include (have attributes {:name => "redis_rate_limiting_ping_timeout", :value => 1})8679 is expected to include (have attributes {:name => "redis_rate_limiting_ping_latency_seconds", :value => (be >= 0)})8680 #readiness8681 Check returns ok8682 is expected to have attributes {:success => true}8683 Check is misbehaving8684 is expected to have attributes {:message => "unexpected Rate_limiting check result: error!", :success => false}8685 Check is timeouting8686 is expected to have attributes {:message => "Rate_limiting check timed out", :success => false}8687 Check is raising an unhandled exception8688 is expected to have attributes {:message => "unexpected Rate_limiting check result: unexpected error", :success => false}8689Import::BitbucketServerService8690 raises an exception for unknown error causes8691 when no repo is found8692 returns an error8693 when user is unauthorized8694 returns an error8695 verify url8696 when host is localhost8697 does not allow requests8698 when host is on local network8699 does not allow requests8700 when host is ftp protocol8701 does not allow requests8702ContainerRegistry::Event8703 #supported?8704 action: "delete", supported: true8705 is expected to eq true8706 action: "push", supported: true8707 is expected to eq true8708 action: "mount", supported: false8709 is expected to eq false8710 action: "pull", supported: false8711 is expected to eq false8712 #handle!8713 is expected to eq nil8714 #track!8715 with a respository target8716 repository_path: "group/test/container", action: "push", tracking_action: "push_repository"8717 creates a tracking event8718 repository_path: "group/test/container", action: "delete", tracking_action: "delete_repository"8719 creates a tracking event8720 repository_path: "foo/bar", action: "push", tracking_action: "create_repository"8721 creates a tracking event8722 repository_path: "foo/bar", action: "delete", tracking_action: "delete_repository"8723 creates a tracking event8724 with a tag target8725 repository_path: "group/test/container", action: "push", tracking_action: "push_tag"8726 creates a tracking event8727 repository_path: "group/test/container", action: "delete", tracking_action: "delete_tag"8728 creates a tracking event8729 repository_path: "foo/bar", action: "push", tracking_action: "push_tag"8730 creates a tracking event8731 repository_path: "foo/bar", action: "delete", tracking_action: "delete_tag"8732 creates a tracking event8733Gitlab::UsageDataCounters::SnippetCounter8734 behaves like a redis usage counter8735 .count(create)8736 increments the Snippet create counter by 18737 .read(create)8738 returns the total number of create events8739 behaves like a redis usage counter8740 .count(update)8741 increments the Snippet update counter by 18742 .read(update)8743 returns the total number of update events8744 behaves like a redis usage counter with totals8745 totals8746 can report all totals8747 unknown events8748 cannot increment8749 cannot read8750Projects::Prometheus::Metrics::UpdateService8751 updates the prometheus metric8752 when metric has a prometheus alert associated8753 does not schedule a prometheus alert update without title nor query being changed8754 when updating title8755 schedules a prometheus alert update8756 when updating query8757 schedules a prometheus alert update8758Types::UntrustedRegexp8759 is expected to eq "UntrustedRegexp"8760 is expected to eq "A regexp containing patterns sourced from user input"8761 .coerce_input8762 input: ".*", expected_result: ".*"8763 with input .*8764 is expected to eq ".*"8765 input: "(.*)", expected_result: "(.*)"8766 with input (.*)8767 is expected to eq "(.*)"8768 input: "[test*]+", expected_result: "[test*]+"8769 with input [test*]+8770 is expected to eq "[test*]+"8771 input: "*v1", expected_result: :raise_error8772 with input *v18773 raises a coercion error8774 input: "[test*", expected_result: :raise_error8775 with input [test*8776 raises a coercion error8777 input: "test*+", expected_result: :raise_error8778 with input test*+8779 raises a coercion error8780 .coerce_result8781 input: "1", expected_result: "1"8782 with input 18783 is expected to eq "1"8784 input: 1, expected_result: "1"8785 with input 18786 is expected to eq "1"8787 input: true, expected_result: "true"8788 with input true8789 is expected to eq "true"8790shared/notes/_form8791 with a note on issue8792 says that markdown and quick actions are supported8793 with a note on merge_request8794 says that markdown and quick actions are supported8795 with a note on commit8796 says that markdown and quick actions are supported8797CronValidator8798 validates valid crontab8799 validates invalid crontab8800 cron field is not whitelisted8801 raises an error8802Gitlab::Ci::Status::Pipeline::Common8803 #has_action?8804 is expected not to have action8805 #has_details?8806 when user has access to read pipeline8807 is expected to have details8808 when user does not have access to read pipeline8809 is expected not to have details8810 #details_path8811 links to the pipeline details page8812BulkImports::NdjsonPipeline8813 marks pipeline as ndjson8814 #deep_transform_relation!8815 transforms relation hash8816 when subrelations is an array8817 transforms each element of the array8818 when subrelation is a hash8819 transforms subrelation hash8820 when subrelation is nil8821 removes subrelation8822 #transform8823 calls relation factory8824 #load8825 when object is not persisted8826 saves the object8827 when object is persisted8828 does not save the object8829 when object is missing8830 returns8831 #relation_class8832 when relation name is pluralized8833 returns constantized class8834 when relation name is singularized8835 returns constantized class8836 #relation_key_override8837 when portable is group8838 returns group relation name override8839 when portable is project8840 returns group relation name override8841 #relation_factory8842 when portable is group8843 returns group relation factory8844 when portable is project8845 returns project relation factory8846Gitlab::GithubImport::Importer::LfsObjectsImporter8847 #parallel?8848 returns true when running in parallel mode8849 returns false when running in sequential mode8850 #execute8851 when running in parallel mode8852 imports lfs objects in parallel8853 when running in sequential mode8854 imports lfs objects in sequence8855 when LFS list download fails8856 rescues and logs the known exceptions8857 raises and logs the unknown exceptions8858 #sequential_import8859 imports each lfs object in sequence8860 #parallel_import8861 imports each lfs object in parallel8862 #collection_options8863 returns an empty Hash8864Gitlab::Ci::Config::External::Rules8865 #evaluate8866 when there is no rule8867 is expected to eq true8868 when there is a rule with if8869 when the rule matches8870 is expected to eq true8871 when the rule does not match8872 is expected to eq false8873 when there is a rule with if and when8874 raises an error8875 when there is a rule with exists8876 raises an error8877Doorkeeper::OpenidConnect::DiscoveryController routing8878 to #provider8879 to #webfinger8880 to #keys8881Doorkeeper::OpenidConnect::UserinfoController routing8882 to #show8883 to #show8884Banzai::Filter::TableOfContentsTagFilter8885 table of contents8886 [[_TOC_]] as tag8887 behaves like table of contents tag8888 replaces toc tag with ToC result8889 handles an empty ToC result8890 [[_toc_]] as tag8891 behaves like table of contents tag8892 replaces toc tag with ToC result8893 handles an empty ToC result8894 [TOC] as tag8895 behaves like table of contents tag8896 replaces toc tag with ToC result8897 handles an empty ToC result8898 [toc] as tag8899 behaves like table of contents tag8900 replaces toc tag with ToC result8901 handles an empty ToC result8902RuboCop::Cop::Migration::ComplexIndexesRequireName8903 when in migration8904 when creating complex indexes as part of create_table8905 when indexes are configured with an options hash, but no name8906 registers an offense8907 when indexes are configured with an options hash and name8908 registers no offense8909 when indexes are added to an existing table8910 when indexes are configured with an options hash, but no name8911 registers an offense8912 when indexes are configured with an options hash and a name8913 registers no offenses8914 when outside migration8915 registers no offenses8916RuboCop::Cop::Gitlab::DelegatePredicateMethods8917 registers offense for single predicate method with allow_nil:true8918 registers offense for multiple predicate methods with allow_nil:true8919 registers no offense for non-predicate method with allow_nil:true8920 registers no offense with predicate method with allow_nil:false8921 registers no offense with predicate method without allow_nil8922ObjectPool::JoinWorker8923 #perform8924 when the pool is not joinable8925 doesn't raise an error8926 when the pool has been joined before8927 succeeds in joining8928WebHookLogPresenter8929 #details_path8930 project hook8931 is expected to eq "/namespace1276/project1389/-/hooks/1/hook_logs/1"8932 service hook8933 is expected to eq "/namespace1277/project1390/-/services/drone_ci/hook_logs/2"8934 #retry_path8935 project hook8936 is expected to eq "/namespace1278/project1391/-/hooks/4/hook_logs/3/retry"8937 service hook8938 is expected to eq "/namespace1279/project1392/-/services/drone_ci/hook_logs/4/retry"8939Gitlab::UntrustedRegexp8940 #initialize8941 invalid regexp8942 is expected to raise RegexpError8943 #replace_all8944 replaces all instances of the match in a string8945 #replace8946 replaces the first instance of the match in a string8947 #===8948 returns true for a match8949 returns false for no match8950 can handle regular expressions in multiline mode8951 #match?8952 malicious regexp8953 takes under a second8954 matching regexp8955 returns an array of nil matches8956 non-matching regexp8957 returns an array of nil matches8958 #scan8959 malicious regexp8960 takes under a second8961 empty regexp8962 returns an array of nil matches8963 empty capture group regexp8964 returns an array of nil matches in an array8965 no capture group8966 returns the whole match8967 one capture group8968 returns the captured part8969 two capture groups8970 returns the captured parts8971 #match8972 when there are matches8973 returns a match object8974 when there are no matches8975 returns nil8976RuboCop::Cop::Scalability::CronWorkerContext8977 adds an offense when including CronjobQueue8978 does not add offenses for other workers8979 does not add an offense when the class defines a context8980 does not add an offense when the worker calls `with_context`8981 does not add an offense when the worker calls `bulk_perform_async_with_contexts`8982 does not add an offense when the worker calls `bulk_perform_in_with_contexts`8983admin/application_settings/general.html.haml8984 sourcegraph integration8985 when sourcegraph feature is enabled8986 show the form8987 when sourcegraph feature is disabled8988 show the form8989Terraform::StateVersionPolicy8990 rules8991 no access8992 is expected to be disallowed :read_terraform_state8993 is expected to be disallowed :admin_terraform_state8994 developer8995 is expected to be allowed :read_terraform_state8996 is expected to be disallowed :admin_terraform_state8997 maintainer8998 is expected to be allowed :read_terraform_state8999 is expected to be allowed :admin_terraform_state9000Ci::DailyBuildGroupReportResultEntity9001 #as_json9002 is expected to include :date9003 is expected not to include :group_name9004 is expected to include :coverage9005 when given param_type is not allowed9006 is expected not to include :coverage9007 is expected not to include :something_else9008Types::ReleaseType9009 is expected to require graphql authorizations :read_release9010 has the expected fields9011 assets field9012 is expected to have graphql type Types::ReleaseAssetsType9013 links field9014 is expected to have graphql type Types::ReleaseLinksType9015 milestones field9016 is expected to have graphql type #<Class:0x00007f84914266f8>9017 evidences field9018 is expected to have graphql type #<Class:0x00007f849342d230>9019 author field9020 is expected to have graphql type Types::UserType9021 commit field9022 is expected to have graphql type Types::CommitType9023RuboCop::Cop::Scalability::FileUploads9024 with required params9025 detects File in types array9026 detects File as type argument9027 with optional params9028 detects File in types array9029 detects File as type argument9030BulkImports::FileTransfer::GroupConfig9031 #portable_tree9032 returns portable tree9033 #export_path9034 returns tmpdir location9035 #portable_relations9036 returns a list of top level exportable relations9037 does not include skipped relations9038 #top_relation_tree9039 returns relation tree of a top level relation9040 #relation_excluded_keys9041 returns excluded keys for relation9042Gitlab::UsageDataCounters::MergeRequestCounter9043 behaves like a redis usage counter9044 .count(create)9045 increments the Merge Request create counter by 19046 .read(create)9047 returns the total number of create events9048 behaves like a redis usage counter with totals9049 totals9050 can report all totals9051 unknown events9052 cannot increment9053 cannot read9054CronSchedulable9055 for ci_pipeline_schedule9056 behaves like handles set_next_run_at9057 when schedule runs every minute9058 updates next_run_at to the worker's execution time9059 when there are two different schedules in the same time zones9060 sets the sames next_run_at9061 when cron is updated for existing schedules9062 updates next_run_at automatically9063MergeRequests::ResolveTodosService9064 #async_execute9065 performs MergeRequests::ResolveTodosWorker asynchronously9066 #execute9067 marks pending todo as done9068shared/milestones/_issuable.html.haml9069 issue9070 links to the page for the issue9071 links to issues page for user9072 merge request9073 links to merge requests page for user9074 links to the page for the merge request9075Resolvers::DesignManagement::DesignAtVersionResolver9076 #resolve9077 returns the specified design9078 when the user cannot see designs9079 raises ResourceNotAvailable9080 the ID belongs to a design on another issue9081 raises ResourceNotAvailable9082 the current object does not constrain the issue9083 returns the object9084BulkImports::PipelineWorker9085 behaves like successfully runs the pipeline9086 runs the given pipeline successfully9087 behaves like successfully runs the pipeline9088 runs the given pipeline successfully9089 when the pipeline cannot be found9090 logs the error9091 when the pipeline raises an exception9092 logs the error9093 when it is a network error9094 reenqueue on retriable network errors9095 when ndjson pipeline9096 runs the pipeline successfully9097 when export status is started9098 reenqueues pipeline worker9099 when job reaches timeout9100 marks as failed and logs the error9101 when export status is failed9102 marks as failed and logs the error9103Gitlab::Cleanup::RemoteUploads9104 when object_storage is enabled9105 when dry_run is set to false9106 moves files that are not in uploads table9107 when dry_run is set to true9108 does not move filese9109 when object_storage is not enabled9110 does not connect to any storage9111Banzai::Filter::KrokiFilter9112 replaces nomnoml pre tag with img tag if kroki is enabled9113 replaces nomnoml pre tag with img tag if both kroki and plantuml are enabled9114 does not replace nomnoml pre tag with img tag if kroki is disabled9115 does not replace plantuml pre tag with img tag if both kroki and plantuml are enabled9116Gitlab::Database::PartitioningMigrationHelpers::IndexHelpers9117 #add_concurrent_partitioned_index9118 when the index does not exist on the parent table9119 creates the index on each partition, and the parent table9120 when the index exists on the parent table9121 does not attempt to create any indexes9122 when additional index options are given9123 forwards them to the index helper methods9124 when a name argument for the index is not given9125 raises an error9126 when the given table is not a partitioned table9127 raises an error9128 when run inside a transaction block9129 raises an error9130 #remove_concurrent_partitioned_index_by_name9131 when the index exists9132 drops the index on the parent table, cascading to all partitions9133 when the index does not exist9134 does not attempt to drop the index9135 when the given table is not a partitioned table9136 raises an error9137 when run inside a transaction block9138 raises an error9139EventPresenter9140 #resource_parent_name9141 with group event9142 is expected to eq "group1452"9143 with project label9144 is expected to eq "group1452 / project1406"9145 #target_link_options9146 with group event9147 is expected to eq [#<Group id:4446 @group1452>, #<Milestone id:38 group1452/project1406%"My title 1012">]9148 with project label9149 is expected to eq [#<Project id:1270 group1452/project1406>>, #<Milestone id:38 group1452/project1406%"My title 1012">]9150 #target_type_name9151 returns design for a design event9152 returns project for a project event9153 returns milestone for a milestone event9154 #note_target_type_name9155 returns design for an event on a comment on a design9156 returns nil for an event without a target9157 returns issue for an issue comment event9158Gitlab::Suggestions::CommitMessage9159 #message9160 when a custom commit message is not specified9161 and is nil9162 uses the default commit message9163 and is an empty string9164 uses the default commit message9165 when a custom commit message is specified9166 shows the custom commit message9167 is specified and includes all placeholders9168 generates a custom commit message9169Gitlab::QueryLimiting::Middleware9170 #call9171 runs the application with query limiting in place9172 #action_name9173 using a Rails request9174 returns the name of the controller and action9175 includes the content type if this is not text/html9176 using a Grape API request9177 returns the name of the request method and endpoint path9178 returns nil if the route can not be retrieved9179Events::RenderService9180 #execute9181 when the request format is atom9182 renders the note inside events9183 when the request format is not atom9184 renders the note inside events9185WebpackHelper9186 #prefetch_link_tag9187DEPRECATION WARNING: The asset "foo.js" is not present in the asset pipeline.9188Falling back to an asset that may be in the public folder.9189This behavior is deprecated and will be removed.9190To bypass the asset pipeline and preserve this behavior,9191use the `skip_pipeline: true` option.9192 (called from prefetch_link_tag at /builds/gitlab-org/gitlab/app/helpers/webpack_helper.rb:5)9193 returns prefetch link tag9194 #webpack_preload_asset_tag9195 preloads the resource by default9196 prefetches the resource if explicitly asked9197WikiPages::EventCreateService9198 #execute9199DEPRECATION WARNING: `.reorder(nil)` with `.first` / `.first!` no longer takes non-deterministic result in Rails 6.2. To continue taking non-deterministic result, use `.take` / `.take!` instead. (called from wiki_event at /builds/gitlab-org/gitlab/app/services/event_create_service.rb:124)9200 returns a successful response9201DEPRECATION WARNING: `.reorder(nil)` with `.first` / `.first!` no longer takes non-deterministic result in Rails 6.2. To continue taking non-deterministic result, use `.take` / `.take!` instead. (called from wiki_event at /builds/gitlab-org/gitlab/app/services/event_create_service.rb:124)9202 creates a wiki page event9203DEPRECATION WARNING: `.reorder(nil)` with `.first` / `.first!` no longer takes non-deterministic result in Rails 6.2. To continue taking non-deterministic result, use `.take` / `.take!` instead. (called from wiki_event at /builds/gitlab-org/gitlab/app/services/event_create_service.rb:124)9204 returns an event in the payload9205DEPRECATION WARNING: `.reorder(nil)` with `.first` / `.first!` no longer takes non-deterministic result in Rails 6.2. To continue taking non-deterministic result, use `.take` / `.take!` instead. (called from wiki_event at /builds/gitlab-org/gitlab/app/services/event_create_service.rb:124)9206 records the slug for the page9207 the user is nil9208 raises an error on construction9209 the action is illegal9210 returns an error9211 does not create an event9212 the action is a deletion9213DEPRECATION WARNING: `.reorder(nil)` with `.first` / `.first!` no longer takes non-deterministic result in Rails 6.2. To continue taking non-deterministic result, use `.take` / `.take!` instead. (called from wiki_event at /builds/gitlab-org/gitlab/app/services/event_create_service.rb:124)9214 does not synchronize the wiki metadata timestamps with the git commit9215BulkImports::Groups::Pipelines::MilestonesPipeline9216 #run9217 imports group milestones into destination group and removes tmpdir9218 #load9219 when milestone is not persisted9220 saves the milestone9221 when milestone is persisted9222 does not save milestone9223 when milestone is missing9224 returns9225Gitlab::Graphql::Loaders::BatchModelLoader9226 #find9227 finds a model by id9228 only queries once per model9229 does not force values unnecessarily9230Gitlab::Bullet::Exclusions9231 #execute9232 with preferred method of path and method name9233 behaves like loads exclusion results9234 is expected to match [["_path_", "_method_"]]9235 with file pattern9236 behaves like loads exclusion results9237 is expected to match [["_file_pattern_"]]9238 with file name and line range9239 behaves like loads exclusion results9240 is expected to match [["file_name.rb", 5..10]]9241 without exclusions9242 behaves like loads exclusion results9243 is expected to match [[]]9244 without exclusions key in config9245 behaves like loads exclusion results9246 is expected to match []9247 when config file does not exist9248 provides an empty array for exclusions9249 #validate_paths!9250 when validating scenarios9251 when using paths with method name9252 when source file for exclusion exists9253 is expected not to raise Exception9254 when source file for exclusion does not exist9255 is expected to raise RuntimeError9256 when using path only9257 when source file for exclusion exists9258 is expected not to raise Exception9259 when source file for exclusion does not exist9260 is expected to raise RuntimeError9261 when path_with_method is false for a file pattern9262 is expected not to raise Exception9263Types::AwardEmojis::AwardEmojiType9264 is expected to eq "AwardEmoji"9265 is expected to require graphql authorizations :read_emoji9266 is expected to have graphql fields :description, :unicode_version, :emoji, :name, :unicode, and :user9267Gitlab::SidekiqMiddleware9268 .server_configurator9269 server metrics9270 records correct Gitaly duration9271 all optional middlewares on9272 behaves like a middleware chain9273 passes through the right middlewares9274 behaves like a middleware chain for mailer9275 behaves like a middleware chain9276 passes through the right middlewares9277 all optional middlewares off9278 behaves like a middleware chain9279 passes through the right middlewares9280 behaves like a middleware chain for mailer9281 behaves like a middleware chain9282 passes through the right middlewares9283 .client_configurator9284 behaves like a middleware chain9285 passes through the right middlewares9286 behaves like a middleware chain for mailer9287 behaves like a middleware chain9288 passes through the right middlewares9289Gitlab::ExternalAuthorization9290 #access_allowed?9291 is always true when the feature is disabled9292 #rejection_reason9293 is always nil when the feature is disabled9294 #access_for_user_to_label9295 only loads the access once per request9296 logs the access request once per request9297Packages::Pypi::PackageFinder9298 execute9299 within a project9300 is expected to eq #<Packages::Package id: 16, project_id: 1274, created_at: "2021-10-26 21:48:08.128935807 +0000", upda...name: "pypi-package-2", version: "1.0.2", package_type: "pypi", creator_id: 3035, status: "default">9301 within a group9302 is expected to eq #<Packages::Package id: 16, project_id: 1274, created_at: "2021-10-26 21:48:08.128935807 +0000", upda...name: "pypi-package-2", version: "1.0.2", package_type: "pypi", creator_id: 3035, status: "default">9303MergeRequestContextCommit9304 associations9305 is expected to belong to merge_request required:9306 is expected to have many diff_files class_name => MergeRequestContextCommitDiffFile9307 .delete_bulk9308 deletes context commits for given commit sha's and returns the commit9309 doesn't delete context commits when commit sha's are not passed9310Resolvers::UsersResolver9311 is expected to have nullable GraphQL type UserCoreConnection9312 #resolve9313 raises an error when read_users_list is not authorized9314 when no arguments are passed9315 returns all users9316 when both ids and usernames are passed9317 raises an error9318 when a set of IDs is passed9319 returns those users9320 when a set of usernames is passed9321 returns those users9322 when admins is true9323 returns only admins9324 when a search term is passed9325 returns all users who match9326Settings9327 omniauth9328 defaults to enabled9329 .load_dynamic_cron_schedules!9330 generates a valid cron schedule9331 .attr_encrypted_db_key_base_truncated9332 is a string with maximum 32 bytes size9333 .attr_encrypted_db_key_base_129334 when db key base secret is less than 12 bytes9335 expands db key base secret to 12 bytes9336 when key has multiple multi-byte UTF chars exceeding 12 bytes9337 does not use more than 32 bytes9338 .attr_encrypted_db_key_base_329339 when db key base secret is less than 32 bytes9340 expands db key base secret to 32 bytes9341 when db key base secret is 32 bytes9342 returns original value9343 when db key base contains multi-byte UTF character9344 does not use more than 32 bytes9345 when db key base multi-byte UTF chars exceeding 32 bytes9346 does not use more than 32 bytes9347 .cron_for_service_ping9348 returns correct crontab for some manually calculated example9349 returns min, hour, day in the valid range9350 .encrypted9351 defaults to using the encrypted_settings_key_base for the key9352 returns empty encrypted config when a key has not been set9353Gitlab::Ci::Config::Entry::Coverage9354 validations9355 when entry config value doesn't have the surrounding '/'9356 #errors9357 is expected to include /coverage config must be a regular expression/9358 #valid?9359 is expected not to be valid9360 when entry config value has the surrounding '/'9361 #value9362 is expected to eq "Code coverage: \\d+\\.\\d+"9363 #errors9364 is expected to be empty9365 #valid?9366 is expected to be valid9367 when entry value is not valid9368 #errors9369 is expected to include /coverage config must be a regular expression/9370 #valid?9371 is expected not to be valid9372BlobViewer::ComposerJson9373 #package_name9374 returns the package name9375Types::JiraUserType9376 is expected to eq "JiraUser"9377 has the expected fields9378Types::CiConfiguration::Sast::EntityType9379 is expected to eq "SastCiConfigurationEntity"9380 is expected to have graphql fields :field, :label, :description, :type, :options, :default_value, :value, and :size9381Gitlab::Ci::Status::Build::Skipped9382 #illustration9383 is expected to include :image, :size, and :title9384 .matches?9385 when build is skipped9386 is a correct match9387 when build is not skipped9388 does not match9389Gitlab::Metrics::Samplers::ThreadsSampler9390 behaves like metrics sampler9391 when sampling interval is passed explicitly9392 is expected to eq 429393 when sampling interval is passed through the environment9394 is expected to eq 429395 when no sampling interval is passed anywhere9396 uses the hardcoded default9397 #sample9398 sets the gauge for the concurrency total9399 thread counts9400 reports if any of the threads per group uses the db9401 thread names9402 thread_names: [nil], expected_names: ["unnamed"]9403 is expected to receive set({:thread_name=>"unnamed", :uses_db_connection=>"no"}, an_instance_of(Integer)) 1 time9404 thread_names: ["puma threadpool 1", "puma threadpool 001", "puma threadpool 002"], expected_names: ["puma threadpool"]9405 is expected to receive set({:thread_name=>"puma threadpool", :uses_db_connection=>"no"}, an_instance_of(Integer)) 1 time9406 thread_names: ["sidekiq_worker_thread"], expected_names: ["sidekiq_worker_thread"]9407 is expected to receive set({:thread_name=>"sidekiq_worker_thread", :uses_db_connection=>"no"}, an_instance_of(Integer)) 1 time9408 thread_names: ["some_sampler", "some_exporter"], expected_names: ["some_sampler", "some_exporter"]9409 is expected to receive set({:thread_name=>"some_exporter", :uses_db_connection=>"no"}, an_instance_of(Integer)) 1 time9410 thread_names: ["unknown", "thing"], expected_names: ["unrecognized"]9411 is expected to receive set({:thread_name=>"unrecognized", :uses_db_connection=>"no"}, an_instance_of(Integer)) 1 time9412projects/services/_form9413 commit_events and merge_request_events9414 display merge_request_events and commit_events descriptions9415Packages::Nuget::CreateDependencyService9416 #execute9417 behaves like creating dependencies, links and nuget metadata for9418 creates dependencies, links and nuget metadata9419 with existing dependencies9420 behaves like creating dependencies, links and nuget metadata for9421 creates dependencies, links and nuget metadata9422 with dependencies with no target framework9423 behaves like creating dependencies, links and nuget metadata for9424 creates dependencies, links and nuget metadata9425 with empty dependencies9426 is a no op9427BulkImports::ExportRequestWorker9428 #perform9429 when entity is group9430 is labeled as idempotent9431 performs multiple times sequentially without raising an exception9432 requests relations export9433 when entity is project9434 is labeled as idempotent9435 performs multiple times sequentially without raising an exception9436 requests relations export9437Ci::BuildScheduleWorker9438 when build is found9439 when build is scheduled9440 executes RunScheduledBuildService9441 when build is not scheduled9442 executes RunScheduledBuildService9443 when build is not found9444 does nothing9445Tooling::Danger::SidekiqQueues9446 #changed_queue_files9447 modified_files: ["app/workers/all_queues.yml", "ee/app/workers/all_queues.yml", "foo"], changed_queue_files: ["app/workers/all_queues.yml", "ee/app/workers/all_queues.yml"]9448 is expected to contain exactly "app/workers/all_queues.yml" and "ee/app/workers/all_queues.yml"9449 modified_files: ["app/workers/all_queues.yml", "ee/app/workers/all_queues.yml"], changed_queue_files: ["app/workers/all_queues.yml", "ee/app/workers/all_queues.yml"]9450 is expected to contain exactly "app/workers/all_queues.yml" and "ee/app/workers/all_queues.yml"9451 modified_files: ["app/workers/all_queues.yml", "foo"], changed_queue_files: ["app/workers/all_queues.yml"]9452 is expected to contain exactly "app/workers/all_queues.yml"9453 modified_files: ["ee/app/workers/all_queues.yml", "foo"], changed_queue_files: ["ee/app/workers/all_queues.yml"]9454 is expected to contain exactly "ee/app/workers/all_queues.yml"9455 modified_files: ["foo"], changed_queue_files: []9456 is expected to contain exactly9457 modified_files: [], changed_queue_files: []9458 is expected to contain exactly9459 #added_queue_names9460 returns queue names added by this change9461 #changed_queue_names9462 returns names for queues whose attributes were changed9463 ignores removed queues9464Types::Tree::BlobType9465 is expected to eq "Blob"9466 is expected to have graphql fields :id, :sha, :name, :type, :path, :flat_path, :web_url, :web_path, :lfs_oid, and :mode9467Gitlab::Utils::DelegatorOverride9468 .delegator_target9469 sets the delegator target to the validator9470 when the class does not inherit SimpleDelegator9471 raises an error9472 .delegator_override9473 adds the method name to the allowlist9474 .delegator_override_with9475 adds the method names of the module to the allowlist9476 .verify!9477 does not raise an error when an override is in allowlist9478 raises an error when there is an override9479Ci::CreatePipelineService9480 tags:9481 with valid config9482 creates a pipeline9483 with too many tags9484 creates a pipeline without builds9485Gitlab::ErrorTracking::Processor::GrpcErrorProcessor9486 .call9487 when there is no GRPC exception9488 leaves data unchanged9489 when there is a GRPC exception with a debug string9490 removes the debug error string and stores it as an extra field9491 with no custom fingerprint9492 removes the debug error string and stores it as an extra field9493 when there is a wrapped GRPC exception with a debug string9494 removes the debug error string and stores it as an extra field9495 with no custom fingerprint9496 removes the debug error string and stores it as an extra field9497SentryErrorPresenter9498 #frequency9499 returns an array of frequency structs9500 converts the times into UTC time objects9501 returns the correct counts9502 #project_id9503 returns a global ID of the correct type9504Releases::CreateEvidenceService9505 creates evidence9506 saves evidence summary9507 saves sha9508RuboCop::Cop::Migration::AddReference9509 when outside of a migration9510 does not register any offenses9511 when in a migration9512 when the table existed before9513 registers an offense when using add_reference9514 registers an offense when using add_reference with index enabled9515 registers an offense if only a different table was created9516 when creating the table at the same time9517 registers an offense when using add_reference without index9518 registers an offense when using add_reference index disabled9519 does not register an offense when using add_reference with index enabled9520 does not register an offense when the index is unique9521Gitlab::Ci::Trace::Metrics9522 #increment_trace_bytes9523 when incrementing by more than one9524 increments a single counter9525 #increment_error_counter9526 when the error reason is known9527 increments the counter9528 when the error reason is unknown9529 raises an exception9530GitlabServicePingWorker9531 does not run for GitLab.com9532 delegates to ServicePing::SubmitService9533 obtains a 86400 second exclusive lease9534 sleeps for between 0 and 60 seconds9535 when lease is not obtained9536 does not invoke ServicePing::SubmitService9537Alerting::ProjectAlertingSetting9538 Associations9539 is expected to belong to project required:9540 #token9541 when set9542 reads the token9543 when not set9544 generates a token before validation9545Gitlab::ImportExport::AfterExportStrategyBuilder9546 .build!9547 initializes strategy with attributes param9548 when klass param is9549 null it returns the default strategy9550 not a valid class it raises StrategyNotFoundError exception9551 not a descendant of AfterExportStrategy9552RuboCop::Cop::Migration::HashIndex9553 when in migration9554 registers an offense when creating a hash index9555 registers an offense when creating a concurrent hash index9556 registers an offense when creating a hash index using t.index9557 when outside of migration9558 registers no offense9559gitlab:packages namespace rake task9560 migrate9561 object storage disabled9562 doesn't migrate files9563 object storage enabled9564 migrates local file to object storage9565Projects::Security::ConfigurationController routing9566 routes to #show9567GraphHelper9568 #get_refs9569 filters our refs used by GitLab9570 #should_render_dora_charts9571 always returns false9572Gitlab::UsageDataCounters::TrackUniqueEvents9573 tracking an event9574 when tracking successfully9575 when the application setting is enabled9576 when the target and the action is valid9577 tracks and counts the events as expected9578 when tracking unsuccessfully9579 target: Project(id: integer, name: string, path: string, description: text, created_at: datetime, updated_at: datetime, creator_id: integer, namespace_id: integer, last_activity_at: datetime, import_url: string, visibility_level: integer, archived: boolean, avatar: string, merge_requests_template: text, star_count: integer, merge_requests_rebase_enabled: boolean, import_type: string, import_source: string, approvals_before_merge: integer, reset_approvals_on_push: boolean, merge_requests_ff_only_enabled: boolean, issues_template: text, mirror: boolean, mirror_user_id: integer, shared_runners_enabled: boolean, runners_token: string, build_coverage_regex: string, build_allow_git_fetch: boolean, build_timeout: integer, mirror_trigger_builds: boolean, pending_delete: boolean, public_builds: boolean, last_repository_check_failed: boolean, last_repository_check_at: datetime, only_allow_merge_if_pipeline_succeeds: boolean, has_external_issue_tracker: boolean, repository_storage: string, repository_read_only: boolean, request_access_enabled: boolean, has_external_wiki: boolean, ci_config_path: string, lfs_enabled: boolean, description_html: text, only_allow_merge_if_all_discussions_are_resolved: boolean, repository_size_limit: integer, printing_merge_request_link_enabled: boolean, auto_cancel_pending_pipelines: integer, service_desk_enabled: boolean, cached_markdown_version: integer, delete_error: text, last_repository_updated_at: datetime, disable_overriding_approvers_per_merge_request: boolean, storage_version: integer, resolve_outdated_diff_discussions: boolean, remote_mirror_available_overridden: boolean, only_mirror_protected_branches: boolean, pull_mirror_available_overridden: boolean, jobs_cache_index: integer, external_authorization_classification_label: string, mirror_overwrites_diverged_branches: boolean, pages_https_only: boolean, external_webhook_token: string, packages_enabled: boolean, merge_requests_author_approval: boolean, pool_repository_id: integer, runners_token_encrypted: string, bfg_object_map: string, detected_repository_languages: boolean, merge_requests_disable_committers_approval: boolean, require_password_to_approve: boolean, emails_disabled: boolean, max_pages_size: integer, max_artifacts_size: integer, remove_source_branch_after_merge: boolean, marked_for_deletion_at: date, marked_for_deletion_by_user_id: integer, autoclose_referenced_issues: boolean, suggestion_commit_message: string, project_namespace_id: integer), action: :invalid_action9580 returns the expected values9581 target: :invalid_target, action: :pushed9582 returns the expected values9583 target: Project(id: integer, name: string, path: string, description: text, created_at: datetime, updated_at: datetime, creator_id: integer, namespace_id: integer, last_activity_at: datetime, import_url: string, visibility_level: integer, archived: boolean, avatar: string, merge_requests_template: text, star_count: integer, merge_requests_rebase_enabled: boolean, import_type: string, import_source: string, approvals_before_merge: integer, reset_approvals_on_push: boolean, merge_requests_ff_only_enabled: boolean, issues_template: text, mirror: boolean, mirror_user_id: integer, shared_runners_enabled: boolean, runners_token: string, build_coverage_regex: string, build_allow_git_fetch: boolean, build_timeout: integer, mirror_trigger_builds: boolean, pending_delete: boolean, public_builds: boolean, last_repository_check_failed: boolean, last_repository_check_at: datetime, only_allow_merge_if_pipeline_succeeds: boolean, has_external_issue_tracker: boolean, repository_storage: string, repository_read_only: boolean, request_access_enabled: boolean, has_external_wiki: boolean, ci_config_path: string, lfs_enabled: boolean, description_html: text, only_allow_merge_if_all_discussions_are_resolved: boolean, repository_size_limit: integer, printing_merge_request_link_enabled: boolean, auto_cancel_pending_pipelines: integer, service_desk_enabled: boolean, cached_markdown_version: integer, delete_error: text, last_repository_updated_at: datetime, disable_overriding_approvers_per_merge_request: boolean, storage_version: integer, resolve_outdated_diff_discussions: boolean, remote_mirror_available_overridden: boolean, only_mirror_protected_branches: boolean, pull_mirror_available_overridden: boolean, jobs_cache_index: integer, external_authorization_classification_label: string, mirror_overwrites_diverged_branches: boolean, pages_https_only: boolean, external_webhook_token: string, packages_enabled: boolean, merge_requests_author_approval: boolean, pool_repository_id: integer, runners_token_encrypted: string, bfg_object_map: string, detected_repository_languages: boolean, merge_requests_disable_committers_approval: boolean, require_password_to_approve: boolean, emails_disabled: boolean, max_pages_size: integer, max_artifacts_size: integer, remove_source_branch_after_merge: boolean, marked_for_deletion_at: date, marked_for_deletion_by_user_id: integer, autoclose_referenced_issues: boolean, suggestion_commit_message: string, project_namespace_id: integer), action: :created9584 returns the expected values9585registrations/welcome/show9586 is expected not to have visible css "label[for=\"user_setup_for_company\"]"9587 is expected to have visible button "Get started!" that is not disabled9588 is expected not to have visible css "input[name=\"user[email_opted_in]\"]"9589Types::ContainerRepositoryDetailsType9590 is expected to eq "ContainerRepositoryDetails"9591 is expected to eq "Details of a container repository"9592 is expected to require graphql authorizations :read_container_image9593 is expected to have graphql fields :id, :name, :path, :location, :created_at, :updated_at, :expiration_policy_started_at, :status, :tags_count, :can_delete, :expiration_policy_cleanup_status, :tags, and :project9594 tags field9595 returns tags connection type9596Graphql Field feature flags9597 Feature flagged field9598 checks YAML definition for default_enabled9599 skipping YAML check9600 returns the value when feature is enabled9601 returns nil when the feature is disabled9602UploadChecksumWorker9603 #perform9604 without a valid record9605 rescues ActiveRecord::RecordNotFound9606 with a valid record9607 calls calculate_checksum!9608 calls save!9609Banzai::Filter::FrontMatterFilter9610 allows for `encoding:` before the front matter9611 converts YAML front matter to a fenced code block9612 converts TOML frontmatter to a fenced code block9613 converts JSON front matter to a fenced code block9614 converts arbitrary front matter to a fenced code block9615 on content without front matter9616 returns the content unmodified9617 on front matter without content9618 converts YAML front matter to a fenced code block9619BuildHooksWorker9620 #perform9621 when build exists9622 calls build hooks9623 when build does not exist9624 does not raise exception9625 .perform_async9626 delays scheduling a job by calling perform_in with default delay9627 behaves like worker with data consistency9628 .get_data_consistency_feature_flag_enabled?9629 returns true9630 .get_data_consistency9631 returns correct data consistency9632FeatureFlagEntity9633 has feature flag attributes9634Integrations::JiraTrackerData9635 associations9636 is expected to belong to integration required:9637 deployment_type9638 is expected to define :deployment_type as an enum, backed by an integer, using a prefix of :deployment, with possible values ‹[:unknown, :server, :cloud]›9639 encrypted attributes9640 is expected to contain exactly :api_url, :password, :url, and :username9641RuboCop::Cop::UsageData::DistinctCountByLargeForeignKey9642 when counting by disallowed key9643 registers an offense9644 does not register an offense when batch is false9645 registers an offense when batch is true9646 when calling by allowed key9647 does not register an offense with symbol9648 does not register an offense with string9649FeatureFlagsUserListsFinder9650 #execute9651 returns user lists9652 with search9653 returns only matching user lists9654Ci::CreateCrossProjectPipelineWorker9655 #perform9656 when bridge exists9657 calls cross project pipeline creation service9658 when bridge does not exist9659 does nothing9660Gitlab::Config::Entry::ComposableArray9661 #valid?9662 is valid9663 is invalid9664 is expected not to be valid9665 #compose!9666 composes child entry with configured value9667 composes child entries with configured values9668 #descendants9669 creates descendant nodes9670Gitlab::ImportExport::Project::Sample::DateCalculator9671 #closest date to average9672 when dates are empty9673 is expected to be nil9674 when dates are not empty9675 is expected to eq 2021-01-01 00:00:00.000000000 +00009676 #calculate_by_closest_date_to_average9677 when average date is nil9678 is expected to eq 2021-10-26 21:48:52.676377658 +00009679 when average date is in the past9680 is expected to eq 2022-10-26 21:48:52.712038924 +00009681 when average date is in the future9682 is expected to eq 2021-10-26 21:48:52.746051441 +00009683Ci::CreatePipelineService9684 .pre/.post stages9685 when pipeline contains a build except .pre/.post9686 creates a pipeline9687 when pipeline does not contain any other build except .pre/.post9688 does not create a pipeline9689admin mode on tasks9690 with a regular user9691 matches the expected admin mode9692 with an admin9693 matches the expected admin mode9694Gitlab::UsageMetricGenerator9695 Creating metric instrumentation files9696 creates CE metric instrumentation files using the template9697 with EE flag true9698 creates EE metric instrumentation files using the template9699 for database type9700 creates the metric instrumentation file using the template9701 with type option missing9702 raises an ArgumentError9703 with type option value not included in approved superclasses9704 raises an ArgumentError9705 without operation for database metric9706 raises an ArgumentError9707 with wrong operation for database metric9708 raises an ArgumentError9709TokenAuthenticatableStrategies::Base9710 .fabricate9711 when digest stragegy is specified9712 fabricates digest strategy object9713 when encrypted strategy is specified9714 fabricates encrypted strategy object9715 when no strategy is specified9716 fabricates insecure strategy object9717 when incompatible options are provided9718 raises an error9719Gitlab::Ci::Status::Manual9720 #text9721 is expected to eq "manual"9722 #label9723 is expected to eq "manual action"9724 #icon9725 is expected to eq "status_manual"9726 #favicon9727 is expected to eq "favicon_status_manual"9728 #group9729 is expected to eq "manual"9730BulkImports::Failure9731 associations9732 is expected to belong to entity required: true9733 validations9734 is expected to validate that :entity cannot be empty/falsy9735RuboCop::Cop::Migration::AddIndex9736 in migration9737 registers an offense when add_index is used9738 outside of migration9739 registers no offense9740Gitlab::Logging::CloudflareHelper9741 #store_cloudflare_headers!9742 with normal headers9743 adds Cf-Ray-Id and Cf-Request-Id9744 with header values with long strings9745 filters invalid header values9746 with header values with non-alphanumeric characters9747 filters invalid header values9748SystemCheck::BaseCheck9749 helpers on instance level9750 responds to SystemCheck::Helpers methods9751 responds to Gitlab::TaskHelpers methods9752Rouge::Formatters::HTMLGitlab9753 #format9754 returns highlighted ruby code9755 when options are empty9756 returns highlighted code without language9757 when line number is provided9758 returns highlighted ruby code with correct line number9759Gitlab::SlashCommands::Presenters::Error9760 is expected to be a kind of Hash9761 shows the error message9762API::Entities::GroupDetail9763 #as_json9764 includes prevent_sharing_groups_outside_hierarchy for a root group9765 excludes prevent_sharing_groups_outside_hierarchy for a subgroup9766Gitlab::Ci::YamlProcessor::Dag9767 when it is a regular pipeline9768 returns ordered jobs9769 when there is a circular dependency9770 raises TSort::Cyclic9771 when there is a missing job9772 raises MissingNodeError9773shared/milestones/_issuables.html.haml9774 shows the issuables count if show_counter is true9775 does not show the issuables count if show_counter is false9776 a high issuables count9777 shows a delimited number if show_counter is true9778API::Github::Entities9779 API::Github::Entities::User9780 aggregate_failure9781 with avatar9782 is expected to include "http://localhost/uploads/-/system/user/avatar/"9783Gitlab::StaticSiteEditor::Config::FileConfig::Entry::ImageUploadPath9784 validations9785 with a valid config9786 is expected to be valid9787 #value9788 returns a image_upload_path key9789 with an invalid config9790 is expected not to be valid9791 reports errors about wrong type9792 .default9793 returns default image_upload_path9794Captcha::CaptchaVerificationService9795 #execute9796 when there is no captcha_response9797 returns false9798 when there is a captcha_response9799 returns false9800 has a request method which returns an object with the ip address #remote_ip9801RuboCop::Cop::PreferClassMethodsOverModule9802 flags violation when using module ClassMethods and corrects9803 doesn't flag violation when using class_methods9804 doesn't flag violation when module is not extending ActiveSupport::Concern9805 doesn't flag violation when ClassMethods is used inside a class9806 doesn't flag violation when not using either class_methods or ClassMethods9807Ci::BridgePresenter9808 presents information about recoverable state9809Gitlab::Metrics::Dashboard::Validator::Client9810 #execute9811 with no validation errors9812 returns empty array9813 with validation errors9814 returns array of error objects9815Banzai::Pipeline::EmailPipeline9816 .filters9817 returns the expected type9818 excludes ImageLazyLoadFilter9819 shows punycode for autolinks9820AwardEmojis::BaseService9821 .initialize9822 uses same emoji name if not an alias9823 uses emoji original name if its an alias9824RuboCop::Cop::Gitlab::FinderWithFindBy9825 when calling execute.find9826 registers an offense and corrects9827 when called within the `FinderMethods` module9828 does not register an offense9829Asset proxy settings initialization9830 #asset_proxy9831 defaults to disabled9832ExpireBuildArtifactsWorker9833 #perform9834 executes a service9835Gitlab::SidekiqVersioning9836 .install!9837 registers all versionless and versioned queues with Redis9838Types::PermissionTypes::Project9839 is expected to have graphql field :destroy_design9840Gitlab::GithubImport::Representation::LfsObject9841 #github_identifiers9842 returns a hash with needed identifiers9843Types::MergeRequestReviewStateEnum9844 the correct enum members9845Projects::Security::ConfigurationHelper9846 security_upgrade_path9847 is expected to eq "https://about.gitlab.com/pricing/"9848Types::Tree::TreeEntryType9849 is expected to eq "TreeEntry"9850 is expected to have graphql fields :id, :sha, :name, :type, :path, :flat_path, :web_url, and :web_path9851Gitlab::TcpChecker9852 #check9853 can connect to an open port9854 fails to connect to a closed port9855Types::Ci::JobArtifactFileTypeEnum9856 exposes all job artifact file types9857ProjectMirrorSerializer9858 represents ProjectMirror entities9859RuboCop::Cop::Migration::Timestamps9860 in migration9861 registers an offense when the "timestamps" method is used9862 does not register an offense when the "timestamps" method is not used9863 does not register an offense when the "timestamps_with_timezone" method is used9864 outside of migration9865 registers no offense9866Types::InvitationInterface9867 exposes the expected fields9868 .resolve_type9869 for project member9870 is expected to equal Types::ProjectInvitationType9871 for group member9872 is expected to equal Types::GroupInvitationType9873 for an unknown type9874 raises an error9875UpdateProjectStatisticsWorker9876 #perform9877 updates the project statistics9878Types::Ci::TemplateType9879 is expected to eq "CiTemplate"9880 exposes the expected fields9881Gitlab::Ci::Parsers::Instrumentation9882 #parse!9883 sets metrics for duration of parsing9884Ci::ScheduleDeleteObjectsCronWorker9885 #perform9886 enqueues DeleteObjectsWorker jobs9887Knapsack report was generated. Preview:9888{9889 "spec/models/user_spec.rb": 218.57574985999963,9890 "spec/models/issue_spec.rb": 97.74183549899999,9891 "spec/models/namespace/traversal_hierarchy_spec.rb": 108.50177284699976,9892 "spec/models/integrations/jira_spec.rb": 54.72541901700015,9893 "spec/models/clusters/applications/ingress_spec.rb": 58.12167246400031,9894 "spec/lib/gitlab/import_export/relation_tree_restorer_spec.rb": 70.07348115900004,9895 "spec/models/operations/feature_flags/strategy_spec.rb": 16.78696448599976,9896 "spec/helpers/visibility_level_helper_spec.rb": 40.804724021999846,9897 "spec/models/integrations/slack_spec.rb": 35.803190726999674,9898 "spec/models/integration_spec.rb": 31.793458336000185,9899 "spec/services/projects/update_service_spec.rb": 37.77632849600013,9900 "spec/services/auto_merge/base_service_spec.rb": 35.66781147900019,9901 "spec/finders/releases_finder_spec.rb": 36.66466623300039,9902 "spec/lib/gitlab/ci/config_spec.rb": 29.44615782999972,9903 "spec/lib/gitlab/bitbucket_server_import/importer_spec.rb": 25.539865678999377,9904 "spec/services/alert_management/create_alert_issue_service_spec.rb": 23.402304105999974,9905 "spec/lib/gitlab/import_export/members_mapper_spec.rb": 22.550458318999517,9906 "spec/lib/gitlab/url_blocker_spec.rb": 17.187605535999865,9907 "spec/lib/gitlab/utils/markdown_spec.rb": 15.195771108999907,9908 "spec/services/search_service_spec.rb": 20.224356391000583,9909 "spec/models/operations/feature_flags/user_list_spec.rb": 16.954205385999558,9910 "spec/models/notification_recipient_spec.rb": 20.242367490000106,9911 "spec/presenters/clusters/cluster_presenter_spec.rb": 14.472553790999882,9912 "spec/routing/group_routing_spec.rb": 10.638780294999378,9913 "spec/finders/ci/runner_jobs_finder_spec.rb": 19.291723772000296,9914 "spec/lib/banzai/filter/references/project_reference_filter_spec.rb": 16.036804876000133,9915 "spec/finders/ci/runners_finder_spec.rb": 13.83985292699981,9916 "spec/lib/gitlab/email/handler/create_note_on_issuable_handler_spec.rb": 15.245671244999357,9917 "spec/lib/container_registry/client_spec.rb": 12.817631801000061,9918 "spec/lib/gitlab/ci/templates/npm_spec.rb": 15.923679669999729,9919 "spec/services/lfs/file_transformer_spec.rb": 12.221943169999577,9920 "spec/serializers/pipeline_details_entity_spec.rb": 14.32065759499983,9921 "spec/helpers/icons_helper_spec.rb": 10.421991954000077,9922 "spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb": 8.481514391999553,9923 "spec/lib/gitlab/ci/config/entry/release_spec.rb": 8.514961508999477,9924 "spec/lib/gitlab/gpg_spec.rb": 11.734753638999791,9925 "spec/lib/gitlab/legacy_github_import/importer_spec.rb": 15.042696331000116,9926 "spec/helpers/user_callouts_helper_spec.rb": 8.533554677000211,9927 "spec/lib/gitlab/search/found_blob_spec.rb": 11.20415702399987,9928 "spec/services/ci/create_web_ide_terminal_service_spec.rb": 6.860407858000144,9929 "spec/uploaders/ci/pipeline_artifact_uploader_spec.rb": 12.519015658999706,9930 "spec/lib/gitlab/ci/ansi2json_spec.rb": 5.837779301999944,9931 "spec/lib/gitlab/ci/trace/chunked_io_spec.rb": 6.630594952000138,9932 "spec/helpers/nav/top_nav_helper_spec.rb": 2.151647579999917,9933 "spec/lib/banzai/filter/inline_metrics_redactor_filter_spec.rb": 5.16202044199963,9934 "spec/graphql/mutations/merge_requests/set_assignees_spec.rb": 8.263583504999588,9935 "spec/lib/gitlab/metrics/web_transaction_spec.rb": 1.6861992969998028,9936 "spec/lib/banzai/filter/audio_link_filter_spec.rb": 6.020643983999435,9937 "spec/services/projects/after_import_service_spec.rb": 6.52265386199997,9938 "spec/services/projects/protect_default_branch_service_spec.rb": 7.173208754999905,9939 "spec/models/packages/debian/group_component_file_spec.rb": 2.4985205040002256,9940 "spec/lib/gitlab/ci/pipeline/expression/lexeme/and_spec.rb": 1.411372016000314,9941 "spec/rack_servers/puma_spec.rb": 6.924612462999903,9942 "spec/finders/merge_requests/oldest_per_commit_finder_spec.rb": 7.905799901000137,9943 "spec/workers/remove_expired_group_links_worker_spec.rb": 8.206796798999676,9944 "spec/services/quick_actions/target_service_spec.rb": 6.732043150999743,9945 "spec/lib/gitlab/instrumentation/redis_cluster_validator_spec.rb": 1.2120281449997492,9946 "spec/lib/gitlab/consul/internal_spec.rb": 1.7828782679998767,9947 "spec/lib/gitlab/graphql/deprecation_spec.rb": 1.4494205010005317,9948 "spec/models/ci/job_token/project_scope_link_spec.rb": 3.9881214420001925,9949 "spec/lib/gitlab/ci/parsers/test/junit_spec.rb": 1.2436189529998956,9950 "spec/lib/gitlab/ci/artifact_file_reader_spec.rb": 4.847718233000705,9951 "spec/finders/design_management/versions_finder_spec.rb": 2.7917026949999126,9952 "spec/lib/gitlab/sanitizers/exif_spec.rb": 5.640422942999976,9953 "spec/lib/gitlab/sidekiq_migrate_jobs_spec.rb": 1.7799273880000328,9954 "spec/lib/gitlab/ci/config/entry/product/matrix_spec.rb": 1.2520914120004818,9955 "spec/lib/gitlab/ci/status/build/scheduled_spec.rb": 4.859005192999575,9956 "spec/bin/sidekiq_cluster_spec.rb": 7.08429572499972,9957 "spec/lib/gitlab/serverless/service_spec.rb": 2.880866794999747,9958 "spec/services/metrics/dashboard/transient_embed_service_spec.rb": 1.8872878760003005,9959 "spec/helpers/projects/project_members_helper_spec.rb": 4.884352770000078,9960 "spec/services/labels/create_service_spec.rb": 4.082399392000298,9961 "spec/services/metrics/dashboard/annotations/delete_service_spec.rb": 5.681604818000778,9962 "spec/lib/banzai/reference_redactor_spec.rb": 4.2879417909998665,9963 "spec/tooling/lib/tooling/kubernetes_client_spec.rb": 1.2468514620004498,9964 "spec/services/pages/zip_directory_service_spec.rb": 1.400325387000521,9965 "spec/lib/gitlab/checks/changes_access_spec.rb": 3.0031762729995535,9966 "spec/graphql/resolvers/board_resolver_spec.rb": 3.4528174759998365,9967 "spec/lib/banzai/filter/upload_link_filter_spec.rb": 2.0708773579999615,9968 "spec/lib/gitlab/suggestions/file_suggestion_spec.rb": 4.447384445000353,9969 "spec/lib/gitlab/local_and_remote_storage_migration/pages_deployment_migrater_spec.rb": 2.197208745000353,9970 "spec/lib/gitlab/ci/jwt_spec.rb": 2.738511849999668,9971 "spec/lib/gitlab/ci/templates/Jobs/test_gitlab_ci_yaml_spec.rb": 3.0780231150001782,9972 "spec/lib/gitlab/etag_caching/middleware_spec.rb": 1.3031435769999007,9973 "spec/models/project_deploy_token_spec.rb": 2.400329404999866,9974 "spec/models/blob_viewer/metrics_dashboard_yml_spec.rb": 1.6223303729993859,9975 "spec/services/security/merge_reports_service_spec.rb": 1.5042944770002578,9976 "spec/lib/gitlab/prometheus/additional_metrics_parser_spec.rb": 1.106301836000057,9977 "spec/models/packages/tag_spec.rb": 4.551488971999788,9978 "spec/finders/user_finder_spec.rb": 1.6167358840002635,9979 "spec/services/alert_management/alerts/todo/create_service_spec.rb": 1.7834191470001315,9980 "spec/services/packages/debian/generate_distribution_key_service_spec.rb": 4.833586755000397,9981 "spec/policies/deploy_keys_project_policy_spec.rb": 4.355624285000886,9982 "spec/lib/gitlab/api_authentication/builder_spec.rb": 1.3777065880003647,9983 "spec/models/tree_spec.rb": 3.140750268999909,9984 "spec/lib/gitlab/email/message/in_product_marketing/base_spec.rb": 1.2609729509995304,9985 "spec/helpers/time_zone_helper_spec.rb": 1.3265687140001319,9986 "spec/lib/gitlab/legacy_github_import/client_spec.rb": 0.9528435729998819,9987 "spec/workers/merge_requests/create_pipeline_worker_spec.rb": 4.775485060999927,9988 "spec/models/integrations/chat_message/alert_message_spec.rb": 2.6022469340005046,9989 "spec/uploaders/favicon_uploader_spec.rb": 0.7855171199998949,9990 "spec/lib/gitlab/kas_spec.rb": 1.0240825460004999,9991 "spec/services/packages/nuget/sync_metadatum_service_spec.rb": 2.7952903039995363,9992 "spec/workers/gitlab/jira_import/stage/import_issues_worker_spec.rb": 2.075472697000805,9993 "spec/serializers/jira_connect/app_data_serializer_spec.rb": 0.9997908379991713,9994 "spec/workers/incident_management/pager_duty/process_incident_worker_spec.rb": 2.3198140419999618,9995 "spec/models/ci/pipeline_variable_spec.rb": 1.4657257999997455,9996 "spec/lib/banzai/reference_parser/mentioned_user_parser_spec.rb": 2.482146866000221,9997 "spec/lib/mattermost/team_spec.rb": 0.8871756389999064,9998 "spec/lib/gitlab/sidekiq_status_spec.rb": 0.8572882329999629,9999 "spec/lib/api/helpers/related_resources_helpers_spec.rb": 0.7625489619995278,10000 "spec/lib/gitlab/metrics/subscribers/external_http_spec.rb": 0.9952519979997305,10001 "spec/lib/gitlab/database/similarity_score_spec.rb": 0.8153319060002104,10002 "spec/graphql/mutations/security/ci_configuration/configure_sast_spec.rb": 2.014596803999666,10003 "spec/graphql/mutations/terraform/state/lock_spec.rb": 1.8017467749996285,10004 "spec/lib/gitlab/slash_commands/issue_show_spec.rb": 2.2531747990005897,10005 "spec/lib/gitlab/ci/badge/coverage/report_spec.rb": 1.655698200000188,10006 "spec/rubocop/cop/code_reuse/serializer_spec.rb": 0.8025928669994755,10007 "spec/serializers/trigger_variable_entity_spec.rb": 2.5652547279996725,10008 "spec/graphql/types/issue_sort_enum_spec.rb": 0.6467597939999905,10009 "spec/policies/release_policy_spec.rb": 1.1718702010002744,10010 "spec/services/discussions/capture_diff_note_position_service_spec.rb": 3.6318382879999263,10011 "spec/views/projects/commit/show.html.haml_spec.rb": 2.6235753410001053,10012 "spec/models/blob_viewer/package_json_spec.rb": 0.9422194140006468,10013 "spec/lib/gitlab/health_checks/redis/rate_limiting_check_spec.rb": 0.9251277149996895,10014 "spec/services/import/bitbucket_server_service_spec.rb": 1.1237028949999512,10015 "spec/models/container_registry/event_spec.rb": 1.1176311660001375,10016 "spec/lib/gitlab/usage_data_counters/snippet_counter_spec.rb": 0.827490286000284,10017 "spec/services/projects/prometheus/metrics/update_service_spec.rb": 2.575224127000183,10018 "spec/graphql/types/untrusted_regexp_spec.rb": 0.9338780949992724,10019 "spec/views/shared/notes/_form.html.haml_spec.rb": 2.6493757779999214,10020 "spec/validators/cron_validator_spec.rb": 0.6627302420001797,10021 "spec/lib/gitlab/ci/status/pipeline/common_spec.rb": 2.5442423089998556,10022 "spec/lib/bulk_imports/ndjson_pipeline_spec.rb": 1.2361299539998072,10023 "spec/lib/gitlab/github_import/importer/lfs_objects_importer_spec.rb": 1.2566331509997326,10024 "spec/lib/gitlab/ci/config/external/rules_spec.rb": 0.7103892169998289,10025 "spec/routing/openid_connect_spec.rb": 1.3011790070013376,10026 "spec/lib/banzai/filter/table_of_contents_tag_filter_spec.rb": 0.8041664479997053,10027 "spec/rubocop/cop/migration/complex_indexes_require_name_spec.rb": 0.8962359679999281,10028 "spec/rubocop/cop/gitlab/delegate_predicate_methods_spec.rb": 0.7485391330001221,10029 "spec/workers/object_pool/join_worker_spec.rb": 1.9082852849996925,10030 "spec/presenters/web_hook_log_presenter_spec.rb": 2.5543628380000882,10031 "spec/lib/gitlab/untrusted_regexp_spec.rb": 1.5334076230001301,10032 "spec/rubocop/cop/scalability/cron_worker_context_spec.rb": 0.8510255529999995,10033 "spec/views/admin/application_settings/general.html.haml_spec.rb": 1.845735072000025,10034 "spec/policies/terraform/state_version_policy_spec.rb": 2.6341203299998597,10035 "spec/serializers/ci/daily_build_group_report_result_entity_spec.rb": 0.821710066000378,10036 "spec/graphql/types/release_type_spec.rb": 0.7927073190003284,10037 "spec/rubocop/cop/scalability/file_uploads_spec.rb": 0.8022421180003221,10038 "spec/models/bulk_imports/file_transfer/group_config_spec.rb": 0.812858025999958,10039 "spec/lib/gitlab/usage_data_counters/merge_request_counter_spec.rb": 0.7253924560000087,10040 "spec/models/concerns/cron_schedulable_spec.rb": 2.429266680999717,10041 "spec/services/merge_requests/resolve_todos_service_spec.rb": 1.229296995000368,10042 "spec/views/shared/milestones/_issuable.html.haml_spec.rb": 1.9097769840000183,10043 "spec/graphql/resolvers/design_management/design_at_version_resolver_spec.rb": 2.289278246000322,10044 "spec/workers/bulk_imports/pipeline_worker_spec.rb": 1.5559084509995955,10045 "spec/lib/gitlab/cleanup/remote_uploads_spec.rb": 2.0537346889996115,10046 "spec/lib/banzai/filter/kroki_filter_spec.rb": 0.9932843689994115,10047 "spec/lib/gitlab/database/partitioning_migration_helpers/index_helpers_spec.rb": 1.2058856760004346,10048 "spec/presenters/event_presenter_spec.rb": 1.3375449729992397,10049 "spec/lib/gitlab/suggestions/commit_message_spec.rb": 1.814462504000403,10050 "spec/lib/gitlab/query_limiting/middleware_spec.rb": 0.7201321170005031,10051 "spec/services/events/render_service_spec.rb": 0.7523007230001895,10052 "spec/helpers/webpack_helper_spec.rb": 0.7857660699992266,10053 "spec/services/wiki_pages/event_create_service_spec.rb": 1.5715177789998052,10054 "spec/lib/bulk_imports/groups/pipelines/milestones_pipeline_spec.rb": 2.1899280460002046,10055 "spec/lib/gitlab/graphql/loaders/batch_model_loader_spec.rb": 1.050144561999332,10056 "spec/lib/gitlab/bullet/exclusions_spec.rb": 1.1701529100000698,10057 "spec/graphql/types/award_emojis/award_emoji_type_spec.rb": 0.694891868999548,10058 "spec/lib/gitlab/sidekiq_middleware_spec.rb": 1.2873775879997993,10059 "spec/lib/gitlab/external_authorization_spec.rb": 1.007696737000515,10060 "spec/finders/packages/pypi/package_finder_spec.rb": 1.281925439000588,10061 "spec/models/merge_request_context_commit_spec.rb": 2.0947663060005652,10062 "spec/graphql/resolvers/users_resolver_spec.rb": 1.0594494309998481,10063 "spec/config/settings_spec.rb": 0.9846647000003941,10064 "spec/lib/gitlab/ci/config/entry/coverage_spec.rb": 0.7382929149998745,10065 "spec/models/blob_viewer/composer_json_spec.rb": 0.6388458350002111,10066 "spec/graphql/types/jira_user_type_spec.rb": 0.7668018020003728,10067 "spec/graphql/types/ci_configuration/sast/entity_type_spec.rb": 0.9026717369997641,10068 "spec/lib/gitlab/ci/status/build/skipped_spec.rb": 1.5990798069997254,10069 "spec/lib/gitlab/metrics/samplers/threads_sampler_spec.rb": 1.003144016999613,10070 "spec/views/projects/services/_form.haml_spec.rb": 1.6768423980001899,10071 "spec/services/packages/nuget/create_dependency_service_spec.rb": 1.2493112220008697,10072 "spec/workers/bulk_imports/export_request_worker_spec.rb": 0.9357629239993912,10073 "spec/workers/ci/build_schedule_worker_spec.rb": 1.4018011759999354,10074 "spec/tooling/danger/sidekiq_queues_spec.rb": 0.8338159549994089,10075 "spec/graphql/types/tree/blob_type_spec.rb": 0.6827095600001485,10076 "spec/lib/gitlab/utils/delegator_override_spec.rb": 0.8070603569995001,10077 "spec/services/ci/create_pipeline_service/tags_spec.rb": 1.6937056970000413,10078 "spec/lib/gitlab/error_tracking/processor/grpc_error_processor_spec.rb": 0.8875964990002103,10079 "spec/presenters/sentry_error_presenter_spec.rb": 0.7445568339999227,10080 "spec/services/releases/create_evidence_service_spec.rb": 1.3660783600007562,10081 "spec/rubocop/cop/migration/add_reference_spec.rb": 0.8195017059997554,10082 "spec/lib/gitlab/ci/trace/metrics_spec.rb": 1.923135043000002,10083 "spec/workers/gitlab_service_ping_worker_spec.rb": 0.8412559439993856,10084 "spec/models/alerting/project_alerting_setting_spec.rb": 0.9131511269997645,10085 "spec/lib/gitlab/import_export/after_export_strategy_builder_spec.rb": 0.7567074819999107,10086 "spec/rubocop/cop/migration/hash_index_spec.rb": 0.8820686300005036,10087 "spec/tasks/gitlab/packages/migrate_rake_spec.rb": 1.326293144000374,10088 "spec/routing/projects/security/configuration_controller_routing_spec.rb": 0.6275308959993708,10089 "spec/helpers/graph_helper_spec.rb": 1.3775768590003281,10090 "spec/lib/gitlab/usage_data_counters/track_unique_events_spec.rb": 0.8845167789995685,10091 "spec/views/registrations/welcome/show.html.haml_spec.rb": 0.9468171230000735,10092 "spec/graphql/types/container_repository_details_type_spec.rb": 0.7236133659998814,10093 "spec/graphql/features/feature_flag_spec.rb": 0.9320082240001284,10094 "spec/workers/upload_checksum_worker_spec.rb": 0.8725918410000304,10095 "spec/lib/banzai/filter/front_matter_filter_spec.rb": 0.856998931999442,10096 "spec/workers/build_hooks_worker_spec.rb": 1.0833177180002167,10097 "spec/serializers/feature_flag_entity_spec.rb": 1.3754737299996123,10098 "spec/models/integrations/jira_tracker_data_spec.rb": 0.5825906700001724,10099 "spec/rubocop/cop/usage_data/distinct_count_by_large_foreign_key_spec.rb": 0.733335304999855,10100 "spec/finders/feature_flags_user_lists_finder_spec.rb": 1.0667381509992993,10101 "spec/workers/ci/create_cross_project_pipeline_worker_spec.rb": 0.9740012699994622,10102 "spec/lib/gitlab/config/entry/composable_array_spec.rb": 0.9008743880003749,10103 "spec/lib/gitlab/import_export/project/sample/date_calculator_spec.rb": 1.0567021520000708,10104 "spec/services/ci/create_pipeline_service/pre_post_stages_spec.rb": 1.3770875889995295,10105 "spec/tasks/admin_mode_spec.rb": 0.8990334079999229,10106 "spec/lib/generators/gitlab/usage_metric_generator_spec.rb": 1.040438052999889,10107 "spec/models/concerns/token_authenticatable_strategies/base_spec.rb": 0.7708249609995619,10108 "spec/lib/gitlab/ci/status/manual_spec.rb": 0.7823891200005164,10109 "spec/models/bulk_imports/failure_spec.rb": 0.8407690240001102,10110 "spec/rubocop/cop/migration/add_index_spec.rb": 0.7029041179994238,10111 "spec/lib/gitlab/logging/cloudflare_helper_spec.rb": 0.6528627930001676,10112 "spec/lib/system_check/base_check_spec.rb": 0.6894314199998917,10113 "spec/lib/rouge/formatters/html_gitlab_spec.rb": 0.6591285720005544,10114 "spec/lib/gitlab/slash_commands/presenters/error_spec.rb": 0.6975705759996345,10115 "spec/lib/api/entities/group_detail_spec.rb": 0.8354260650003198,10116 "spec/lib/gitlab/ci/yaml_processor/dag_spec.rb": 0.7331827340003656,10117 "spec/views/shared/milestones/_issuables.html.haml_spec.rb": 0.8502697740004805,10118 "spec/lib/api/github/entities_spec.rb": 0.8004372979994514,10119 "spec/lib/gitlab/static_site_editor/config/file_config/entry/image_upload_path_spec.rb": 0.7916380079996088,10120 "spec/services/captcha/captcha_verification_service_spec.rb": 0.7935393690004275,10121 "spec/rubocop/cop/prefer_class_methods_over_module_spec.rb": 0.7283357440001055,10122 "spec/presenters/ci/bridge_presenter_spec.rb": 0.9699239159999706,10123 "spec/lib/gitlab/metrics/dashboard/validator/client_spec.rb": 0.8742654120005682,10124 "spec/lib/banzai/pipeline/email_pipeline_spec.rb": 0.6301226309997219,10125 "spec/services/award_emojis/base_service_spec.rb": 0.6456428609999421,10126 "spec/rubocop/cop/gitlab/finder_with_find_by_spec.rb": 0.6590977989999374,10127 "spec/initializers/asset_proxy_setting_spec.rb": 0.6308236209997631,10128 "spec/workers/expire_build_artifacts_worker_spec.rb": 0.6268207020002592,10129 "spec/lib/gitlab/sidekiq_versioning_spec.rb": 0.610513472999628,10130 "spec/graphql/types/permission_types/project_spec.rb": 0.6298525019992667,10131 "spec/lib/gitlab/github_import/representation/lfs_object_spec.rb": 0.6066175939995446,10132 "spec/graphql/types/merge_request_review_state_enum_spec.rb": 0.5800362549998681,10133 "spec/helpers/projects/security/configuration_helper_spec.rb": 0.6340128609999738,10134 "spec/graphql/types/tree/tree_entry_type_spec.rb": 0.5848970650004048,10135 "spec/lib/gitlab/tcp_checker_spec.rb": 0.8126137970002674,10136 "spec/graphql/types/ci/job_artifact_file_type_enum_spec.rb": 0.6035585740000897,10137 "spec/serializers/project_mirror_serializer_spec.rb": 0.5472708980005336,10138 "spec/rubocop/cop/migration/timestamps_spec.rb": 0.7011802159995568,10139 "spec/graphql/types/invitation_interface_spec.rb": 0.6869044770000983,10140 "spec/workers/update_project_statistics_worker_spec.rb": 0.8783468020001237,10141 "spec/graphql/types/ci/template_type_spec.rb": 0.681987807999576,10142 "spec/lib/gitlab/ci/parsers/instrumentation_spec.rb": 0.6961599570004182,10143 "spec/workers/ci/schedule_delete_objects_cron_worker_spec.rb": 0.771013030000176510145Knapsack global time execution for tests: 27m 38s10146Pending: (Failures listed here are expected and do not affect your suite's status)10147 1) User with uploads behaves like model with uploads .destroy with not mounted uploads with local files deletes any FileUploader uploads which are not mounted10148 # No reason given10149 # ./spec/support/shared_examples/models/with_uploads_shared_examples.rb:2310150 2) User with uploads behaves like model with uploads .destroy with not mounted uploads with local files deletes local files10151 # No reason given10152 # ./spec/support/shared_examples/models/with_uploads_shared_examples.rb:2710153 3) User with uploads behaves like model with uploads .destroy with not mounted uploads with remote files deletes any FileUploader uploads which are not mounted10154 # No reason given10155 # ./spec/support/shared_examples/models/with_uploads_shared_examples.rb:3710156 4) User with uploads behaves like model with uploads .destroy with not mounted uploads with remote files deletes remote files10157 # No reason given10158 # ./spec/support/shared_examples/models/with_uploads_shared_examples.rb:4110159 5) Issue modules behaves like AtomicInternalId .has_internal_id Validation when presence validation is not required when creating an object does not raise an error if the internal id is blank10160 # No reason given10161 # ./spec/support/shared_examples/models/atomic_internal_id_shared_examples.rb:4910162 6) Issue modules behaves like AtomicInternalId .has_internal_id Validation when presence validation is not required when updating an object does not raise an error if the internal id is blank10163 # No reason given10164 # ./spec/support/shared_examples/models/atomic_internal_id_shared_examples.rb:5710165 7) Operations::FeatureFlags::UserList behaves like AtomicInternalId .has_internal_id Validation when presence validation is not required when creating an object does not raise an error if the internal id is blank10166 # No reason given10167 # ./spec/support/shared_examples/models/atomic_internal_id_shared_examples.rb:4910168 8) Operations::FeatureFlags::UserList behaves like AtomicInternalId .has_internal_id Validation when presence validation is not required when updating an object does not raise an error if the internal id is blank10169 # No reason given10170 # ./spec/support/shared_examples/models/atomic_internal_id_shared_examples.rb:5710171 9) Ci::PipelineArtifactUploader behaves like builds correct paths #upload_path behaves like matches the method pattern 10172 # No pattern provided, skipping.10173 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810174 10) Ci::PipelineArtifactUploader behaves like builds correct paths #relative_path is relative10175 # Path not set, skipping.10176 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:4010177 11) Ci::PipelineArtifactUploader behaves like builds correct paths .absolute_path behaves like matches the method pattern 10178 # No pattern provided, skipping.10179 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810180 12) Ci::PipelineArtifactUploader behaves like builds correct paths .base_dir behaves like matches the method pattern 10181 # No pattern provided, skipping.10182 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810183 13) Ci::PipelineArtifactUploader when object store is REMOTE behaves like builds correct paths #cache_dir behaves like matches the method pattern 10184 # No pattern provided, skipping.10185 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810186 14) Ci::PipelineArtifactUploader when object store is REMOTE behaves like builds correct paths #work_dir behaves like matches the method pattern 10187 # No pattern provided, skipping.10188 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810189 15) Ci::PipelineArtifactUploader when object store is REMOTE behaves like builds correct paths #upload_path behaves like matches the method pattern 10190 # No pattern provided, skipping.10191 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810192 16) Ci::PipelineArtifactUploader when object store is REMOTE behaves like builds correct paths #relative_path is relative10193 # Path not set, skipping.10194 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:4010195 17) Ci::PipelineArtifactUploader when object store is REMOTE behaves like builds correct paths .absolute_path behaves like matches the method pattern 10196 # No pattern provided, skipping.10197 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810198 18) Ci::PipelineArtifactUploader when object store is REMOTE behaves like builds correct paths .base_dir behaves like matches the method pattern 10199 # No pattern provided, skipping.10200 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810201Finished in 27 minutes 42 seconds (files took 54.52 seconds to load)102024568 examples, 0 failures, 18 pending10203Tue 26 Oct 2021 09:49:38 PM UTC10205Not uploading cache ruby-gems-v1-5 due to policy10206Not uploading cache gitaly-ruby-gems-v1-5 due to policy10208Uploading artifacts...10209coverage/: found 5 matching files and directories 10210WARNING: crystalball/: no matching files 10211deprecations/: found 12 matching files and directories 10212knapsack/: found 3 matching files and directories 10213rspec_flaky/: found 4 matching files and directories 10214rspec_profiling/: found 1 matching files and directories 10215WARNING: tmp/capybara/: no matching files 10216tmp/memory_test/: found 2 matching files and directories 10217log/*.log: found 18 matching files and directories 10218Uploading artifacts as "archive" to coordinator... ok id=1718320218 responseStatus=201 Created token=79_pEHiP10219Uploading artifacts...10220junit_rspec.xml: found 1 matching files and directories 10221Uploading artifacts as "junit" to coordinator... ok id=1718320218 responseStatus=201 Created token=79_pEHiP10223Job succeeded