rspec unit pg12 8/22
Passed Started
by
@dbalexandre

Douglas Barbosa Alexandre
1Running with gitlab-runner 14.7.0~beta.58.gfa48f33b (fa48f33b)2 on blue-3.shared-gitlab-org.runners-manager.gitlab.com/default sUrYYgEG3 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:84353f33e1def62bd8dfb09b10761c4ce651f5e5475e1ec53d5c918e29d96744 for postgres:12 with digest postgres@sha256:7984919d5b1d8bd22539118c671555b50cd3bb5fbc568645a49f61e5ab94b8f9 ...10Starting service redis:5.0-alpine ...11Pulling docker image redis:5.0-alpine ...12Using docker image sha256:1746b159f8934fe63cae3984643ee8c5651bcfc80ae107032a60f2871a0e7cdb for redis:5.0-alpine with digest redis@sha256:a04b57e05b784a406bc818f6b450233328c4115a1e1f104d84ce916eb1583925 ...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:8138f36e34bc79c9e5ab676915a37672f25052a13a6e7b6801a0d5866a8e494c 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:cd14b6829dee854cdf4ce05c5e8cfd48f805945f17d115efa8a7d36dc4ac6d9b ...18Running on runner-suryygeg-project-278964-concurrent-0 via runner-suryygeg-shared-gitlab-org-1643990463-2adc100b...20$ eval "$CI_PRE_CLONE_SCRIPT"21Fetching changes with git depth set to 20...22Initialized empty Git repository in /builds/gitlab-org/gitlab/.git/23Created fresh repository.24remote: Enumerating objects: 119975, done. 25remote: Counting objects: 100% (119975/119975), done. 26remote: Compressing objects: 100% (79457/79457), done.27remote: Total 119975 (delta 54354), reused 82008 (delta 35960), pack-reused 0 28Receiving objects: 100% (119975/119975), 113.03 MiB | 29.75 MiB/s, done.29Resolving deltas: 100% (54354/54354), done.31 * [new ref] 075476b823110142086f2b93d474f8349e99b4a0 -> refs/pipelines/46383679932 * [new branch] master -> origin/master33Checking out 075476b8 as master...34Skipping Git submodules setup36Checking cache for ruby-gems-v1-9...37cache.zip is up to date 38Successfully extracted cache39Checking cache for gitaly-ruby-gems-v1-9...40cache.zip is up to date 41Successfully extracted cache43Downloading artifacts for compile-test-assets (2055931272)...44Downloading artifacts from coordinator... ok id=2055931272 responseStatus=200 OK token=zXasY4gr45Downloading artifacts for detect-tests (2055931277)...46Downloading artifacts from coordinator... ok id=2055931277 responseStatus=200 OK token=9WcSYqj747Downloading artifacts for retrieve-tests-metadata (2055931281)...48Downloading artifacts from coordinator... ok id=2055931281 responseStatus=200 OK token=HLyRKusZ49Downloading artifacts for setup-test-env (2055931275)...50Downloading artifacts from coordinator... ok id=2055931275 responseStatus=200 OK token=K6p64DvG52Using docker image sha256:8138f36e34bc79c9e5ab676915a37672f25052a13a6e7b6801a0d5866a8e494c 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:cd14b6829dee854cdf4ce05c5e8cfd48f805945f17d115efa8a7d36dc4ac6d9b ...53$ echo $FOSS_ONLY54$ [ "$FOSS_ONLY" = "1" ] && rm -rf ee/ qa/spec/ee/ qa/qa/specs/features/ee/ qa/qa/ee/ qa/qa/ee.rb55$ export GOPATH=$CI_PROJECT_DIR/.go56$ mkdir -p $GOPATH57$ source scripts/utils.sh58$ source scripts/prepare_build.sh59Successfully installed bundler-2.3.6601 gem installed61Bundler version 2.3.662production:development63Settings are listed in order of priority. The top value will be used.64clean65Set for the current user (/root/.bundle/config): true66install_flags67Set via BUNDLE_INSTALL_FLAGS: "--jobs=$(nproc) --retry=3 --quiet"68path69Set for the current user (/root/.bundle/config): "/builds/gitlab-org/gitlab/vendor"70without71Set via BUNDLE_WITHOUT: [:production, :development]72$ bundle install --jobs=$(nproc) --retry=3 --quiet && bundle check73Don't run Bundler as root. Bundler can ask for sudo if it is needed, and74installing your bundle as root will break this application for all non-root75users on this machine.76The Gemfile's dependencies are satisfied77==> 'bundle install --jobs=$(nproc) --retry=3 --quiet && bundle check' succeeded in 5 seconds.78$ bundle pristine pg79Installing pg 1.2.3 with native extensions80==> 'bundle pristine pg' succeeded in 12 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'87Dropped database 'gitlabhq_geo_test'88Created database 'gitlabhq_test'89Created database 'gitlabhq_geo_test'90DEPRECATION 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)91Dropped database 'gitlabhq_geo_test'92Created database 'gitlabhq_geo_test'93==> 'bundle exec rake db:drop db:create db:structure:load db:migrate gitlab:db:setup_ee' succeeded in 34 seconds.94$ run_timed_command "gem install knapsack --no-document"95$ gem install knapsack --no-document96Successfully installed knapsack-4.0.0971 gem installed98==> 'gem install knapsack --no-document' succeeded in 1 seconds.99$ run_timed_command "scripts/gitaly-test-spawn"100$ scripts/gitaly-test-spawn101find: ‘/builds/gitlab-org/gitlab/tmp/tests/gitaly/cmd’: No such file or directory102find: ‘/builds/gitlab-org/gitlab/tmp/tests/gitaly/cmd’: No such file or directory103find: ‘/builds/gitlab-org/gitlab/tmp/tests/gitaly/cmd’: No such file or directory104Don't run Bundler as root. Bundler can ask for sudo if it is needed, and105installing your bundle as root will break this application for all non-root106users on this machine.107Using abstract_type 0.0.7108Using concurrent-ruby 1.1.9109Using i18n 1.8.11110Using minitest 5.15.0111Using tzinfo 2.0.4112Using zeitwerk 2.5.3113Using activesupport 6.1.4.4114Using builder 3.2.4115Using erubi 1.10.0116Using mini_portile2 2.6.1117Using racc 1.6.0118Using nokogiri 1.12.5 (x86_64-linux)119Using rails-dom-testing 2.0.3120Using crass 1.0.6121Using loofah 2.13.0122Using rails-html-sanitizer 1.4.2123Using actionview 6.1.4.4124Using rack 2.2.3125Using rack-test 1.1.0126Using actionpack 6.1.4.4127Using ice_nine 0.11.2128Using thread_safe 0.3.6129Using memoizable 0.4.2130Using adamantium 0.2.0131Using public_suffix 4.0.6132Using addressable 2.7.0133Using ast 2.4.2134Using binding_ninja 0.2.3135Using bundler 2.1.4136Using charlock_holmes 0.7.7137Using coderay 1.1.2138Using equalizer 0.0.11139Using concord 0.1.5140Using diff-lcs 1.3141Using dotenv 2.7.6142Using escape_utils 1.2.1143Using factory_bot 5.0.2144Using multipart-post 2.1.1145Using faraday 1.0.1146Using ffi 1.15.3147Using json 2.6.1148Using gemojione 3.3.0149Using mini_mime 1.0.2150Using rugged 1.2.0151Using github-linguist 7.12.1152Using github-markup 1.7.0153Using mime-types-data 3.2020.1104154Using mime-types 3.3.1155Using gitlab-gollum-rugged_adapter 0.4.4.4.gitlab.1156Using rouge 3.27.0157Using sanitize 6.0.0158Using stringex 2.8.5159Using gitlab-gollum-lib 4.2.7.10.gitlab.2160Using google-protobuf 3.19.1 (x86_64-linux)161Using googleapis-common-protos-types 1.3.0162Using grpc 1.42.0 (x86_64-linux)163Using opentracing 0.5.0164Using thrift 0.15.0165Using jaeger-client 1.1.0166Using pg_query 2.1.1167Using redis 4.4.0168Using gitlab-labkit 0.21.2169Using rubyzip 2.3.2170Using thor 1.1.0171Using tomlrb 2.0.1172Using with_env 1.1.0173Using rexml 3.2.5174Using xml-simple 1.1.9175Using gitlab-license_finder 6.14.2.1176Using gitlab-markup 1.7.1177Using grpc-tools 1.42.0178Using sawyer 0.8.2179Using octokit 4.20.0180Using reverse_markdown 1.4.0181Using licensee 9.14.1182Using method_source 0.9.2183Using msgpack 1.3.3184Using optimist 3.0.1185Using parallel 1.19.2186Using parser 3.0.3.2187Using procto 0.0.3188Using unparser 0.4.7189Using proc_to_ast 0.1.0190Using pry 0.12.2191Using rainbow 3.0.0192Using rbtrace 0.4.14193Using rdoc 6.3.2194Using regexp_parser 1.8.1195Using rspec-support 3.8.0196Using rspec-core 3.8.0197Using rspec-expectations 3.8.3198Using rspec-mocks 3.8.0199Using rspec 3.8.0200Using rspec-parameterized 0.4.2201Using rubocop-ast 0.2.0202Using ruby-progressbar 1.10.1203Using unicode-display_width 1.7.0204Using rubocop 0.86.0205Using sentry-raven 3.0.4206Using timecop 0.9.1207Bundle complete! 22 Gemfile dependencies, 100 gems now installed.208Gems in the groups production and development were not installed.209Bundled gems are installed into `/builds/gitlab-org/gitlab/vendor/gitaly-ruby`210Checking gitaly-ruby Gemfile...211Checking gitaly-ruby bundle...212The Gemfile's dependencies are satisfied213Trying to connect to gitaly: ............................................... OK214Trying to connect to gitaly2: .............................................................. OK215Trying to connect to praefect: ......... OK216==> 'scripts/gitaly-test-spawn' succeeded in 13 seconds.217$ source ./scripts/rspec_helpers.sh218$ rspec_paralellized_job "--tag ~quarantine --tag ~geo --tag ~level:migration"219SKIP_FLAKY_TESTS_AUTOMATICALLY: true220RETRY_FAILED_TESTS_IN_NEW_PROCESS: false221KNAPSACK_GENERATE_REPORT: true222FLAKY_RSPEC_GENERATE_REPORT: true223KNAPSACK_TEST_FILE_PATTERN: spec/{bin,channels,config,db,dependencies,elastic,elastic_integration,experiments,factories,finders,frontend,graphql,haml_lint,helpers,initializers,javascripts,lib,metrics_server,models,policies,presenters,rack_servers,replicators,routing,rubocop,scripts,serializers,services,sidekiq,sidekiq_cluster,spam,support_specs,tasks,uploaders,validators,views,workers,tooling}{,/**/}*_spec.rb224KNAPSACK_LOG_LEVEL: debug225KNAPSACK_REPORT_PATH: knapsack/rspec_unit_pg12_8_22_report.json226FLAKY_RSPEC_SUITE_REPORT_PATH: rspec/flaky/report-suite.json227FLAKY_RSPEC_REPORT_PATH: rspec/flaky/all_rspec_unit_pg12_8_22_report.json228NEW_FLAKY_RSPEC_REPORT_PATH: rspec/flaky/new_rspec_unit_pg12_8_22_report.json229SKIPPED_FLAKY_TESTS_REPORT_PATH: rspec/flaky/skipped_flaky_tests_rspec_unit_pg12_8_22_report.txt230RETRIED_TESTS_REPORT_PATH: rspec/flaky/retried_tests_rspec_unit_pg12_8_22_report.txt231CRYSTALBALL: 232Knapsack node specs:233spec/models/user_spec.rb234spec/services/todos/destroy/entity_leave_service_spec.rb235spec/models/member_spec.rb236spec/services/projects/overwrite_project_service_spec.rb237spec/models/milestone_spec.rb238spec/services/projects/transfer_service_spec.rb239spec/models/integrations/microsoft_teams_spec.rb240spec/lib/gitlab/import_export/project/relation_tree_restorer_spec.rb241spec/policies/global_policy_spec.rb242spec/presenters/ci/build_runner_presenter_spec.rb243spec/lib/gitlab/gpg/commit_spec.rb244spec/uploaders/avatar_uploader_spec.rb245spec/models/ci/pipeline_schedule_spec.rb246spec/services/merge_requests/reopen_service_spec.rb247spec/lib/gitlab/closing_issue_extractor_spec.rb248spec/lib/gitlab/import_export/fast_hash_serializer_spec.rb249spec/services/milestones/transfer_service_spec.rb250spec/services/merge_requests/cleanup_refs_service_spec.rb251spec/services/design_management/delete_designs_service_spec.rb252spec/helpers/emails_helper_spec.rb253spec/uploaders/external_diff_uploader_spec.rb254spec/services/projects/update_repository_storage_service_spec.rb255spec/helpers/users_helper_spec.rb256spec/lib/gitlab/alert_management/payload/prometheus_spec.rb257spec/lib/gitlab/database/batch_count_spec.rb258spec/services/merge_requests/ff_merge_service_spec.rb259spec/lib/gitlab/ci/pipeline/expression/lexeme/not_equals_spec.rb260spec/lib/gitlab/ci/templates/npm_spec.rb261spec/models/ci/pending_build_spec.rb262spec/models/clusters/integrations/prometheus_spec.rb263spec/services/dependency_proxy/image_ttl_group_policies/update_service_spec.rb264spec/services/deployments/link_merge_requests_service_spec.rb265spec/lib/gitlab/ci/config/external/file/artifact_spec.rb266spec/serializers/deploy_key_entity_spec.rb267spec/services/clusters/integrations/prometheus_health_check_service_spec.rb268spec/lib/gitlab/database/reflection_spec.rb269spec/lib/gitlab/import_export/merge_request_parser_spec.rb270spec/lib/banzai/filter/sanitization_filter_spec.rb271spec/models/pages_domain_acme_order_spec.rb272spec/helpers/tab_helper_spec.rb273spec/services/groups/autocomplete_service_spec.rb274spec/services/groups/open_issues_count_service_spec.rb275spec/tasks/gitlab/packages/events_rake_spec.rb276spec/lib/banzai/reference_parser/issue_parser_spec.rb277spec/lib/atlassian/jira_connect/serializers/deployment_entity_spec.rb278spec/services/projects/lfs_pointers/lfs_download_link_list_service_spec.rb279spec/views/ci/status/_badge.html.haml_spec.rb280spec/lib/gitlab/database/query_analyzers/prevent_cross_database_modification_spec.rb281spec/services/issues/reorder_service_spec.rb282spec/models/merge_request_assignee_spec.rb283spec/lib/gitlab/sidekiq_config/worker_router_spec.rb284spec/workers/repository_check/batch_worker_spec.rb285spec/models/audit_event_spec.rb286spec/lib/gitlab/ci/variables/collection/item_spec.rb287spec/views/notify/pipeline_success_email.html.haml_spec.rb288spec/graphql/types/ci/job_token_scope_type_spec.rb289spec/policies/user_policy_spec.rb290spec/lib/gitlab/kubernetes/default_namespace_spec.rb291spec/lib/gitlab/gitaly_client/object_pool_service_spec.rb292spec/models/packages/debian/group_component_file_spec.rb293spec/serializers/cluster_application_entity_spec.rb294spec/lib/gitlab/slash_commands/issue_new_spec.rb295spec/finders/security/security_jobs_finder_spec.rb296spec/models/issue_assignee_spec.rb297spec/lib/banzai/reference_parser/external_issue_parser_spec.rb298spec/lib/gitlab/github_import/importer/labels_importer_spec.rb299spec/services/packages/update_package_file_service_spec.rb300spec/lib/gitaly/server_spec.rb301spec/lib/gitlab/jwt_authenticatable_spec.rb302spec/models/state_note_spec.rb303spec/workers/project_export_worker_spec.rb304spec/lib/gitlab/slash_commands/run_spec.rb305spec/graphql/resolvers/project_pipeline_resolver_spec.rb306spec/helpers/projects/project_members_helper_spec.rb307spec/services/notification_recipients/builder/default_spec.rb308spec/services/groups/auto_devops_service_spec.rb309spec/lib/banzai/filter/inline_grafana_metrics_filter_spec.rb310spec/serializers/merge_request_metrics_helper_spec.rb311spec/services/projects/move_deploy_keys_projects_service_spec.rb312spec/lib/gitlab/kubernetes/helm/v2/patch_command_spec.rb313spec/lib/gitlab/database/transaction/observer_spec.rb314spec/lib/gitlab/background_migration/add_primary_email_to_emails_if_user_confirmed_spec.rb315spec/views/shared/deploy_tokens/_form.html.haml_spec.rb316spec/lib/gitlab/checks/push_check_spec.rb317spec/lib/gitlab/ci/config/entry/variables_spec.rb318spec/lib/banzai/filter/upload_link_filter_spec.rb319spec/lib/extracts_ref_spec.rb320spec/lib/gitlab/metrics/subscribers/rack_attack_spec.rb321spec/services/bulk_imports/file_download_service_spec.rb322spec/lib/gitlab/health_checks/redis/shared_state_check_spec.rb323spec/lib/gitlab/diff/highlight_spec.rb324spec/graphql/mutations/alert_management/update_alert_status_spec.rb325spec/lib/gitlab/cache/helpers_spec.rb326spec/services/lfs/lock_file_service_spec.rb327spec/helpers/environment_helper_spec.rb328spec/services/spam/akismet_service_spec.rb329spec/rubocop/cop/file_decompression_spec.rb330spec/lib/gitlab/diff/formatters/text_formatter_spec.rb331spec/models/bulk_imports/tracker_spec.rb332spec/lib/gitlab/phabricator_import/issues/task_importer_spec.rb333spec/workers/integrations/create_external_cross_reference_worker_spec.rb334spec/finders/users_star_projects_finder_spec.rb335spec/lib/gitlab/ci/templates/terraform_gitlab_ci_yaml_spec.rb336spec/services/snippets/repository_validation_service_spec.rb337spec/lib/gitlab/background_migration/migrate_pages_to_zip_storage_spec.rb338spec/lib/gitlab/email/hook/smime_signature_interceptor_spec.rb339spec/lib/gitlab/database/partitioning/partition_manager_spec.rb340spec/models/concerns/participable_spec.rb341spec/services/ci/change_variable_service_spec.rb342spec/lib/constraints/project_url_constrainer_spec.rb343spec/lib/gitlab/diff/file_collection/merge_request_diff_base_spec.rb344spec/serializers/issue_sidebar_basic_entity_spec.rb345spec/graphql/resolvers/alert_management/integrations_resolver_spec.rb346spec/services/ci/compare_reports_base_service_spec.rb347spec/lib/gitlab/spamcheck/client_spec.rb348spec/lib/gitlab/rack_attack/user_allowlist_spec.rb349spec/lib/gitlab/cleanup/orphan_job_artifact_files_spec.rb350spec/graphql/mutations/todos/mark_done_spec.rb351spec/lib/gitlab/middleware/speedscope_spec.rb352spec/lib/gitlab/checks/lfs_check_spec.rb353spec/lib/gitlab/analytics/cycle_analytics/records_fetcher_spec.rb354spec/models/postgresql/replication_slot_spec.rb355spec/lib/error_tracking/sentry_client/api_urls_spec.rb356spec/services/incident_management/issuable_escalation_statuses/after_update_service_spec.rb357spec/presenters/web_hook_log_presenter_spec.rb358spec/lib/gitlab/ci/pipeline/logger_spec.rb359spec/lib/google_api/cloud_platform/client_spec.rb360spec/views/projects/issues/_service_desk_info_content.html.haml_spec.rb361spec/workers/ci/pipeline_artifacts/create_quality_report_worker_spec.rb362spec/lib/learn_gitlab/onboarding_spec.rb363spec/services/award_emojis/toggle_service_spec.rb364spec/lib/gitlab/usage_data/topology_spec.rb365spec/lib/gitlab/search_context/controller_concern_spec.rb366spec/lib/gitlab/graphql/pagination/offset_active_record_relation_connection_spec.rb367spec/lib/gitlab/ci/status/build/failed_unmet_prerequisites_spec.rb368spec/tooling/rspec_flaky/flaky_examples_collection_spec.rb369spec/lib/gitlab/database/partitioning_spec.rb370spec/lib/gitlab/utils/delegator_override/validator_spec.rb371spec/services/ci/find_exposed_artifacts_service_spec.rb372spec/workers/ci/build_trace_chunk_flush_worker_spec.rb373spec/services/pages/destroy_deployments_service_spec.rb374spec/lib/gitlab/ci/pipeline/quota/deployments_spec.rb375spec/models/preloaders/merge_request_diff_preloader_spec.rb376spec/services/groups/participants_service_spec.rb377spec/finders/packages/helm/package_files_finder_spec.rb378spec/lib/marginalia_spec.rb379spec/models/packages/nuget/dependency_link_metadatum_spec.rb380spec/services/award_emojis/copy_service_spec.rb381spec/lib/gitlab/ci/pipeline/expression/lexeme/string_spec.rb382spec/workers/environments/canary_ingress/update_worker_spec.rb383spec/services/projects/prometheus/alerts/create_service_spec.rb384spec/helpers/notify_helper_spec.rb385spec/workers/expire_build_artifacts_worker_spec.rb386spec/models/concerns/legacy_bulk_insert_spec.rb387spec/lib/gitlab/metrics/rails_slis_spec.rb388spec/workers/releases/manage_evidence_worker_spec.rb389spec/lib/gitlab/ci/reports/test_report_summary_spec.rb390spec/models/group_label_spec.rb391spec/workers/archive_trace_worker_spec.rb392spec/graphql/mutations/clusters/agent_tokens/revoke_spec.rb393spec/graphql/types/projects/jira_service_type_spec.rb394spec/workers/incident_management/add_severity_system_note_worker_spec.rb395spec/workers/issue_due_scheduler_worker_spec.rb396spec/lib/gitlab/metrics/rack_middleware_spec.rb397spec/lib/gitlab/data_builder/wiki_page_spec.rb398spec/serializers/ci/daily_build_group_report_result_serializer_spec.rb399spec/lib/gitlab/metrics/elasticsearch_rack_middleware_spec.rb400spec/services/bulk_imports/export_service_spec.rb401spec/models/subscription_spec.rb402spec/presenters/service_hook_presenter_spec.rb403spec/models/integrations/irker_spec.rb404spec/lib/gitlab/gitaly_client/health_check_service_spec.rb405spec/lib/sidebars/projects/menus/snippets_menu_spec.rb406spec/models/instance_metadata/kas_spec.rb407spec/lib/gitlab/exclusive_lease_helpers/sleeping_lock_spec.rb408spec/workers/mail_scheduler/notification_service_worker_spec.rb409spec/services/spam/akismet_mark_as_spam_service_spec.rb410spec/lib/gitlab/git/remote_mirror_spec.rb411spec/presenters/tree_entry_presenter_spec.rb412spec/services/keys/last_used_service_spec.rb413spec/workers/ci/daily_build_group_report_results_worker_spec.rb414spec/lib/gitlab/database/reindexing/coordinator_spec.rb415spec/graphql/mutations/notes/reposition_image_diff_note_spec.rb416spec/services/concerns/merge_requests/assigns_merge_params_spec.rb417spec/services/user_project_access_changed_service_spec.rb418spec/lib/gitlab/usage_data_counters/static_site_editor_counter_spec.rb419spec/services/ci/pipelines/hook_service_spec.rb420spec/lib/gitlab/import_export/snippet_repo_saver_spec.rb421spec/lib/quality/seeders/issues_spec.rb422spec/rubocop/cop/scalability/bulk_perform_with_context_spec.rb423spec/lib/gitlab/config/entry/simplifiable_spec.rb424spec/lib/gitlab/ci/status/failed_spec.rb425spec/lib/gitlab/git/wraps_gitaly_errors_spec.rb426spec/lib/gitlab/metrics/dashboard/stages/variable_endpoint_inserter_spec.rb427spec/lib/gitlab/lets_encrypt/challenge_spec.rb428spec/serializers/import/githubish_provider_repo_entity_spec.rb429spec/lib/gitlab/slash_commands/presenters/run_spec.rb430spec/models/integrations/assembla_spec.rb431spec/serializers/issuable_sidebar_extras_entity_spec.rb432spec/graphql/types/packages/nuget/metadatum_type_spec.rb433spec/lib/api/entities/deployment_extended_spec.rb434spec/lib/gitlab/usage/metrics/instrumentations/count_users_associating_milestones_to_releases_metric_spec.rb435spec/rubocop/cop/active_record_association_reload_spec.rb436spec/rubocop/cop/migration/remove_concurrent_index_spec.rb437spec/workers/dependency_proxy/image_ttl_group_policy_worker_spec.rb438spec/lib/bulk_imports/projects/pipelines/protected_branches_pipeline_spec.rb439spec/policies/packages/package_policy_spec.rb440spec/lib/api/entities/group_detail_spec.rb441spec/lib/api/helpers/variables_helpers_spec.rb442spec/serializers/group_link/project_group_link_serializer_spec.rb443spec/experiments/force_company_trial_experiment_spec.rb444spec/lib/gitlab/database/schema_migrations/migrations_spec.rb445spec/services/webauthn/authenticate_service_spec.rb446spec/services/work_items/build_service_spec.rb447spec/lib/gitlab/ci/jwt_v2_spec.rb448spec/views/groups/new.html.haml_spec.rb449spec/graphql/types/clusters/agent_activity_event_type_spec.rb450spec/serializers/project_import_entity_spec.rb451spec/rubocop/cop/avoid_route_redirect_leading_slash_spec.rb452spec/lib/banzai/render_context_spec.rb453spec/graphql/types/customer_relations/contact_type_spec.rb454spec/initializers/rack_multipart_patch_spec.rb455spec/views/admin/application_settings/_repository_storage.html.haml_spec.rb456spec/initializers/100_patch_omniauth_oauth2_spec.rb457spec/lib/gitlab/graphql/tracers/logger_tracer_spec.rb458spec/serializers/evidences/evidence_serializer_spec.rb459spec/graphql/types/ci/config/job_type_spec.rb460spec/helpers/groups/crm_settings_helper_spec.rb461spec/graphql/types/ci/test_suite_type_spec.rb462spec/lib/banzai/pipeline/emoji_pipeline_spec.rb463spec/graphql/types/label_type_spec.rb464spec/models/blob_viewer/podspec_json_spec.rb465spec/rubocop/cop/migration/remove_index_spec.rb466spec/lib/gitlab/api_authentication/sent_through_builder_spec.rb467spec/lib/gitlab/import_export/error_spec.rb468spec/lib/gitlab/auth/otp/strategies/devise_spec.rb469spec/initializers/asset_proxy_setting_spec.rb470spec/services/deploy_keys/create_service_spec.rb471spec/graphql/types/permission_types/project_spec.rb472spec/lib/gitlab/metrics/exporter/gc_request_middleware_spec.rb473spec/graphql/types/blob_viewer_type_spec.rb474spec/initializers/session_store_spec.rb475spec/graphql/types/merge_request_state_event_enum_spec.rb476Filter specs:477Running specs:478Running all node tests without filter479spec/models/user_spec.rb480spec/services/todos/destroy/entity_leave_service_spec.rb481spec/models/member_spec.rb482spec/services/projects/overwrite_project_service_spec.rb483spec/models/milestone_spec.rb484spec/services/projects/transfer_service_spec.rb485spec/models/integrations/microsoft_teams_spec.rb486spec/lib/gitlab/import_export/project/relation_tree_restorer_spec.rb487spec/policies/global_policy_spec.rb488spec/presenters/ci/build_runner_presenter_spec.rb489spec/lib/gitlab/gpg/commit_spec.rb490spec/uploaders/avatar_uploader_spec.rb491spec/models/ci/pipeline_schedule_spec.rb492spec/services/merge_requests/reopen_service_spec.rb493spec/lib/gitlab/closing_issue_extractor_spec.rb494spec/lib/gitlab/import_export/fast_hash_serializer_spec.rb495spec/services/milestones/transfer_service_spec.rb496spec/services/merge_requests/cleanup_refs_service_spec.rb497spec/services/design_management/delete_designs_service_spec.rb498spec/helpers/emails_helper_spec.rb499spec/uploaders/external_diff_uploader_spec.rb500spec/services/projects/update_repository_storage_service_spec.rb501spec/helpers/users_helper_spec.rb502spec/lib/gitlab/alert_management/payload/prometheus_spec.rb503spec/lib/gitlab/database/batch_count_spec.rb504spec/services/merge_requests/ff_merge_service_spec.rb505spec/lib/gitlab/ci/pipeline/expression/lexeme/not_equals_spec.rb506spec/lib/gitlab/ci/templates/npm_spec.rb507spec/models/ci/pending_build_spec.rb508spec/models/clusters/integrations/prometheus_spec.rb509spec/services/dependency_proxy/image_ttl_group_policies/update_service_spec.rb510spec/services/deployments/link_merge_requests_service_spec.rb511spec/lib/gitlab/ci/config/external/file/artifact_spec.rb512spec/serializers/deploy_key_entity_spec.rb513spec/services/clusters/integrations/prometheus_health_check_service_spec.rb514spec/lib/gitlab/database/reflection_spec.rb515spec/lib/gitlab/import_export/merge_request_parser_spec.rb516spec/lib/banzai/filter/sanitization_filter_spec.rb517spec/models/pages_domain_acme_order_spec.rb518spec/helpers/tab_helper_spec.rb519spec/services/groups/autocomplete_service_spec.rb520spec/services/groups/open_issues_count_service_spec.rb521spec/tasks/gitlab/packages/events_rake_spec.rb522spec/lib/banzai/reference_parser/issue_parser_spec.rb523spec/lib/atlassian/jira_connect/serializers/deployment_entity_spec.rb524spec/services/projects/lfs_pointers/lfs_download_link_list_service_spec.rb525spec/views/ci/status/_badge.html.haml_spec.rb526spec/lib/gitlab/database/query_analyzers/prevent_cross_database_modification_spec.rb527spec/services/issues/reorder_service_spec.rb528spec/models/merge_request_assignee_spec.rb529spec/lib/gitlab/sidekiq_config/worker_router_spec.rb530spec/workers/repository_check/batch_worker_spec.rb531spec/models/audit_event_spec.rb532spec/lib/gitlab/ci/variables/collection/item_spec.rb533spec/views/notify/pipeline_success_email.html.haml_spec.rb534spec/graphql/types/ci/job_token_scope_type_spec.rb535spec/policies/user_policy_spec.rb536spec/lib/gitlab/kubernetes/default_namespace_spec.rb537spec/lib/gitlab/gitaly_client/object_pool_service_spec.rb538spec/models/packages/debian/group_component_file_spec.rb539spec/serializers/cluster_application_entity_spec.rb540spec/lib/gitlab/slash_commands/issue_new_spec.rb541spec/finders/security/security_jobs_finder_spec.rb542spec/models/issue_assignee_spec.rb543spec/lib/banzai/reference_parser/external_issue_parser_spec.rb544spec/lib/gitlab/github_import/importer/labels_importer_spec.rb545spec/services/packages/update_package_file_service_spec.rb546spec/lib/gitaly/server_spec.rb547spec/lib/gitlab/jwt_authenticatable_spec.rb548spec/models/state_note_spec.rb549spec/workers/project_export_worker_spec.rb550spec/lib/gitlab/slash_commands/run_spec.rb551spec/graphql/resolvers/project_pipeline_resolver_spec.rb552spec/helpers/projects/project_members_helper_spec.rb553spec/services/notification_recipients/builder/default_spec.rb554spec/services/groups/auto_devops_service_spec.rb555spec/lib/banzai/filter/inline_grafana_metrics_filter_spec.rb556spec/serializers/merge_request_metrics_helper_spec.rb557spec/services/projects/move_deploy_keys_projects_service_spec.rb558spec/lib/gitlab/kubernetes/helm/v2/patch_command_spec.rb559spec/lib/gitlab/database/transaction/observer_spec.rb560spec/lib/gitlab/background_migration/add_primary_email_to_emails_if_user_confirmed_spec.rb561spec/views/shared/deploy_tokens/_form.html.haml_spec.rb562spec/lib/gitlab/checks/push_check_spec.rb563spec/lib/gitlab/ci/config/entry/variables_spec.rb564spec/lib/banzai/filter/upload_link_filter_spec.rb565spec/lib/extracts_ref_spec.rb566spec/lib/gitlab/metrics/subscribers/rack_attack_spec.rb567spec/services/bulk_imports/file_download_service_spec.rb568spec/lib/gitlab/health_checks/redis/shared_state_check_spec.rb569spec/lib/gitlab/diff/highlight_spec.rb570spec/graphql/mutations/alert_management/update_alert_status_spec.rb571spec/lib/gitlab/cache/helpers_spec.rb572spec/services/lfs/lock_file_service_spec.rb573spec/helpers/environment_helper_spec.rb574spec/services/spam/akismet_service_spec.rb575spec/rubocop/cop/file_decompression_spec.rb576spec/lib/gitlab/diff/formatters/text_formatter_spec.rb577spec/models/bulk_imports/tracker_spec.rb578spec/lib/gitlab/phabricator_import/issues/task_importer_spec.rb579spec/workers/integrations/create_external_cross_reference_worker_spec.rb580spec/finders/users_star_projects_finder_spec.rb581spec/lib/gitlab/ci/templates/terraform_gitlab_ci_yaml_spec.rb582spec/services/snippets/repository_validation_service_spec.rb583spec/lib/gitlab/background_migration/migrate_pages_to_zip_storage_spec.rb584spec/lib/gitlab/email/hook/smime_signature_interceptor_spec.rb585spec/lib/gitlab/database/partitioning/partition_manager_spec.rb586spec/models/concerns/participable_spec.rb587spec/services/ci/change_variable_service_spec.rb588spec/lib/constraints/project_url_constrainer_spec.rb589spec/lib/gitlab/diff/file_collection/merge_request_diff_base_spec.rb590spec/serializers/issue_sidebar_basic_entity_spec.rb591spec/graphql/resolvers/alert_management/integrations_resolver_spec.rb592spec/services/ci/compare_reports_base_service_spec.rb593spec/lib/gitlab/spamcheck/client_spec.rb594spec/lib/gitlab/rack_attack/user_allowlist_spec.rb595spec/lib/gitlab/cleanup/orphan_job_artifact_files_spec.rb596spec/graphql/mutations/todos/mark_done_spec.rb597spec/lib/gitlab/middleware/speedscope_spec.rb598spec/lib/gitlab/checks/lfs_check_spec.rb599spec/lib/gitlab/analytics/cycle_analytics/records_fetcher_spec.rb600spec/models/postgresql/replication_slot_spec.rb601spec/lib/error_tracking/sentry_client/api_urls_spec.rb602spec/services/incident_management/issuable_escalation_statuses/after_update_service_spec.rb603spec/presenters/web_hook_log_presenter_spec.rb604spec/lib/gitlab/ci/pipeline/logger_spec.rb605spec/lib/google_api/cloud_platform/client_spec.rb606spec/views/projects/issues/_service_desk_info_content.html.haml_spec.rb607spec/workers/ci/pipeline_artifacts/create_quality_report_worker_spec.rb608spec/lib/learn_gitlab/onboarding_spec.rb609spec/services/award_emojis/toggle_service_spec.rb610spec/lib/gitlab/usage_data/topology_spec.rb611spec/lib/gitlab/search_context/controller_concern_spec.rb612spec/lib/gitlab/graphql/pagination/offset_active_record_relation_connection_spec.rb613spec/lib/gitlab/ci/status/build/failed_unmet_prerequisites_spec.rb614spec/tooling/rspec_flaky/flaky_examples_collection_spec.rb615spec/lib/gitlab/database/partitioning_spec.rb616spec/lib/gitlab/utils/delegator_override/validator_spec.rb617spec/services/ci/find_exposed_artifacts_service_spec.rb618spec/workers/ci/build_trace_chunk_flush_worker_spec.rb619spec/services/pages/destroy_deployments_service_spec.rb620spec/lib/gitlab/ci/pipeline/quota/deployments_spec.rb621spec/models/preloaders/merge_request_diff_preloader_spec.rb622spec/services/groups/participants_service_spec.rb623spec/finders/packages/helm/package_files_finder_spec.rb624spec/lib/marginalia_spec.rb625spec/models/packages/nuget/dependency_link_metadatum_spec.rb626spec/services/award_emojis/copy_service_spec.rb627spec/lib/gitlab/ci/pipeline/expression/lexeme/string_spec.rb628spec/workers/environments/canary_ingress/update_worker_spec.rb629spec/services/projects/prometheus/alerts/create_service_spec.rb630spec/helpers/notify_helper_spec.rb631spec/workers/expire_build_artifacts_worker_spec.rb632spec/models/concerns/legacy_bulk_insert_spec.rb633spec/lib/gitlab/metrics/rails_slis_spec.rb634spec/workers/releases/manage_evidence_worker_spec.rb635spec/lib/gitlab/ci/reports/test_report_summary_spec.rb636spec/models/group_label_spec.rb637spec/workers/archive_trace_worker_spec.rb638spec/graphql/mutations/clusters/agent_tokens/revoke_spec.rb639spec/graphql/types/projects/jira_service_type_spec.rb640spec/workers/incident_management/add_severity_system_note_worker_spec.rb641spec/workers/issue_due_scheduler_worker_spec.rb642spec/lib/gitlab/metrics/rack_middleware_spec.rb643spec/lib/gitlab/data_builder/wiki_page_spec.rb644spec/serializers/ci/daily_build_group_report_result_serializer_spec.rb645spec/lib/gitlab/metrics/elasticsearch_rack_middleware_spec.rb646spec/services/bulk_imports/export_service_spec.rb647spec/models/subscription_spec.rb648spec/presenters/service_hook_presenter_spec.rb649spec/models/integrations/irker_spec.rb650spec/lib/gitlab/gitaly_client/health_check_service_spec.rb651spec/lib/sidebars/projects/menus/snippets_menu_spec.rb652spec/models/instance_metadata/kas_spec.rb653spec/lib/gitlab/exclusive_lease_helpers/sleeping_lock_spec.rb654spec/workers/mail_scheduler/notification_service_worker_spec.rb655spec/services/spam/akismet_mark_as_spam_service_spec.rb656spec/lib/gitlab/git/remote_mirror_spec.rb657spec/presenters/tree_entry_presenter_spec.rb658spec/services/keys/last_used_service_spec.rb659spec/workers/ci/daily_build_group_report_results_worker_spec.rb660spec/lib/gitlab/database/reindexing/coordinator_spec.rb661spec/graphql/mutations/notes/reposition_image_diff_note_spec.rb662spec/services/concerns/merge_requests/assigns_merge_params_spec.rb663spec/services/user_project_access_changed_service_spec.rb664spec/lib/gitlab/usage_data_counters/static_site_editor_counter_spec.rb665spec/services/ci/pipelines/hook_service_spec.rb666spec/lib/gitlab/import_export/snippet_repo_saver_spec.rb667spec/lib/quality/seeders/issues_spec.rb668spec/rubocop/cop/scalability/bulk_perform_with_context_spec.rb669spec/lib/gitlab/config/entry/simplifiable_spec.rb670spec/lib/gitlab/ci/status/failed_spec.rb671spec/lib/gitlab/git/wraps_gitaly_errors_spec.rb672spec/lib/gitlab/metrics/dashboard/stages/variable_endpoint_inserter_spec.rb673spec/lib/gitlab/lets_encrypt/challenge_spec.rb674spec/serializers/import/githubish_provider_repo_entity_spec.rb675spec/lib/gitlab/slash_commands/presenters/run_spec.rb676spec/models/integrations/assembla_spec.rb677spec/serializers/issuable_sidebar_extras_entity_spec.rb678spec/graphql/types/packages/nuget/metadatum_type_spec.rb679spec/lib/api/entities/deployment_extended_spec.rb680spec/lib/gitlab/usage/metrics/instrumentations/count_users_associating_milestones_to_releases_metric_spec.rb681spec/rubocop/cop/active_record_association_reload_spec.rb682spec/rubocop/cop/migration/remove_concurrent_index_spec.rb683spec/workers/dependency_proxy/image_ttl_group_policy_worker_spec.rb684spec/lib/bulk_imports/projects/pipelines/protected_branches_pipeline_spec.rb685spec/policies/packages/package_policy_spec.rb686spec/lib/api/entities/group_detail_spec.rb687spec/lib/api/helpers/variables_helpers_spec.rb688spec/serializers/group_link/project_group_link_serializer_spec.rb689spec/experiments/force_company_trial_experiment_spec.rb690spec/lib/gitlab/database/schema_migrations/migrations_spec.rb691spec/services/webauthn/authenticate_service_spec.rb692spec/services/work_items/build_service_spec.rb693spec/lib/gitlab/ci/jwt_v2_spec.rb694spec/views/groups/new.html.haml_spec.rb695spec/graphql/types/clusters/agent_activity_event_type_spec.rb696spec/serializers/project_import_entity_spec.rb697spec/rubocop/cop/avoid_route_redirect_leading_slash_spec.rb698spec/lib/banzai/render_context_spec.rb699spec/graphql/types/customer_relations/contact_type_spec.rb700spec/initializers/rack_multipart_patch_spec.rb701spec/views/admin/application_settings/_repository_storage.html.haml_spec.rb702spec/initializers/100_patch_omniauth_oauth2_spec.rb703spec/lib/gitlab/graphql/tracers/logger_tracer_spec.rb704spec/serializers/evidences/evidence_serializer_spec.rb705spec/graphql/types/ci/config/job_type_spec.rb706spec/helpers/groups/crm_settings_helper_spec.rb707spec/graphql/types/ci/test_suite_type_spec.rb708spec/lib/banzai/pipeline/emoji_pipeline_spec.rb709spec/graphql/types/label_type_spec.rb710spec/models/blob_viewer/podspec_json_spec.rb711spec/rubocop/cop/migration/remove_index_spec.rb712spec/lib/gitlab/api_authentication/sent_through_builder_spec.rb713spec/lib/gitlab/import_export/error_spec.rb714spec/lib/gitlab/auth/otp/strategies/devise_spec.rb715spec/initializers/asset_proxy_setting_spec.rb716spec/services/deploy_keys/create_service_spec.rb717spec/graphql/types/permission_types/project_spec.rb718spec/lib/gitlab/metrics/exporter/gc_request_middleware_spec.rb719spec/graphql/types/blob_viewer_type_spec.rb720spec/initializers/session_store_spec.rb721spec/graphql/types/merge_request_state_event_enum_spec.rb722Running all node tests without filter723Running all node tests without filter724Knapsack report generator started!725Run options: exclude {:quarantine=>true, :geo=>true, :level=>"migration"}726==> /builds/gitlab-org/gitlab/tmp/tests/gitlab-test_bare set up in 0.09150314 seconds...727Test environment set up in 0.720500658 seconds728User729 behaves like having unique enum values730 has unique values in "user_type"731 has unique values in "layout"732 has unique values in "dashboard"733 has unique values in "project_view"734 has unique values in "role"735 has unique values in "roadmap_layout"736 has unique values in "group_view"737 modules738 is expected to includes the Gitlab::ConfigHelper module739 is expected to includes the Referable module740 is expected to includes the Sortable module741 is expected to includes the TokenAuthenticatable module742 is expected to includes the BlocksJsonSerialization module743 is expected to includes the AsyncDeviseEmail module744 constants745 is expected to be a kind of Integer746 is expected to be a kind of Integer747 is expected to be a kind of Integer748 delegations749 is expected to delegate #namespace_path to the #namespace object as #path750 is expected to delegate #notes_filter_for to the #user_preference object751 is expected to delegate #set_notes_filter to the #user_preference object752 is expected to delegate #first_day_of_week to the #user_preference object753 is expected to delegate #first_day_of_week= to the #user_preference object passing arguments [:args]754 is expected to delegate #timezone to the #user_preference object755 is expected to delegate #timezone= to the #user_preference object passing arguments [:args]756 is expected to delegate #time_display_relative to the #user_preference object757 is expected to delegate #time_display_relative= to the #user_preference object passing arguments [:args]758 is expected to delegate #time_format_in_24h to the #user_preference object759 is expected to delegate #time_format_in_24h= to the #user_preference object passing arguments [:args]760 is expected to delegate #show_whitespace_in_diffs to the #user_preference object761 is expected to delegate #show_whitespace_in_diffs= to the #user_preference object passing arguments [:args]762 is expected to delegate #view_diffs_file_by_file to the #user_preference object763 is expected to delegate #view_diffs_file_by_file= to the #user_preference object passing arguments [:args]764 is expected to delegate #tab_width to the #user_preference object765 is expected to delegate #tab_width= to the #user_preference object passing arguments [:args]766 is expected to delegate #sourcegraph_enabled to the #user_preference object767 is expected to delegate #sourcegraph_enabled= to the #user_preference object passing arguments [:args]768 is expected to delegate #gitpod_enabled to the #user_preference object769 is expected to delegate #gitpod_enabled= to the #user_preference object passing arguments [:args]770 is expected to delegate #setup_for_company to the #user_preference object771 is expected to delegate #setup_for_company= to the #user_preference object passing arguments [:args]772 is expected to delegate #render_whitespace_in_code to the #user_preference object773 is expected to delegate #render_whitespace_in_code= to the #user_preference object passing arguments [:args]774 is expected to delegate #markdown_surround_selection to the #user_preference object775 is expected to delegate #markdown_surround_selection= to the #user_preference object passing arguments [:args]776 is expected to delegate #job_title to the #user_detail object, allowing #user_detail to return nil777 is expected to delegate #job_title= to the #user_detail object passing arguments [:args], allowing #user_detail to return nil778 is expected to delegate #pronouns to the #user_detail object, allowing #user_detail to return nil779 is expected to delegate #pronouns= to the #user_detail object passing arguments [:args], allowing #user_detail to return nil780 is expected to delegate #pronunciation to the #user_detail object, allowing #user_detail to return nil781 is expected to delegate #pronunciation= to the #user_detail object passing arguments [:args], allowing #user_detail to return nil782 is expected to delegate #bio to the #user_detail object, allowing #user_detail to return nil783 is expected to delegate #bio= to the #user_detail object passing arguments [:args], allowing #user_detail to return nil784 is expected to delegate #registration_objective to the #user_detail object, allowing #user_detail to return nil785 is expected to delegate #registration_objective= to the #user_detail object passing arguments [:args], allowing #user_detail to return nil786 is expected to delegate #requires_credit_card_verification to the #user_detail object, allowing #user_detail to return nil787 is expected to delegate #requires_credit_card_verification= to the #user_detail object passing arguments [:args], allowing #user_detail to return nil788 associations789 is expected to have one namespace790 is expected to have one status791 is expected to have one user_detail792 is expected to have one atlassian_identity793 is expected to have one user_highest_role794 is expected to have one credit_card_validation795 is expected to have one banned_user796 is expected to have many snippets dependent => destroy797 is expected to have many members798 is expected to have many project_members799 is expected to have many group_members800 is expected to have many groups801 is expected to have many keys dependent => destroy802 is expected to have many expired_today_and_unnotified_keys803 is expected to have many deploy_keys dependent => nullify804 is expected to have many group_deploy_keys805 is expected to have many events dependent => delete_all806 is expected to have many issues dependent => destroy807 is expected to have many notes dependent => destroy808 is expected to have many merge_requests dependent => destroy809 is expected to have many identities dependent => destroy810 is expected to have many spam_logs dependent => destroy811 is expected to have many todos812 is expected to have many award_emoji dependent => destroy813 is expected to have many builds814 is expected to have many pipelines815 is expected to have many chat_names dependent => destroy816 is expected to have many uploads817 is expected to have many reported_abuse_reports class_name => AbuseReport dependent => destroy818 is expected to have many custom_attributes class_name => UserCustomAttribute819 is expected to have many releases dependent => nullify820 is expected to have many metrics_users_starred_dashboards inverse_of => user821 is expected to have many reviews inverse_of => author822 is expected to have many merge_request_assignees inverse_of => assignee823 is expected to have many merge_request_reviewers inverse_of => reviewer824 is expected to have many created_custom_emoji inverse_of => creator825 is expected to have many in_product_marketing_emails826 is expected to have many timelogs827 is expected to have many callouts class_name => Users::Callout828 is expected to have many group_callouts class_name => Users::GroupCallout829 #user_detail830 does not persist `user_detail` by default831 creates `user_detail` when `bio` is given832 delegates `bio` to `user_detail`833 delegates `pronouns` to `user_detail`834 delegates `pronunciation` to `user_detail`835 creates `user_detail` when `bio` is first updated836 #abuse_report837 is expected to have one abuse_report838 refers to the abuse report whose user_id is the current user839 does not refer to the abuse report whose reporter_id is the current user840 does not update the user_id of an abuse report when the user is updated841 #group_members842 does not include group memberships for which user is a requester843 #project_members844 does not include project memberships for which user is a requester845 Devise emails846 behaviour847 sends emails asynchronously848 emails sent on changing password849 when password is updated850 default behaviour851 enqueues the `password changed` email852 does not enqueue the `admin changed your password` email853 `admin changed your password` email854 is enqueued only when explicitly allowed855 `password changed` email is not enqueued if it is explicitly allowed856 is not enqueued if sending notifications on password updates is turned off as per Devise config857 when password is not updated858 does not enqueue the `admin changed your password` email even if explicitly allowed859 validations860 has a DB-level NOT NULL constraint on projects_limit861 is expected to validate that :projects_limit cannot be empty/falsy862 is expected to validate that :projects_limit looks like a number863 is expected to allow :projects_limit to be ‹0›864 is expected not to allow :projects_limit to be ‹-1›865 is expected not to allow :projects_limit to be ‹2147483648›866 password867 length868 is expected to validate that the length of :password is between 10 and 130869 length validator870 for a short password871 does not run the default Devise password length validation872 runs the custom password length validator873 for a long password874 does not run the default Devise password length validation875 runs the custom password length validator876 name877 is expected to validate that :name cannot be empty/falsy878 is expected to validate that the length of :name is at most 255879 first name880 is expected to validate that the length of :first_name is at most 127881 last name882 is expected to validate that the length of :last_name is at most 127883 preferred_language884 when its value is nil in the database885 falls back to I18n.default_locale when empty in the database886 falls back to english when I18n.default_locale is not an available language887 username888 validates presence889 rejects denied names890 allows child names891 allows wildcard names892 validates format893 validates format on updated record894 when username is changed895 validates move_dir is allowed for the namespace896 when the username is in use by another user897 is invalid898 behaves like an object with email-formatted attributes899 specifically its :email attribute900 with a value of 'info@example.com'901 is valid902 with a value of 'info+test@example.com'903 is valid904 with a value of 'o'reilly@example.com'905 is valid906 with a value of 'mailto:test@example.com'907 is valid908 with a value of 'lol!'+=?><#$%^&*()@gmail.com'909 is valid910 with a value of 'foobar'911 is invalid912 with a value of 'test@test@example.com'913 is invalid914 behaves like an object with email-formatted attributes915 specifically its :public_email attribute916 with a value of 'info@example.com'917 is valid918 with a value of 'info+test@example.com'919 is valid920 with a value of 'o'reilly@example.com'921 is valid922 with a value of 'mailto:test@example.com'923 is valid924 with a value of 'lol!'+=?><#$%^&*()@gmail.com'925 is valid926 with a value of 'foobar'927 is invalid928 with a value of 'test@test@example.com'929 is invalid930 specifically its :notification_email attribute931 with a value of 'info@example.com'932 is valid933 with a value of 'info+test@example.com'934 is valid935 with a value of 'o'reilly@example.com'936 is valid937 with a value of 'mailto:test@example.com'938 is valid939 with a value of 'lol!'+=?><#$%^&*()@gmail.com'940 is valid941 with a value of 'foobar'942 is invalid943 with a value of 'test@test@example.com'944 is invalid945 #commit_email_or_default946 defaults to the primary email947 defaults to the primary email when the column in the database is null948 returns the private commit email when commit_email has _private949 #commit_email=950 can be set to a confirmed email951 can not be set to an unconfirmed email952 can not be set to a non-existent email953 can not be set to an invalid email, even if confirmed954 email955 when no signup domains allowed956 accepts any email957 bad regex958 does not hang on evil input959 when a signup domain is allowed and subdomains are allowed960 accepts info@example.com961 accepts info@test.example.com962 rejects example@test.com963 does not allow user to update email to a non-allowlisted domain964 when a signup domain is allowed and subdomains are not allowed965 accepts info@example.com966 rejects info@test.example.com967 rejects example@test.com968 accepts example@test.com when added by another user969 domain denylist970 bad regex971 does not hang on evil input972 when a signup domain is denied973 accepts info@test.com974 rejects info@example.com975 accepts info@example.com when added by another user976 does not allow user to update email to a denied domain977 when a signup domain is denied but a wildcard subdomain is allowed978 gives priority to allowlist and allow info@test.example.com979 with both lists containing a domain980 accepts info@test.com981 rejects info@example.com982 email restrictions983 when email restriction is disabled984 does accept email address985 when email restrictions is enabled986 does not accept email address with + characters987 does not accept email with a gitlab domain988 adds an error message when email is not accepted989 does not allow user to update email to a restricted domain990 does accept a valid email address991 when created_by_id is set992 does accept the email address993 when secondary email is same as primary994 lets user change primary email without failing validations995 when commit_email is changed to _private996 passes user validations997 scopes998 blocked users999 .blocked1000 returns only blocked users1001 .blocked_pending_approval1002 returns only pending approval users1003 .banned1004 returns only banned users1005 .with_two_factor1006 returns users with 2fa enabled via OTP1007 and U2F1008 behaves like returns the right users1009 returns users with 2fa enabled via hardware token1010 returns users with 2fa enabled via OTP and hardware token1011 works with ORDER BY1012 and WebAuthn1013 behaves like returns the right users1014 returns users with 2fa enabled via hardware token1015 returns users with 2fa enabled via OTP and hardware token1016 works with ORDER BY1017 .without_two_factor1018 excludes users with 2fa enabled via OTP1019 and u2f1020 excludes users with 2fa enabled via U2F1021 excludes users with 2fa enabled via OTP and U2F1022 and webauthn1023 excludes users with 2fa enabled via WebAuthn1024 excludes users with 2fa enabled via OTP and WebAuthn1025 .random_password1026 length1027 conforms to the current password length settings1028 .password_length1029 is expected to be a Range1030 minimum value1031 is determined by the current value of `minimum_password_length` attribute of application_setting1032 maximum value1033 is determined by the current value of `Devise.password_length.max`1034 .limit_to_todo_authors1035 when filtering by todo authors1036 only returns users that have authored todos1037 ignores users that do not have a todo in the matching state1038 when not filtering by todo authors1039 returns the input relation1040 when no user is provided1041 returns the input relation1042 .by_username1043 finds users regardless of the case passed1044 finds a single user regardless of the case passed1045 .with_expiring_and_not_notified_personal_access_tokens1046 in one day1047 doesn't include an user1048 in three days1049 only includes user21050 .with_personal_access_tokens_expired_today1051 returns users whose token has expired today1052 SSH key expiration scopes1053 .with_ssh_key_expiring_soon1054 returns users whose keys will expire soon1055 .active_without_ghosts1056 returns all active users but ghost users1057 .without_ghosts1058 returns users without ghosts users1059 .by_id_and_login1060 finds a user regardless of case1061 finds a user when login is an email address regardless of case1062 .for_todos1063 returns users for the given todos1064 strip attributes1065 name1066 strips whitespaces on validation1067 Respond to1068 is expected to respond to #admin?1069 is expected to respond to #name1070 is expected to respond to #external?1071 before save hook1072 #default_private_profile_to_false1073 converts nil to false1074 when saving an external user1075 sets other properties as well1076 #check_for_verified_email1077 allows a verified secondary email to be used as the primary without needing reconfirmation1078 after commit hook1079 when the primary email is updated1080 keeps old primary to secondary emails when secondary is a new email1081 when the first email was unconfirmed and the second email gets confirmed1082 updates user.email1083 confirms user.email1084 does not add unconfirmed email to secondary1085 has only one email association1086 when an existing email record is set as primary1087 when it is unconfirmed1088 keeps the user confirmed1089 keeps the original email1090 when the email gets confirmed1091 keeps the user confirmed1092 updates the email1093 when it is confirmed1094 keeps the user confirmed1095 updates the email1096 keeps the old email1097 when unconfirmed user deletes a confirmed additional email1098 does not affect the confirmed status1099 when changing email1100 if notification_email was nil1101 sets :unconfirmed_email1102 does not change notification_email or notification_email_or_default before email is confirmed1103 updates notification_email_or_default to the new email once confirmed1104 when notification_email is set to a secondary email1105 does not change notification_email to email before email is confirmed1106 does not change notification_email to email once confirmed1107 #update_invalid_gpg_signatures1108 does nothing when the name is updated1109 synchronizes the gpg keys when the email is updated1110 name getters1111 derives first name from full name, if not present1112 derives last name from full name, if not present1113 #highest_role1114 when user_highest_role does not exist1115 returns NO_ACCESS1116 when user_highest_role exists1117 stored highest access level is nil1118 returns Gitlab::Access::NO_ACCESS1119 stored highest access level present1120 with association :user_highest_role1121 returns the correct highest role1122 #credit_card_validated_at1123 when credit_card_validation does not exist1124 returns nil1125 when credit_card_validation exists1126 returns the credit card validated time1127 #update_tracked_fields!1128 writes trackable attributes1129 does not write trackable attributes when called a second time within the hour1130 writes trackable attributes for a different user1131 does not write if the DB is in read-only mode1132 #keys1133 with key and deploy key stored1134 returns stored key, but not deploy_key1135 #accessible_deploy_keys1136 user can only see deploy keys accessible to right projects1137 #deploy_keys1138 with key and deploy key stored1139 returns stored deploy key, but not normal key1140 #confirm1141 when the confirmation period has expired1142 does not confirm the user1143 does not add the confirmed primary email to emails1144 behaves like unconfirmed user1145 returns unconfirmed1146 when the confirmation period has not expired1147 confirms a user1148 adds the confirmed primary email to emails1149 behaves like unconfirmed user1150 returns unconfirmed1151 when the primary email is already included in user.emails1152 when the confirmation period of the email record has expired1153 does not confirm the email record1154 when the confirmation period of the email record has not expired1155 confirms the email record1156 #force_confirm1157 when the confirmation period has expired1158 behaves like unconfirmed user1159 returns unconfirmed1160 behaves like confirms the user on force_confirm1161 confirms a user1162 behaves like adds the confirmed primary email to emails1163 adds the confirmed primary email to emails1164 behaves like confirms the email record if the primary email was already present in user.emails1165 when the primary email is already included in user.emails1166 when the confirmation period of the email record has expired1167 behaves like confirms the email record1168 confirms the email record1169 when the confirmation period of the email record has not expired1170 behaves like confirms the email record1171 confirms the email record1172 when the confirmation period has not expired1173 behaves like unconfirmed user1174 returns unconfirmed1175 behaves like confirms the user on force_confirm1176 confirms a user1177 behaves like adds the confirmed primary email to emails1178 adds the confirmed primary email to emails1179 behaves like confirms the email record if the primary email was already present in user.emails1180 when the primary email is already included in user.emails1181 when the confirmation period of the email record has expired1182 behaves like confirms the email record1183 confirms the email record1184 when the confirmation period of the email record has not expired1185 behaves like confirms the email record1186 confirms the email record1187 if the user is created with confirmed_at set to a time1188 adds the confirmed primary email to emails upon creation1189 #to_reference1190 returns a String reference to the object1191 #generate_password1192 does not generate password by default1193 ensure user preference1194 has user preference upon user initialization1195 ensure incoming email token1196 has incoming email token1197 uses SecureRandom to generate the incoming email token1198 #ensure_user_rights_and_limits1199 with external user1200 receives callback when external changes1201 ensures correct rights and limits for user1202 without external user1203 receives callback when external changes1204 ensures correct rights and limits for user1205 feed token1206 ensures a feed token on read1207 ensures no feed token when disabled1208 static object token1209 ensures a static object token on read1210 generates an encrypted version of the token1211 prefers an encoded version of the token1212 enabled_static_object_token1213 returns incoming email token when supported1214 returns `nil` when not supported1215 enabled_incoming_email_token1216 returns incoming email token when supported1217 returns `nil` when not supported1218 #recently_sent_password_reset?1219 is false when reset_password_sent_at is nil1220 is false when sent more than one minute ago1221 is true when sent less than one minute ago1222 #disable_two_factor!1223 clears all 2FA-related fields1224 #two_factor_otp_enabled?1225 when 2FA is enabled by an MFA Device1226 is expected to eq true1227 FortiAuthenticator1228 when enabled via GitLab settings1229 when feature is disabled for the user1230 is expected to eq false1231 when feature is enabled for the user1232 is expected to eq true1233 when disabled via GitLab settings1234 is expected to eq false1235 FortiTokenCloud1236 when enabled via GitLab settings1237 when feature is disabled for the user1238 is expected to eq false1239 when feature is enabled for the user1240 is expected to eq true1241 when disabled via GitLab settings1242 is expected to eq false1243 two_factor_u2f_enabled?1244 when webauthn feature flag is enabled1245 user has no U2F registration1246 is expected to eq false1247 user has existing U2F registration1248 returns false1249 when webauthn feature flag is disabled1250 user has no U2F registration1251 is expected to eq false1252 user has existing U2F registration1253 returns true1254 projects1255 is expected to include #<Project id:17 user246/project19>>1256 is expected to include #<Project id:21 group6/project23>>1257 is expected to include #<Project id:25 group9/project27>>1258 is expected to include #<Project id:26 user255/project28>>1259 is expected not to include #<Project id:30 group12/project32>>1260 is expected not to include #<Project id:34 group15/project36>>1261 is expected to include #<Project id:35 user264/project37>>1262 is expected not to include #<Project id:39 group18/project41>>1263 is expected not to include #<Project id:43 group21/project45>>1264 groups1265 is expected to be truthy1266 is expected to eq [#<Group id:322 @group23>]1267 is expected to eq [#<Group id:324 @group24>]1268 is expected to contain exactly #<Namespaces::UserNamespace id: 327, name: "Sidney Jones438", path: "user276", owner_id: 261, created...runners_enabled: true, allow_descendants_override_disabled_shared_runners: false, traversal_ids: []> and #<Group id:326 @group25>1269 is expected to contain exactly #<Namespaces::UserNamespace id: 329, name: "Sidney Jones439", path: "user277", owner_id: 262, created...runners_enabled: true, allow_descendants_override_disabled_shared_runners: false, traversal_ids: []> and #<Group id:328 @group26>1270 with owned groups only1271 is expected to contain exactly #<Namespaces::UserNamespace id: 331, name: "Sidney Jones440", path: "user278", owner_id: 263, created...runners_enabled: true, allow_descendants_override_disabled_shared_runners: false, traversal_ids: []> and #<Group id:330 @group27>1272 with child groups1273 #forkable_namespaces1274 includes all the namespaces the user can fork into1275 #manageable_groups1276 behaves like manageable groups examples1277 includes all the namespaces the user can manage1278 does not include duplicates if a membership was added for the subgroup1279 when feature flag :linear_user_manageable_groups is disabled1280 behaves like manageable groups examples1281 includes all the namespaces the user can manage1282 does not include duplicates if a membership was added for the subgroup1283 #manageable_groups_with_routes1284 eager loads routes from manageable groups1285 group multiple owners1286 is expected to be truthy1287 namespaced1288 is expected to be falsey1289 is expected to eq [#<Namespaces::UserNamespace id: 358, name: "Sidney Jones450", path: "user288", owner_id: 273, create...unners_enabled: true, allow_descendants_override_disabled_shared_runners: false, traversal_ids: []>]1290 blocking user1291 blocks user1292 when user has running CI pipelines1293 drops all running pipelines and related jobs1294 does not drop running pipelines if the transaction rolls back1295 when user has active CI pipeline schedules1296 disables any pipeline schedules1297 deactivating a user1298 an active user1299 can be deactivated1300 when user deactivation emails are disabled1301 does not send deactivated user an email1302 when user deactivation emails are enabled1303 sends deactivated user an email1304 a user who is blocked1305 cannot be deactivated1306 blocking a user pending approval1307 an active user1308 can be blocked pending approval1309 behaves like a blocked user1310 .instance_access_request_approvers_to_be_notified1311 returns up to the ten most recently active instance admins1312 banning and unbanning a user1313 banning a user1314 bans and blocks the user1315 creates a BannedUser record1316 unbanning a user1317 unbans the user1318 deletes the BannedUser record1319 .filter_items1320 filters by active users by default1321 filters by admins1322 filters by blocked1323 filters by banned1324 filters by blocked pending approval1325 filters by deactivated1326 filters by two_factor_disabled1327 filters by two_factor_enabled1328 filters by wop1329 .without_projects1330 is expected not to include #<User id:302 @user312>1331 is expected to include #<User id:309 @user317>1332 is expected to include #<User id:316 @user322>1333 user creation1334 normal user1335 is expected to be falsey1336 is expected to be truthy1337 is expected to be truthy1338 is expected to be truthy1339 is expected to eq "John"1340 is expected to be falsey1341 with defaults1342 applies defaults to user1343 with default overrides1344 applies defaults to user1345 does not undo projects_limit setting if it matches old DB default of 101346 when Gitlab::CurrentSettings.user_default_external is true1347 creates external user by default1348 with default overrides1349 creates a non-external user1350 #require_ssh_key?1351 has correct require_ssh_key?1352 has correct require_ssh_key?1353 has correct require_ssh_key?1354 returns false when the user has 1 or more SSH keys1355 .find_for_database_authentication1356 strips whitespace from login1357 .find_by_any_email1358 finds user through private commit email1359 finds by primary email1360 finds by uppercased email1361 returns nil when nothing found1362 returns nil when user is not confirmed1363 finds by secondary email1364 primary email confirmed1365 secondary email confirmed1366 finds user respecting the confirmed flag1367 secondary email not confirmed1368 finds user respecting the confirmed flag1369 primary email not confirmed1370 finds user respecting the confirmed flag1371 .by_any_email1372 returns an ActiveRecord::Relation1373 returns a relation of users1374 returns a relation of users for confirmed users1375 finds user through a private commit email1376 finds user through a private commit email in an array1377 .search1378 returns no matches for an empty string1379 returns no matches for nil1380 name matching1381 returns users with a matching name with exact match first1382 returns users with a partially matching name1383 returns users with a matching name regardless of the casing1384 returns users with a exact matching name shorter than 3 chars1385 returns users with a exact matching name shorter than 3 chars regardless of the casing1386 email matching1387 returns users with a matching public email1388 does not return users with a partially matching public email1389 returns users with a matching public email regardless of the casing1390 does not return users with a matching private email1391 with private emails search1392 returns users with matching private email1393 returns users with matching private secondary email1394 username matching1395 returns users with a matching username1396 returns users with a matching username starting with a @1397 returns users with a partially matching username1398 returns users with a partially matching username starting with @1399 returns users with a matching username regardless of the casing1400 returns users with a exact matching username shorter than 3 chars1401 returns users with a exact matching username shorter than 3 chars regardless of the casing1402 .search_without_secondary_emails1403 returns users with a matching name1404 returns users with a partially matching name1405 returns users with a matching name regardless of the casing1406 returns users with a matching email1407 does not return users with a partially matching email1408 returns users with a matching email regardless of the casing1409 returns users with a matching username1410 returns users with a partially matching username1411 returns users with a matching username regardless of the casing1412 does not return users with a matching whole secondary email1413 does not return users with a matching part of secondary email1414 returns no matches for an empty string1415 returns no matches for nil1416 .search_with_public_emails1417 returns users with a matching name1418 returns users with a partially matching name1419 returns users with a matching name regardless of the casing1420 returns users with a matching public email1421 does not return users with a partially matching email1422 returns users with a matching email regardless of the casing1423 returns users with a matching username1424 returns users with a partially matching username1425 returns users with a matching username regardless of the casing1426 does not return users with a matching whole private email1427 does not return users with a matching whole private email1428 does not return users with a matching part of secondary email1429 does not return users with a matching part of private email1430 returns no matches for an empty string1431 returns no matches for nil1432 .search_with_secondary_emails1433 returns users with a matching name1434 returns users with a partially matching name1435 returns users with a matching name regardless of the casing1436 returns users with a matching email1437 does not return users with a partially matching email1438 returns users with a matching email regardless of the casing1439 returns users with a matching username1440 returns users with a partially matching username1441 returns users with a matching username regardless of the casing1442 returns users with a matching whole secondary email1443 does not return users with a matching part of secondary email1444 returns no matches for an empty string1445 returns no matches for nil1446 .user_search_minimum_char_limit1447 returns true1448 .find_by_ssh_key_id1449 only performs a single query1450 using an existing SSH key ID1451 returns the corresponding User1452 using an invalid SSH key ID1453 returns nil1454 .by_login1455 gets the correct user1456 .find_by_username1457 returns nil if not found1458 is case-insensitive1459 .find_by_username!1460 raises RecordNotFound1461 is case-insensitive1462 .find_by_full_path1463 with a route matching the given path1464 returns the user1465 is case-insensitive1466 with a redirect route matching the given path1467 without the follow_redirects option1468 returns nil1469 with the follow_redirects option set to true1470 returns the user1471 is case-insensitive1472 without a route or a redirect route matching the given path1473 without the follow_redirects option1474 returns nil1475 with the follow_redirects option set to true1476 returns nil1477 with a group route matching the given path1478 when the group namespace has an owner_id (legacy data)1479 returns nil1480 when the group namespace does not have an owner_id1481 returns nil1482 all_ssh_keys1483 is expected to have many keys dependent => destroy1484 has all ssh keys1485 #avatar_type1486 is true if avatar is image1487 is false if avatar is html page1488 #avatar_url1489 when avatar file is uploaded1490 shows correct avatar url1491 #clear_avatar_caches1492 clears the avatar cache when saving1493 #accept_pending_invitations!1494 accepts all the user members pending invitations and returns the accepted_members1495 #all_emails1496 when `include_private_email` is true1497 returns all emails1498 when `include_private_email` is false1499 does not include the private commit email1500 #verified_emails1501 returns only confirmed emails1502 #public_verified_emails1503 returns only confirmed public emails1504 returns confirmed public emails plus main user email when user is not confirmed1505 #verified_email?1506 returns true when the email is verified/confirmed1507 returns true when user is found through private commit email1508 returns true for an outdated private commit email1509 returns false when the email is not verified/confirmed1510 crowd synchronized user1511 #crowd_user?1512 is true if provider is crowd1513 is false for other providers1514 is false if no extern_uid is provided1515 #requires_ldap_check?1516 is false when LDAP is disabled1517 when LDAP is enabled1518 is false for non-LDAP users1519 and when the user is an LDAP user1520 is true when the user has never had an LDAP check before1521 is true when the last LDAP check happened over 1 hour ago1522 ldap synchronized user1523 #ldap_user?1524 is true if provider name starts with ldap1525 is false for other providers1526 is false if no extern_uid is provided1527 #ldap_identity1528 returns ldap identity1529 #matches_identity?1530 finds the identity when the DN is formatted differently1531 #ldap_block1532 blocks user flaging the action caming from ldap1533 on a read-only instance1534 does not block user1535 #full_website_url1536 begins with http if website url omits it1537 begins with http if website url begins with http1538 begins with https if website url begins with https1539 #short_website_url1540 does not begin with http if website url omits it1541 does not begin with http if website url begins with http1542 does not begin with https if website url begins with https1543 #sanitize_attrs1544 encodes HTML entities in the Skype attribute1545 does not encode HTML entities in the name attribute1546 sanitizes attr from html tags1547 sanitizes attr from js scripts1548 sanitizes attr from iframe scripts1549 #starred?1550 determines if user starred a project1551 #toggle_star1552 toggles stars1553 #following?1554WARNING: Active Record does not support composite primary key.1555user_follow_users has composite primary key. Composite primary key is ignored.1556 check if following another user1557 #follow1558 follow another user1559 follow itself is not possible1560 #unfollow1561 unfollow another user1562 #notification_email_or_default1563 when the column in the database is null1564 defaults to the primary email1565 .find_by_private_commit_email1566 returns nil when email is nil1567 with email1568 returns user through private commit email1569 returns nil when email other than private_commit_email is used1570 #sort_by_attribute1571 sorts users in descending order by their creation time1572 sorts users in ascending order by their creation time1573 sorts users by id in descending order when nil is passed1574 when sort by recent_sign_in1575 sorts users by recent sign-in time1576 pushes users who never signed in to the end1577 when sort by oldest_sign_in1578 sorts users by the oldest sign-in time1579 pushes users who never signed in to the end1580 #last_active_at1581 for a user that has `last_activity_on` set1582 returns `last_activity_on` with current time zone1583 for a user that has `current_sign_in_at` set1584 returns `current_sign_in_at`1585 for a user that has both `current_sign_in_at` & ``last_activity_on`` set1586 returns the latest among `current_sign_in_at` & `last_activity_on`1587 for a user that does not have both `current_sign_in_at` & `last_activity_on` set1588 returns nil1589 #can_be_deactivated?1590 a user who is not active1591 behaves like not eligible for deactivation1592 returns false1593 a user who has activity within the specified minimum inactive days1594 behaves like not eligible for deactivation1595 returns false1596 a user who has signed in within the specified minimum inactive days1597 behaves like not eligible for deactivation1598 returns false1599 a user who has no activity within the specified minimum inactive days1600 behaves like eligible for deactivation1601 returns true1602 a user who has not signed in within the specified minimum inactive days1603 behaves like eligible for deactivation1604 returns true1605 a user who is internal1606 returns false1607 #contributed_projects1608 includes IDs for projects the user has pushed to1609 includes IDs for projects the user has had merge requests merged into1610 doesn't include IDs for unrelated projects1611 doesn't include projects aimed for deletion1612 #fork_of1613 returns a user's fork of a project1614 returns nil if the project does not have a fork network1615 #can_be_removed?1616 no owned groups1617 is expected to be truthy1618 has owned groups1619DEPRECATION 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:1340)1620 is expected to be falsey1621 #solo_owned_groups1622 no owned groups1623 is expected to be empty1624 has owned groups1625 not solo owner1626DEPRECATION 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:1340)1627 is expected to be empty1628 solo owner1629DEPRECATION 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:1340)1630 is expected to include #<Group id:605 @group53>1631DEPRECATION 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:1340)1632DEPRECATION 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:1340)1633 avoids N+1 queries1634 #can_remove_self?1635 returns true1636 #recent_push1637 returns the last push event for the user1638 returns the last push event for a project when one is given1639 #authorized_groups1640 is expected to contain exactly #<Group id:610 @group55> and #<Group id:612 @group57>1641 with shared memberships1642 is expected to include #<Group id:623 @group61>1643 is expected not to include #<Group id:633 @group67>1644 #membership_groups1645 is expected to contain exactly #<Group id:635 @group68> and #<Group id:636 @group68/group69>1646 #authorizations_for_projects1647 includes projects that belong to a user, but no other projects1648 includes projects a user has access to, but no other projects1649 with min_access_level1650 when developer access1651 includes projects a user has access to1652 when owner access1653 does not include projects with higher access level1654 #authorized_projects1655 includes user's personal projects1656 includes personal projects user has been given access to1657 includes projects of groups user has been added to1658 does not include projects of groups user has been removed from1659 includes projects shared with user's group1660 does not include destroyed projects user had access to1661 does not include projects of destroyed groups user had access to1662 with a minimum access level1663 includes projects for which the user is an owner1664 includes projects for which the user is a maintainer1665 #projects_where_can_admin_issues1666 includes projects for which the user access level is above or equal to reporter1667 does not include for which the user access level is below reporter1668 does not include archived projects1669 does not include projects for which issues are disabled1670 behaves like #ci_owned_runners1671 without any projects nor groups1672 does not load any runner1673 returns false for owns_runner?1674 with runner in a personal project1675 behaves like project_owner1676 when the user is the owner of a project1677 loads the runner belonging to the project1678 returns true for owns_runner?1679 with group runner in a non owned group1680 behaves like group_member1681 when the user is a maintainer1682 does not load the runners of the group1683 returns false for owns_runner?1684 when the user is a developer1685 does not load any runner1686 returns false for owns_runner?1687 when the user is a reporter1688 does not load any runner1689 returns false for owns_runner?1690 when the user is a guest1691 does not load any runner1692 returns false for owns_runner?1693 with group runner in an owned group1694 behaves like group_owner1695 when the user is the owner of a one level group1696 loads the runners in the group1697 returns true for owns_runner?1698 with group runner in an owned group and group runner in a different owner subgroup1699 behaves like nested_groups_owner1700 when the user is the owner of a multi-level group1701 loads all the runners in the tree of groups1702 returns true for owns_runner?1703 with personal project runner in an an owned group and a group runner in that same group1704 behaves like nested_groups_owner1705 when the user is the owner of a multi-level group1706 loads all the runners in the tree of groups1707 returns true for owns_runner?1708 with personal project runner in an owned group and a group runner in a subgroup1709 behaves like nested_groups_owner1710 when the user is the owner of a multi-level group1711 loads all the runners in the tree of groups1712 returns true for owns_runner?1713 with personal project runner in an owned group in an owned namespace and a group runner in that group1714 behaves like nested_groups_owner1715 when the user is the owner of a multi-level group1716 loads all the runners in the tree of groups1717 returns true for owns_runner?1718 with personal project runner in an owned namespace, an owned group, a subgroup and a group runner in that subgroup1719 behaves like nested_groups_owner1720 when the user is the owner of a multi-level group1721 loads all the runners in the tree of groups1722 returns true for owns_runner?1723 with a project runner that belong to projects that belong to a not owned group1724 behaves like project_member1725 when the user is a maintainer1726 loads the runners of the project1727 returns true for owns_runner?1728 when the user is a developer1729 does not load any runner1730 returns false for owns_runner?1731 when the user is a reporter1732 does not load any runner1733 returns false for owns_runner?1734 when the user is a guest1735 does not load any runner1736 returns false for owns_runner?1737 with project runners that belong to projects that do not belong to any group1738 does not load any runner1739 with a group runner that belongs to a subgroup of a group owned by another user1740 behaves like group_member1741 when the user is a maintainer1742 does not load the runners of the group1743 returns false for owns_runner?1744 when the user is a developer1745 does not load any runner1746 returns false for owns_runner?1747 when the user is a reporter1748 does not load any runner1749 returns false for owns_runner?1750 when the user is a guest1751 does not load any runner1752 returns false for owns_runner?1753 when FF ci_owned_runners_cross_joins_fix is disabled1754 behaves like #ci_owned_runners1755 without any projects nor groups1756 does not load any runner1757 returns false for owns_runner?1758 with runner in a personal project1759 behaves like project_owner1760 when the user is the owner of a project1761 loads the runner belonging to the project1762 returns true for owns_runner?1763 with group runner in a non owned group1764 behaves like group_member1765 when the user is a maintainer1766 does not load the runners of the group1767 returns false for owns_runner?1768 when the user is a developer1769 does not load any runner1770 returns false for owns_runner?1771 when the user is a reporter1772 does not load any runner1773 returns false for owns_runner?1774 when the user is a guest1775 does not load any runner1776 returns false for owns_runner?1777 with group runner in an owned group1778 behaves like group_owner1779 when the user is the owner of a one level group1780 loads the runners in the group1781 returns true for owns_runner?1782 with group runner in an owned group and group runner in a different owner subgroup1783 behaves like nested_groups_owner1784 when the user is the owner of a multi-level group1785 loads all the runners in the tree of groups1786 returns true for owns_runner?1787 with personal project runner in an an owned group and a group runner in that same group1788 behaves like nested_groups_owner1789 when the user is the owner of a multi-level group1790 loads all the runners in the tree of groups1791 returns true for owns_runner?1792 with personal project runner in an owned group and a group runner in a subgroup1793 behaves like nested_groups_owner1794 when the user is the owner of a multi-level group1795 loads all the runners in the tree of groups1796 returns true for owns_runner?1797 with personal project runner in an owned group in an owned namespace and a group runner in that group1798 behaves like nested_groups_owner1799 when the user is the owner of a multi-level group1800 loads all the runners in the tree of groups1801 returns true for owns_runner?1802 with personal project runner in an owned namespace, an owned group, a subgroup and a group runner in that subgroup1803 behaves like nested_groups_owner1804 when the user is the owner of a multi-level group1805 loads all the runners in the tree of groups1806 returns true for owns_runner?1807 with a project runner that belong to projects that belong to a not owned group1808 behaves like project_member1809 when the user is a maintainer1810 loads the runners of the project1811 returns true for owns_runner?1812 when the user is a developer1813 does not load any runner1814 returns false for owns_runner?1815 when the user is a reporter1816 does not load any runner1817 returns false for owns_runner?1818 when the user is a guest1819 does not load any runner1820 returns false for owns_runner?1821 with project runners that belong to projects that do not belong to any group1822 does not load any runner1823 with a group runner that belongs to a subgroup of a group owned by another user1824 behaves like group_member1825 when the user is a maintainer1826 does not load the runners of the group1827 returns false for owns_runner?1828 when the user is a developer1829 does not load any runner1830 returns false for owns_runner?1831 when the user is a reporter1832 does not load any runner1833 returns false for owns_runner?1834 when the user is a guest1835 does not load any runner1836 returns false for owns_runner?1837 #projects_with_reporter_access_limited_to1838 returns the projects when using a single project ID1839 returns the projects when using an Array of project IDs1840 returns the projects when using an ActiveRecord relation1841 does not return projects you do not have reporter access to1842 #all_expanded_groups1843 user is not a member of any group1844 returns an empty array1845 user is member of all groups1846 returns all groups1847 user is member of the top group1848 returns all groups1849 user is member of the first child (internal node), branch 11850 returns the groups in the hierarchy1851 user is member of the first child (internal node), branch 21852 returns the groups in the hierarchy1853 user is member of the last child (leaf node)1854 returns the groups in the hierarchy1855 when the user is not saved1856 returns empty when there are no groups or ancestor groups for the user1857 #refresh_authorized_projects1858 refreshes the list of authorized projects1859 stores the correct access levels1860 #remove_project_authorizations1861 removes the project authorizations of the user, in specified projects1862 #access_level=1863 does nothing for an invalid access level1864 assigns the 'admin' access level1865 doesn't clear existing access levels when an invalid access level is passed in1866 accepts string values in addition to symbols1867 #can_read_all_resources?1868 returns false for regular user1869 for admin user1870 when admin mode is disabled1871 returns false1872 when admin mode is enabled1873 returns true1874 #can_admin_all_resources?1875 returns false for regular user1876 for admin user1877 when admin mode is disabled1878 returns false1879 when admin mode is enabled1880 returns true1881 .ghost1882 creates a ghost user if one isn't already present1883 does not create a second ghost user if one is already present1884 when a regular user exists with the username 'ghost'1885 creates a ghost user with a non-conflicting username1886 when a regular user exists with the email 'ghost@example.com'1887 creates a ghost user with a non-conflicting email1888 when a domain allowlist is in place1889 creates a ghost user1890 #update_two_factor_requirement1891 with 2FA requirement on groups1892 requires 2FA1893 uses the shortest grace period1894 with 2FA requirement from expanded groups1895 requires 2FA1896 with 2FA requirement on nested child group1897 requires 2FA1898 with 2FA requirement from shared project's group1899 does not require 2FA1900 without 2FA requirement on groups1901 does not require 2FA1902 falls back to the default grace period1903 when the user is not saved1904 does not raise an ActiveRecord::StatementInvalid statement exception1905 #source_groups_of_two_factor_authentication_requirement1906 when user is direct member of group requiring 2FA1907 returns group requiring 2FA1908 when user is member of group which parent requires 2FA1909 returns group requiring 2FA1910 when user is member of group which child requires 2FA1911 returns group requiring 2FA1912 .active1913 only counts active and non internal users1914 preferred language1915 is English by default1916 #invalidate_issue_cache_counts1917 invalidates cache for issue counter1918 #invalidate_merge_request_cache_counts1919 invalidates cache for Merge Request counter1920 #invalidate_personal_projects_count1921 invalidates cache for personal projects counter1922 #allow_password_authentication_for_web?1923 returns false for ldap user1924 regular user1925 returns true when password authentication is enabled for the web interface1926 returns false when password authentication is disabled for the web interface1927 #allow_password_authentication_for_git?1928 returns false for ldap user1929 regular user1930 returns true when password authentication is enabled for Git1931 returns false when password authentication is disabled Git1932 #assigned_open_merge_requests_count1933 returns number of open merge requests from non-archived projects1934 #review_requested_open_merge_requests_count1935 returns number of open merge requests from non-archived projects1936 #assigned_open_issues_count1937 returns number of open issues from non-archived projects1938 #personal_projects_count1939 returns the number of personal projects using a single query1940 #projects_limit_left1941 returns the number of projects that can be created by the user1942 #ensure_namespace_correct1943 for a new user1944 creates the namespace1945 creates the namespace setting1946 for an existing user1947 when the user is updated1948 when the username or name is changed1949 changes the namespace (just to compare to when username is not changed)1950 updates the namespace path when the username was changed1951 updates the namespace name if the name was changed1952 updates nested routes for the namespace if the name was changed1953 when there is a validation error (namespace name taken) while updating namespace1954 causes the user save to fail1955 adds the namespace errors to the user1956 when the username is not changed1957 does not change the namespace1958 #username_changed_hook1959 for a new user1960 does not trigger system hook1961 for an existing user1962 when the username is changed1963 triggers the rename system hook1964 when the username is not changed1965 does not trigger system hook1966 #will_save_change_to_login?1967 when the username is changed1968 is expected to equal true1969 when the email is changed1970 is expected to equal true1971 when both email and username are changed1972 is expected to equal true1973 when email and username aren't changed1974 is expected to be falsy1975 #sync_attribute?1976 oauth user1977 returns true if name can be synced1978 returns true if email can be synced1979 returns true if location can be synced1980 returns false if name can not be synced1981 returns false if email can not be synced1982 returns false if location can not be synced1983 returns true for all syncable attributes if all syncable attributes can be synced1984 returns false for all syncable attributes but email if no syncable attributes are declared1985 ldap user1986 returns true for email if ldap user1987 returns true for email and location if ldap user and location declared as syncable1988 #confirm_deletion_with_password?1989 password_automatically_set: true, ldap_user: true, password_authentication_disabled: true1990 returns false unless all inputs are true1991 password_automatically_set: true, ldap_user: true, password_authentication_disabled: false1992 returns false unless all inputs are true1993 password_automatically_set: true, ldap_user: false, password_authentication_disabled: true1994 returns false unless all inputs are true1995 password_automatically_set: true, ldap_user: false, password_authentication_disabled: false1996 returns false unless all inputs are true1997 password_automatically_set: false, ldap_user: true, password_authentication_disabled: true1998 returns false unless all inputs are true1999 password_automatically_set: false, ldap_user: true, password_authentication_disabled: false2000 returns false unless all inputs are true2001 password_automatically_set: false, ldap_user: false, password_authentication_disabled: true2002 returns false unless all inputs are true2003 password_automatically_set: false, ldap_user: false, password_authentication_disabled: false2004 returns false unless all inputs are true2005 #delete_async2006 blocks the user then schedules them for deletion if a hard delete is specified2007 schedules user for deletion without blocking them2008 #max_member_access_for_project_ids2009 with RequestStore enabled2010 returns correct roles for different projects2011 does not perform extra queries when asked for projects who have already been found2012 only requests the extra projects when uncached projects are passed2013 with RequestStore disabled2014 returns correct roles for different projects2015 #max_member_access_for_group_ids2016 with RequestStore enabled2017 returns correct roles for different groups2018 does not perform extra queries when asked for groups who have already been found2019 only requests the extra groups when uncached groups are passed2020 with RequestStore disabled2021 returns correct roles for different groups2022 changing a username2023 creates a redirect route2024 deletes the redirect when a user with the old username was created2025 #required_terms_not_accepted?2026 when terms are not enforced2027 is expected to be falsey2028 when terms are enforced2029 is not accepted by the user2030 is accepted by the user2031 auto accepts the term for project bots2032 #increment_failed_attempts!2033 logs failed sign-in attempts2034 does not log failed sign-in attempts when in a GitLab read-only instance2035 #requires_usage_stats_consent?2036 in single-user environment2037 requires user consent after one week2038 requires user consent after one week if there is another ghost user2039 does not require consent in the first week2040 does not require consent if usage stats were set by this user2041 in multi-user environment2042 does not require consent2043 with uploads2044 behaves like model with uploads2045 .destroy2046 with mounted uploader2047 deletes remote uploads2048 with not mounted uploads2049 with local files2050 deletes any FileUploader uploads which are not mounted (PENDING: No reason given)2051 deletes local files (PENDING: No reason given)2052 with remote files2053 deletes any FileUploader uploads which are not mounted (PENDING: No reason given)2054 deletes remote files (PENDING: No reason given)2055 .union_with_user2056 when no user ID is provided2057 returns the input relation2058 when a user ID is provided2059 includes the user object in the returned relation2060 does not re-apply any WHERE conditions on the outer query2061 .optionally_search2062 using nil as the argument2063 returns the current relation2064 using an empty String as the argument2065 returns the current relation2066 using a non-empty String2067 returns users matching the search query2068 .where_not_in2069 without an argument2070 returns the current relation2071 using a list of user IDs2072 excludes the users from the returned relation2073 .reorder_by_name2074 reorders the input relation2075 #notification_settings_for2076 when source is nil2077 returns a blank global notification settings object2078 when source is a Group2079 when group has no existing notification settings2080 when group has no ancestors2081 will be a default Global notification setting2082 when group has ancestors2083 when an ancestor has a level other than Global2084 has the same level set2085 has the same email set2086 when inherit is false2087 does not inherit settings2088 when an ancestor has a Global level but has an email set2089 has the same email set2090 #notification_settings_for_groups2091 when given an ActiveRecord relationship2092 uses #select to maintain lazy querying behavior2093 behaves like notification_settings_for_groups method2094 returns NotificationSetting objects for provided groups2095 when given an Array of Groups2096 behaves like notification_settings_for_groups method2097 returns NotificationSetting objects for provided groups2098 #notification_email_for2099 when group is nil2100 returns global notification email2101 when group has no notification email set2102 returns global notification email2103 when group has notification email set2104 returns group notification email2105 #password_expired?2106 when password_expires_at is not set2107 returns false2108 when password_expires_at is in the past2109 returns true2110 when password_expires_at is in the future2111 returns false2112 #password_expired_if_applicable?2113 with a regular user2114 when password_expires_at is not set2115 returns false2116 when password_expires_at is in the past2117 returns true2118 when password_expires_at is in the future2119 returns false2120 when user is a bot2121 behaves like password expired not applicable2122 when password_expires_at is not set2123 returns false2124 when password_expires_at is in the past2125 returns false2126 when password_expires_at is in the future2127 returns false2128 when password_automatically_set is true2129 behaves like password expired not applicable2130 when password_expires_at is not set2131 returns false2132 when password_expires_at is in the past2133 returns false2134 when password_expires_at is in the future2135 returns false2136 when allow_password_authentication is false2137 behaves like password expired not applicable2138 when password_expires_at is not set2139 returns false2140 when password_expires_at is in the past2141 returns false2142 when password_expires_at is in the future2143 returns false2144 #can_log_in_with_non_expired_password?2145 when user can log in2146 returns true2147 when user with expired password2148 returns false2149 when password expiration is not applicable2150 when ldap user2151 returns true2152 when user cannot log in2153 when user is blocked2154 returns false2155 #read_only_attribute?2156 when synced attributes metadata is present2157 delegates to synced_attributes_metadata2158 when synced attributes metadata is not present2159 is false for any attribute2160 .active_without_ghosts2161 returns all active users including active bots but ghost users2162 #dismissed_callout?2163 when no callout dismissal record exists2164 returns false when no ignore_dismissal_earlier_than provided2165 when dismissed callout exists2166 returns true when no ignore_dismissal_earlier_than provided2167 returns true when ignore_dismissal_earlier_than is earlier than dismissed_at2168 returns false when ignore_dismissal_earlier_than is later than dismissed_at2169 #find_or_initialize_callout2170 when callout exists2171 returns existing callout2172 when callout does not exist2173 when feature name is valid2174 initializes a new callout2175 is valid2176 when feature name is not valid2177 initializes a new callout2178 is not valid2179 #dismissed_callout_for_group?2180 when no callout dismissal record exists2181 returns false when no ignore_dismissal_earlier_than provided2182 when dismissed callout exists2183 returns true when no ignore_dismissal_earlier_than provided2184 returns true when ignore_dismissal_earlier_than is earlier than dismissed_at2185 returns false when ignore_dismissal_earlier_than is later than dismissed_at2186 #find_or_initialize_group_callout2187 when callout exists2188 returns existing callout2189 when callout does not exist2190 when feature name is valid2191 initializes a new callout2192 is valid2193 when feature name is not valid2194 initializes a new callout2195 is not valid2196 #hook_attrs2197 with a public email2198 includes id, name, username, avatar_url, and email2199 without a public email2200 does not include email if user's email is private2201 user credit card validation2202 when user is initialized2203 is expected not to be present2204 when create user without credit card validation2205 is expected not to be present2206 when user credit card validation exists2207 is expected to be persisted2208 user detail2209 when user is initialized2210 is expected to be present2211 is expected not to be persisted2212 when user detail exists2213 is expected to be persisted2214 #current_highest_access_level2215 when no memberships exist2216 returns nil2217 when memberships exist2218 returns the highest access level for non requested memberships2219 when after_commit :update_highest_role2220 create user2221 schedules a job in the future2222 when user already exists2223 update user2224 attributes: {:state=>"blocked"}2225 when state was changed2226 when lease is obtained2227 takes the lease but does not release it2228 schedules a job in the future2229 when lease cannot be obtained2230 only schedules one job2231 attributes: {:user_type=>:ghost}2232 when state was changed2233 when lease is obtained2234 takes the lease but does not release it2235 schedules a job in the future2236 when lease cannot be obtained2237 only schedules one job2238 attributes: {:user_type=>:alert_bot}2239 when state was changed2240 when lease is obtained2241 takes the lease but does not release it2242 schedules a job in the future2243 when lease cannot be obtained2244 only schedules one job2245 attributes: {:user_type=>:support_bot}2246 when state was changed2247 when lease is obtained2248 takes the lease but does not release it2249 schedules a job in the future2250 when lease cannot be obtained2251 only schedules one job2252 attributes: {:user_type=>:security_bot}2253 when state was changed2254 when lease is obtained2255 takes the lease but does not release it2256 schedules a job in the future2257 when lease cannot be obtained2258 only schedules one job2259 attributes: {:user_type=>:automation_bot}2260 when state was changed2261 when lease is obtained2262 takes the lease but does not release it2263 schedules a job in the future2264 when lease cannot be obtained2265 only schedules one job2266 when state was not changed2267 does not obtain an exclusive lease2268 destroy user2269 does not obtain an exclusive lease2270 #active_for_authentication?2271 when user is blocked2272 is expected to equal false2273 does not check if LDAP is allowed2274 when user is a ghost user2275 is expected to equal false2276 when user is ldap_blocked2277 rechecks if LDAP is allowed when LDAP is enabled2278 does not check if LDAP is allowed when LDAP is not enabled2279 based on user type2280 user_type: "human", expected_result: true2281 is expected to equal true2282 user_type: "alert_bot", expected_result: false2283 is expected to equal false2284 user_type: "support_bot", expected_result: false2285 is expected to equal false2286 user_type: "security_bot", expected_result: false2287 is expected to equal false2288 user_type: "automation_bot", expected_result: false2289 is expected to equal false2290 #inactive_message2291 when user is blocked2292 is expected to eq :blocked2293 when user is an internal user2294 is expected to equal :forbidden2295 when user is locked2296 is expected to equal :locked2297 when user is blocked pending approval2298 is expected to equal :blocked_pending_approval2299 #password_required?2300 when user is an internal user2301 behaves like does not require password to be present2302 is expected not to validate that :password cannot be empty/falsy2303 is expected not to validate that :password_confirmation cannot be empty/falsy2304 when user is a project bot user2305 behaves like does not require password to be present2306 is expected not to validate that :password cannot be empty/falsy2307 is expected not to validate that :password_confirmation cannot be empty/falsy2308 can_trigger_notifications?2309 when user is not confirmed2310 returns false2311 when user is blocked2312 returns false2313 when user is a ghost2314 returns false2315 when user is confirmed and neither blocked or a ghost2316 returns true2317 bot users2318 behaves like bot users2319 creates the user if it does not exist2320 creates a route for the namespace of the created user2321 does not create a new user if it already exists2322 behaves like bot users2323 creates the user if it does not exist2324 creates a route for the namespace of the created user2325 does not create a new user if it already exists2326 behaves like bot users2327 creates the user if it does not exist2328 creates a route for the namespace of the created user2329 does not create a new user if it already exists2330 behaves like bot users2331 creates the user if it does not exist2332 creates a route for the namespace of the created user2333 does not create a new user if it already exists2334 behaves like bot users2335 creates the user if it does not exist2336 creates a route for the namespace of the created user2337 does not create a new user if it already exists2338 behaves like bot users2339 creates the user if it does not exist2340 creates a route for the namespace of the created user2341 does not create a new user if it already exists2342 behaves like bot user avatars2343 sets the custom avatar for the created bot2344 behaves like bot user avatars2345 sets the custom avatar for the created bot2346 behaves like bot user avatars2347 sets the custom avatar for the created bot2348 behaves like bot user avatars2349 sets the custom avatar for the created bot2350 when bot is the support_bot2351 is expected to be confirmed2352 #confirmation_required_on_sign_in?2353 when user is confirmed2354 is falsey2355 when user is not confirmed2356 is truthy when soft_email_confirmation feature is disabled2357 when soft_email_confirmation feature is enabled2358 is falsey when confirmation period is valid2359 is truthy when confirmation period is expired2360 when user has no confirmation email sent2361 is truthy2362 .dormant2363 returns dormant users2364 .with_no_activity2365 returns users with no activity2366 .by_provider_and_extern_uid2367 calls Identity model scope to ensure case-insensitive query2368 #unset_secondary_emails_matching_deleted_email!2369 when no secondary email matches the deleted email2370 does nothing2371 when a secondary email matches the deleted_email2372 un-sets the secondary email2373 #groups_with_developer_maintainer_project_access2374 is expected to contain exactly #<Group id:1445 @group315>2375 .get_ids_by_ids_or_usernames2376 returns the id of each record matching username2377 returns the id of each record matching user id2378 return the id for all records matching either user id or user name2379 .by_ids_or_usernames2380 returns matching records based on username2381 returns matching records based on id2382 returns matching records based on both username and id2383 user_project2384 returns users project matched by username and public visibility2385 user_readme2386 returns readme from user project2387 returns nil if project is private2388 behaves like it has loose foreign keys2389 has at least one loose foreign key definition2390 has the deletion trigger present2391 records record deletions2392 cleans up record deletions2393Todos::Destroy::EntityLeaveService2394 #execute2395 updating a Project2396 when project is private2397 when user is not a member of the project2398 removes project todos for the provided user2399 access permissions2400 group_access: nil, project_access: :reporter, method_name: :does_not_remove_any_todos2401 behaves like using different access permissions2402 is expected not to change `Todo.count`2403 group_access: nil, project_access: :guest, method_name: :removes_confidential_issues_and_merge_request_todos2404 behaves like using different access permissions2405 is expected to contain exactly #<Todo id: 23, user_id: 981, project_id: 213, target_id: 19, target_type: "Issue", author_id: 1000, a...-04 17:05:48.762270099 +0000", note_id: nil, commit_id: nil, group_id: nil, resolved_by_action: nil> and #<Todo id: 20, user_id: 981, project_id: 209, target_id: 17, target_type: "Issue", author_id: 995, ac...04 17:05:47.007634835 +0000", note_id: nil, commit_id: nil, group_id: 1491, resolved_by_action: nil>2406 group_access: :reporter, project_access: nil, method_name: :does_not_remove_any_todos2407 behaves like using different access permissions2408 is expected not to change `Todo.count`2409 group_access: :guest, project_access: nil, method_name: :removes_confidential_issues_and_merge_request_todos2410 behaves like using different access permissions2411 is expected to contain exactly #<Todo id: 35, user_id: 981, project_id: 223, target_id: 27, target_type: "Issue", author_id: 1012, a...-04 17:05:54.857496782 +0000", note_id: nil, commit_id: nil, group_id: nil, resolved_by_action: nil> and #<Todo id: 32, user_id: 981, project_id: 219, target_id: 25, target_type: "Issue", author_id: 1007, a...04 17:05:53.268577711 +0000", note_id: nil, commit_id: nil, group_id: 1515, resolved_by_action: nil>2412 group_access: :guest, project_access: :reporter, method_name: :does_not_remove_any_todos2413 behaves like using different access permissions2414 is expected not to change `Todo.count`2415 group_access: :guest, project_access: :guest, method_name: :removes_confidential_issues_and_merge_request_todos2416 behaves like using different access permissions2417 is expected to contain exactly #<Todo id: 47, user_id: 981, project_id: 233, target_id: 35, target_type: "Issue", author_id: 1024, a...-04 17:06:00.302159005 +0000", note_id: nil, commit_id: nil, group_id: nil, resolved_by_action: nil> and #<Todo id: 44, user_id: 981, project_id: 229, target_id: 33, target_type: "Issue", author_id: 1019, a...04 17:05:58.890961455 +0000", note_id: nil, commit_id: nil, group_id: 1539, resolved_by_action: nil>2418 when project is private in an internal/public group2419 when user is not a member of the project2420 removes project todos for the provided user2421 access permissions2422 group_access: nil, project_access: :reporter, method_name: :does_not_remove_any_todos2423 behaves like using different access permissions2424 is expected not to change `Todo.count`2425 group_access: nil, project_access: :guest, method_name: :removes_confidential_issues_and_merge_request_todos2426 behaves like using different access permissions2427 is expected to contain exactly #<Todo id: 65, user_id: 981, project_id: 248, target_id: 47, target_type: "Issue", author_id: 1042, a...-04 17:06:09.443608261 +0000", note_id: nil, commit_id: nil, group_id: nil, resolved_by_action: nil> and #<Todo id: 62, user_id: 981, project_id: 244, target_id: 45, target_type: "Issue", author_id: 1037, a...04 17:06:07.707394639 +0000", note_id: nil, commit_id: nil, group_id: 1575, resolved_by_action: nil>2428 group_access: :reporter, project_access: nil, method_name: :does_not_remove_any_todos2429 behaves like using different access permissions2430 is expected not to change `Todo.count`2431 group_access: :guest, project_access: nil, method_name: :removes_confidential_issues_and_merge_request_todos2432 behaves like using different access permissions2433 is expected to contain exactly #<Todo id: 77, user_id: 981, project_id: 258, target_id: 55, target_type: "Issue", author_id: 1054, a...-04 17:06:15.491848936 +0000", note_id: nil, commit_id: nil, group_id: nil, resolved_by_action: nil> and #<Todo id: 74, user_id: 981, project_id: 254, target_id: 53, target_type: "Issue", author_id: 1049, a...04 17:06:13.811192941 +0000", note_id: nil, commit_id: nil, group_id: 1599, resolved_by_action: nil>2434 group_access: :guest, project_access: :reporter, method_name: :does_not_remove_any_todos2435 behaves like using different access permissions2436 is expected not to change `Todo.count`2437 group_access: :guest, project_access: :guest, method_name: :removes_confidential_issues_and_merge_request_todos2438 behaves like using different access permissions2439 is expected to contain exactly #<Todo id: 89, user_id: 981, project_id: 268, target_id: 63, target_type: "Issue", author_id: 1066, a...-04 17:06:21.333972894 +0000", note_id: nil, commit_id: nil, group_id: nil, resolved_by_action: nil> and #<Todo id: 86, user_id: 981, project_id: 264, target_id: 61, target_type: "Issue", author_id: 1061, a...04 17:06:19.676204686 +0000", note_id: nil, commit_id: nil, group_id: 1623, resolved_by_action: nil>2440 when project is not private2441 enqueues the PrivateFeaturesWorker2442 confidential issues2443 when a user is not an author of confidential issue2444 behaves like removes only confidential issues todos2445 is expected to change `Todo.count` from 6 to 52446 when a user is an author of confidential issue2447 behaves like does not remove any todos2448 is expected not to change `Todo.count`2449 when a user is an assignee of confidential issue2450 behaves like does not remove any todos2451 is expected not to change `Todo.count`2452 access permissions2453 group_access: nil, project_access: :reporter, method_name: :does_not_remove_any_todos2454 behaves like using different access permissions2455 is expected not to change `Todo.count`2456 group_access: nil, project_access: :guest, method_name: :removes_only_confidential_issues_todos2457 behaves like using different access permissions2458 is expected to change `Todo.count` from 6 to 52459 group_access: :reporter, project_access: nil, method_name: :does_not_remove_any_todos2460 behaves like using different access permissions2461 is expected not to change `Todo.count`2462 group_access: :guest, project_access: nil, method_name: :removes_only_confidential_issues_todos2463 behaves like using different access permissions2464 is expected to change `Todo.count` from 6 to 52465 group_access: :guest, project_access: :reporter, method_name: :does_not_remove_any_todos2466 behaves like using different access permissions2467 is expected not to change `Todo.count`2468 group_access: :guest, project_access: :guest, method_name: :removes_only_confidential_issues_todos2469 behaves like using different access permissions2470 is expected to change `Todo.count` from 6 to 52471 feature visibility check2472 when issues are visible only to project members2473 removes only users issue todos2474 updating a Group2475 when group is private2476 when a user leaves a group2477 removes group and subproject todos for the user2478 access permissions2479 group_access: nil, project_access: :reporter, method_name: :does_not_remove_any_todos2480 behaves like using different access permissions2481 is expected not to change `Todo.count`2482 group_access: nil, project_access: :guest, method_name: :removes_confidential_issues_and_merge_request_todos2483 behaves like using different access permissions2484 is expected to contain exactly #<Todo id: 173, user_id: 981, project_id: 338, target_id: 119, target_type: "Issue", author_id: 1150,...-04 17:07:00.944237210 +0000", note_id: nil, commit_id: nil, group_id: nil, resolved_by_action: nil> and #<Todo id: 170, user_id: 981, project_id: 334, target_id: 117, target_type: "Issue", author_id: 1145,...04 17:06:59.777897988 +0000", note_id: nil, commit_id: nil, group_id: 1791, resolved_by_action: nil>2485 group_access: :reporter, project_access: nil, method_name: :does_not_remove_any_todos2486 behaves like using different access permissions2487 is expected not to change `Todo.count`2488 group_access: :guest, project_access: nil, method_name: :removes_confidential_issues_and_merge_request_todos2489 behaves like using different access permissions2490 is expected to contain exactly #<Todo id: 185, user_id: 981, project_id: 348, target_id: 127, target_type: "Issue", author_id: 1162,...-04 17:07:06.130349819 +0000", note_id: nil, commit_id: nil, group_id: nil, resolved_by_action: nil> and #<Todo id: 182, user_id: 981, project_id: 344, target_id: 125, target_type: "Issue", author_id: 1157,...04 17:07:04.609820357 +0000", note_id: nil, commit_id: nil, group_id: 1815, resolved_by_action: nil>2491 group_access: :guest, project_access: :reporter, method_name: :does_not_remove_any_todos2492 behaves like using different access permissions2493 is expected not to change `Todo.count`2494 group_access: :guest, project_access: :guest, method_name: :removes_confidential_issues_and_merge_request_todos2495 behaves like using different access permissions2496 is expected to contain exactly #<Todo id: 197, user_id: 981, project_id: 358, target_id: 135, target_type: "Issue", author_id: 1174,...-04 17:07:12.865123989 +0000", note_id: nil, commit_id: nil, group_id: nil, resolved_by_action: nil> and #<Todo id: 194, user_id: 981, project_id: 354, target_id: 133, target_type: "Issue", author_id: 1169,...04 17:07:10.992284825 +0000", note_id: nil, commit_id: nil, group_id: 1839, resolved_by_action: nil>2497 with nested groups2498 when the user is not a member of any groups/projects2499 removes todos for the user including subprojects todos2500 when the user is member of a parent group2501 behaves like does not remove any todos2502 is expected not to change `Todo.count`2503 when the user is member of a subgroup2504 does not remove group and subproject todos2505 when the user is member of a child project2506 does not remove subproject and group todos2507 when group is not private2508 enqueues the PrivateFeaturesWorker2509 access permissions2510 group_access: nil, project_access: nil, method_name: :removes_only_confidential_issues_todos2511 behaves like using different access permissions2512 is expected to change `Todo.count` from 6 to 52513 group_access: nil, project_access: :reporter, method_name: :does_not_remove_any_todos2514 behaves like using different access permissions2515 is expected not to change `Todo.count`2516 group_access: nil, project_access: :guest, method_name: :removes_only_confidential_issues_todos2517 behaves like using different access permissions2518 is expected to change `Todo.count` from 6 to 52519 group_access: :reporter, project_access: nil, method_name: :does_not_remove_any_todos2520 behaves like using different access permissions2521 is expected not to change `Todo.count`2522 group_access: :guest, project_access: nil, method_name: :removes_only_confidential_issues_todos2523 behaves like using different access permissions2524 is expected to change `Todo.count` from 6 to 52525 group_access: :guest, project_access: :reporter, method_name: :does_not_remove_any_todos2526 behaves like using different access permissions2527 is expected not to change `Todo.count`2528 group_access: :guest, project_access: :guest, method_name: :removes_only_confidential_issues_todos2529 behaves like using different access permissions2530 is expected to change `Todo.count` from 6 to 52531 when entity type is not valid2532 raises an exception2533 when entity was not found2534 does not remove any todos2535Member2536 Associations2537 is expected to belong to user required: false2538 is expected to belong to member_namespace required: false2539 is expected to have one member_task2540 Validation2541 is expected to validate that :user cannot be empty/falsy2542 is expected to validate that :source cannot be empty/falsy2543 expires_at2544 is expected not to allow :expires_at to be ‹Thu, 03 Feb 2022›2545 is expected to allow :expires_at to be ‹Sat, 05 Feb 2022›2546 is expected to allow :expires_at to be ‹Fri, 04 Feb 2022›2547 is expected to allow :expires_at to be ‹nil›2548 behaves like an object with email-formatted attributes2549 specifically its :invite_email attribute2550 with a value of 'info@example.com'2551 is valid2552 with a value of 'info+test@example.com'2553 is valid2554 with a value of 'o'reilly@example.com'2555 is valid2556 with a value of 'mailto:test@example.com'2557 is valid2558 with a value of 'lol!'+=?><#$%^&*()@gmail.com'2559 is valid2560 with a value of 'foobar'2561 is invalid2562 with a value of 'test@test@example.com'2563 is invalid2564 when an invite email is provided2565 doesn't require a user2566 requires a valid invite email2567 requires a unique invite email scoped to this source2568 when an invite email is not provided2569 requires a user2570 is valid otherwise2571 with admin signup restrictions2572 when allowed domains for signup is enabled2573 adds an error message when email is not accepted2574 when denylist is enabled2575 adds an error message when email is denied2576 when email restrictions is enabled2577 adds an error message when email is not accepted2578 when a child member inherits its access level2579 requires a higher level2580 is valid with an equal level2581 is valid with a higher level2582 project bots2583 not a member of any group or project2584 is valid2585 already member of a project2586 is not valid2587 Scopes & finders2588 .access_for_user_ids2589 returns the right access levels2590 .in_hierarchy2591 is expected to contain exactly #<GroupMember id: 706, access_level: 50, source_id: 2179, source_type: "Namespace", user_id: 1342, no... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2179>, #<ProjectMember id: 708, access_level: 40, source_id: 487, source_type: "Project", user_id: 1345, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2184>, #<GroupMember id: 709, access_level: 50, source_id: 2188, source_type: "Namespace", user_id: 1347, no... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2188>, and #<ProjectMember id: 711, access_level: 40, source_id: 489, source_type: "Project", user_id: 1350, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2193>2592 with scope prefix2593 is expected to contain exactly #<GroupMember id: 712, access_level: 50, source_id: 2197, source_type: "Namespace", user_id: 1352, no... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2197>, #<GroupMember id: 715, access_level: 50, source_id: 2206, source_type: "Namespace", user_id: 1357, no... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2206>, and #<ProjectMember id: 717, access_level: 40, source_id: 493, source_type: "Project", user_id: 1360, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2211>2594 with scope suffix2595 is expected to contain exactly #<GroupMember id: 718, access_level: 50, source_id: 2215, source_type: "Namespace", user_id: 1362, no... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2215>, #<GroupMember id: 721, access_level: 50, source_id: 2224, source_type: "Namespace", user_id: 1367, no... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2224>, and #<ProjectMember id: 723, access_level: 40, source_id: 497, source_type: "Project", user_id: 1370, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2229>2596 .invite2597 is expected not to include #<ProjectMember id: 696, access_level: 40, source_id: 483, source_type: "Project", user_id: 1331, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2598 is expected to include #<ProjectMember id: 700, access_level: 30, source_id: 483, source_type: "Project", user_id: nil, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2599 is expected not to include #<ProjectMember id: 702, access_level: 30, source_id: 483, source_type: "Project", user_id: 1338, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2600 is expected not to include #<ProjectMember id: 703, access_level: 30, source_id: 483, source_type: "Project", user_id: 1339, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2601 is expected not to include #<ProjectMember id: 704, access_level: 30, source_id: 483, source_type: "Project", user_id: 1340, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2602 .non_invite2603 is expected to include #<ProjectMember id: 696, access_level: 40, source_id: 483, source_type: "Project", user_id: 1331, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2604 is expected not to include #<ProjectMember id: 700, access_level: 30, source_id: 483, source_type: "Project", user_id: nil, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2605 is expected to include #<ProjectMember id: 702, access_level: 30, source_id: 483, source_type: "Project", user_id: 1338, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2606 is expected to include #<ProjectMember id: 703, access_level: 30, source_id: 483, source_type: "Project", user_id: 1339, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2607 is expected to include #<ProjectMember id: 704, access_level: 30, source_id: 483, source_type: "Project", user_id: 1340, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2608 .non_minimal_access2609 is expected to include #<ProjectMember id: 696, access_level: 40, source_id: 483, source_type: "Project", user_id: 1331, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2610 is expected to include #<ProjectMember id: 700, access_level: 30, source_id: 483, source_type: "Project", user_id: nil, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2611 is expected to include #<ProjectMember id: 702, access_level: 30, source_id: 483, source_type: "Project", user_id: 1338, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2612 is expected to include #<ProjectMember id: 703, access_level: 30, source_id: 483, source_type: "Project", user_id: 1339, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2613 is expected to include #<ProjectMember id: 704, access_level: 30, source_id: 483, source_type: "Project", user_id: 1340, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2614 is expected not to include #<GroupMember id: 705, access_level: 5, source_id: 2160, source_type: "Namespace", user_id: 1341, not...: nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: nil>2615 .request2616 is expected not to include #<ProjectMember id: 696, access_level: 40, source_id: 483, source_type: "Project", user_id: 1331, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2617 is expected not to include #<ProjectMember id: 700, access_level: 30, source_id: 483, source_type: "Project", user_id: nil, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2618 is expected not to include #<ProjectMember id: 702, access_level: 30, source_id: 483, source_type: "Project", user_id: 1338, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2619 is expected to include #<ProjectMember id: 703, access_level: 30, source_id: 483, source_type: "Project", user_id: 1339, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2620 is expected not to include #<ProjectMember id: 704, access_level: 30, source_id: 483, source_type: "Project", user_id: 1340, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2621 .non_request2622 is expected to include #<ProjectMember id: 696, access_level: 40, source_id: 483, source_type: "Project", user_id: 1331, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2623 is expected to include #<ProjectMember id: 700, access_level: 30, source_id: 483, source_type: "Project", user_id: nil, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2624 is expected to include #<ProjectMember id: 702, access_level: 30, source_id: 483, source_type: "Project", user_id: 1338, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2625 is expected not to include #<ProjectMember id: 703, access_level: 30, source_id: 483, source_type: "Project", user_id: 1339, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2626 is expected to include #<ProjectMember id: 704, access_level: 30, source_id: 483, source_type: "Project", user_id: 1340, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2627 .not_accepted_invitations2628 is expected to include #<ProjectMember id: 725, access_level: 40, source_id: 499, source_type: "Project", user_id: nil, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2235>2629 is expected not to include #<ProjectMember id: 727, access_level: 40, source_id: 500, source_type: "Project", user_id: nil, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2238>2630 .not_accepted_invitations_by_user2631 is expected to contain exactly #<ProjectMember id: 733, access_level: 40, source_id: 483, source_type: "Project", user_id: nil, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2632 .not_expired2633 is expected not to include #<GroupMember id: 734, access_level: 50, source_id: 2248, source_type: "Namespace", user_id: 1382, no...-05", ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2248> and #<GroupMember id: 735, access_level: 50, source_id: 2250, source_type: "Namespace", user_id: 1383, no...-06", ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2250>2634 is expected to include #<GroupMember id: 736, access_level: 50, source_id: 2252, source_type: "Namespace", user_id: 1384, no...-07", ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2252> and #<GroupMember id: 737, access_level: 50, source_id: 2254, source_type: "Namespace", user_id: 1385, no... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2254>2635 .created_today2636 is expected not to include #<GroupMember id: 739, access_level: 50, source_id: 2258, source_type: "Namespace", user_id: 1387, no... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2258>2637 is expected to include #<GroupMember id: 738, access_level: 50, source_id: 2256, source_type: "Namespace", user_id: 1386, no... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2256>2638 .last_ten_days_excluding_today2639 is expected to include #<GroupMember id: 741, access_level: 50, source_id: 2262, source_type: "Namespace", user_id: 1389, no... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2262>2640 is expected not to include #<GroupMember id: 740, access_level: 50, source_id: 2260, source_type: "Namespace", user_id: 1388, no... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2260> and #<GroupMember id: 742, access_level: 50, source_id: 2264, source_type: "Namespace", user_id: 1390, no... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2264>2641 .search_invite_email2642 returns only members the matching e-mail2643 .developers2644 is expected not to include #<GroupMember id: 695, access_level: 50, source_id: 2160, source_type: "Namespace", user_id: 1330, no... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2160>2645 is expected not to include #<ProjectMember id: 696, access_level: 40, source_id: 483, source_type: "Project", user_id: 1331, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2646 is expected to include #<ProjectMember id: 700, access_level: 30, source_id: 483, source_type: "Project", user_id: nil, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2647 is expected to include #<ProjectMember id: 702, access_level: 30, source_id: 483, source_type: "Project", user_id: 1338, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2648 is expected not to include #<ProjectMember id: 703, access_level: 30, source_id: 483, source_type: "Project", user_id: 1339, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2649 is expected to include #<ProjectMember id: 704, access_level: 30, source_id: 483, source_type: "Project", user_id: 1340, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2650 is expected not to include #<ProjectMember id: 697, access_level: 40, source_id: 483, source_type: "Project", user_id: 1332, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2651 is expected not to include #<ProjectMember id: 698, access_level: 30, source_id: 483, source_type: "Project", user_id: 1333, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2652 .owners_and_maintainers2653 is expected to include #<GroupMember id: 695, access_level: 50, source_id: 2160, source_type: "Namespace", user_id: 1330, no... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2160>2654 is expected to include #<ProjectMember id: 696, access_level: 40, source_id: 483, source_type: "Project", user_id: 1331, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2655 is expected not to include #<ProjectMember id: 700, access_level: 30, source_id: 483, source_type: "Project", user_id: nil, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2656 is expected not to include #<ProjectMember id: 702, access_level: 30, source_id: 483, source_type: "Project", user_id: 1338, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2657 is expected not to include #<ProjectMember id: 703, access_level: 30, source_id: 483, source_type: "Project", user_id: 1339, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2658 is expected not to include #<ProjectMember id: 704, access_level: 30, source_id: 483, source_type: "Project", user_id: 1340, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2659 is expected not to include #<ProjectMember id: 697, access_level: 40, source_id: 483, source_type: "Project", user_id: 1332, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2660 .has_access2661 is expected to include #<GroupMember id: 695, access_level: 50, source_id: 2160, source_type: "Namespace", user_id: 1330, no... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2160>2662 is expected to include #<ProjectMember id: 696, access_level: 40, source_id: 483, source_type: "Project", user_id: 1331, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2663 is expected to include #<ProjectMember id: 700, access_level: 30, source_id: 483, source_type: "Project", user_id: nil, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2664 is expected to include #<ProjectMember id: 702, access_level: 30, source_id: 483, source_type: "Project", user_id: 1338, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2665 is expected not to include #<ProjectMember id: 703, access_level: 30, source_id: 483, source_type: "Project", user_id: 1339, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2666 is expected to include #<ProjectMember id: 704, access_level: 30, source_id: 483, source_type: "Project", user_id: 1340, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2667 is expected not to include #<ProjectMember id: 697, access_level: 40, source_id: 483, source_type: "Project", user_id: 1332, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2668 is expected not to include #<ProjectMember id: 698, access_level: 30, source_id: 483, source_type: "Project", user_id: 1333, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2669 .active2670 is expected to include #<GroupMember id: 695, access_level: 50, source_id: 2160, source_type: "Namespace", user_id: 1330, no... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2160>2671 is expected to include #<ProjectMember id: 696, access_level: 40, source_id: 483, source_type: "Project", user_id: 1331, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2672 is expected to include #<ProjectMember id: 700, access_level: 30, source_id: 483, source_type: "Project", user_id: nil, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2673 is expected to include #<ProjectMember id: 702, access_level: 30, source_id: 483, source_type: "Project", user_id: 1338, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2674 is expected not to include #<ProjectMember id: 703, access_level: 30, source_id: 483, source_type: "Project", user_id: 1339, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2675 is expected to include #<ProjectMember id: 704, access_level: 30, source_id: 483, source_type: "Project", user_id: 1340, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2676 is expected not to include #<ProjectMember id: 697, access_level: 40, source_id: 483, source_type: "Project", user_id: 1332, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2677 is expected not to include #<ProjectMember id: 698, access_level: 30, source_id: 483, source_type: "Project", user_id: 1333, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2678 is expected not to include #<GroupMember id: 705, access_level: 5, source_id: 2160, source_type: "Namespace", user_id: 1341, not...: nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: nil>2679 .blocked2680 is expected not to include #<GroupMember id: 695, access_level: 50, source_id: 2160, source_type: "Namespace", user_id: 1330, no... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2160>2681 is expected not to include #<ProjectMember id: 696, access_level: 40, source_id: 483, source_type: "Project", user_id: 1331, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2682 is expected not to include #<ProjectMember id: 700, access_level: 30, source_id: 483, source_type: "Project", user_id: nil, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2683 is expected not to include #<ProjectMember id: 702, access_level: 30, source_id: 483, source_type: "Project", user_id: 1338, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2684 is expected not to include #<ProjectMember id: 703, access_level: 30, source_id: 483, source_type: "Project", user_id: 1339, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2685 is expected not to include #<ProjectMember id: 704, access_level: 30, source_id: 483, source_type: "Project", user_id: 1340, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2686 is expected to include #<ProjectMember id: 697, access_level: 40, source_id: 483, source_type: "Project", user_id: 1332, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2687 is expected to include #<ProjectMember id: 698, access_level: 30, source_id: 483, source_type: "Project", user_id: 1333, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2688 is expected not to include #<GroupMember id: 705, access_level: 5, source_id: 2160, source_type: "Namespace", user_id: 1341, not...: nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: nil>2689 .active_without_invites_and_requests2690 is expected to include #<GroupMember id: 695, access_level: 50, source_id: 2160, source_type: "Namespace", user_id: 1330, no... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2160>2691 is expected to include #<ProjectMember id: 696, access_level: 40, source_id: 483, source_type: "Project", user_id: 1331, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2692 is expected not to include #<ProjectMember id: 700, access_level: 30, source_id: 483, source_type: "Project", user_id: nil, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2693 is expected to include #<ProjectMember id: 702, access_level: 30, source_id: 483, source_type: "Project", user_id: 1338, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2694 is expected not to include #<ProjectMember id: 703, access_level: 30, source_id: 483, source_type: "Project", user_id: 1339, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2695 is expected to include #<ProjectMember id: 704, access_level: 30, source_id: 483, source_type: "Project", user_id: 1340, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2696 is expected not to include #<ProjectMember id: 697, access_level: 40, source_id: 483, source_type: "Project", user_id: 1332, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2697 is expected not to include #<ProjectMember id: 698, access_level: 30, source_id: 483, source_type: "Project", user_id: 1333, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2698 is expected not to include #<GroupMember id: 705, access_level: 5, source_id: 2160, source_type: "Namespace", user_id: 1341, not...: nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: nil>2699 .without_invites_and_requests2700 is expected to include #<GroupMember id: 695, access_level: 50, source_id: 2160, source_type: "Namespace", user_id: 1330, no... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2160>2701 is expected to include #<ProjectMember id: 696, access_level: 40, source_id: 483, source_type: "Project", user_id: 1331, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2702 is expected not to include #<ProjectMember id: 700, access_level: 30, source_id: 483, source_type: "Project", user_id: nil, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2703 is expected to include #<ProjectMember id: 702, access_level: 30, source_id: 483, source_type: "Project", user_id: 1338, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2704 is expected not to include #<ProjectMember id: 703, access_level: 30, source_id: 483, source_type: "Project", user_id: 1339, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2705 is expected to include #<ProjectMember id: 704, access_level: 30, source_id: 483, source_type: "Project", user_id: 1340, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2706 is expected to include #<ProjectMember id: 697, access_level: 40, source_id: 483, source_type: "Project", user_id: 1332, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2707 is expected to include #<ProjectMember id: 698, access_level: 30, source_id: 483, source_type: "Project", user_id: 1333, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2708 is expected not to include #<GroupMember id: 705, access_level: 5, source_id: 2160, source_type: "Namespace", user_id: 1341, not...: nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: nil>2709 .connected_to_user2710 is expected to include #<GroupMember id: 695, access_level: 50, source_id: 2160, source_type: "Namespace", user_id: 1330, no... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2160>2711 is expected to include #<ProjectMember id: 696, access_level: 40, source_id: 483, source_type: "Project", user_id: 1331, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2712 is expected to include #<ProjectMember id: 702, access_level: 30, source_id: 483, source_type: "Project", user_id: 1338, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2713 is expected to include #<ProjectMember id: 704, access_level: 30, source_id: 483, source_type: "Project", user_id: 1340, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2714 is expected to include #<ProjectMember id: 697, access_level: 40, source_id: 483, source_type: "Project", user_id: 1332, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2715 is expected to include #<ProjectMember id: 698, access_level: 30, source_id: 483, source_type: "Project", user_id: 1333, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2716 is expected to include #<ProjectMember id: 703, access_level: 30, source_id: 483, source_type: "Project", user_id: 1339, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2717 is expected to include #<GroupMember id: 705, access_level: 5, source_id: 2160, source_type: "Namespace", user_id: 1341, not...: nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: nil>2718 is expected not to include #<ProjectMember id: 700, access_level: 30, source_id: 483, source_type: "Project", user_id: nil, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2719 .authorizable2720 includes the member who has an associated user record,but also having an invite_token2721 is expected to include #<GroupMember id: 695, access_level: 50, source_id: 2160, source_type: "Namespace", user_id: 1330, no... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2160>2722 is expected to include #<ProjectMember id: 696, access_level: 40, source_id: 483, source_type: "Project", user_id: 1331, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2723 is expected to include #<ProjectMember id: 702, access_level: 30, source_id: 483, source_type: "Project", user_id: 1338, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2724 is expected to include #<ProjectMember id: 704, access_level: 30, source_id: 483, source_type: "Project", user_id: 1340, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2725 is expected to include #<ProjectMember id: 697, access_level: 40, source_id: 483, source_type: "Project", user_id: 1332, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2726 is expected to include #<ProjectMember id: 698, access_level: 30, source_id: 483, source_type: "Project", user_id: 1333, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2727 is expected not to include #<ProjectMember id: 700, access_level: 30, source_id: 483, source_type: "Project", user_id: nil, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2728 is expected not to include #<ProjectMember id: 703, access_level: 30, source_id: 483, source_type: "Project", user_id: 1339, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2729 is expected not to include #<GroupMember id: 705, access_level: 5, source_id: 2160, source_type: "Namespace", user_id: 1341, not...: nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: nil>2730 .distinct_on_user_with_max_access_level2731 is expected not to include #<GroupMember id: 746, access_level: 30, source_id: 2271, source_type: "Namespace", user_id: 1330, no... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2271>2732 is expected to include #<GroupMember id: 695, access_level: 50, source_id: 2160, source_type: "Namespace", user_id: 1330, no... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2160>2733 is expected to include #<ProjectMember id: 696, access_level: 40, source_id: 483, source_type: "Project", user_id: 1331, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2734 is expected to include #<ProjectMember id: 700, access_level: 30, source_id: 483, source_type: "Project", user_id: nil, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2735 is expected to include #<ProjectMember id: 702, access_level: 30, source_id: 483, source_type: "Project", user_id: 1338, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2736 is expected to include #<ProjectMember id: 703, access_level: 30, source_id: 483, source_type: "Project", user_id: 1339, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2737 is expected to include #<ProjectMember id: 704, access_level: 30, source_id: 483, source_type: "Project", user_id: 1340, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2738 is expected to include #<ProjectMember id: 697, access_level: 40, source_id: 483, source_type: "Project", user_id: 1332, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2739 is expected to include #<ProjectMember id: 698, access_level: 30, source_id: 483, source_type: "Project", user_id: 1333, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2740 is expected to include #<GroupMember id: 705, access_level: 5, source_id: 2160, source_type: "Namespace", user_id: 1341, not...: nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: nil>2741 with where conditions2742 is expected to eq [#<GroupMember id: 747, access_level: 50, source_id: 2273, source_type: "Namespace", user_id: 1394, n...nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2273>]2743 .with_invited_user_state2744 is expected to include #<GroupMember id: 695, access_level: 50, source_id: 2160, source_type: "Namespace", user_id: 1330, no... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2160>2745 is expected to include #<ProjectMember id: 696, access_level: 40, source_id: 483, source_type: "Project", user_id: 1331, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2746 is expected to include #<ProjectMember id: 700, access_level: 30, source_id: 483, source_type: "Project", user_id: nil, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2747 is expected to include #<ProjectMember id: 702, access_level: 30, source_id: 483, source_type: "Project", user_id: 1338, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2748 is expected to include #<ProjectMember id: 703, access_level: 30, source_id: 483, source_type: "Project", user_id: 1339, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2749 is expected to include #<ProjectMember id: 704, access_level: 30, source_id: 483, source_type: "Project", user_id: 1340, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 2159>2750 with invited pending members2751 includes invited user state2752 Delegate methods2753 is expected to respond to #user_name2754 is expected to respond to #user_email2755 .valid_email?2756 is a valid email format2757 is not a valid email format2758 #accept_request2759 is expected to be truthy2760 clears requested_at2761 calls #after_accept_request2762 #invite?2763 is expected to be invite2764 #request?2765 is expected to be request2766 #pending?2767 is expected to be pending2768 is expected to be pending2769 #hook_prerequisites_met?2770 when the member does not have an associated user2771 returns false2772 when the member has an associated user2773 returns true2774 #accept_invite!2775 resets the invite token2776 sets the invite accepted timestamp2777 sets the user2778 calls #after_accept_invite2779 refreshes user's authorized projects2780 does not accept the invite if saving a new user fails2781 schedules a TasksToBeDone::CreateWorker task2782 #decline_invite!2783 destroys the member2784 calls #after_decline_invite2785 #generate_invite_token2786 sets the invite token2787 generate invite token on create2788 sets the invite token2789 when invite was already accepted2790 does not set invite token2791 .find_by_invite_token2792 finds the member2793 #send_invitation_reminder2794 an invited group member2795 sends a reminder2796 an invited member without a raw invite token set2797 generates a new token2798 an uninvited member2799 does not send a reminder2800 #invite_to_unknown_user?2801 when user is nil2802 is expected to eq true2803 when user is set2804 is expected to eq false2805 destroying a record2806 refreshes user's authorized projects2807 when after_commit :update_highest_role2808 member_type: :project_member, source_type: :project2809 create member2810 when lease is obtained2811 takes the lease but does not release it2812 schedules a job in the future2813 when lease cannot be obtained2814 only schedules one job2815 when member exists2816 update member2817 when access level was changed2818 when lease is obtained2819 takes the lease but does not release it2820 schedules a job in the future2821 when lease cannot be obtained2822 only schedules one job2823 when access level was not changed2824 does not obtain an exclusive lease2825 destroy member2826 when lease is obtained2827 takes the lease but does not release it2828 schedules a job in the future2829 when lease cannot be obtained2830 only schedules one job2831 member_type: :group_member, source_type: :group2832 create member2833 when lease is obtained2834 takes the lease but does not release it2835 schedules a job in the future2836 when lease cannot be obtained2837 only schedules one job2838 when member exists2839 update member2840 when access level was changed2841 when lease is obtained2842 takes the lease but does not release it2843 schedules a job in the future2844 when lease cannot be obtained2845 only schedules one job2846 when access level was not changed2847 does not obtain an exclusive lease2848 destroy member2849 when lease is obtained2850 takes the lease but does not release it2851 schedules a job in the future2852 when lease cannot be obtained2853 only schedules one job2854 log_invitation_token_cleanup2855 when on gitlab.com2856 doesn't log info for members without invitation or accepted invitation2857 logs error for accepted members with token and creates membership2858 when not on gitlab.com2859 does not log error for accepted members with token and creates membership2860 #set_member_namespace_id2861 on create2862 sets the member_namespace_id2863Projects::OverwriteProjectService2864 #execute2865 when project does not have any relation2866 behaves like overwrite actions2867 moves deploy keys2868 moves notification settings2869 moves users stars2870 moves project group links2871 moves memberships and authorizations2872 removes the original project2873 renames the project2874 moves lfs objects relationships2875 is expected to eq 32876 when project with elements2877 behaves like overwrite actions2878 moves deploy keys2879 moves notification settings2880 moves users stars2881 moves project group links2882 moves memberships and authorizations2883 removes the original project2884 renames the project2885 moves lfs objects relationships2886 is expected to eq 32887 forks2888 when moving a root forked project2889 moves the descendant forks2890 updates the fork network2891 when moving a intermediate forked project2892 moves the descendant forks2893 moves the ascendant fork2894 does not update fork network2895 if an exception is raised2896 rollbacks changes2897 tries to restore the original project repositories2898Milestone2899 behaves like a timebox2900 modules2901 with a project2902 behaves like AtomicInternalId2903 .has_internal_id2904 Module inclusion2905 is expected to includes the AtomicInternalId module2906 Validation2907 when presence validation is required2908 when creating an object2909 raises an error if the internal id is blank2910 when updating an object2911 raises an error if the internal id is blank2912 when presence validation is not required2913 when creating an object2914 does not raise an error if the internal id is blank (PENDING: No reason given)2915 when updating an object2916 does not raise an error if the internal id is blank (PENDING: No reason given)2917 Creating an instance2918 saves a new instance properly2919 internal id generation2920 calls InternalId.generate_next and sets internal id attribute2921 does not overwrite an existing internal id2922 when the instance has an internal ID set2923 calls InternalId.update_last_value and sets the `last_value` to that of the instance2924 unsetting the instance internal id on rollback2925 when the internal id has been changed2926 when the internal id is automatically set2927 clears it on the instance2928 when the internal id is manually set2929 does not clear it on the instance2930 when the internal id has not been changed2931 preserves the value on the instance2932 supply of internal ids2933 provides a persistent supply of IID values, sensitive to the current state2934 #reset_scope_internal_id_attribute2935 rewinds the allocated IID2936 allocates the same IID2937 with a group2938 behaves like AtomicInternalId2939 .has_internal_id2940 Module inclusion2941 is expected to includes the AtomicInternalId module2942 Validation2943 when presence validation is required2944 when creating an object2945 raises an error if the internal id is blank2946 when updating an object2947 raises an error if the internal id is blank2948 when presence validation is not required2949 when creating an object2950 does not raise an error if the internal id is blank (PENDING: No reason given)2951 when updating an object2952 does not raise an error if the internal id is blank (PENDING: No reason given)2953 Creating an instance2954 saves a new instance properly2955 internal id generation2956 calls InternalId.generate_next and sets internal id attribute2957 does not overwrite an existing internal id2958 when the instance has an internal ID set2959 calls InternalId.update_last_value and sets the `last_value` to that of the instance2960 unsetting the instance internal id on rollback2961 when the internal id has been changed2962 when the internal id is automatically set2963 clears it on the instance2964 when the internal id is manually set2965 does not clear it on the instance2966 when the internal id has not been changed2967 preserves the value on the instance2968 supply of internal ids2969 provides a persistent supply of IID values, sensitive to the current state2970 #reset_scope_internal_id_attribute2971 rewinds the allocated IID2972 allocates the same IID2973 Validation2974 start_date2975 adds an error when start_date is greater then due_date2976 adds an error when start_date is greater than 9999-12-312977 due_date2978 adds an error when due_date is greater than 9999-12-312979 title2980 is expected to validate that :title cannot be empty/falsy2981 is invalid if title would be empty after sanitation2982 #timebox_type_check2983 is invalid if it has both project_id and group_id2984 Associations2985 is expected to belong to project required: false2986 is expected to belong to group required: false2987 is expected to have many issues2988 is expected to have many merge_requests2989 is expected to have many labels2990 #timebox_name2991 returns the name of the model2992 #project_timebox?2993 when project_id is present2994 returns true2995 when project_id is not present2996 returns false2997 #group_timebox?2998 when group_id is present2999 returns true3000 when group_id is not present3001 returns false3002 #safe_title3003 normalizes the title for use as a slug3004 #resource_parent3005 when group is present3006 returns the group3007 when project is present3008 returns the project3009 #title3010 sanitizes title3011 #merge_requests_enabled?3012 per project3013 is true for projects with MRs enabled3014 is false for projects with MRs disabled3015 is false for projects with repository disabled3016 per group3017 is always true for groups, for performance reasons3018 #to_ability_name3019 returns timebox3020 .within_timeframe3021 can find overlapping timeboxes3022 #uniqueness_of_title3023 per project3024 does not accept the same title in a project twice3025 accepts the same title in another project3026 per group3027 does not accept the same title in a group twice3028 does not accept the same title of a child project timebox3029 MilestoneStruct#serializable_hash3030 presents the predefined milestone as a hash3031 Validation3032 milestone_releases3033 when it is tied to a release for another project3034 creates a validation error3035 when it is tied to a release for the same project3036 is valid3037 Associations3038 is expected to have many releases3039 is expected to have many milestone_releases3040 .predefined_id?3041 returns true for a predefined Milestone ID3042 returns false for a Milestone ID that is not predefined3043 .order_by_name_asc3044 sorts by name ascending3045 .reorder_by_due_date_asc3046 reorders the input relation3047 behaves like within_timeframe scope3048 .within_timeframe3049 returns resources with start_date and/or end_date between timeframe3050 returns resources which starts before the timeframe3051 returns resources which ends after the timeframe3052 #percent_complete3053 does not count open issues3054 counts closed issues3055 recovers from dividing by zero3056 #expired? and #expired3057 expired3058 returns true when due_date is in the past3059 not expired3060 returns false when due_date is in the future3061 #upcoming?3062 returns true when start_date is in the future3063 returns false when start_date is in the past3064 #can_be_closed?3065 returns true if milestone active and all nested issues closed3066 returns false if milestone active and not all nested issues closed3067 #to_ability_name3068 returns milestone3069 .search3070 returns milestones with a matching title3071 returns milestones with a partially matching title3072 returns milestones with a matching title regardless of the casing3073 returns milestones with a matching description3074 returns milestones with a partially matching description3075 returns milestones with a matching description regardless of the casing3076 #search_title3077 returns milestones with a matching title3078 returns milestones with a partially matching title3079 returns milestones with a matching title regardless of the casing3080 searches only on the title and ignores milestones with a matching description3081 behaves like #for_projects_and_groups3082 #for_projects_and_groups3083 returns no records if projects and groups are nil3084 ids as params3085 behaves like filters by projects and groups3086 returns milestones filtered by project3087 returns milestones filtered by group3088 returns milestones filtered by both project and group3089 relations as params3090 behaves like filters by projects and groups3091 returns milestones filtered by project3092 returns milestones filtered by group3093 returns milestones filtered by both project and group3094 objects as params3095 behaves like filters by projects and groups3096 returns milestones filtered by project3097 returns milestones filtered by group3098 returns milestones filtered by both project and group3099 .upcoming_ids3100 returns the next upcoming open milestone ID for each project and group3101 when the projects and groups have no open upcoming milestones3102 returns no results3103 #to_reference3104 for a project milestone3105 returns a String reference to the object3106 returns a reference by name when the format is set to :name3107 supports a cross-project reference3108 for a group milestone3109 returns a group milestone reference with a default format3110 returns a reference by name when the format is set to :name3111 does supports cross-project references within a group3112 raises an error when using iid format3113 #reference_link_text3114 returns the title with the reference prefix3115 #participants3116 returns participants without duplicates3117 .sort_with_expired_last3118 ordering by due_date ascending3119 sorts by due date in ascending order (ties broken by id in desc order)3120 ordering by due_date descending3121 sorts by due date in descending order (ties broken by id in desc order)3122 .sort_by_attribute3123 ordering by name ascending3124 sorts by title ascending3125 ordering by name descending3126 sorts by title descending3127 .states_count3128 when the projects have milestones3129 returns the quantity of milestones in each possible state3130 when the projects do not have milestones3131 returns 0 as the quantity of global milestones in each state3132 .reference_pattern3133 is expected to match "gitlab-org/gitlab-ce%123"3134 is expected to match "gitlab-org/gitlab-ce%\"my-milestone\""3135 .link_reference_pattern3136 is expected to match "http://localhost/gitlab-org/gitlab-foss/milestones/123"3137 is expected to match "http://localhost/gitlab-org/gitlab-foss/-/milestones/123"3138 is expected not to match "http://localhost/gitlab-org/gitlab-foss/issues/123"3139 is expected not to match "gitlab-org/gitlab-ce/milestones/123"3140 #parent3141 with group3142 returns the expected parent3143 with project3144 returns the expected parent3145 #subgroup_milestone3146 parent is subgroup3147 returns true3148 parent is not subgroup3149 returns false3150Projects::TransferService3151 with npm packages3152 with a root namespace change3153 does not allow the transfer3154 without a root namespace change3155 does allow the transfer3156 namespace -> namespace3157 updates the namespace3158 when project has an associated project namespace3159 keeps project namespace in sync with project3160 when project is transferred to a deeper nested group3161 keeps project namespace in sync with project3162 when transfer succeeds3163 sends notifications3164 invalidates the user's personal_project_count cache3165 executes system hooks3166 moves the disk path3167 updates project full path in .git/config3168 updates storage location3169 with a project integration3170 with an inherited integration3171 replaces inherited integrations3172 with a custom integration3173 does not updates the integrations3174 when project has pending builds3175 updates pending builds for the project3176 when transfer fails3177 rolls back repo location3178 rolls back project full path in .git/config3179 doesn't send move notifications3180 doesn't run system hooks3181 does not update storage location3182 when project has pending builds3183 does not update pending builds for the project3184 when project has an associated project namespace3185 keeps project namespace in sync with project3186 namespace -> no namespace3187 does not allow the project transfer3188 when project has an associated project namespace3189 keeps project namespace in sync with project3190 disallow transferring of project with tags3191 does not allow the project transfer3192 namespace -> not allowed namespace3193 does not allow the project transfer3194 namespace which contains orphan repository with same projects path name3195 does not allow the project transfer3196 target namespace containing the same project name3197 does not allow the project transfer3198 target namespace containing the same project path3199 does not allow the project transfer3200 target namespace matches current namespace3201 does not allow project transfer3202 when user does not own the project3203 does not allow project transfer to the target namespace3204 when user can create projects in the target namespace3205 but has only developer permissions in the target namespace3206 does not allow project transfer to the target namespace3207 visibility level3208 when namespace visibility level < project visibility level3209 is expected to eq 103210 when namespace visibility level > project visibility level3211 is expected to eq 03212 shared Runners group level configurations3213 project_shared_runners_enabled: true, shared_runners_setting: :disabled_and_unoverridable, expected_shared_runners_enabled: false3214 updates shared runners based on the parent group3215 project_shared_runners_enabled: false, shared_runners_setting: :disabled_and_unoverridable, expected_shared_runners_enabled: false3216 updates shared runners based on the parent group3217 project_shared_runners_enabled: true, shared_runners_setting: :disabled_with_override, expected_shared_runners_enabled: true3218 updates shared runners based on the parent group3219 project_shared_runners_enabled: false, shared_runners_setting: :disabled_with_override, expected_shared_runners_enabled: false3220 updates shared runners based on the parent group3221 project_shared_runners_enabled: true, shared_runners_setting: :shared_runners_enabled, expected_shared_runners_enabled: true3222 updates shared runners based on the parent group3223 project_shared_runners_enabled: false, shared_runners_setting: :shared_runners_enabled, expected_shared_runners_enabled: false3224 updates shared runners based on the parent group3225 missing group labels applied to issues or merge requests3226 delegates transfer to Labels::TransferService3227 missing group milestones applied to issues or merge requests3228 delegates transfer to Milestones::TransferService3229 when hashed storage in use3230 does not move the disk path3231 does not move the disk path when the transfer fails3232 refreshing project authorizations3233 calls AuthorizedProjectUpdate::ProjectRecalculateWorker to update project authorizations3234 calls AuthorizedProjectUpdate::UserRefreshFromReplicaWorker with a delay to update project authorizations3235 refreshes the permissions of the members of the old and new namespace3236 transferring a design repository3237 does not create a design repository3238 when the project has a design repository3239 with legacy storage3240 moves the repository3241 does not move the repository when an error occurs3242 with hashed storage3243 does not move the repository3244 does not move the repository when an error occurs3245 moving pages3246 schedules a job when pages are deployed3247 does not schedule a job when no pages are deployed3248Integrations::MicrosoftTeams3249 behaves like chat integration3250 Associations3251 is expected to belong to project required: false3252 is expected to have one service_hook3253 Validations3254 when integration is active3255 is expected to validate that :webhook cannot be empty/falsy3256 behaves like issue tracker integration URL attribute3257 is expected to allow :webhook to be ‹"https://example.com"›3258 is expected not to allow :webhook to be ‹"example.com"›3259 is expected not to allow :webhook to be ‹"ftp://example.com"›3260 is expected not to allow :webhook to be ‹"herp-and-derp"›3261 when integration is inactive3262 is expected not to validate that :webhook cannot be empty/falsy3263 .supported_events3264 does not support deployment_events3265 #execute3266 with push events3267 behaves like triggered Microsoft Teams integration3268 calls Microsoft Teams API3269 with default branch3270 when only default branch are to be notified3271 behaves like triggered Microsoft Teams integration3272 calls Microsoft Teams API3273 when only protected branches are to be notified3274 behaves like untriggered Microsoft Teams integration3275 does not call Microsoft Teams API3276 when default and protected branches are to be notified3277 behaves like triggered Microsoft Teams integration3278 calls Microsoft Teams API3279 when all branches are to be notified3280 behaves like triggered Microsoft Teams integration3281 calls Microsoft Teams API3282 with protected branch3283 when only default branch are to be notified3284 behaves like untriggered Microsoft Teams integration3285 does not call Microsoft Teams API3286 when only protected branches are to be notified3287 behaves like triggered Microsoft Teams integration3288 calls Microsoft Teams API3289 when default and protected branches are to be notified3290 behaves like triggered Microsoft Teams integration3291 calls Microsoft Teams API3292 when all branches are to be notified3293 behaves like triggered Microsoft Teams integration3294 calls Microsoft Teams API3295 with neither default nor protected branch3296 when only default branch are to be notified3297 behaves like untriggered Microsoft Teams integration3298 does not call Microsoft Teams API3299 when only protected branches are to be notified3300 behaves like untriggered Microsoft Teams integration3301 does not call Microsoft Teams API3302 when default and protected branches are to be notified3303 behaves like untriggered Microsoft Teams integration3304 does not call Microsoft Teams API3305 when all branches are to be notified3306 behaves like triggered Microsoft Teams integration3307 calls Microsoft Teams API3308 with issue events3309 behaves like triggered Microsoft Teams integration3310 calls Microsoft Teams API3311 with merge events3312 behaves like triggered Microsoft Teams integration3313 calls Microsoft Teams API3314 with wiki page events3315 behaves like triggered Microsoft Teams integration3316 calls Microsoft Teams API3317 with note events3318 with commit comment3319 behaves like triggered Microsoft Teams integration3320 calls Microsoft Teams API3321 with merge request comment3322 behaves like triggered Microsoft Teams integration3323 calls Microsoft Teams API3324 with issue comment3325 behaves like triggered Microsoft Teams integration3326 calls Microsoft Teams API3327 with snippet comment3328 behaves like triggered Microsoft Teams integration3329 calls Microsoft Teams API3330 with pipeline events3331 with failed pipeline3332 behaves like triggered Microsoft Teams integration3333 calls Microsoft Teams API3334 with succeeded pipeline3335 with default notify_only_broken_pipelines3336 does not call Microsoft Teams API3337 when notify_only_broken_pipelines is false3338 behaves like triggered Microsoft Teams integration3339 calls Microsoft Teams API3340 with default branch3341 when only default branch are to be notified3342 behaves like triggered Microsoft Teams integration3343 calls Microsoft Teams API3344 when only protected branches are to be notified3345 behaves like untriggered Microsoft Teams integration3346 does not call Microsoft Teams API3347 when default and protected branches are to be notified3348 behaves like triggered Microsoft Teams integration3349 calls Microsoft Teams API3350 when all branches are to be notified3351 behaves like triggered Microsoft Teams integration3352 calls Microsoft Teams API3353 with protected branch3354 when only default branch are to be notified3355 behaves like untriggered Microsoft Teams integration3356 does not call Microsoft Teams API3357 when only protected branches are to be notified3358 behaves like triggered Microsoft Teams integration3359 calls Microsoft Teams API3360 when default and protected branches are to be notified3361 behaves like triggered Microsoft Teams integration3362 calls Microsoft Teams API3363 when all branches are to be notified3364 behaves like triggered Microsoft Teams integration3365 calls Microsoft Teams API3366 with neither default nor protected branch3367 when only default branch are to be notified3368 behaves like untriggered Microsoft Teams integration3369 does not call Microsoft Teams API3370 when only protected branches are to be notified3371 behaves like untriggered Microsoft Teams integration3372 does not call Microsoft Teams API3373 when default and protected branches are to be notified3374 behaves like untriggered Microsoft Teams integration3375 does not call Microsoft Teams API3376 when all branches are to be notified3377 behaves like triggered Microsoft Teams integration3378 calls Microsoft Teams API3379 deployment events3380 behaves like untriggered Microsoft Teams integration3381 does not call Microsoft Teams API3382 Validations3383 when integration is active3384 is expected to validate that :webhook cannot be empty/falsy3385 behaves like issue tracker integration URL attribute3386 is expected to allow :webhook to be ‹"https://example.com"›3387 is expected not to allow :webhook to be ‹"example.com"›3388 is expected not to allow :webhook to be ‹"ftp://example.com"›3389 is expected not to allow :webhook to be ‹"herp-and-derp"›3390 when integration is inactive3391 is expected not to validate that :webhook cannot be empty/falsy3392 .supported_events3393 does not support deployment_events3394 #execute3395 with push events3396 calls Microsoft Teams API for push events3397 specifies the webhook when it is configured3398 with issue events3399 calls Microsoft Teams API3400 with merge events3401 calls Microsoft Teams API3402 with wiki page events3403 calls Microsoft Teams API3404 Note events3405 when commit comment event executed3406 calls Microsoft Teams API for commit comment events3407 when merge request comment event executed3408 calls Microsoft Teams API for merge request comment events3409 when issue comment event executed3410 calls Microsoft Teams API for issue comment events3411 when snippet comment event executed3412 calls Microsoft Teams API for snippet comment events3413 Pipeline events3414 with failed pipeline3415 behaves like call Microsoft Teams API3416 calls Microsoft Teams API for pipeline events3417 with succeeded pipeline3418 with default to notify_only_broken_pipelines3419 does not call Microsoft Teams API for pipeline events3420 with setting notify_only_broken_pipelines to false3421 behaves like call Microsoft Teams API3422 calls Microsoft Teams API for pipeline events3423 with default branch3424 only notify for the default branch3425 behaves like call Microsoft Teams API3426 calls Microsoft Teams API for pipeline events3427 notify for only protected branches3428 behaves like does not call Microsoft Teams API3429 does not call Microsoft Teams API for pipeline events3430 notify for only default and protected branches3431 behaves like call Microsoft Teams API3432 calls Microsoft Teams API for pipeline events3433 notify for all branches3434 behaves like call Microsoft Teams API3435 calls Microsoft Teams API for pipeline events3436 with protected branch3437 only notify for the default branch3438 behaves like does not call Microsoft Teams API3439 does not call Microsoft Teams API for pipeline events3440 notify for only protected branches3441 behaves like call Microsoft Teams API3442 calls Microsoft Teams API for pipeline events3443 notify for only default and protected branches3444 behaves like call Microsoft Teams API3445 calls Microsoft Teams API for pipeline events3446 notify for all branches3447 behaves like call Microsoft Teams API3448 calls Microsoft Teams API for pipeline events3449 with neither protected nor default branch3450 only notify for the default branch3451 behaves like does not call Microsoft Teams API3452 does not call Microsoft Teams API for pipeline events3453 notify for only protected branches3454 behaves like does not call Microsoft Teams API3455 does not call Microsoft Teams API for pipeline events3456 notify for only default and protected branches3457 behaves like does not call Microsoft Teams API3458 does not call Microsoft Teams API for pipeline events3459 notify for all branches3460 behaves like call Microsoft Teams API3461 calls Microsoft Teams API for pipeline events3462Gitlab::ImportExport::Project::RelationTreeRestorer3463 with legacy reader3464 behaves like import project successfully3465 imported project3466 has the project attributes and relations3467 with logging of relations creation3468 logs top-level relation creation3469 with ndjson reader3470 behaves like import project successfully3471 imported project3472 has the project attributes and relations3473 when inside a group3474 behaves like import project successfully3475 imported project3476 has the project attributes and relations3477 with invalid relations3478 logs the invalid relation and its errors3479GlobalPolicy3480 reading the list of users3481 for a logged in user3482 is expected to be allowed :read_users_list3483 for an anonymous user3484 when the public level is restricted3485 is expected not to be allowed :read_users_list3486 when the public level is not restricted3487 is expected to be allowed :read_users_list3488 for an admin3489 when the public level is restricted3490 is expected to be allowed :read_users_list3491 when the public level is not restricted3492 is expected to be allowed :read_users_list3493 create fork3494 when user has not exceeded project limit3495 is expected to be allowed :create_fork3496 when user has exceeded project limit3497 is expected not to be allowed :create_fork3498 when user is a maintainer in a group3499 is expected to be allowed :create_fork3500 create group3501 when user has the ability to create group3502 is expected to be allowed :create_group3503 when user does not have the ability to create group3504 is expected not to be allowed :create_group3505 create group with default branch protection3506 when user has the ability to create group3507 is expected to be allowed :create_group_with_default_branch_protection3508 when user does not have the ability to create group3509 is expected not to be allowed :create_group_with_default_branch_protection3510 custom attributes3511 regular user3512 is expected not to be allowed :read_custom_attribute3513 is expected not to be allowed :update_custom_attribute3514 admin3515 when admin mode is enabled3516 is expected to be allowed :read_custom_attribute3517 is expected to be allowed :update_custom_attribute3518 when admin mode is disabled3519 is expected to be disallowed :read_custom_attribute3520 is expected to be disallowed :update_custom_attribute3521 approving users3522 regular user3523 is expected not to be allowed :approve_user3524 admin3525 when admin mode is enabled3526 is expected to be allowed :approve_user3527 when admin mode is disabled3528 is expected to be disallowed :approve_user3529 rejecting users3530 regular user3531 is expected not to be allowed :reject_user3532 admin3533 when admin mode is enabled3534 is expected to be allowed :reject_user3535 when admin mode is disabled3536 is expected to be disallowed :reject_user3537 using project statistics filters3538 regular user3539 is expected not to be allowed :use_project_statistics_filters3540 admin3541 when admin mode is enabled3542 is expected to be allowed :use_project_statistics_filters3543 when admin mode is disabled3544 is expected to be disallowed :use_project_statistics_filters3545 API access3546 regular user3547 is expected to be allowed :access_api3548 admin3549 is expected to be allowed :access_api3550 anonymous3551 is expected to be allowed :access_api3552 project bot3553 is expected to be allowed :access_api3554 migration bot3555 is expected not to be allowed :access_api3556 security bot3557 is expected not to be allowed :access_api3558 user blocked pending approval3559 is expected not to be allowed :access_api3560 with a deactivated user3561 is expected not to be allowed :access_api3562 user with expired password3563 is expected not to be allowed :access_api3564 when user is using ldap3565 is expected to be allowed :access_api3566 when terms are enforced3567 regular user3568 behaves like access allowed when terms accepted3569 is expected not to be allowed :access_api3570 allows access_api when the user accepted the terms3571 admin3572 behaves like access allowed when terms accepted3573 is expected not to be allowed :access_api3574 allows access_api when the user accepted the terms3575 anonymous3576 is expected to be allowed :access_api3577 inactive user3578 when within the confirmation grace period3579 is expected to be allowed :access_api3580 when confirmation grace period is expired3581 is expected not to be allowed :access_api3582 receive notifications3583 regular user3584 is expected to be allowed :receive_notifications3585 admin3586 is expected to be allowed :receive_notifications3587 anonymous3588 is expected not to be allowed :receive_notifications3589 blocked user3590 is expected not to be allowed :receive_notifications3591 deactivated user3592 is expected not to be allowed :receive_notifications3593 project bot3594 is expected not to be allowed :receive_notifications3595 migration bot3596 is expected not to be allowed :receive_notifications3597 user blocked pending approval3598 is expected not to be allowed :receive_notifications3599 git access3600 regular user3601 is expected to be allowed :access_git3602 admin3603 is expected to be allowed :access_git3604 anonymous3605 is expected to be allowed :access_git3606 migration bot3607 is expected to be allowed :access_git3608 security bot3609 is expected to be allowed :access_git3610 deactivated user3611 is expected not to be allowed :access_git3612 inactive user3613 is expected not to be allowed :access_git3614 when terms are enforced3615 regular user3616 behaves like access allowed when terms accepted3617 is expected not to be allowed :access_git3618 allows access_git when the user accepted the terms3619 admin3620 behaves like access allowed when terms accepted3621 is expected not to be allowed :access_git3622 allows access_git when the user accepted the terms3623 anonymous3624 is expected to be allowed :access_git3625 project bot3626 is expected to be allowed :access_git3627 user blocked pending approval3628 is expected not to be allowed :access_git3629 user with expired password3630 is expected not to be allowed :access_git3631 when user is using ldap3632 is expected to be allowed :access_git3633 read instance metadata3634 regular user3635 is expected to be allowed :read_instance_metadata3636 anonymous3637 is expected not to be allowed :read_instance_metadata3638 slash commands3639 regular user3640 is expected to be allowed :use_slash_commands3641 when internal3642 is expected not to be allowed :use_slash_commands3643 when blocked3644 is expected not to be allowed :use_slash_commands3645 when deactivated3646 is expected not to be allowed :use_slash_commands3647 inactive user3648 is expected not to be allowed :use_slash_commands3649 when access locked3650 is expected not to be allowed :use_slash_commands3651 project bot3652 is expected to be allowed :use_slash_commands3653 migration bot3654 is expected not to be allowed :use_slash_commands3655 user blocked pending approval3656 is expected not to be allowed :use_slash_commands3657 user with expired password3658 is expected not to be allowed :use_slash_commands3659 when user is using ldap3660 is expected to be allowed :use_slash_commands3661 create_snippet3662 when anonymous3663 is expected not to be allowed :create_snippet3664 regular user3665 is expected to be allowed :create_snippet3666 when external3667 is expected not to be allowed :create_snippet3668 log in3669 project bot3670 is expected not to be allowed :log_in3671 migration bot3672 is expected not to be allowed :log_in3673 security bot3674 is expected not to be allowed :log_in3675 user blocked pending approval3676 is expected not to be allowed :log_in3677 update_runners_registration_token3678 when anonymous3679 is expected not to be allowed :update_runners_registration_token3680 regular user3681 is expected not to be allowed :update_runners_registration_token3682 when external3683 is expected not to be allowed :update_runners_registration_token3684 admin3685 when admin mode is enabled3686 is expected to be allowed :update_runners_registration_token3687 when admin mode is disabled3688 is expected to be disallowed :update_runners_registration_token3689Ci::BuildRunnerPresenter3690 #artifacts3691 when option contains archive-type artifacts3692 presents correct hash3693 when untracked is specified3694 presents correct hash3695 when untracked and paths are missing3696 does not present hash3697 when artifacts exclude is defined3698 includes the list of excluded paths3699 when artifacts exclude is not defined3700 does not include an empty list of excluded paths3701 with reports3702 archive3703 presents correct hash3704 metadata3705 presents correct hash3706 trace3707 presents correct hash3708 metrics_referee3709 presents correct hash3710 network_referee3711 presents correct hash3712 junit3713 presents correct hash3714 accessibility3715 presents correct hash3716 codequality3717 presents correct hash3718 sast3719 presents correct hash3720 secret_detection3721 presents correct hash3722 dependency_scanning3723 presents correct hash3724 container_scanning3725 presents correct hash3726 cluster_image_scanning3727 presents correct hash3728 dast3729 presents correct hash3730 license_scanning3731 presents correct hash3732 performance3733 presents correct hash3734 browser_performance3735 presents correct hash3736 load_performance3737 presents correct hash3738 metrics3739 presents correct hash3740 lsif3741 presents correct hash3742 dotenv3743 presents correct hash3744 cobertura3745 presents correct hash3746 terraform3747 presents correct hash3748 cluster_applications3749 presents correct hash3750 requirements3751 presents correct hash3752 coverage_fuzzing3753 presents correct hash3754 api_fuzzing3755 presents correct hash3756 when option has both archive and reports specification3757 presents correct hash3758 when archive specifies 'expire_in' keyword3759 inherits expire_in from archive3760 when option has no artifact keywords3761 does not present hash3762 #ref_type3763 returns the correct ref type3764 when tag is false3765 returns the correct ref type3766 #git_depth3767 defaults to git depth setting for the project3768 when GIT_DEPTH variable is specified3769 returns its value3770 #refspecs3771 returns the correct refspecs3772 uses a SHA in the persistent refspec3773 when ref is tag3774 returns the correct refspecs3775 when GIT_DEPTH is zero3776 returns the correct refspecs3777 when pipeline is detached merge request pipeline3778 returns the correct refspecs3779 when GIT_DEPTH is zero3780 returns the correct refspecs3781 when pipeline is legacy detached merge request pipeline3782 returns the correct refspecs3783 when persistent pipeline ref exists3784 exposes the persistent pipeline ref3785 #runner_variables3786 behaves like returns an array with the expected variables3787 returns an array3788 returns the expected variables3789 #runner_variables subset3790 with references in pipeline variables3791 returns expanded and sorted variables3792Gitlab::Gpg::Commit3793 #signature3794 unsigned commit3795 returns nil3796 invalid signature3797 returns nil3798 known key3799 user matches the key uid3800 user email matches the email committer3801 returns a valid signature3802 behaves like returns the cached signature on second call3803 returns the cached signature on second call3804 read-only mode3805 does not create a cached signature3806 valid key signed using recent version of Gnupg3807 returns a valid signature3808 valid key signed using older version of Gnupg3809 returns a valid signature3810 commit with multiple signatures3811 returns an invalid signatures error3812 commit signed with a subkey3813 returns a valid signature3814 behaves like returns the cached signature on second call3815 returns the cached signature on second call3816 user email does not match the committer email, but is the same user3817 returns an invalid signature3818 behaves like returns the cached signature on second call3819 returns the cached signature on second call3820 user email does not match the committer email3821 returns an invalid signature3822 behaves like returns the cached signature on second call3823 returns the cached signature on second call3824 user does not match the key uid3825 returns an invalid signature3826 behaves like returns the cached signature on second call3827 returns the cached signature on second call3828 unknown key3829 returns an invalid signature3830 behaves like returns the cached signature on second call3831 returns the cached signature on second call3832 multiple commits with signatures3833 does an aggregated sql request instead of 2 separate ones3834AvatarUploader3835 behaves like builds correct paths3836 #store_dir3837 behaves like matches the method pattern3838 is expected to match /uploads\/-\/system\/user\/avatar\//3839 #cache_dir3840 behaves like matches the method pattern3841 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3842 #work_dir3843 behaves like matches the method pattern3844 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3845 #upload_path3846 behaves like matches the method pattern3847 is expected to match /uploads\/-\/system\/user\/avatar\//3848 #relative_path3849 is relative (PENDING: Path not set, skipping.)3850 .absolute_path3851 behaves like matches the method pattern3852 is expected to match /\/builds\/gitlab-org\/gitlab\/tmp\/tests\/public\/uploads\/-\/system\/user\/avatar\//3853 .base_dir3854 behaves like matches the method pattern3855 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3856 path traversal exploits3857 throws an exception3858 object_store is REMOTE3859 behaves like builds correct paths3860 #store_dir3861 behaves like matches the method pattern3862 is expected to match /user\/avatar\//3863 #cache_dir3864 behaves like matches the method pattern3865 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3866 #work_dir3867 behaves like matches the method pattern3868 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3869 #upload_path3870 behaves like matches the method pattern3871 is expected to match /user\/avatar\//3872 #relative_path3873 is relative (PENDING: Path not set, skipping.)3874 .absolute_path3875 behaves like matches the method pattern3876 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3877 .base_dir3878 behaves like matches the method pattern3879 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3880 path traversal exploits3881 throws an exception3882 with a file3883 sets the right absolute path3884 behaves like migrates3885 returns corresponding file type3886 does nothing when migrating to the current store3887 migrate to the specified store3888 removes the original file after the migration3889 can access to the original file during migration3890 when migrate! is not occupied by another process3891 executes migrate!3892 executes use_file3893 when migrate! is occupied by another process3894 does not execute migrate!3895 does not execute use_file3896 migration is unsuccessful3897 when the store is not supported3898 does not update the object_store3899 does not delete the original file3900 upon a fog failure3901 does not update the object_store3902 does not delete the original file3903 upon a database failure3904 does not update the object_store3905 does not delete the original file3906 behaves like migrates3907 returns corresponding file type3908 does nothing when migrating to the current store3909 migrate to the specified store3910 removes the original file after the migration3911 can access to the original file during migration3912 when migrate! is not occupied by another process3913 executes migrate!3914 executes use_file3915 when migrate! is occupied by another process3916 does not execute migrate!3917 does not execute use_file3918 migration is unsuccessful3919 when the store is not supported3920 does not update the object_store3921 does not delete the original file3922 upon a fog failure3923 does not update the object_store3924 does not delete the original file3925 upon a database failure3926 does not update the object_store3927 does not delete the original file3928 accept whitelist file content type3929 mime_type: "image/png"3930 behaves like accepted carrierwave upload3931 will accept upload3932 will cache uploaded file3933 mime_type: "image/jpeg"3934 behaves like accepted carrierwave upload3935 will accept upload3936 will cache uploaded file3937 mime_type: "image/gif"3938 behaves like accepted carrierwave upload3939 will accept upload3940 will cache uploaded file3941 mime_type: "image/bmp"3942 behaves like accepted carrierwave upload3943 will accept upload3944 will cache uploaded file3945 mime_type: "image/tiff"3946 behaves like accepted carrierwave upload3947 will accept upload3948 will cache uploaded file3949 mime_type: "image/vnd.microsoft.icon"3950 behaves like accepted carrierwave upload3951 will accept upload3952 will cache uploaded file3953 upload non-whitelisted file content type3954 behaves like denied carrierwave upload3955 will deny upload3956 upload misnamed non-whitelisted file content type3957 behaves like denied carrierwave upload3958 will deny upload3959Ci::PipelineSchedule3960 is expected to belong to project required: false3961 is expected to belong to owner required: false3962 is expected to have many pipelines3963 is expected to have many variables3964 is expected to respond to #ref3965 is expected to respond to #cron3966 is expected to respond to #cron_timezone3967 is expected to respond to #description3968 is expected to respond to #next_run_at3969 behaves like includes Limitable concern3970 validations3971 is expected to be a kind of Limitable3972 without plan limits configured3973 can create new models3974 with plan limits configured3975 can create new models3976 with an existing model3977 cannot create new models exceeding the plan limits3978 behaves like cleanup by a loose foreign key3979 cleans up (delete or nullify) the model3980 validations3981 does not allow invalid cron patterns3982 does not allow invalid cron patterns3983 when active is false3984 does not allow nullified ref3985 when cron contains trailing whitespaces3986 strips the attribute3987 .runnable_schedules3988 returns the runnable schedule3989 when there are no runnable schedules3990 returns an empty array3991 .preloaded3992 preloads the associations3993 .owned_by3994 returns owned pipeline schedules3995 #set_next_run_at3996 worker_cron: "0 1 2 3 *", schedule_cron: "0 1 * * *", plan_limit: nil, now: Tue, 02 Mar 2021 01:00:00.000000000 UTC +00:00, result: Wed, 02 Mar 2022 01:00:00.000000000 UTC +00:003997 updates next_run_at3998 worker_cron: "0 1 2 3 *", schedule_cron: "0 1 * * *", plan_limit: 24, now: Tue, 02 Mar 2021 01:00:00.000000000 UTC +00:00, result: Wed, 02 Mar 2022 01:00:00.000000000 UTC +00:003999 updates next_run_at4000 worker_cron: "*/5 * * * *", schedule_cron: "*/1 * * * *", plan_limit: nil, now: Thu, 27 May 2021 11:00:00.000000000 UTC +00:00, result: Thu, 27 May 2021 11:05:00.000000000 UTC +00:004001 updates next_run_at4002 worker_cron: "*/5 * * * *", schedule_cron: "*/1 * * * *", plan_limit: 24, now: Thu, 27 May 2021 11:00:00.000000000 UTC +00:00, result: Thu, 27 May 2021 12:00:00.000000000 UTC +00:004003 updates next_run_at4004 worker_cron: "*/5 * * * *", schedule_cron: "*/1 * * * *", plan_limit: 144, now: Thu, 27 May 2021 11:00:00.000000000 UTC +00:00, result: Thu, 27 May 2021 11:10:00.000000000 UTC +00:004005 updates next_run_at4006 worker_cron: "*/5 * * * *", schedule_cron: "*/1 * * * *", plan_limit: 200, now: Thu, 27 May 2021 11:00:00.000000000 UTC +00:00, result: Thu, 27 May 2021 11:10:00.000000000 UTC +00:004007 updates next_run_at4008 worker_cron: "*/5 * * * *", schedule_cron: "0 * * * *", plan_limit: nil, now: Thu, 27 May 2021 11:00:00.000000000 UTC +00:00, result: Thu, 27 May 2021 12:05:00.000000000 UTC +00:004009 updates next_run_at4010 worker_cron: "*/5 * * * *", schedule_cron: "0 * * * *", plan_limit: 144, now: Thu, 27 May 2021 11:00:00.000000000 UTC +00:00, result: Thu, 27 May 2021 12:00:00.000000000 UTC +00:004011 updates next_run_at4012 worker_cron: "*/5 * * * *", schedule_cron: "0 * * * *", plan_limit: 24, now: Thu, 27 May 2021 11:00:00.000000000 UTC +00:00, result: Thu, 27 May 2021 12:00:00.000000000 UTC +00:004013 updates next_run_at4014 worker_cron: "*/5 * * * *", schedule_cron: "0 * * * *", plan_limit: 12, now: Thu, 27 May 2021 11:00:00.000000000 UTC +00:00, result: Thu, 27 May 2021 12:05:00.000000000 UTC +00:004015 updates next_run_at4016 worker_cron: "*/5 * * * *", schedule_cron: "0 1 * * *", plan_limit: 24, now: Thu, 27 May 2021 01:00:00.000000000 UTC +00:00, result: Fri, 28 May 2021 01:00:00.000000000 UTC +00:004017 updates next_run_at4018 worker_cron: "*/5 * * * *", schedule_cron: "0 1 * * *", plan_limit: 144, now: Thu, 27 May 2021 01:00:00.000000000 UTC +00:00, result: Fri, 28 May 2021 01:00:00.000000000 UTC +00:004019 updates next_run_at4020 worker_cron: "*/5 * * * *", schedule_cron: "0 1 * * *", plan_limit: 180, now: Thu, 27 May 2021 01:00:00.000000000 UTC +00:00, result: Fri, 28 May 2021 01:00:00.000000000 UTC +00:004021 updates next_run_at4022 worker_cron: "*/5 * * * *", schedule_cron: "0 1 1 * *", plan_limit: 24, now: Sat, 01 May 2021 01:00:00.000000000 UTC +00:00, result: Tue, 01 Jun 2021 01:00:00.000000000 UTC +00:004023 updates next_run_at4024 worker_cron: "*/9 * * * *", schedule_cron: "0 1 1 * *", plan_limit: 24, now: Sat, 01 May 2021 01:09:00.000000000 UTC +00:00, result: Tue, 01 Jun 2021 01:00:00.000000000 UTC +00:004025 updates next_run_at4026 worker_cron: "*/5 * * * *", schedule_cron: "59 14 * * *", plan_limit: 24, now: Sat, 01 May 2021 15:00:00.000000000 UTC +00:00, result: Sun, 02 May 2021 15:00:00.000000000 UTC +00:004027 updates next_run_at4028 worker_cron: "*/5 * * * *", schedule_cron: "45 21 1 2 *", plan_limit: 288, now: Mon, 01 Feb 2021 21:45:00.000000000 UTC +00:00, result: Tue, 01 Feb 2022 21:45:00.000000000 UTC +00:004029 updates next_run_at4030 when there are two different pipeline schedules in different time zones4031 sets different next_run_at4032 #schedule_next_run!4033 updates next_run_at4034 when record is invalid4035 nullifies the next run at4036 #job_variables4037 is expected to contain exactly {:file=>false, :key=>"VARIABLE_1", :public=>false, :value=>"VARIABLE_VALUE"} and {:file=>false, :key=>"VARIABLE_2", :public=>false, :value=>"VARIABLE_VALUE"}4038 #daily_limit4039 when there is no limit4040 is expected to be nil4041 when there is a limit4042 is expected to eq 1444043 loose foreign key on ci_pipeline_schedules.project_id4044 behaves like cleanup by a loose foreign key4045 cleans up (delete or nullify) the model4046MergeRequests::ReopenService4047 #execute4048 caches merge request closing issues4049 updates metrics4050 calls the merge request activity counter4051 refreshes the number of open merge requests for a valid MR4052 behaves like cache counters invalidator4053 invalidates counter cache for assignees4054 behaves like merge request reviewers cache counters invalidator4055 invalidates counter cache for reviewers4056 valid params4057 is expected to be valid4058 is expected to be opened4059 executes hooks with reopen action4060 sends email to user2 about reopen of merge_request4061 destroys cleanup schedule record4062 clears the cached merge_ref_sha4063 note creation4064 creates resource state event about merge_request reopen4065 current user is not authorized to reopen merge request4066 does not reopen the merge request4067Gitlab::ClosingIssueExtractor4068 #closed_by_message4069 with a single reference4070 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4071 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4072 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4073 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4074 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4075 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4076 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4077 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4078 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4079 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4080 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4081 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4082 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4083 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4084 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4085 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4086 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4087 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4088 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4089 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4090 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4091 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4092 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4093 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4094 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4095 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4096 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4097 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4098 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4099 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4100 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4101 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4102 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4103 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4104 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4105 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4106 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4107 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4108 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4109 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4110 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4111 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4112 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4113 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4114 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4115 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4116 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4117 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4118 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4119 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4120 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4121 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4122 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4123 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4124 is expected to eq [#<Issue id:272 namespace840/project1061#1>]4125 with an external issue tracker reference4126 extracts the referenced issue4127 with a cross-project reference4128 is expected to eq [#<Issue id:273 namespace841/project1062#1>]4129 with a cross-project URL4130 is expected to eq [#<Issue id:273 namespace841/project1062#1>]4131 with a cross-project fork reference4132 is expected to be empty4133 with an invalid URL4134 is expected to eq []4135 with an invalid keyword such as suffix insted of fix4136 is expected to eq []4137 with multiple references4138 fetches issues in single line message4139 fetches comma-separated issues references in single line message4140 fetches comma-separated issues numbers in single line message4141 allows oxford commas (comma before and) when referencing multiple issues4142 allows spaces before commas when referencing multiple issues4143 allows non-comma-separated issue numbers in single line message4144 allows mixed comma-separated and non-comma-separated issue numbers in single line message4145 fetches issues in multi-line message4146 fetches issues in hybrid message4147 fetches cross-project references4148 fetches cross-project URL references4149 ignores invalid cross-project URL references4150 with autoclose referenced issues disabled4151 is expected to eq []4152Gitlab::ImportExport::FastHashSerializer4153 saves the correct hash4154 has approvals_before_merge set4155 has milestones4156 has merge requests4157 has merge request's milestones4158 has merge request's source branch SHA4159 has merge request's target branch SHA4160 has events4161 has snippets4162 has snippet notes4163 has releases4164 has no author on releases4165 has the author ID on releases4166 has issues4167 has issue comments4168 has issue assignees4169 has author on issue comments4170 has project members4171 has merge requests diffs4172 has merge request diff files4173 has merge request diff commits4174 has merge requests comments4175 has author on merge requests comments4176 has pipeline stages4177 has pipeline statuses4178 has pipeline builds4179 has pipeline commits4180 has ci pipeline notes4181 has labels with no associations4182 has labels associated to records4183 has project and group labels4184 has priorities associated to labels4185 has issue resource label events4186 has merge request resource label events4187 has project feature4188 has custom attributes4189 has badges4190 does not complain about non UTF-8 characters in MR diff files4191 has a board and a list4192 project attributes4193 does not contain the runners token4194 relation ordering4195 orders exported pipelines by primary key4196Milestones::TransferService4197 #execute4198 when old_group is present4199 without existing milestone at the new group level4200 recreates the missing group milestones at project level4201 applies new project milestone to issues with group milestone4202 deletes milestone counters cache for both milestones4203 does not apply new project milestone to issues with project milestone4204 applies new project milestone to merge_requests with group milestone4205 does not apply new project milestone to issuables with project milestone4206 does not recreate missing group milestones that are not applied to issues or merge requests4207 when milestone is from an ancestor group4208 recreates the missing group milestones at project level4209 when find_or_create_milestone returns nil4210 removes issues group milestone4211 removes merge requests group milestone4212 with existing milestone at the new group level4213 does not create a new milestone4214 applies existing milestone to issues with group milestone4215 applies existing milestone to merge_requests with group milestone4216 when old_group is not present4217 returns nil4218MergeRequests::CleanupRefsService4219 .schedule4220 creates a merge request cleanup schedule4221 #execute4222 when merge request is closed4223 when closed 14 days ago4224 behaves like service that cleans up merge request refs4225 creates keep around ref and deletes merge request refs4226 when merge request has no head ref4227 does not fail4228 when merge request has merge ref4229 caches merge ref sha and deletes merge ref4230 when merge ref sha cannot be cached4231 behaves like service that does not clean up merge request refs4232 does not delete merge request refs4233 when keep around ref cannot be created4234 behaves like service that does not clean up merge request refs4235 does not delete merge request refs4236 when a git error is raised4237 Gitlab::Git::Repository::GitError4238 behaves like service that does not clean up merge request refs4239 does not delete merge request refs4240 Gitlab::Git::CommandError4241 behaves like service that does not clean up merge request refs4242 does not delete merge request refs4243 when cleanup schedule fails to update4244 creates keep around ref and deletes merge request refs4245 when merge request is not scheduled to be cleaned up yet4246 behaves like service that does not clean up merge request refs4247 does not delete merge request refs4248 when repository no longer exists4249 does not fail and still mark schedule as complete4250 when closed later than 14 days ago4251 behaves like service that does not clean up merge request refs4252 does not delete merge request refs4253 when merge request is merged4254 when merged 14 days ago4255 behaves like service that cleans up merge request refs4256 creates keep around ref and deletes merge request refs4257 when merge request has no head ref4258 does not fail4259 when merge request has merge ref4260 caches merge ref sha and deletes merge ref4261 when merge ref sha cannot be cached4262 behaves like service that does not clean up merge request refs4263 does not delete merge request refs4264 when keep around ref cannot be created4265 behaves like service that does not clean up merge request refs4266 does not delete merge request refs4267 when a git error is raised4268 Gitlab::Git::Repository::GitError4269 behaves like service that does not clean up merge request refs4270 does not delete merge request refs4271 Gitlab::Git::CommandError4272 behaves like service that does not clean up merge request refs4273 does not delete merge request refs4274 when cleanup schedule fails to update4275 creates keep around ref and deletes merge request refs4276 when merge request is not scheduled to be cleaned up yet4277 behaves like service that does not clean up merge request refs4278 does not delete merge request refs4279 when repository no longer exists4280 does not fail and still mark schedule as complete4281 when merged later than 14 days ago4282 behaves like service that does not clean up merge request refs4283 does not delete merge request refs4284 when merge request is not closed nor merged4285 behaves like service that does not clean up merge request refs4286 does not delete merge request refs4287DesignManagement::DeleteDesignsService4288 #execute4289 when the feature is not available4290 does not create any events in the activity stream4291 behaves like a service error4292 returns an error4293 when the feature is available4294 is able to delete designs4295 no designs were passed4296 does not log any events4297 does not log any UsageData metrics4298 behaves like a top-level error4299 raises an en expected error4300 one design is passed4301 removes that design4302 logs a deletion event4303 updates UsageData for removed designs4304 creates an event in the activity stream4305 informs the new-version-worker4306 creates a new version4307 returns the new version4308 removes the design from the current design list4309 marks the design as deleted4310 schedules deleting todos for that design4311 behaves like a success4312 returns successfully4313 saves the user as the author4314 more than one design is passed4315 makes the correct changes4316 schedules deleting todos for that design4317 behaves like a success4318 returns successfully4319 saves the user as the author4320 after executing the service4321 removes the removed designs from the current design list4322 does not make the designs impossible to find4323 associates the new version with all the designs4324 marks all deleted designs as deleted4325 marks all deleted designs with the same deletion version4326 scalability4327 makes the same number of DB requests for one design as for several4328EmailsHelper4329 closure_reason_text4330 when given a MergeRequest4331 when user can read merge request4332 and format is text4333 returns plain text4334 and format is HTML4335 returns HTML4336 and format is unknown4337 returns plain text4338 when user cannot read merge request4339 does not have link to merge request4340 when given a String4341 when user can read commits4342 returns plain text4343 when user cannot read commits4344 returns plain text4345 when not given anything4346 returns empty string4347 notification_reason_text4348 reason_code: "own_activity", reason_text: " of your activity "4349 is expected to start with "You're receiving this email because"4350 is expected to include " of your activity "4351 is expected to end with "on localhost."4352 reason_code: "assigned", reason_text: " you have been assigned an item "4353 is expected to start with "You're receiving this email because"4354 is expected to include " you have been assigned an item "4355 is expected to end with "on localhost."4356 reason_code: "mentioned", reason_text: " you have been mentioned "4357 is expected to start with "You're receiving this email because"4358 is expected to include " you have been mentioned "4359 is expected to end with "on localhost."4360 reason_code: "", reason_text: " of your account "4361 is expected to start with "You're receiving this email because"4362 is expected to include " of your account "4363 is expected to end with "on localhost."4364 reason_code: nil, reason_text: " of your account "4365 is expected to start with "You're receiving this email because"4366 is expected to include " of your account "4367 is expected to end with "on localhost."4368 sanitize_name4369 when name contains a valid URL string4370 returns name with `.` replaced with `_` to prevent mail clients from auto-linking URLs4371 returns name as it is when it does not contain a URL4372 #say_hi4373 returns the greeting message for the given user4374 #say_hello4375 returns the greeting message for the given user4376 #two_factor_authentication_disabled_text4377 returns the message that 2FA is disabled4378 #re_enable_two_factor_authentication_text4379 format is html4380 returns HTML4381 format is not specified4382 returns text4383 #admin_changed_password_text4384 format is html4385 returns HTML4386 format is not specified4387 returns text4388 #contact_your_administrator_text4389 returns the message to contact the administrator4390 password_reset_token_valid_time4391 when time limit is less than 2 hours4392 displays the time in hours using a singular unit4393 when time limit is 2 or more hours4394 displays the time in hours using a plural unit4395 when time limit contains fractions of an hour4396 rounds down to the nearest hour4397 when time limit is 24 or more hours4398 displays the time in days using a singular unit4399 when time limit is 2 or more days4400 displays the time in days using a plural unit4401 when time limit contains fractions of a day4402 rounds down to the nearest day4403 #header_logo4404 there is a brand item with a logo4405 returns the brand header logo4406 there is a brand item without a logo4407 returns the default header logo4408 there is no brand item4409 returns the default header logo4410 #create_list_id_string4411 full_path: "01234", list_id_path: "01234"4412 ellipcizes different variants4413 full_path: "5/0123", list_id_path: "012.."4414 ellipcizes different variants4415 full_path: "45/012", list_id_path: "012.."4416 ellipcizes different variants4417 full_path: "012", list_id_path: "012"4418 ellipcizes different variants4419 full_path: "23/01", list_id_path: "01.23"4420 ellipcizes different variants4421 full_path: "2/01", list_id_path: "01.2"4422 ellipcizes different variants4423 full_path: "234/01", list_id_path: "01.."4424 ellipcizes different variants4425 full_path: "4/2/0", list_id_path: "0.2.4"4426 ellipcizes different variants4427 full_path: "45/2/0", list_id_path: "0.2.."4428 ellipcizes different variants4429 full_path: "5/23/0", list_id_path: "0.."4430 ellipcizes different variants4431 full_path: "0-2/5", list_id_path: "5.0-2"4432 ellipcizes different variants4433 full_path: "0_2/5", list_id_path: "5.0-2"4434 ellipcizes different variants4435 full_path: "0.2/5", list_id_path: "5.0-2"4436 ellipcizes different variants4437 Create realistic List-Id identifier4438 full_path: "gitlab-org/gitlab-ce", list_id_path: "gitlab-ce.gitlab-org"4439 produces the right List-Id4440 full_path: "project-name/subproject_name/my.project", list_id_path: "my-project.subproject-name.project-name"4441 produces the right List-Id4442 header and footer messages4443 when email_header_and_footer_enabled is enabled4444 returns header and footer messages4445 when header and footer messages are empty4446 returns nil4447 when header and footer messages are nil4448 returns nil4449 when email_header_and_footer_enabled is disabled4450 returns header and footer messages4451 #change_reviewer_notification_text4452 to new reviewers only4453 with no html tag4454 returns the expected output4455 with <strong> tag4456 returns the expected output4457 from previous reviewers to new reviewers4458 with no html tag4459 returns the expected output4460 with <strong> tag4461 returns the expected output4462 from previous reviewers to no reviewers4463 with no html tag4464 returns the expected output4465 with <strong> tag4466 returns the expected output4467 with a <script> tag in user's name4468 escapes the html tag4469 with url in user's name4470 sanitizes user's name4471ExternalDiffUploader4472 behaves like builds correct paths4473 #store_dir4474 behaves like matches the method pattern4475 is expected to match /merge_request_diffs\/mr-\d+/4476 #cache_dir4477 behaves like matches the method pattern4478 is expected to match /\/external-diffs\/tmp\/cache/4479 #work_dir4480 behaves like matches the method pattern4481 is expected to match /\/external-diffs\/tmp\/work/4482 #upload_path4483 behaves like matches the method pattern4484 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4485 #relative_path4486 is relative (PENDING: Path not set, skipping.)4487 .absolute_path4488 behaves like matches the method pattern4489 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4490 .base_dir4491 behaves like matches the method pattern4492 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4493 path traversal exploits4494 throws an exception4495 object store is REMOTE4496 behaves like builds correct paths4497 #store_dir4498 behaves like matches the method pattern4499 is expected to match /merge_request_diffs\/mr-\d+/4500 #cache_dir4501 behaves like matches the method pattern4502 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4503 #work_dir4504 behaves like matches the method pattern4505 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4506 #upload_path4507 behaves like matches the method pattern4508 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4509 #relative_path4510 is relative (PENDING: Path not set, skipping.)4511 .absolute_path4512 behaves like matches the method pattern4513 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4514 .base_dir4515 behaves like matches the method pattern4516 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4517 path traversal exploits4518 throws an exception4519 migration to object storage4520 with object storage disabled4521 is skipped4522 with object storage enabled4523 is scheduled to run after creation4524 remote file4525 with object storage enabled4526 can store file remotely4527Projects::UpdateRepositoryStorageService4528 #execute4529 without wiki and design repository4530 when the move succeeds4531 moves the repository to the new storage and unmarks the repository as read-only4532 when the filesystems are the same4533 updates the database without trying to move the repostory4534 when the move fails4535 unmarks the repository as read-only without updating the repository storage4536 when the cleanup fails4537 sets the correct state4538 when the checksum does not match4539 unmarks the repository as read-only without updating the repository storage4540 when a object pool was joined4541 leaves the pool4542 when the repository move is finished4543 is idempotent4544 when the repository move is failed4545 is idempotent4546 project with no repositories4547 updates the database4548 with wiki repository4549 when the move succeeds4550 moves the project and its wiki repository to the new storage and unmarks the repository as read-only4551 :repack_after_shard_migration feature flag disabled4552 does not enqueue a GC run4553 :repack_after_shard_migration feature flag enabled4554 does not enqueue a GC run if housekeeping is disabled4555 enqueues a GC run4556 when the filesystems are the same4557 updates the database without trying to move the repostory4558 when the move of the wiki repository fails4559 unmarks the repository as read-only without updating the repository storage4560 when the cleanup of the wiki repository fails4561 sets the correct state4562 when the checksum of the wiki repository does not match4563 unmarks the repository as read-only without updating the repository storage4564 with design repository4565 when the move succeeds4566 moves the project and its design repository to the new storage and unmarks the repository as read-only4567 :repack_after_shard_migration feature flag disabled4568 does not enqueue a GC run4569 :repack_after_shard_migration feature flag enabled4570 does not enqueue a GC run if housekeeping is disabled4571 enqueues a GC run4572 when the filesystems are the same4573 updates the database without trying to move the repostory4574 when the move of the design repository fails4575 unmarks the repository as read-only without updating the repository storage4576 when the cleanup of the design repository fails4577 sets the correct state4578 when the checksum of the design repository does not match4579 unmarks the repository as read-only without updating the repository storage4580UsersHelper4581 display_public_email?4582 is expected to equal true4583 when user public email is blank4584 is expected to equal false4585 #user_link4586 links to the user's profile4587 has the user's email as title4588 #profile_tabs4589 with public profile4590 includes all the expected tabs4591 with private profile4592 is empty4593 #user_internal_regex_data4594 user_default_external: false, user_default_internal_regex: nil, result: {:user_internal_regex_pattern=>nil, :user_internal_regex_options=>nil}4595 is expected to eq {:user_internal_regex_options=>nil, :user_internal_regex_pattern=>nil}4596 user_default_external: false, user_default_internal_regex: "", result: {:user_internal_regex_pattern=>nil, :user_internal_regex_options=>nil}4597 is expected to eq {:user_internal_regex_options=>nil, :user_internal_regex_pattern=>nil}4598 user_default_external: false, user_default_internal_regex: "mockRegexPattern", result: {:user_internal_regex_pattern=>nil, :user_internal_regex_options=>nil}4599 is expected to eq {:user_internal_regex_options=>nil, :user_internal_regex_pattern=>nil}4600 user_default_external: true, user_default_internal_regex: nil, result: {:user_internal_regex_pattern=>nil, :user_internal_regex_options=>nil}4601 is expected to eq {:user_internal_regex_options=>nil, :user_internal_regex_pattern=>nil}4602 user_default_external: true, user_default_internal_regex: "", result: {:user_internal_regex_pattern=>nil, :user_internal_regex_options=>nil}4603 is expected to eq {:user_internal_regex_options=>nil, :user_internal_regex_pattern=>nil}4604 user_default_external: true, user_default_internal_regex: "mockRegexPattern", result: {:user_internal_regex_pattern=>"mockRegexPattern", :user_internal_regex_options=>"i"}4605 is expected to eq {:user_internal_regex_options=>"i", :user_internal_regex_pattern=>"mockRegexPattern"}4606 #current_user_menu_items4607 includes all default items4608 includes the profile tab if the user can read themself4609 includes the settings tab if the user can update themself4610 when terms are enforced4611 hides the profile and the settings tab4612 #user_badges_in_admin_section4613 with a blocked user4614 returns the blocked badge4615 with a pending approval user4616 returns the pending approval badge4617 with a banned user4618 returns the banned badge4619 with an admin user4620 returns the admin badge4621 with an external user4622 returns the external badge4623 with the current user4624 returns the "It's You" badge4625 with an external blocked admin4626 returns the blocked, admin and external badges4627 with a locked user4628 returns the "Locked" badge4629 get badges for normal user4630 returns no badges4631 #can_force_email_confirmation?4632 for a user that is already confirmed4633 is expected to eq false4634 for a user that is not confirmed4635 is expected to eq true4636 #work_information4637 when neither organization nor job_title are present4638 is expected to be nil4639 when user parameter is nil4640 is expected to be nil4641 without schema markup4642 when both job_title and organization are present4643 returns job title concatenated with organization4644 when only organization is present4645 returns organization4646 when only job_title is present4647 returns job title4648 with schema markup4649 when both job_title and organization are present4650 returns job title concatenated with organization4651 when only organization is present4652 returns organization4653 when only job_title is present4654 returns job title4655 #user_display_name4656 for a confirmed user4657 is expected to eq "Sidney Jones2565"4658 for an unconfirmed user4659 is expected to eq "Unconfirmed user"4660 when current user is an admin4661 is expected to eq "Sidney Jones2567"4662 when the current user is self4663 is expected to eq "Sidney Jones2569"4664 for a blocked user4665 is expected to eq "Blocked user"4666 #admin_users_data_attributes4667 users matches the serialized json4668 paths matches the schema4669 #confirm_user_data4670 sets `path` key correctly4671 sets `modal_attributes` key to valid json4672 when `user.unconfirmed_email` is set4673 sets `modal_attributes.messageHtml` correctly4674 when `user.unconfirmed_email` is not set4675 sets `modal_attributes.messageHtml` correctly4676 #admin_user_actions_data_attributes4677 user matches the serialized json4678 paths matches the schema4679Gitlab::AlertManagement::Payload::Prometheus4680 behaves like subclass has expected api4681 defines all public methods in the base class4682 #title4683 behaves like parsable alert payload field4684 behaves like parsable alert payload field with fallback4685 without payload4686 is expected to eq nil4687 with annotations/title4688 is expected to eq "some value"4689 with annotations/summary4690 is expected to eq "some value"4691 with labels/alertname4692 is expected to eq "some value"4693 #description4694 behaves like parsable alert payload field4695 behaves like parsable alert payload field with fallback4696 without payload4697 is expected to eq nil4698 with annotations/description4699 is expected to eq "some value"4700 #annotations4701 behaves like parsable alert payload field4702 behaves like parsable alert payload field with fallback4703 without payload4704 is expected to eq nil4705 with annotations4706 is expected to eq "some value"4707 #status4708 behaves like parsable alert payload field4709 behaves like parsable alert payload field with fallback4710 without payload4711 is expected to eq nil4712 with status4713 is expected to eq "some value"4714 #starts_at4715 without payload4716 is expected to eq 2022-02-04 17:18:38.000000000 +00004717 with startsAt4718 is expected to eq 2022-02-04 17:08:38.000000000 +00004719 #ends_at4720 without payload4721 is expected to be nil4722 with endsAt4723 is expected to eq 2022-02-04 17:18:38.000000000 +00004724 #generator_url4725 behaves like parsable alert payload field4726 behaves like parsable alert payload field with fallback4727 without payload4728 is expected to eq nil4729 with generatorURL4730 is expected to eq "some value"4731 #runbook4732 behaves like parsable alert payload field4733 behaves like parsable alert payload field with fallback4734 without payload4735 is expected to eq nil4736 with annotations/runbook4737 is expected to eq "some value"4738 #alert_markdown4739 behaves like parsable alert payload field4740 behaves like parsable alert payload field with fallback4741 without payload4742 is expected to eq nil4743 with annotations/gitlab_incident_markdown4744 is expected to eq "some value"4745 #environment_name4746 behaves like parsable alert payload field4747 behaves like parsable alert payload field with fallback4748 without payload4749 is expected to eq nil4750 with labels/gitlab_environment_name4751 is expected to eq "some value"4752 #gitlab_y_label4753 behaves like parsable alert payload field4754 behaves like parsable alert payload field with fallback4755 without payload4756 is expected to eq nil4757 with annotations/gitlab_y_label4758 is expected to eq "some value"4759 with annotations/title4760 is expected to eq "some value"4761 with annotations/summary4762 is expected to eq "some value"4763 with labels/alertname4764 is expected to eq "some value"4765 #monitoring_tool4766 is expected to eq "Prometheus"4767 #full_query4768 generator_url: nil, expected_query: nil4769 is expected to eq nil4770 generator_url: "http://localhost", expected_query: nil4771 is expected to eq nil4772 generator_url: "invalid url", expected_query: nil4773 is expected to eq nil4774 generator_url: "http://localhost:9090/graph?g1.expr=vector%281%29", expected_query: nil4775 is expected to eq nil4776 generator_url: "http://localhost:9090/graph?g0.expr=vector%281%29", expected_query: "vector(1)"4777 is expected to eq "vector(1)"4778 #environment4779 is expected to be nil4780 with environment_name4781 is expected to be nil4782 with matching environment4783 is expected to eq #<Environment id: 2, project_id: 1133, name: "production", created_at: "2022-02-04 17:18:39.482315089... state: "available", slug: "production", auto_stop_at: nil, auto_delete_at: nil, tier: "production">4784 #gitlab_fingerprint4785 returns a fingerprint4786 #metrics_dashboard_url4787 is expected to eq "http://localhost/namespace922/project1156/-/environments/3/metrics_dashboard?embed_json=%7B%22panel_...0%22%7D%5D%7D%5D%7D%5D%7D&embedded=true&end=2018-03-12T09%3A36%3A00Z&start=2018-03-12T08%3A36%3A00Z"4788 without environment4789 is expected to be nil4790 without full query4791 is expected to be nil4792 without title4793 is expected to be nil4794 #has_required_attributes?4795 is expected to be truthy4796 without project4797 is expected to be falsey4798 without title4799 is expected to be falsey4800 without startsAt4801 is expected to be falsey4802 without payload4803 is expected to be falsey4804 #severity4805 when set4806 payload_severity: "critical", expected_severity: :critical4807 is expected to eq :critical4808 payload_severity: "high", expected_severity: :high4809 is expected to eq :high4810 payload_severity: "medium", expected_severity: :medium4811 is expected to eq :medium4812 payload_severity: "low", expected_severity: :low4813 is expected to eq :low4814 payload_severity: "info", expected_severity: :info4815 is expected to eq :info4816 payload_severity: "s1", expected_severity: :critical4817 is expected to eq :critical4818 payload_severity: "s2", expected_severity: :high4819 is expected to eq :high4820 payload_severity: "s3", expected_severity: :medium4821 is expected to eq :medium4822 payload_severity: "s4", expected_severity: :low4823 is expected to eq :low4824 payload_severity: "s5", expected_severity: :info4825 is expected to eq :info4826 payload_severity: "p1", expected_severity: :critical4827 is expected to eq :critical4828 payload_severity: "p2", expected_severity: :high4829 is expected to eq :high4830 payload_severity: "p3", expected_severity: :medium4831 is expected to eq :medium4832 payload_severity: "p4", expected_severity: :low4833 is expected to eq :low4834 payload_severity: "p5", expected_severity: :info4835 is expected to eq :info4836 payload_severity: "CRITICAL", expected_severity: :critical4837 is expected to eq :critical4838 payload_severity: "cRiTiCaL", expected_severity: :critical4839 is expected to eq :critical4840 payload_severity: "S1", expected_severity: :critical4841 is expected to eq :critical4842 payload_severity: "unmapped", expected_severity: nil4843 is expected to eq nil4844 payload_severity: 1, expected_severity: nil4845 is expected to eq nil4846 payload_severity: nil, expected_severity: nil4847 is expected to eq nil4848 payload_severity: "debug", expected_severity: :info4849 is expected to eq :info4850 payload_severity: "information", expected_severity: :info4851 is expected to eq :info4852 payload_severity: "notice", expected_severity: :info4853 is expected to eq :info4854 payload_severity: "warn", expected_severity: :low4855 is expected to eq :low4856 payload_severity: "warning", expected_severity: :low4857 is expected to eq :low4858 payload_severity: "minor", expected_severity: :low4859 is expected to eq :low4860 payload_severity: "error", expected_severity: :medium4861 is expected to eq :medium4862 payload_severity: "major", expected_severity: :high4863 is expected to eq :high4864 payload_severity: "emergency", expected_severity: :critical4865 is expected to eq :critical4866 payload_severity: "fatal", expected_severity: :critical4867 is expected to eq :critical4868 payload_severity: "alert", expected_severity: :medium4869 is expected to eq :medium4870 payload_severity: "page", expected_severity: :high4871 is expected to eq :high4872 without key4873 is expected to be nil4874Gitlab::Database::BatchCount4875 #batch_count4876 counts table4877 counts with :id field4878 counts with "id" field4879 counts with table.id field4880 counts with Arel column4881 counts table with batch_size 50K4882 will not count table with a batch size less than allowed4883 counts with a small edge case batch_sizes than result4884 counts with a start and finish4885 stops counting when finish value is reached4886 defaults the batch size to 1000004887 does not use BETWEEN to define the range4888 behaves like when a transaction is open4889 raises an error4890 behaves like when batch fetch query is canceled4891 reduces batch size by half and retry fetch4892 when all retries fail4893 logs failing query4894 disallowed_configurations4895 returns fallback if start is bigger than finish4896 returns fallback if loops more than allowed4897 returns fallback if batch size is less than min required4898 raises an error if distinct count is requested4899 when a relation is grouped4900 count by default column4901 counts grouped records4902 #batch_distinct_count4903 counts with column field4904 counts with "id" field4905 counts with table.column field4906 counts with Arel column4907 counts with :column field with batch_size of 50K4908 will not count table with a batch size less than allowed4909 counts with a small edge case batch_sizes than result4910 counts with a start and finish4911 stops counting when finish value is reached4912 counts with User min and max as start and finish4913 defaults the batch size to 100004914 behaves like when a transaction is open4915 raises an error4916 disallowed configurations4917 returns fallback if start is bigger than finish4918 returns fallback if loops more than allowed4919 returns fallback if batch size is less than min required4920 will raise an error if distinct count with the :id column is requested4921 when a relation is grouped4922 distinct count by non-unique column4923 counts grouped records4924 behaves like when batch fetch query is canceled4925 reduces batch size by half and retry fetch4926 when all retries fail4927 logs failing query4928 #batch_sum4929 returns the sum of values in the given column4930 works when given an Arel column4931 works with a batch size of 50K4932 works with start and finish provided4933 returns the same result regardless of batch size4934 defaults the batch size to 10004935 behaves like when a transaction is open4936 raises an error4937 behaves like disallowed configurations4938 returns fallback if start is bigger than finish4939 returns fallback if loops more than allowed4940 returns fallback if batch size is less than min required4941 behaves like when batch fetch query is canceled4942 reduces batch size by half and retry fetch4943 when all retries fail4944 logs failing query4945MergeRequests::FfMergeService4946 #execute4947 valid params4948 does not create merge commit4949 keeps the merge request valid4950 updates the merge request to merged4951 sends email to user2 about merge of new merge_request4952 creates resource event about merge_request merge4953 does not update squash_commit_sha if it is not a squash4954 updates squash_commit_sha if it is a squash4955 error handling4956 logs and saves error if there is an exception4957 logs and saves error if there is an PreReceiveError exception4958 does not update squash_commit_sha if squash merge is not successful4959Gitlab::Ci::Pipeline::Expression::Lexeme::NotEquals4960 .build4961 with non-evaluable operands4962 creates a new instance of the token4963 with evaluable operands4964 creates a new instance of the token4965 .type4966 is an operator4967 .precedence4968 has a precedence4969 #evaluate4970 when left and right are equal4971 left_value: "string", right_value: "string"4972 is expected to eq false4973 left_value: 1, right_value: 14974 is expected to eq false4975 left_value: "", right_value: ""4976 is expected to eq false4977 left_value: nil, right_value: nil4978 is expected to eq false4979 when left and right are not equal4980 left_value: "one string", right_value: "two string"4981 is expected to eq true4982 left_value: "one string", right_value: 14983 is expected to eq true4984 left_value: "one string", right_value: 24985 is expected to eq true4986 left_value: "one string", right_value: ""4987 is expected to eq true4988 left_value: "one string", right_value: nil4989 is expected to eq true4990 left_value: "one string", right_value: false4991 is expected to eq true4992 left_value: "one string", right_value: true4993 is expected to eq true4994 left_value: "two string", right_value: "one string"4995 is expected to eq true4996 left_value: "two string", right_value: 14997 is expected to eq true4998 left_value: "two string", right_value: 24999 is expected to eq true5000 left_value: "two string", right_value: ""5001 is expected to eq true5002 left_value: "two string", right_value: nil5003 is expected to eq true5004 left_value: "two string", right_value: false5005 is expected to eq true5006 left_value: "two string", right_value: true5007 is expected to eq true5008 left_value: 1, right_value: "one string"5009 is expected to eq true5010 left_value: 1, right_value: "two string"5011 is expected to eq true5012 left_value: 1, right_value: 25013 is expected to eq true5014 left_value: 1, right_value: ""5015 is expected to eq true5016 left_value: 1, right_value: nil5017 is expected to eq true5018 left_value: 1, right_value: false5019 is expected to eq true5020 left_value: 1, right_value: true5021 is expected to eq true5022 left_value: 2, right_value: "one string"5023 is expected to eq true5024 left_value: 2, right_value: "two string"5025 is expected to eq true5026 left_value: 2, right_value: 15027 is expected to eq true5028 left_value: 2, right_value: ""5029 is expected to eq true5030 left_value: 2, right_value: nil5031 is expected to eq true5032 left_value: 2, right_value: false5033 is expected to eq true5034 left_value: 2, right_value: true5035 is expected to eq true5036 left_value: "", right_value: "one string"5037 is expected to eq true5038 left_value: "", right_value: "two string"5039 is expected to eq true5040 left_value: "", right_value: 15041 is expected to eq true5042 left_value: "", right_value: 25043 is expected to eq true5044 left_value: "", right_value: nil5045 is expected to eq true5046 left_value: "", right_value: false5047 is expected to eq true5048 left_value: "", right_value: true5049 is expected to eq true5050 left_value: nil, right_value: "one string"5051 is expected to eq true5052 left_value: nil, right_value: "two string"5053 is expected to eq true5054 left_value: nil, right_value: 15055 is expected to eq true5056 left_value: nil, right_value: 25057 is expected to eq true5058 left_value: nil, right_value: ""5059 is expected to eq true5060 left_value: nil, right_value: false5061 is expected to eq true5062 left_value: nil, right_value: true5063 is expected to eq true5064 left_value: false, right_value: "one string"5065 is expected to eq true5066 left_value: false, right_value: "two string"5067 is expected to eq true5068 left_value: false, right_value: 15069 is expected to eq true5070 left_value: false, right_value: 25071 is expected to eq true5072 left_value: false, right_value: ""5073 is expected to eq true5074 left_value: false, right_value: nil5075 is expected to eq true5076 left_value: false, right_value: true5077 is expected to eq true5078 left_value: true, right_value: "one string"5079 is expected to eq true5080 left_value: true, right_value: "two string"5081 is expected to eq true5082 left_value: true, right_value: 15083 is expected to eq true5084 left_value: true, right_value: 25085 is expected to eq true5086 left_value: true, right_value: ""5087 is expected to eq true5088 left_value: true, right_value: nil5089 is expected to eq true5090 left_value: true, right_value: false5091 is expected to eq true5092npm.gitlab-ci.yml5093 the created pipeline5094 on default branch5095 when package.json has been changed5096 behaves like publish job created5097 creates a pipeline with a single job: publish5098 when package.json does not exist or has not been changed5099 behaves like no pipeline created5100 does not create a pipeline because the only job (publish) is not created5101 when the branch name is v1.0.05102 behaves like publish job created5103 creates a pipeline with a single job: publish5104 when the tag name is v1.0.05105 behaves like publish job created5106 creates a pipeline with a single job: publish5107 when the branch name is v2.1.0-alpha5108 behaves like publish job created5109 creates a pipeline with a single job: publish5110 when the tag name is v2.1.0-alpha5111 behaves like publish job created5112 creates a pipeline with a single job: publish5113 when the branch name is patch-15114 behaves like no pipeline created5115 does not create a pipeline because the only job (publish) is not created5116 when the tag name is patch-15117 behaves like no pipeline created5118 does not create a pipeline because the only job (publish) is not created5119 when the branch name is my-feature-branch5120 behaves like no pipeline created5121 does not create a pipeline because the only job (publish) is not created5122 when the tag name is my-feature-branch5123 behaves like no pipeline created5124 does not create a pipeline because the only job (publish) is not created5125 when the branch name is v15126 behaves like no pipeline created5127 does not create a pipeline because the only job (publish) is not created5128 when the tag name is v15129 behaves like no pipeline created5130 does not create a pipeline because the only job (publish) is not created5131 when the branch name is v1.05132 behaves like no pipeline created5133 does not create a pipeline because the only job (publish) is not created5134 when the tag name is v1.05135 behaves like no pipeline created5136 does not create a pipeline because the only job (publish) is not created5137 when the branch name is 2.1.05138 behaves like no pipeline created5139 does not create a pipeline because the only job (publish) is not created5140 when the tag name is 2.1.05141 behaves like no pipeline created5142 does not create a pipeline because the only job (publish) is not created5143Ci::PendingBuild5144 associations5145 is expected to belong to project required: false5146 is expected to belong to build required: false5147 is expected to belong to namespace required: false5148 scopes5149 .with_instance_runners5150 when pending builds cannot be picked up by runner5151 returns an empty collection of pending builds5152 when pending builds can be picked up by runner5153 returns matching pending builds5154 .for_tags5155 when tag_ids match pending builds5156 returns matching pending builds5157 when tag_ids does not match pending builds5158 returns matching pending builds without tags5159 when tag_ids is not provided5160 with a nil value5161 returns matching pending builds without tags5162 with an empty array5163 returns matching pending builds without tags5164 .upsert_from_build!5165 another pending entry does not exist5166 creates a new pending entry5167 when another queuing entry exists for given build5168 returns a build id as a result5169 when project does not have shared runners enabled5170 sets instance_runners_enabled to false5171 when project has shared runner5172 when ci_pending_builds_maintain_denormalized_data is enabled5173 sets instance_runners_enabled to true5174 when project is about to be deleted5175 sets instance_runners_enabled to false5176 when builds are disabled5177 sets instance_runners_enabled to false5178 when ci_pending_builds_maintain_denormalized_data is disabled5179 sets instance_runners_enabled to false5180 when build has tags5181 when ci_pending_builds_maintain_denormalized_data is enabled5182 sets tag_ids5183 when ci_pending_builds_maintain_denormalized_data is disabled5184 does not set tag_ids5185 when a build project is nested in a subgroup5186 when build can be picked by a group runner5187 denormalizes namespace traversal ids5188 when build can not be picked by a group runner5189 creates an empty namespace traversal ids array5190 behaves like cleanup by a loose foreign key5191 cleans up (delete or nullify) the model5192 behaves like cleanup by a loose foreign key5193 cleans up (delete or nullify) the model5194Clusters::Integrations::Prometheus5195 associations5196 is expected to belong to cluster class_name => Clusters::Cluster required: false5197 validations5198 is expected to validate that :cluster cannot be empty/falsy5199 is expected not to allow :enabled to be ‹nil›5200 after_destroy5201 deactivates prometheus_integration5202 after_save5203 when no change to enabled status5204 does not touch project integrations5205 when enabling5206 deactivates prometheus_integration5207 when disabling5208 activates prometheus_integration5209 #prometheus_client5210 cluster is nil5211 returns nil5212 cluster doesn't have kubeclient5213 returns nil5214 cluster has kubeclient5215 creates proxy prometheus_client5216 merges proxy_url, options and headers from kube client with prometheus_client options5217 when cluster is not reachable5218 behaves like exception caught for prometheus client5219 returns nil5220 when there is a socket error while contacting cluster5221 behaves like exception caught for prometheus client5222 returns nil5223 behaves like exception caught for prometheus client5224 returns nil5225 when the network is unreachable5226 behaves like exception caught for prometheus client5227 returns nil5228 #configured?5229 when a kubenetes client is present5230 is expected to be truthy5231 when it is disabled5232 is expected to be falsey5233 when the kubernetes URL is blocked5234 is expected to be falsey5235 when a kubenetes client is not present5236 is expected to be falsy5237DependencyProxy::ImageTtlGroupPolicies::UpdateService5238 #execute5239 with existing dependency proxy image ttl policy5240 user_role: :maintainer, shared_examples_name: "updating the dependency proxy image ttl policy"5241 behaves like updating the dependency proxy image ttl policy5242 behaves like updating the dependency proxy image ttl policy attributes5243 updates the dependency proxy image ttl policy5244 behaves like not creating the dependency proxy image ttl policy5245 doesn't create the dependency proxy image ttl policy5246 behaves like returning a success5247 returns a success5248 with invalid params5249 doesn't update5250 behaves like not creating the dependency proxy image ttl policy5251 doesn't create the dependency proxy image ttl policy5252 behaves like returning an error5253 returns an error5254 user_role: :developer, shared_examples_name: "updating the dependency proxy image ttl policy"5255 behaves like updating the dependency proxy image ttl policy5256 behaves like updating the dependency proxy image ttl policy attributes5257 updates the dependency proxy image ttl policy5258 behaves like not creating the dependency proxy image ttl policy5259 doesn't create the dependency proxy image ttl policy5260 behaves like returning a success5261 returns a success5262 with invalid params5263 doesn't update5264 behaves like not creating the dependency proxy image ttl policy5265 doesn't create the dependency proxy image ttl policy5266 behaves like returning an error5267 returns an error5268 user_role: :reporter, shared_examples_name: "denying access to dependency proxy image ttl policy"5269 behaves like denying access to dependency proxy image ttl policy5270 with existing dependency proxy image ttl policy5271 behaves like not creating the dependency proxy image ttl policy5272 doesn't create the dependency proxy image ttl policy5273 behaves like returning an error5274 returns an error5275 user_role: :guest, shared_examples_name: "denying access to dependency proxy image ttl policy"5276 behaves like denying access to dependency proxy image ttl policy5277 with existing dependency proxy image ttl policy5278 behaves like not creating the dependency proxy image ttl policy5279 doesn't create the dependency proxy image ttl policy5280 behaves like returning an error5281 returns an error5282 user_role: :anonymous, shared_examples_name: "denying access to dependency proxy image ttl policy"5283 behaves like denying access to dependency proxy image ttl policy5284 with existing dependency proxy image ttl policy5285 behaves like not creating the dependency proxy image ttl policy5286 doesn't create the dependency proxy image ttl policy5287 behaves like returning an error5288 returns an error5289 without existing dependency proxy image ttl policy5290 user_role: :maintainer, shared_examples_name: "creating the dependency proxy image ttl policy"5291 behaves like creating the dependency proxy image ttl policy5292 creates a new package setting5293 saves the settings5294 behaves like returning a success5295 returns a success5296 user_role: :developer, shared_examples_name: "creating the dependency proxy image ttl policy"5297 behaves like creating the dependency proxy image ttl policy5298 creates a new package setting5299 saves the settings5300 behaves like returning a success5301 returns a success5302 user_role: :reporter, shared_examples_name: "denying access to dependency proxy image ttl policy"5303 behaves like denying access to dependency proxy image ttl policy5304 with existing dependency proxy image ttl policy5305 behaves like not creating the dependency proxy image ttl policy5306 doesn't create the dependency proxy image ttl policy5307 behaves like returning an error5308 returns an error5309 user_role: :guest, shared_examples_name: "denying access to dependency proxy image ttl policy"5310 behaves like denying access to dependency proxy image ttl policy5311 with existing dependency proxy image ttl policy5312 behaves like not creating the dependency proxy image ttl policy5313 doesn't create the dependency proxy image ttl policy5314 behaves like returning an error5315 returns an error5316 user_role: :anonymous, shared_examples_name: "denying access to dependency proxy image ttl policy"5317 behaves like denying access to dependency proxy image ttl policy5318 with existing dependency proxy image ttl policy5319 behaves like not creating the dependency proxy image ttl policy5320 doesn't create the dependency proxy image ttl policy5321 behaves like returning an error5322 returns an error5323 when the policy is not found5324 behaves like returning an error5325 returns an error5326Deployments::LinkMergeRequestsService5327 #execute5328 when the deployment is for a review environment5329 does nothing5330 when the deployment is for one of the production environments5331 links merge requests5332 when the deployment failed5333 does nothing5334 when there is a previous deployment5335 links all merge requests merged since the previous deployment5336 when there are no previous deployments5337 links all merged merge requests5338 #link_merge_requests_for_range5339 links merge requests5340 links picked merge requests5341 doesn't link the same merge_request twice5342 #link_all_merged_merge_requests5343 links all merged merge requests targeting the deployed branch5344Gitlab::Ci::Config::External::File::Artifact5345 #matching?5346 when params contain artifact location5347 returns true5348 when params does not contain artifact location5349 returns false5350 #valid?5351 when used in non child pipeline context5352 behaves like is invalid5353 is not valid5354 sets the expected error5355 when used in child pipeline context5356 when job is not provided5357 behaves like is invalid5358 is not valid5359 sets the expected error5360 when job is provided5361 when job does not exist in the parent pipeline5362 behaves like is invalid5363 is not valid5364 sets the expected error5365 when job exists in the parent pipeline5366 when job does not have artifacts5367 behaves like is invalid5368 is not valid5369 sets the expected error5370 when job has archive artifacts5371 behaves like is invalid5372 is not valid5373 sets the expected error5374 when job has artifacts exceeding the max allowed size5375 behaves like is invalid5376 is not valid5377 sets the expected error5378 when job has artifacts metadata5379 behaves like is invalid5380 is not valid5381 sets the expected error5382 when file is found in metadata5383 when file is empty5384 behaves like is invalid5385 is not valid5386 sets the expected error5387 when file is not empty5388 is valid5389 propagates parent_pipeline to nested includes5390DeployKeyEntity5391 does not return an owner payload with_owner option not passed in5392 returns deploy keys with projects a user can read5393 is expected to eq {:almost_orphaned=>false, :can_edit=>false, :created_at=>2022-02-04 17:20:13.237945930 +0000, :deploy...", :id=>32, :title=>"My title 647", :updated_at=>2022-02-04 17:20:13.237945930 +0000, :user_id=>nil}5394 user is an admin5395 when admin mode is enabled5396 is expected to include {:can_edit => true}5397 when admin mode is disabled5398 is expected not to include {:can_edit => true}5399 user is a project maintainer5400 project deploy key5401 is expected to include {:can_edit => true}5402 public deploy key5403 is expected to include {:can_edit => true}5404 with_owner option5405 does not return an owner payload when it is set to false5406 when with_owner is set to true5407 returns an owner payload5408 does not return an owner if current_user cannot read the owner5409Clusters::Integrations::PrometheusHealthCheckService#execute5410 when cluster is not project_type5411 is expected to raise RuntimeError with "Invalid cluster type. Only project types are allowed."5412 when cluster is project_type5413 when prometheus not enabled5414 is expected to eq nil5415 does not send alert5416 when prometheus enabled5417 when newly unhealthy5418 sends an alert5419 stores the correct health of prometheus5420 when newly healthy5421 does not send alert5422 stores the correct health of prometheus5423 when continuously unhealthy5424 does not send alert5425 stores the correct health of prometheus5426 when continuously healthy5427 does not send alert5428 stores the correct health of prometheus5429 when first health check and healthy5430 does not send alert5431 stores the correct health of prometheus5432 when first health check and not healthy5433 sends an alert5434 stores the correct health of prometheus5435Gitlab::Database::Reflection5436 #username5437 when a username is set5438 returns the username5439 when a username is not set5440 returns the value of the USER environment variable5441 #database_name5442 returns the name of the database5443 #adapter_name5444 returns the database adapter name5445 #human_adapter_name5446 when the adapter is PostgreSQL5447 returns PostgreSQL5448 when the adapter is not PostgreSQL5449 returns Unknown5450 #postgresql?5451 when using PostgreSQL5452 returns true5453 when not using PostgreSQL5454 returns false5455 #db_read_only?5456 detects a read-only database5457 detects a read-only database5458 detects a read-write database5459 detects a read-write database5460 #db_read_write?5461 detects a read-only database5462 detects a read-only database5463 detects a read-write database5464 detects a read-write database5465 #version5466 memoizes the result5467 on postgresql5468 extracts the version number5469 #postgresql_minimum_supported_version?5470 returns false when using PostgreSQL 105471 returns false when using PostgreSQL 115472 returns true when using PostgreSQL 125473 #cached_column_exists?5474 only retrieves the data from the schema cache5475 #cached_table_exists?5476 only retrieves the data from the schema cache5477 returns false when database does not exist5478 #exists?5479 returns true if the database exists5480 returns false if the database doesn't exist5481 #system_id5482 returns the PostgreSQL system identifier5483 #flavor5484 re-raises exceptions not matching expected messages5485 recognizes Amazon Aurora PostgreSQL5486 recognizes PostgreSQL on Amazon RDS5487 recognizes CloudSQL for PostgreSQL5488 recognizes Azure Database for PostgreSQL - Flexible Server5489 recognizes Azure Database for PostgreSQL - Single Server5490 returns nil if can not recognize the flavor5491 #config5492 returns a HashWithIndifferentAccess5493 returns a default pool size5494 does not cache its results5495Gitlab::ImportExport::MergeRequestParser5496 has a source branch5497 has a target branch5498 fork merge request5499 parses a MR that has no source branch5500 parses a MR that is closed5501 parses a MR that is merged5502 when the merge request has diffs5503 when the diff is invalid5504 sets the diff to empty diff5505Banzai::Filter::SanitizationFilter5506 behaves like default allowlist5507 sanitizes tags that are not allowed5508 sanitizes tag attributes5509 sanitizes javascript in attributes5510 sanitizes mixed-cased javascript in attributes5511 allows whitelisted HTML tags from the user5512 sanitizes `class` attribute on any element5513 sanitizes `id` attribute on any element5514 custom allowlist5515 customizes the allowlist only once5516 customizes the allowlist only once for different instances5517 sanitizes `class` attribute from all elements5518 sanitizes `class` attribute from non-highlight spans5519 allows `text-align` property in `style` attribute on table elements5520 disallows other properties in `style` attribute on table elements5521 disallows `text-align` property in `style` attribute on other elements5522 allows `span` elements5523 allows `abbr` elements5524 disallows the `name` attribute globally, allows on `a`5525 allows `summary` elements5526 allows `details` elements5527 allows `rel=license` in links5528 allows `data-math-style` attribute on `code` and `pre` elements5529 allows the `data-sourcepos` attribute globally5530 behaves like XSS prevention5531 disallows protocol-based JS injection: simple, no spaces5532 disallows protocol-based JS injection: simple, spaces before5533 disallows protocol-based JS injection: simple, spaces after5534 disallows protocol-based JS injection: simple, spaces before and after5535 disallows protocol-based JS injection: preceding colon5536 disallows protocol-based JS injection: UTF-8 encoding5537 disallows protocol-based JS injection: long UTF-8 encoding5538 disallows protocol-based JS injection: long UTF-8 encoding without semicolons5539 disallows protocol-based JS injection: hex encoding5540 disallows protocol-based JS injection: long hex encoding5541 disallows protocol-based JS injection: hex encoding without semicolons5542 disallows protocol-based JS injection: null char5543 disallows protocol-based JS injection: invalid URL char5544 disallows protocol-based JS injection: Unicode5545 disallows protocol-based JS injection: spaces and entities5546 disallows protocol whitespace5547 disallows data links5548 disallows vbscript links5549 behaves like sanitize link5550 removes `rel` attribute from `a` elements5551 disallows invalid URIs5552 allows non-standard anchor schemes5553 allows relative links5554 footnotes5555 allows correct footnote id property on links5556 allows correct footnote id property on li element5557 removes invalid id for footnote links5558 removes invalid id for footnote li5559PagesDomainAcmeOrder5560 .expired5561 returns only expired orders5562 .find_by_domain_and_token5563 domain_name: "test.com", challenge_token: "righttoken", present: true5564 is expected to eq true5565 domain_name: "test.com", challenge_token: "wrongtoken", present: false5566 is expected to eq false5567 domain_name: "test.org", challenge_token: "righttoken", present: false5568 is expected to eq false5569 associations5570 is expected to belong to pages_domain required: false5571 validations5572 is expected to validate that :pages_domain cannot be empty/falsy5573 is expected to validate that :expires_at cannot be empty/falsy5574 is expected to validate that :url cannot be empty/falsy5575 is expected to validate that :challenge_token cannot be empty/falsy5576 is expected to validate that :challenge_file_content cannot be empty/falsy5577 is expected to validate that :private_key cannot be empty/falsy5578TabHelper5579 gl_tabs_nav5580 creates a tabs navigation5581 captures block output5582 adds custom class5583 gl_tab_link_to5584 creates a tab5585 creates a tab with block output5586 creates a tab with custom classes for enclosing list item without content block provided5587 creates a tab with custom classes for enclosing list item with content block provided5588 creates a tab with custom classes for anchor element5589 creates an active tab with item_active = true5590 when on the active page5591 creates an active tab5592 creates an inactive tab with item_active = false5593 nav_link5594 passes extra html options to the list element5595 with the content of the li5596 captures block output5597 controller_param: nil, action_param: nil, path_param: nil, active: false5598 is expected to eq false5599 controller_param: :foo, action_param: nil, path_param: nil, active: true5600 is expected to eq true5601 controller_param: :bar, action_param: nil, path_param: nil, active: false5602 is expected to eq false5603 controller_param: :bar, action_param: :foo, path_param: nil, active: false5604 is expected to eq false5605 controller_param: :foo, action_param: :bar, path_param: nil, active: false5606 is expected to eq false5607 controller_param: :foo, action_param: :foo, path_param: nil, active: true5608 is expected to eq true5609 controller_param: :bar, action_param: nil, path_param: "foo#foo", active: true5610 is expected to eq true5611 controller_param: :bar, action_param: nil, path_param: ["foo#foo", "bar#bar"], active: true5612 is expected to eq true5613 controller_param: :bar, action_param: :bar, path_param: ["foo#foo", "bar#bar"], active: true5614 is expected to eq true5615 controller_param: :foo, action_param: nil, path_param: "bar#foo", active: true5616 is expected to eq true5617 controller_param: :bar, action_param: nil, path_param: "bar#foo", active: false5618 is expected to eq false5619 controller_param: :foo, action_param: [:foo, :bar], path_param: "bar#foo", active: true5620 is expected to eq true5621 controller_param: :bar, action_param: :bar, path_param: "foo#foo", active: true5622 is expected to eq true5623 controller_param: :foo, action_param: :foo, path_param: "bar#foo", active: true5624 is expected to eq true5625 controller_param: :bar, action_param: :foo, path_param: "bar#foo", active: false5626 is expected to eq false5627 controller_param: :foo, action_param: :bar, path_param: "bar#foo", active: false5628 is expected to eq false5629 controller_param: [:foo, :bar], action_param: nil, path_param: nil, active: true5630 is expected to eq true5631 controller_param: [:foo, :bar], action_param: nil, path_param: "bar#foo", active: true5632 is expected to eq true5633 controller_param: [:foo, :bar], action_param: :foo, path_param: "bar#foo", active: true5634 is expected to eq true5635 controller_param: nil, action_param: :foo, path_param: nil, active: true5636 is expected to eq true5637 controller_param: nil, action_param: :bar, path_param: nil, active: false5638 is expected to eq false5639 controller_param: nil, action_param: nil, path_param: "foo#bar", active: false5640 is expected to eq false5641 controller_param: nil, action_param: nil, path_param: "foo#foo", active: true5642 is expected to eq true5643 controller_param: nil, action_param: :bar, path_param: ["foo#foo", "bar#bar"], active: true5644 is expected to eq true5645 controller_param: nil, action_param: :bar, path_param: "foo#foo", active: true5646 is expected to eq true5647 controller_param: nil, action_param: :foo, path_param: "bar#foo", active: true5648 is expected to eq true5649 controller_param: nil, action_param: [:foo, :bar], path_param: nil, active: true5650 is expected to eq true5651 controller_param: nil, action_param: [:foo, :bar], path_param: "bar#foo", active: true5652 is expected to eq true5653 controller_param: nil, action_param: :bar, path_param: "bar#foo", active: false5654 is expected to eq false5655 page: nil, excluded_page: nil, active: false5656 is expected to eq false5657 page: "_some_page_", excluded_page: nil, active: true5658 is expected to eq true5659 page: "_some_page_", excluded_page: "_excluded_page_", active: true5660 is expected to eq true5661 page: "_some_page_", excluded_page: "_some_page_", active: false5662 is expected to eq false5663 with namespace in path notation5664 controller_param: "foo/foo", action_param: nil, path_param: nil, active: false5665 is expected to eq false5666 controller_param: "bar/foo", action_param: nil, path_param: nil, active: true5667 is expected to eq true5668 controller_param: "foo/foo", action_param: :foo, path_param: nil, active: false5669 is expected to eq false5670 controller_param: "bar/foo", action_param: :bar, path_param: nil, active: false5671 is expected to eq false5672 controller_param: "bar/foo", action_param: :foo, path_param: nil, active: true5673 is expected to eq true5674 controller_param: nil, action_param: nil, path_param: "foo/foo#foo", active: false5675 is expected to eq false5676 controller_param: nil, action_param: nil, path_param: "bar/foo#foo", active: true5677 is expected to eq true5678 gl_tab_counter_badge5679 creates a tab counter badge5680 with extra classes5681 creates a tab counter badge with the correct class attribute5682 with data attributes5683 creates a tab counter badge with the data attributes5684Groups::AutocompleteService5685 #labels_as_hash5686 returns labels from own group and ancestor groups5687 #issues5688 returns issues in group and subgroups5689 returns only confidential issues if confidential_only is true5690 #merge_requests5691 returns merge requests in group and subgroups5692 #milestones5693 returns milestones from group5694 returns milestones from groups and subgroups5695 returns only milestones that user can read5696 when group is public5697 returns milestones from groups and subgroups5698Groups::OpenIssuesCountService5699 #relation_for_count5700 uses the IssuesFinder to scope issues5701 #count5702 when user is nil5703 behaves like counts public issues, does not count hidden or confidential5704 counts only public issues5705 uses PUBLIC_COUNT_WITHOUT_HIDDEN_KEY cache key5706 when user is provided5707 when user can read confidential issues5708 includes confidential issues and does not include hidden issues in count5709 uses TOTAL_COUNT_WITHOUT_HIDDEN_KEY cache key5710 when user cannot read confidential issues5711 behaves like counts public issues, does not count hidden or confidential5712 counts only public issues5713 uses PUBLIC_COUNT_WITHOUT_HIDDEN_KEY cache key5714 when user is an admin5715 when admin mode is enabled5716 includes confidential and hidden issues in count5717 uses TOTAL_COUNT_KEY cache key5718 when admin mode is disabled5719 behaves like counts public issues, does not count hidden or confidential5720 counts only public issues5721 uses PUBLIC_COUNT_WITHOUT_HIDDEN_KEY cache key5722 behaves like a counter caching service with threshold5723 when cache is empty5724 refreshes cache if value over threshold5725 does not refresh cache if value under threshold5726 when cached count is under the threshold value5727 does not refresh cache5728 when cached count is over the threshold value5729 does not refresh cache5730 #clear_all_cache_keys5731 calls `Rails.cache.delete` with the correct keys5732gitlab:packages:events namespace rake task5733 generate_unique5734 excludes guest events5735 includes `maven` scope5736 includes `npm` scope5737 includes `conan` scope5738 includes `nuget` scope5739 includes `pypi` scope5740 includes `composer` scope5741 includes `generic` scope5742 includes `golang` scope5743 includes `debian` scope5744 includes `rubygems` scope5745 includes `helm` scope5746 includes `terraform_module` scope5747 includes `container` scope5748 includes `tag` scope5749 includes `dependency_proxy` scope5750 excludes some event types5751 generate_counts5752 includes `maven` scope5753 includes `npm` scope5754 includes `conan` scope5755 includes `nuget` scope5756 includes `pypi` scope5757 includes `composer` scope5758 includes `generic` scope5759 includes `golang` scope5760 includes `debian` scope5761 includes `rubygems` scope5762 includes `helm` scope5763 includes `terraform_module` scope5764 includes `container` scope5765 includes `tag` scope5766 includes `dependency_proxy` scope5767 excludes some event types5768Banzai::ReferenceParser::IssueParser5769 #nodes_visible_to_user5770 when the link has a data-issue attribute5771 returns the nodes when the user can read the issue5772 returns an empty Array when the user can not read the issue5773 behaves like referenced feature visibility5774 when feature is disabled5775 does not create reference5776 when feature is enabled only for team members5777 does not create reference for non member5778 creates reference for member5779 when feature is enabled5780 creates reference5781 when the user cannot read cross project5782 returns the nodes when the user can read the issue5783 returns an empty Array when the user can not read the issue5784 when the issue is not cross project5785 does not check `can_read_reference` if the issue is not cross project5786 when the link does not have a data-issue attribute5787 returns an empty Array5788 #referenced_by5789 when the link has a data-issue attribute5790 using an existing issue ID5791 returns an Array of issues5792 returns an empty Array when the list of nodes is empty5793 when issue with given ID does not exist5794 returns an empty Array5795 #records_for_nodes5796 returns a Hash containing the issues for a list of nodes5797 when checking multiple issues on another project5798 behaves like no N+1 queries5799 avoids N+1 queries in #records_for_nodes5800 behaves like no project N+1 queries5801 avoids N+1 queries in #nodes_visible_to_user5802Atlassian::JiraConnect::Serializers::DeploymentEntity5803 when the deployment does not belong to any Jira issue5804 #issue_keys5805 is empty5806 #to_json5807 can encode the object5808 is invalid, since it has no issue keys5809 this is an external deployment5810 does not raise errors when serializing5811 returns an empty list of issue keys5812 environment type5813 env_name: "PRODUCTION", env_type: "production"5814 has the correct environment type5815 env_name: "prod", env_type: "production"5816 has the correct environment type5817 env_name: "prod-east-2", env_type: "production"5818 has the correct environment type5819 env_name: "us-prod-east", env_type: "production"5820 has the correct environment type5821 env_name: "fe-production", env_type: "production"5822 has the correct environment type5823 env_name: "test", env_type: "testing"5824 has the correct environment type5825 env_name: "qa-env-2", env_type: "testing"5826 has the correct environment type5827 env_name: "staging", env_type: "staging"5828 has the correct environment type5829 env_name: "pre-prod", env_type: "staging"5830 has the correct environment type5831 env_name: "blue-kit-stage", env_type: "staging"5832 has the correct environment type5833 env_name: "pre-prod", env_type: "staging"5834 has the correct environment type5835 env_name: "dev", env_type: "development"5836 has the correct environment type5837 env_name: "review/app", env_type: "development"5838 has the correct environment type5839 env_name: "something-else", env_type: "unmapped"5840 has the correct environment type5841 env_name: "store-produce", env_type: "unmapped"5842 has the correct environment type5843 env_name: "unproductive", env_type: "unmapped"5844 has the correct environment type5845 when the deployment can be linked to a Jira issue5846 because it belongs to an MR with a jira_branch5847 #issue_keys5848 is not empty5849 #to_json5850 is valid according to the deployment info schema5851 because it belongs to an MR with a jira_title5852 #issue_keys5853 is not empty5854 #to_json5855 is valid according to the deployment info schema5856Projects::LfsPointers::LfsDownloadLinkListService5857 #execute5858 retrieves each download link of every non existent lfs object5859 stores headers5860 when lfs objects size is larger than the batch size5861 when batch size5862 retreives them in batches5863 when request fails with PayloadTooLarge error5864 when the smaller batch eventually works5865 retreives them eventually and logs exceptions5866 when batch size cannot be any smaller5867 raises an error and logs exceptions5868 credentials5869 when the download link and the lfs_endpoint have the same host5870 when lfs_endpoint has credentials5871 adds credentials to the download_link5872 when lfs_endpoint does not have any credentials5873 does not add any credentials5874 when the download link and the lfs_endpoint have different hosts5875 downloads without any credentials5876 #get_download_links5877 if request fails5878 raises an error5879 behaves like JSON parse errors5880 raises an error5881 behaves like JSON parse errors5882 raises an error5883 behaves like JSON parse errors5884 raises an error5885 #parse_response_links5886 does not add oid entry if href not found5887ci/status/_badge5888 when rendering status for build5889 when user has ability to see details5890 has link to build details page5891 when user do not have ability to see build details5892 contains build status text5893 does not contain links5894 when rendering status for external job5895 when user has ability to see commit status details5896 status has external target url5897 contains valid commit status text5898 has link to external status page5899 status do not have external target url5900 contains valid commit status text5901 has link to external status page5902Gitlab::Database::QueryAnalyzers::PreventCrossDatabaseModification5903 when CI and other tables are read in a transaction5904 outside transaction5905 is expected not to raise Exception5906 within Project transaction5907 is expected not to raise Exception5908 within nested Project transaction5909 is expected not to raise Exception5910 outside transaction5911 is expected not to raise Exception5912 within Ci::Pipeline transaction5913 is expected not to raise Exception5914 within nested Ci::Pipeline transaction5915 is expected not to raise Exception5916 when only CI data is modified5917 outside transaction5918 is expected not to raise Exception5919 within Ci::Pipeline transaction5920 is expected not to raise Exception5921 within nested Ci::Pipeline transaction5922 is expected not to raise Exception5923 within Project transaction5924 raises error5925 when other data is modified5926 outside transaction5927 is expected not to raise Exception5928 within Project transaction5929 is expected not to raise Exception5930 within nested Project transaction5931 is expected not to raise Exception5932 within Ci::Pipeline transaction5933 raises error5934 when both CI and other data is modified5935 outside transaction5936 is expected not to raise Exception5937 when data modification happens in a transaction5938 raises error5939 when data modification happens in nested transactions5940 raises error5941 when comments are added to the front of query strings5942 raises error5943 when executing a SELECT FOR UPDATE query5944 outside transaction5945 is expected not to raise Exception5946 when data modification happens in a transaction5947 raises error5948 when the modification is inside a factory save! call5949 does not raise an error5950 when CI association is modified through project5951 outside transaction5952 is expected not to raise Exception5953 within Ci::Pipeline transaction5954 is expected not to raise Exception5955 within nested Ci::Pipeline transaction5956 is expected not to raise Exception5957 within Project transaction5958 raises error5959 .allow_cross_database_modification_within_transaction5960 skips raising error5961 skips raising error on factory creation5962 when some table with a defined schema and another table with undefined gitlab_schema is modified5963 raises an error including including message about undefined schema5964 when execution is rescued with StandardError5965 raises cross-database data modification exception5966 when uniquiness validation is tested5967 does not raise exceptions5968 when doing rollback in a suppressed block5969 does not raise misaligned transactions exception5970Issues::ReorderService5971 #execute5972 when ordering issues in a project5973 behaves like issues reorder service5974 when reordering issues5975 returns false with no params5976 returns false with both invalid params5977 sorts issues5978 sorts issues if only given one neighbour, on the left5979 sorts issues if only given one neighbour, on the right5980 when ordering issues in a group5981 behaves like issues reorder service5982 when reordering issues5983 returns false with no params5984 returns false with both invalid params5985 sorts issues5986 sorts issues if only given one neighbour, on the left5987 sorts issues if only given one neighbour, on the right5988 when ordering in a group issue list5989 sorts issues5990MergeRequestAssignee5991 associations5992 is expected to belong to merge_request class_name => MergeRequest required: false5993 is expected to belong to assignee class_name => User required: false5994 validations5995 is expected to validate that :assignee is case-sensitively unique within the scope of :merge_request_id5996 scopes5997 in_projects5998 returns issue assignees for given project5999 behaves like having unique enum values6000 has unique values in "state"6001 behaves like having reviewer state6002 mr_attention_requests feature flag is disabled6003 is expected to have attributes {:state => "unreviewed"}6004 mr_attention_requests feature flag is enabled6005 is expected to have attributes {:state => "attention_requested"}6006 syncs to reviewer state6007 is expected to have attributes {:state => "reviewed"}6008Gitlab::SidekiqConfig::WorkerRouter6009 .queue_name_from_worker_name6010 worker: #<Class:0x00007f64748f3b50>, expected_name: "pages"6011 generates a valid queue name from worker name6012 worker: #<Class:0x00007f64748f37e0>, expected_name: "pipeline_notification"6013 generates a valid queue name from worker name6014 worker: #<Class:0x00007f64748f2f70>, expected_name: "post_receive"6015 generates a valid queue name from worker name6016 worker: #<Class:0x00007f64748f2c28>, expected_name: "git:post_receive"6017 generates a valid queue name from worker name6018 worker: #<Class:0x00007f64748f2930>, expected_name: "pipeline_hooks:pipeline_hooks"6019 generates a valid queue name from worker name6020 worker: #<Class:0x00007f64748f25c0>, expected_name: "jira_import_advance_stage"6021 generates a valid queue name from worker name6022 worker: #<Class:0x00007f64748f2278>, expected_name: "importer:phabricator_import_import_tasks"6023 generates a valid queue name from worker name6024 .global6025 valid routing rules6026 routing_rules: [], expected_queue: "foo_bar"6027 routes the worker to the correct queue6028 routing_rules: [["feature_category=feature_b|urgency=high", "queue_a"], ["resource_boundary=memory", "queue_b"], ["tags=cheap", "queue_c"]], expected_queue: "foo_bar"6029 routes the worker to the correct queue6030 routing_rules: [["feature_category=feature_b|urgency=high", "queue_a"], ["resource_boundary=cpu", nil], ["tags=cheap", "queue_c"]], expected_queue: "foo_bar"6031 routes the worker to the correct queue6032 routing_rules: [["feature_category=feature_b|urgency=high", "queue_a"], ["resource_boundary=cpu", ""], ["tags=cheap", "queue_c"]], expected_queue: "foo_bar"6033 routes the worker to the correct queue6034 routing_rules: [["feature_category=feature_a|urgency=high", "queue_a"], ["resource_boundary=cpu", "queue_b"], ["tags=cheap", "queue_c"]], expected_queue: "queue_a"6035 routes the worker to the correct queue6036 routing_rules: [["feature_category=feature_b|urgency=low", "queue_a"], ["resource_boundary=cpu", "queue_b"], ["tags=cheap", "queue_c"]], expected_queue: "queue_a"6037 routes the worker to the correct queue6038 routing_rules: [["feature_category=feature_b|urgency=high", "queue_a"], ["resource_boundary=memory", "queue_b"], ["tags=expensive", "queue_c"]], expected_queue: "queue_c"6039 routes the worker to the correct queue6040 routing_rules: [["feature_category=feature_a|urgency=low", "queue_a"], ["resource_boundary=cpu", "queue_b"], ["tags=expensive", "queue_c"]], expected_queue: "queue_a"6041 routes the worker to the correct queue6042 routing_rules: [["feature_category=feature_a", "queue_a"], ["feature_category=feature_a", "queue_b"], ["feature_category=feature_a", "queue_c"]], expected_queue: "queue_a"6043 routes the worker to the correct queue6044 routing_rules: [["feature_category=feature_b|urgency=high", "queue_a"], ["resource_boundary=memory", "queue_b"], ["tags=cheap", "queue_c"], ["*", "default"]], expected_queue: "default"6045 routes the worker to the correct queue6046 routing_rules: [["*", "queue_foo"], ["feature_category=feature_a|urgency=low", "queue_a"], ["resource_boundary=cpu", "queue_b"], ["tags=expensive", "queue_c"]], expected_queue: "queue_foo"6047 routes the worker to the correct queue6048 routing_rules: [["name=foo_bar", "queue_foo"], ["feature_category=feature_a|urgency=low", "queue_a"], ["resource_boundary=cpu", "queue_b"], ["tags=expensive", "queue_c"]], expected_queue: "queue_foo"6049 routes the worker to the correct queue6050 invalid routing rules6051 invalid routing rules format6052 captures the error and falls back to an empty route6053 invalid predicate6054 captures the error and falls back to an empty route6055 #route6056 valid routing rules6057 routing_rules: [], expected_queue: "foo_bar"6058 routes the worker to the correct queue6059 routing_rules: [["feature_category=feature_b|urgency=high", "queue_a"], ["resource_boundary=memory", "queue_b"], ["tags=cheap", "queue_c"]], expected_queue: "foo_bar"6060 routes the worker to the correct queue6061 routing_rules: [["feature_category=feature_b|urgency=high", "queue_a"], ["resource_boundary=cpu", nil], ["tags=cheap", "queue_c"]], expected_queue: "foo_bar"6062 routes the worker to the correct queue6063 routing_rules: [["feature_category=feature_b|urgency=high", "queue_a"], ["resource_boundary=cpu", ""], ["tags=cheap", "queue_c"]], expected_queue: "foo_bar"6064 routes the worker to the correct queue6065 routing_rules: [["feature_category=feature_a|urgency=high", "queue_a"], ["resource_boundary=cpu", "queue_b"], ["tags=cheap", "queue_c"]], expected_queue: "queue_a"6066 routes the worker to the correct queue6067 routing_rules: [["feature_category=feature_b|urgency=low", "queue_a"], ["resource_boundary=cpu", "queue_b"], ["tags=cheap", "queue_c"]], expected_queue: "queue_a"6068 routes the worker to the correct queue6069 routing_rules: [["feature_category=feature_b|urgency=high", "queue_a"], ["resource_boundary=memory", "queue_b"], ["tags=expensive", "queue_c"]], expected_queue: "queue_c"6070 routes the worker to the correct queue6071 routing_rules: [["feature_category=feature_a|urgency=low", "queue_a"], ["resource_boundary=cpu", "queue_b"], ["tags=expensive", "queue_c"]], expected_queue: "queue_a"6072 routes the worker to the correct queue6073 routing_rules: [["feature_category=feature_a", "queue_a"], ["feature_category=feature_a", "queue_b"], ["feature_category=feature_a", "queue_c"]], expected_queue: "queue_a"6074 routes the worker to the correct queue6075 routing_rules: [["feature_category=feature_b|urgency=high", "queue_a"], ["resource_boundary=memory", "queue_b"], ["tags=cheap", "queue_c"], ["*", "default"]], expected_queue: "default"6076 routes the worker to the correct queue6077 routing_rules: [["*", "queue_foo"], ["feature_category=feature_a|urgency=low", "queue_a"], ["resource_boundary=cpu", "queue_b"], ["tags=expensive", "queue_c"]], expected_queue: "queue_foo"6078 routes the worker to the correct queue6079 routing_rules: [["name=foo_bar", "queue_foo"], ["feature_category=feature_a|urgency=low", "queue_a"], ["resource_boundary=cpu", "queue_b"], ["tags=expensive", "queue_c"]], expected_queue: "queue_foo"6080 routes the worker to the correct queue6081 invalid routing rules6082 raises an exception6083RepositoryCheck::BatchWorker6084 prefers projects that have never been checked6085 sorts projects by last_repository_check_at6086 excludes projects that were checked recently6087 excludes projects on another shard6088 does nothing when repository checks are disabled6089 does nothing when shard is unhealthy6090 skips projects created less than 24 hours ago6091 does not run if the exclusive lease is taken6092AuditEvent6093 sanitizes custom_message in the details hash6094 validations6095 is expected to allow :ip_address to be ‹"192.168.17.43"›6096 is expected to allow :ip_address to be ‹"2001:0db8:85a3:0000:0000:8a2e:0370:7334"›6097 is expected not to allow :ip_address to be ‹"invalid IP"›6098 callbacks6099 #parallel_persist6100 wih author_name6101 behaves like a parallel persisted field6102 column: :value, details: nil, expected_value: :value6103 sets both values to be the same6104 column: nil, details: :value, expected_value: :value6105 sets both values to be the same6106 column: :value, details: :another_value, expected_value: :value6107 sets both values to be the same6108 column: nil, details: nil, expected_value: nil6109 sets both values to be the same6110 with entity_path6111 behaves like a parallel persisted field6112 column: :value, details: nil, expected_value: :value6113 sets both values to be the same6114 column: nil, details: :value, expected_value: :value6115 sets both values to be the same6116 column: :value, details: :another_value, expected_value: :value6117 sets both values to be the same6118 column: nil, details: nil, expected_value: nil6119 sets both values to be the same6120 with target_details6121 behaves like a parallel persisted field6122 column: :value, details: nil, expected_value: :value6123 sets both values to be the same6124 column: nil, details: :value, expected_value: :value6125 sets both values to be the same6126 column: :value, details: :another_value, expected_value: :value6127 sets both values to be the same6128 column: nil, details: nil, expected_value: nil6129 sets both values to be the same6130 with target_type6131 behaves like a parallel persisted field6132 column: :value, details: nil, expected_value: :value6133 sets both values to be the same6134 column: nil, details: :value, expected_value: :value6135 sets both values to be the same6136 column: :value, details: :another_value, expected_value: :value6137 sets both values to be the same6138 column: nil, details: nil, expected_value: nil6139 sets both values to be the same6140 with target_id6141 behaves like a parallel persisted field6142 column: :value, details: nil, expected_value: :value6143 sets both values to be the same6144 column: nil, details: :value, expected_value: :value6145 sets both values to be the same6146 column: :value, details: :another_value, expected_value: :value6147 sets both values to be the same6148 column: nil, details: nil, expected_value: nil6149 sets both values to be the same6150 #as_json6151 ip_address6152 overrides the ip_address with its string value6153 #author6154 when a runner_registration_token's present6155 returns a NullAuthor6156 when a runner_registration_token's present6157 returns a CiRunnerTokenAuthor6158 name consists of prefix and token6159Gitlab::Ci::Variables::Collection::Item6160 .new6161 when unknown keyword is specified6162 raises error6163 when required keywords are not specified6164 raises error6165 behaves like creates variable6166 saves given value6167 when it's nil6168 behaves like creates variable6169 saves given value6170 when it's an empty string6171 behaves like creates variable6172 saves given value6173 when provided value is not a string6174 when it's 16175 behaves like raises error for invalid type6176 is expected to raise ArgumentError with message matching /`VAR` must be of type String or nil value, while it was:/6177 when it's false6178 behaves like raises error for invalid type6179 is expected to raise ArgumentError with message matching /`VAR` must be of type String or nil value, while it was:/6180 when it's []6181 behaves like raises error for invalid type6182 is expected to raise ArgumentError with message matching /`VAR` must be of type String or nil value, while it was:/6183 when it's {}6184 behaves like raises error for invalid type6185 is expected to raise ArgumentError with message matching /`VAR` must be of type String or nil value, while it was:/6186 when it's #<Object:0x00007f6473e1bcf0>6187 behaves like raises error for invalid type6188 is expected to raise ArgumentError with message matching /`VAR` must be of type String or nil value, while it was:/6189 .possible_var_reference?6190 table tests6191 empty value6192 is expected to eq false6193 normal value6194 is expected to eq false6195 simple expansions6196 is expected to eq true6197 complex expansions6198 is expected to eq true6199 complex expansions for Windows6200 is expected to eq true6201 #depends_on6202 table tests6203 no variable references6204 contains referenced variable names6205 simple variable reference6206 contains referenced variable names6207 complex expansion6208 contains referenced variable names6209 complex expansion in raw variable6210 contains referenced variable names6211 complex expansions for Windows6212 contains referenced variable names6213 .fabricate6214 supports using a hash6215 supports using a hash with stringified values6216 supports using an active record resource6217 supports using another collection item6218 #==6219 compares a hash representation of a variable6220 #[]6221 behaves like a hash accessor6222 #raw6223 returns false when :raw is not specified6224 when :raw is specified as true6225 returns true6226 #to_runner_variable6227 when variable is not a file-related6228 returns a runner-compatible hash representation6229 when variable is file-related6230 appends file description component6231 when variable is raw6232 does not export raw value when it is false6233 exports raw value when it is true6234 when referencing a variable6235 #depends_on contains names of dependencies6236 when assigned the raw attribute6237 retains a true raw attribute6238 does not retain a false raw attribute6239notify/pipeline_success_email.html.haml6240 behaves like pipeline status changes email6241 when the pipeline contains a failed job6242 behaves like renders the pipeline status changes email correctly6243 pipeline with user6244 renders the email correctly6245 behaves like correct pipeline information for pipelines for merge requests6246 when pipeline for merge request6247 renders a source ref of the pipeline6248 pipeline without user6249 renders the email correctly6250 when the latest failed job is a bridge job6251 behaves like renders the pipeline status changes email correctly6252 pipeline with user6253 renders the email correctly6254 behaves like correct pipeline information for pipelines for merge requests6255 when pipeline for merge request6256 renders a source ref of the pipeline6257 pipeline without user6258 renders the email correctly6259Types::Ci::JobTokenScopeType6260 is expected to eq "CiJobTokenScopeType"6261 has the correct fields6262 query6263 with access to scope6264 when multiple projects in the allow list6265 when linked projects are readable6266 returns readable projects in scope6267 when linked project is not readable6268 returns readable projects in scope6269 when job token scope is disabled6270 does not return an error6271 returns nil6272UserPolicy6273 reading a user's information6274 is expected to be allowed :read_user6275 reading a different user's Personal Access Tokens6276 when user is admin6277 when admin mode is enabled6278 is expected to be allowed :read_user_personal_access_tokens6279 when admin mode is disabled6280 is expected not to be allowed :read_user_personal_access_tokens6281 when user is not an admin6282 requesting their own personal access tokens6283 is expected to be allowed :read_user_personal_access_tokens6284 requesting a different user's personal access tokens6285 is expected not to be allowed :read_user_personal_access_tokens6286 creating a different user's Personal Access Tokens6287 when current_user is admin6288 when admin mode is enabled and current_user is not blocked6289 is expected to be allowed :create_user_personal_access_token6290 when admin mode is enabled and current_user is blocked6291 is expected not to be allowed :create_user_personal_access_token6292 when admin mode is disabled6293 is expected not to be allowed :create_user_personal_access_token6294 when current_user is not an admin6295 creating their own personal access tokens6296 when current_user is not blocked6297 is expected to be allowed :create_user_personal_access_token6298 when current_user is blocked6299 is expected not to be allowed :create_user_personal_access_token6300 creating a different user's personal access tokens6301 is expected not to be allowed :create_user_personal_access_token6302 updating a user's status6303 behaves like changing a user6304 when a regular user tries to destroy another regular user6305 is expected not to be allowed :update_user_status6306 when a regular user tries to destroy themselves6307 is expected to be allowed :update_user_status6308 when an admin user tries to destroy a regular user6309 when admin mode is enabled6310 is expected to be allowed :update_user_status6311 when admin mode is disabled6312 is expected to be disallowed :update_user_status6313 when an admin user tries to destroy a ghost user6314 is expected not to be allowed :update_user_status6315 destroying a user6316 behaves like changing a user6317 when a regular user tries to destroy another regular user6318 is expected not to be allowed :destroy_user6319 when a regular user tries to destroy themselves6320 is expected to be allowed :destroy_user6321 when an admin user tries to destroy a regular user6322 when admin mode is enabled6323 is expected to be allowed :destroy_user6324 when admin mode is disabled6325 is expected to be disallowed :destroy_user6326 when an admin user tries to destroy a ghost user6327 is expected not to be allowed :destroy_user6328 updating a user6329 behaves like changing a user6330 when a regular user tries to destroy another regular user6331 is expected not to be allowed :update_user6332 when a regular user tries to destroy themselves6333 is expected to be allowed :update_user6334 when an admin user tries to destroy a regular user6335 when admin mode is enabled6336 is expected to be allowed :update_user6337 when admin mode is disabled6338 is expected to be disallowed :update_user6339 when an admin user tries to destroy a ghost user6340 is expected not to be allowed :update_user6341 disabling two-factor authentication6342 disabling their own two-factor authentication6343 is expected to be allowed :disable_two_factor6344 disabling the two-factor authentication of another user6345 when the executor is an admin6346 is expected to be allowed :disable_two_factor6347 when the executor is not an admin6348 is expected not to be allowed :disable_two_factor6349 reading a user's group count6350 when current_user is an admin6351 is expected to be allowed :read_group_count6352 for self users6353 is expected to be allowed :read_group_count6354 when accessing a different user's group count6355 is expected not to be allowed :read_group_count6356 :read_user_profile6357 when the user is unconfirmed6358 is expected not to be allowed :read_user_profile6359 when the user is confirmed6360 is expected to be allowed :read_user_profile6361 :read_user_groups6362 when user is admin6363 when admin mode is enabled6364 is expected to be allowed :read_user_groups6365 when admin mode is disabled6366 is expected not to be allowed :read_user_groups6367 when user is not an admin6368 requesting their own manageable groups6369 is expected to be allowed :read_user_groups6370 requesting a different user's manageable groups6371 is expected not to be allowed :read_user_groups6372Gitlab::Kubernetes::DefaultNamespace6373 #from_environment_name6374 generates a slug and passes it to #from_environment_slug6375 #from_environment_slug6376 namespace per environment is enabled6377 platform namespace is specified6378 is expected to eq "platform-namespace-environment9"6379 cluster is unmanaged6380 is expected to eq "platform-namespace"6381 platform namespace is blank6382 constructs a namespace from the project and environment slug6383 behaves like handles very long project paths6384 is expected to satisfy expression `s.length <= 63`6385 namespace per environment is disabled6386 platform namespace is specified6387 is expected to eq "platform-namespace"6388 platform namespace is blank6389 constructs a namespace from just the project6390 behaves like handles very long project paths6391 is expected to satisfy expression `s.length <= 63`6392Gitlab::GitalyClient::ObjectPoolService6393 #create6394 exists on disk6395 when the pool already exists6396 returns an error6397 #delete6398 removes the repository from disk6399 when called twice6400 doesn't raise an error6401 #fetch6402 restores the pool repository objects6403 when called twice6404 doesn't raise an error6405Packages::Debian::GroupComponentFile6406 behaves like Debian Component File6407 relationships6408 with stubbed uploader6409 is expected to belong to component class_name => Packages::Debian::GroupComponent required: false inverse_of => files6410 with packages file_type6411 is expected to belong to architecture class_name => Packages::Debian::GroupArchitecture required: false inverse_of => files6412 with :sources file_type6413 is expected to belong to architecture class_name => Packages::Debian::GroupArchitecture inverse_of => files optional: true6414 validations6415 #component6416 is expected to validate that :component cannot be empty/falsy6417 #architecture6418 with packages file_type6419 is expected to validate that :architecture cannot be empty/falsy6420 with :sources file_type6421 is expected to validate that :architecture is empty/falsy6422 #file_type6423 is expected to validate that :file_type cannot be empty/falsy6424 is expected to allow :file_type to be ‹:packages›6425 #compression_type6426 is expected not to validate that :compression_type cannot be empty/falsy6427 is expected to allow :compression_type to be ‹nil›6428 is expected to allow :compression_type to be ‹:gz›6429 #file6430 the uploader api6431 is expected to respond to #store_dir6432 is expected to respond to #cache_dir6433 is expected to respond to #work_dir6434 #file_store6435 is expected to validate that :file_store cannot be empty/falsy6436 #file_md56437 is expected to validate that :file_md5 cannot be empty/falsy6438 #file_sha2566439 is expected to validate that :file_sha256 cannot be empty/falsy6440 scopes6441 .with_container6442 is expected to contain exactly #<Packages::Debian::GroupComponentFile id: 7, created_at: "2022-02-04 17:22:54.105972170 +0000", upda..., file: "Packages", file_md5: "12345abcde", file_sha256: "be93151dc23ac34a82752444556fe79b32c7a1ad">6443 .with_codename_or_suite6444 is expected to contain exactly #<Packages::Debian::GroupComponentFile id: 7, created_at: "2022-02-04 17:22:54.105972170 +0000", upda..., file: "Packages", file_md5: "12345abcde", file_sha256: "be93151dc23ac34a82752444556fe79b32c7a1ad">6445 .with_component_name6446 is expected to contain exactly #<Packages::Debian::GroupComponentFile id: 3, created_at: "2022-02-04 17:22:54.080657833 +0000", upda..., file: "Packages", file_md5: "12345abcde", file_sha256: "be93151dc23ac34a82752444556fe79b32c7a1ad">6447 .with_file_type6448 is expected to contain exactly #<Packages::Debian::GroupComponentFile id: 8, created_at: "2022-02-04 17:22:54.113391000 +0000", upda...1, file: "Sources", file_md5: "12345abcde", file_sha256: "be93151dc23ac34a82752444556fe79b32c7a1ad">6449 .with_architecture6450 is expected to contain exactly #<Packages::Debian::GroupComponentFile id: 2, created_at: "2022-02-04 17:22:54.074867534 +0000", upda..., file: "Packages", file_md5: "12345abcde", file_sha256: "be93151dc23ac34a82752444556fe79b32c7a1ad">6451 .with_architecture_name6452 is expected to contain exactly #<Packages::Debian::GroupComponentFile id: 2, created_at: "2022-02-04 17:22:54.074867534 +0000", upda..., file: "Packages", file_md5: "12345abcde", file_sha256: "be93151dc23ac34a82752444556fe79b32c7a1ad">6453 .with_compression_type6454 is expected to contain exactly #<Packages::Debian::GroupComponentFile id: 4, created_at: "2022-02-04 17:22:54.086318202 +0000", upda..., file: "Packages", file_md5: "12345abcde", file_sha256: "be93151dc23ac34a82752444556fe79b32c7a1ad">6455 .with_file_sha2566456 is expected to contain exactly #<Packages::Debian::GroupComponentFile id: 6, created_at: "2022-02-04 17:22:54.099447611 +0000", upda...ion_type: nil, file_store: 1, file: "Packages", file_md5: "12345abcde", file_sha256: "other_sha256">6457 .updated_before6458 is expected to contain exactly #<Packages::Debian::GroupComponentFile id: 10, created_at: "2022-02-04 17:22:55.602731566 +0000", upd..., file: "Packages", file_md5: "12345abcde", file_sha256: "be93151dc23ac34a82752444556fe79b32c7a1ad"> and #<Packages::Debian::GroupComponentFile id: 11, created_at: "2022-02-04 17:22:55.610337885 +0000", upd..., file: "Packages", file_md5: "12345abcde", file_sha256: "be93151dc23ac34a82752444556fe79b32c7a1ad">6459 callbacks6460 updates metadata columns6461 #relative_path6462 with a Packages file_type6463 is expected to eq "group-component-1/binary-group-arch-1/Packages"6464 with a Source file_type6465 is expected to eq "group-component-1/source/Sources"6466 with a DI Packages file_type6467 is expected to eq "group-component-1/debian-installer/binary-group-arch-1/Packages"6468 with an xz compression_type6469 is expected to eq "group-component-1/binary-group-arch-1/Packages.xz"6470ClusterApplicationEntity6471 #as_json6472 has name6473 has status6474 has version6475 has no status_reason6476 has can_uninstall6477 non-helm application6478 has update_available6479 when application is errored6480 has corresponded data6481 for ingress application6482 includes external_ip6483 for knative application6484 includes available domains6485 includes pages_domain6486Gitlab::SlashCommands::IssueNew6487 #execute6488 without description6489 creates the issue6490 with description6491 creates the issue with description6492 with more newlines between the title and the description6493 creates the issue6494 issue cannot be created6495 displays the errors6496 .match6497 matches the title without description6498 matches the title with description6499 matches the alias new6500Security::SecurityJobsFinder6501 behaves like Security::JobsFinder6502 #new6503 does not get initialized for unsupported job types6504 #execute6505 behaves like JobsFinder core functionality6506 when the pipeline has no jobs6507 is expected to be empty6508 when the pipeline has no Secure jobs6509 is expected to be empty6510 when the pipeline only has jobs without report artifacts6511 is expected to be empty6512 when the pipeline only has jobs with reports unrelated to Secure products6513 is expected to be empty6514 when the pipeline only has jobs with reports with paths similar but not identical to Secure reports6515 is expected to be empty6516 when there is more than one pipeline6517 returns jobs associated with provided pipeline6518 #execute6519 with specific secure job types6520 returns only those requested6521 with combination of security jobs and license scanning jobs6522 returns only the security jobs6523IssueAssignee6524 associations6525 is expected to belong to issue class_name => Issue required: false6526 is expected to belong to assignee class_name => User required: false6527 validations6528 is expected to validate that :assignee is case-sensitively unique within the scope of :issue_id6529 scopes6530 in_projects6531 returns issue assignees for given project6532 on_issues6533 returns issue assignees for given issues6534Banzai::ReferenceParser::ExternalIssueParser6535 #nodes_visible_to_user6536 when the link has a data-issue attribute6537 creates reference when the feature is 06538 creates reference when the feature is 106539 creates reference when the feature is 206540 #referenced_by6541 when the link has a data-project attribute6542 when the link has a data-external-issue attribute6543 returns an Array of ExternalIssue instances6544 when the link does not have a data-external-issue attribute6545 returns an empty Array6546 when the link does not have a data-project attribute6547 returns an empty Array6548 #issue_ids_per_project6549 returns a Hash containing range IDs per project6550 does not add a project when the data-external-issue attribute is empty6551Gitlab::GithubImport::Importer::LabelsImporter6552 #execute6553 imports the labels in bulk6554 #build_labels6555 returns an Array containnig label rows6556 does not create labels that already exist6557 #build_labels_cache6558 builds the labels cache6559 #build6560 returns the attributes of the label as a Hash6561 the returned Hash6562 includes the label title6563 includes the label color6564 includes the project ID6565 includes the label type6566 includes the created timestamp6567 includes the updated timestamp6568 #each_label6569 returns the labels6570Packages::UpdatePackageFileService6571 #execute6572 with object storage disabled6573 behaves like updating package file with valid parameters6574 with both parameters set6575 updates the package file accordingly6576 with only file_name set6577 updates the package file accordingly6578 with only package_id set6579 updates the package file accordingly6580 behaves like not updating package with invalid parameters6581 with blank parameters6582 raise an argument error6583 with non persisted package file6584 raise an argument error6585 with object storage enabled6586 behaves like updating package file with valid parameters6587 with both parameters set6588 updates the package file accordingly6589 with only file_name set6590 updates the package file accordingly6591 with only package_id set6592 updates the package file accordingly6593 behaves like not updating package with invalid parameters6594 with blank parameters6595 raise an argument error6596 with non persisted package file6597 raise an argument error6598Gitaly::Server6599 is expected to respond to #server_version6600 is expected to respond to #git_binary_version6601 is expected to respond to #up_to_date?6602 is expected to respond to #address6603 is expected to respond to #replication_factor6604 .all6605 includes all storages6606 readable?6607 when the storage is readable6608 returns true6609 when the storage is not readable6610 returns false6611 writeable?6612 when the storage is writeable6613 returns true6614 when the storage is not writeable6615 returns false6616 #filesystem_type6617 is expected to be present6618 request memoization6619 when requesting multiple properties6620 uses memoization for the info request6621 when examining disk statistics for a given server6622 #disk_available6623 is expected to be present6624 returns disk available for the storage of the instantiated server6625 #disk_used6626 is expected to be present6627 returns disk used for the storage of the instantiated server6628 #disk_stats6629 is expected to be present6630 returns the storage of the instantiated server6631 #expected_version?6632 expected_version: "1.1.1", server_version: "1.1.1", result: true6633 is expected to eq true6634 expected_version: "1.1.2", server_version: "1.1.1", result: false6635 is expected to eq false6636 expected_version: "1.73.0", server_version: "1.73.0-18-gf756ebe2", result: false6637 is expected to eq false6638 expected_version: "594c3ea3e0e5540e5915bd1c49713a0381459dd6", server_version: "1.55.6-45-g594c3ea3", result: true6639 is expected to eq true6640 expected_version: "594c3ea3e0e5540e5915bd1c49713a0381459dd6", server_version: "1.55.6-46-gabc123ff", result: false6641 is expected to eq false6642 expected_version: "594c3ea3e0e5540e5915bd1c49713a0381459dd6", server_version: "1.55.6", result: false6643 is expected to eq false6644 replication_factor6645 when examining for a given server6646 is expected to eq 26647Gitlab::JwtAuthenticatable6648 .secret6649 behaves like reading secret from the secret path6650 returns 32 bytes6651 accepts a trailing newline6652 raises an exception if the secret file cannot be read6653 raises an exception if the secret file contains the wrong number of bytes6654 .read_secret6655 behaves like reading secret from the secret path6656 returns 32 bytes6657 accepts a trailing newline6658 raises an exception if the secret file cannot be read6659 raises an exception if the secret file contains the wrong number of bytes6660 .write_secret6661 without an input6662 uses mode 06006663 writes base64 data6664 with an input6665 uses mode 06006666 writes base64 data6667 .decode_jwt6668 use included class secret6669 accepts a correct header6670 raises an error when the JWT is not signed6671 raises an error when the header is signed with the wrong secret6672 use an input secret6673 accepts a correct header6674 raises an error when the JWT is not signed6675 raises an error when the header is signed with the wrong secret6676 issuer option6677 returns decoded payload if issuer is correct6678 raises an error when the issuer is incorrect6679 iat_after option6680 returns decoded payload if iat is valid6681 raises an error if iat is invalid6682 raises an error if iat is absent6683 raises an error if iat is too far in the past6684StateNote6685 .from_event6686 with event state opened6687 contains the expected values6688 behaves like a synthetic note6689 behaves like a system note6690 has the correct attributes6691 #discussion_id6692 returns the expected discussion id6693 with event state closed6694 contains the expected values6695 behaves like a synthetic note6696 behaves like a system note6697 has the correct attributes6698 #discussion_id6699 returns the expected discussion id6700 with event state merged6701 contains the expected values6702 behaves like a synthetic note6703 behaves like a system note6704 has the correct attributes6705 #discussion_id6706 returns the expected discussion id6707 with event state locked6708 contains the expected values6709 behaves like a synthetic note6710 behaves like a system note6711 has the correct attributes6712 #discussion_id6713 returns the expected discussion id6714 with event state reopened6715 contains the expected values6716 behaves like a synthetic note6717 behaves like a system note6718 has the correct attributes6719 #discussion_id6720 returns the expected discussion id6721 with a mentionable source6722 with a commit6723 contains the expected values6724 with a merge request6725 contains the expected values6726 when closed by error tracking6727 contains the expected values6728 when closed by promotheus alert6729 contains the expected values6730ProjectExportWorker6731 behaves like export worker6732 #perform6733 when it succeeds6734 calls the ExportService6735 export job6736 creates an export job record for the project6737 sets the export job status to started6738 sets the export job status to finished6739 when it fails6740 does not raise an exception when strategy is invalid6741 does not raise error when project cannot be found6742 does not raise error when user cannot be found6743 fails the export job status6744 sidekiq options6745 disables retry6746 disables dead6747 sets default status expiration6748Gitlab::SlashCommands::Run6749 .match6750 returns true for a run command6751 returns true for a run command with arguments6752 returns true for a command containing newlines6753 returns false for an unrelated command6754 .available?6755 returns true when builds are enabled for the project6756 returns false when builds are disabled for the project6757 returns false when chatops is not available6758 .allowed?6759 returns true when the user can create a pipeline6760 returns false when the user can not create a pipeline6761 #execute6762 when a pipeline could not be scheduled6763 returns an error6764 when a pipeline could be created but the chat service was not supported6765 returns an error6766 using a valid pipeline6767 schedules the pipeline6768Resolvers::ProjectPipelineResolver6769 is expected to have nullable GraphQL type Pipeline6770 resolves pipeline for the passed iid6771 resolves pipeline for the passed sha6772 keeps the queries under the threshold for iid6773 keeps the queries under the threshold for sha6774 does not resolve a pipeline outside the project6775 errors when no iid or sha is passed6776 errors when both iid and sha are passed6777 when the pipeline is a dangling pipeline6778 resolves pipeline for the passed iid6779Projects::ProjectMembersHelper6780 project members6781 #project_members_app_data_json6782 returns expected json6783 sets `members` property that matches json schema6784 sets `member_path` property6785 when pagination is not available6786 sets `pagination` attribute to expected json6787 when pagination is available6788 sets `pagination` attribute to expected json6789NotificationRecipients::Builder::Default6790 #build!6791 participants and project watchers6792 adds all participants and watchers6793 subscribers6794 adds all subscribers6795 custom notifications6796 behaves like custom notification recipients6797 with project custom notification setting6798 adds the user to the recipients6799 with the project custom notification setting in another project6800 does not add the user to the recipients6801 with group custom notification setting6802 adds the user to the recipients6803 with the group custom notification setting in another group6804 does not add the user to the recipients6805 with project global custom notification setting6806 with global custom notification setting6807 adds the user to the recipients6808 without global custom notification setting6809 does not add the user to the recipients6810 with group global custom notification setting6811 with global custom notification setting6812 adds the user to the recipients6813 without global custom notification setting6814 does not add the user to the recipients6815 with group custom notification setting in deeply nested parent group6816 adds the user to the recipients6817 without a project or group6818 does not add the user to the recipients6819Groups::AutoDevopsService#execute6820 when user does not have enough privileges6821 raises exception6822 when user has enough privileges6823 updates group auto devops enabled accordingly6824 when group has projects6825 reflects changes on projects6826 when group has subgroups6827 reflects changes on subgroups6828 when subgroups have projects6829 reflects changes on projects6830Banzai::Filter::InlineGrafanaMetricsFilter6831 behaves like a metrics embed filter6832 when the document has an external link6833 leaves regular non-metrics links unchanged6834 when the document contains an embeddable link6835 leaves the original link unchanged6836 appends a metrics charts placeholder6837 in a paragraph6838 appends a metrics charts placeholder after the enclosing paragraph6839 when grafana is not configured6840 leaves the markdown unchanged6841 when "panelId" parameter is missing6842 behaves like a metrics embed filter6843 when the document has an external link6844 leaves regular non-metrics links unchanged6845 when the document contains an embeddable link6846 leaves the original link unchanged6847 appends a metrics charts placeholder6848 in a paragraph6849 appends a metrics charts placeholder after the enclosing paragraph6850 when time window parameters are missing6851 sets the window to the last 8 hrs6852 when "to" parameter is missing6853 sets "to" to 8 hrs after "from"6854 when "from" parameter is missing6855 sets "from" to 8 hrs before "to"6856 when no parameters are provided6857 inserts a placeholder6858MergeRequestMetricsHelper6859 #build_metrics6860 when closed and metrics exists6861 does not call the merge request metrics class6862 returns the metrics for the given merge request6863 when merged and metrics exists6864 does not call the merge request metrics class6865 returns the metrics for the given merge request6866 when merged and metrics do not exists6867 rebuilds the merge request metrics6868Projects::MoveDeployKeysProjectsService6869 #execute6870 moves the user's deploy keys from one project to another6871 does not link existent deploy_keys in the current project6872 rollbacks changes if transaction fails6873 when remove_remaining_elements is false6874 does not remove remaining deploy keys projects6875Gitlab::Kubernetes::Helm::V2::PatchCommand6876 behaves like helm command generator6877 #generate_script6878 returns appropriate command6879 when rbac is true6880 behaves like helm command generator6881 #generate_script6882 returns appropriate command6883 when there is no version6884 is expected to raise ArgumentError with "version is required"6885 #pod_name6886 is expected to eq "install-app-name"6887 behaves like helm command6888 HELM_VERSION6889 is expected to match /\d+\.\d+\.\d+/6890 #env6891 is expected to be a kind of Hash6892 #rbac?6893 rbac is enabled6894 is expected to be truthy6895 rbac is not enabled6896 is expected to be falsey6897 #pod_resource6898 rbac is enabled6899 is expected to be an instance of Kubeclient::Resource6900 generates a pod that uses the tiller serviceAccountName6901 rbac is not enabled6902 is expected to be an instance of Kubeclient::Resource6903 generates a pod that uses the default serviceAccountName6904 #config_map_resource6905 returns a KubeClient resource with config map content for the application6906 #service_account_resource6907 rbac is enabled6908 generates a Kubeclient resource for the tiller ServiceAccount6909 rbac is not enabled6910 generates nothing6911 #cluster_role_binding_resource6912 rbac is enabled6913 generates a Kubeclient resource for the ClusterRoleBinding for tiller6914 binds the account in #service_account_resource6915 rbac is not enabled6916 generates nothing6917Gitlab::Database::Transaction::Observer6918 .instrument_transactions6919 tracks transaction data6920 .extract_sql_command6921 sql: "SELECT 1", expected: "SELECT 1"6922 is expected to eq "SELECT 1"6923 sql: "/* test comment */ SELECT 1", expected: "SELECT 1"6924 is expected to eq "SELECT 1"6925 sql: "/* test comment */ ROLLBACK TO SAVEPOINT point1", expected: "ROLLBACK TO SAVEPOINT "6926 is expected to eq "ROLLBACK TO SAVEPOINT "6927 sql: "SELECT 1 /* trailing comment */", expected: "SELECT 1 /* trailing comment */"6928 is expected to eq "SELECT 1 /* trailing comment */"6929shared/deploy_tokens/_form.html.haml6930 when the subject is a project6931 packages_enabled: true, feature_enabled: true, role: :maintainer, shows_package_registry_permissions: true6932 behaves like display deploy token settings6933 correctly renders the form6934 packages_enabled: false, feature_enabled: true, role: :maintainer, shows_package_registry_permissions: false6935 behaves like display deploy token settings6936 correctly renders the form6937 packages_enabled: true, feature_enabled: false, role: :maintainer, shows_package_registry_permissions: false6938 behaves like display deploy token settings6939 correctly renders the form6940 packages_enabled: false, feature_enabled: false, role: :maintainer, shows_package_registry_permissions: false6941 behaves like display deploy token settings6942 correctly renders the form6943 when the subject is a group6944 packages_enabled: true, role: :owner, shows_package_registry_permissions: true6945 behaves like display deploy token settings6946 correctly renders the form6947 packages_enabled: false, role: :owner, shows_package_registry_permissions: false6948 behaves like display deploy token settings6949 correctly renders the form6950 packages_enabled: true, role: :maintainer, shows_package_registry_permissions: true6951 behaves like display deploy token settings6952 correctly renders the form6953 packages_enabled: false, role: :maintainer, shows_package_registry_permissions: false6954 behaves like display deploy token settings6955 correctly renders the form6956Gitlab::Checks::PushCheck6957 #validate!6958 does not raise any error6959 when the user is not allowed to push to the repo6960 raises an error6961 when using a DeployKeyAccess instance6962 when the deploy key cannot push to the targetted branch6963 raises an error6964 when the deploy key can push to the targetted branch6965 is valid6966Gitlab::Ci::Config::Entry::Variables6967 when entry config value has key-value pairs6968 behaves like valid config6969 #value6970 returns hash with key value strings6971 #errors6972 does not append errors6973 #valid?6974 is valid6975 with numeric keys and values in the config6976 behaves like valid config6977 #value6978 returns hash with key value strings6979 #errors6980 does not append errors6981 #valid?6982 is valid6983 when entry config value has key-value pair and hash6984 behaves like invalid config6985 #valid?6986 is not valid6987 #errors6988 saves errors6989 when metadata has use_value_data6990 behaves like valid config6991 #value6992 returns hash with key value strings6993 #errors6994 does not append errors6995 #valid?6996 is valid6997 when entry value is an array6998 behaves like invalid config6999 #valid?7000 is not valid7001 #errors7002 saves errors7003 when metadata has use_value_data7004 when entry value has hash with other key-pairs7005 behaves like invalid config7006 #valid?7007 is not valid7008 #errors7009 saves errors7010 when entry config value has hash with nil description7011 behaves like invalid config7012 #valid?7013 is not valid7014 #errors7015 saves errors7016 when entry config value has hash without description7017 behaves like valid config7018 #value7019 returns hash with key value strings7020 #errors7021 does not append errors7022 #valid?7023 is valid7024Banzai::Filter::UploadLinkFilter7025 preserves original url in data-canonical-src attribute7026 to a project upload7027 rebuilds relative URL for a link7028 rebuilds relative URL for an image7029 does not modify absolute URL7030 supports unescaped Unicode filenames7031 supports escaped Unicode filenames7032 with an absolute URL7033 rewrites the link correctly7034 to a group upload7035 rewrites the link correctly7036 rewrites the link correctly for subgroup7037 does not modify absolute URL7038 with an absolute URL7039 rewrites the link correctly7040 to a personal snippet7041 rewrites the link correctly7042 does not modify absolute URL7043 with an absolute URL7044 rewrites the link correctly7045 with a relative URL root7046 rewrites the link correctly7047 with an absolute URL7048 rewrites the link correctly7049 invalid input7050 name: "invalid URI", href: "://foo"7051 is expected not to raise Exception7052 name: "invalid UTF-8 byte sequences", href: "%FF"7053 is expected not to raise Exception7054 name: "garbled path", href: "open(/var/tmp/):%20/location%0Afrom:%20/test"7055 is expected not to raise Exception7056 name: "whitespace", href: "d18213acd3732630991986120e167e3d/Landscape_8.jpg\nand more"7057 is expected not to raise Exception7058 name: "null byte", href: "%00"7059 is expected not to raise Exception7060ExtractsRef7061 #assign_ref_vars7062 behaves like assigns ref vars7063 assigns the repository var7064 ref contains %207065 is not converted to a space in @id7066 ref contains trailing space7067 strips surrounding space7068 ref contains leading space7069 strips surrounding space7070 path contains space7071 is not converted to %20 in @path7072 subclass overrides get_id7073 uses ref returned by get_id7074 ref and path are nil7075 does not set commit7076 behaves like extracts refs7077 #extract_ref7078 returns an empty pair when no repository_container is set7079 without a path7080 extracts a valid branch7081 extracts a valid tag7082 extracts a valid commit ref without a path7083 falls back to a primitive split for an invalid ref7084 does not fetch ref names when there is no slash7085 fetches ref names when there is a slash7086 with a path7087 extracts a valid branch7088 extracts a valid tag7089 extracts a valid commit SHA7090 falls back to a primitive split for an invalid ref7091 extracts the longest matching ref7092 when the repository does not have ambiguous refs7093 does not fetch all ref names when the first path component is a ref7094 fetches all ref names when the first path component is not a ref7095 when the repository has ambiguous refs7096 always fetches all ref names7097Gitlab::Metrics::Subscribers::RackAttack7098 .payload7099 when the request store is empty7100 returns empty data7101 when the request store already has data7102 returns the accumulated data7103 #redis7104 accumulates per-request RackAttack cache usage7105 #throttle7106 behaves like log into auth logger7107 when matched throttle does not require user information7108 logs request information7109 when matched throttle requires user information7110 when user not found7111 logs request information and user id7112 when user found7113 logs request information and user meta7114 #blocklist7115 behaves like log into auth logger7116 when matched throttle does not require user information7117 logs request information7118 when matched throttle requires user information7119 when user not found7120 logs request information and user id7121 when user found7122 logs request information and user meta7123 #track7124 behaves like log into auth logger7125 when matched throttle does not require user information7126 logs request information7127 when matched throttle requires user information7128 when user not found7129 logs request information and user id7130 when user found7131 logs request information and user meta7132 #safelist7133 adds the matched name to safe request store7134BulkImports::FileDownloadService7135 #execute7136 downloads file7137 when content-type is application/gzip7138 downloads file7139 when url is not valid7140 raises an error7141 when content-type is not valid7142 raises an error7143 when content-length is not valid7144 when content-length exceeds limit7145 raises an error7146 when content-length is missing7147 raises an error7148 when content-length is equals the file size limit7149 does not raise an error7150 when partially downloaded file exceeds limit7151 raises an error7152 when chunk code is not 2007153 raises an error7154 when file is a symlink7155 raises an error and removes the file7156 when dir is not in tmpdir7157 raises an error7158 when dir path is being traversed7159 raises an error7160 when using the remote filename7161 when no filename is given7162 raises an error when the filename is not provided in the request header7163 with a given filename7164 uses the given filename7165 when the filename is a path7166 raises an error when the filename is not provided in the request header7167 when the filename is longer the the limit7168 raises an error when the filename is not provided in the request header7169Gitlab::HealthChecks::Redis::SharedStateCheck7170 #metrics7171 Check is passing7172 is expected to include (have attributes {:name => "redis_shared_state_ping_success", :value => 1})7173 is expected to include (have attributes {:name => "redis_shared_state_ping_timeout", :value => 0})7174 is expected to include (have attributes {:name => "redis_shared_state_ping_latency_seconds", :value => (be >= 0)})7175 Check is misbehaving7176 is expected to include (have attributes {:name => "redis_shared_state_ping_success", :value => 0})7177 is expected to include (have attributes {:name => "redis_shared_state_ping_timeout", :value => 0})7178 is expected to include (have attributes {:name => "redis_shared_state_ping_latency_seconds", :value => (be >= 0)})7179 Check is timeouting7180 is expected to include (have attributes {:name => "redis_shared_state_ping_success", :value => 0})7181 is expected to include (have attributes {:name => "redis_shared_state_ping_timeout", :value => 1})7182 is expected to include (have attributes {:name => "redis_shared_state_ping_latency_seconds", :value => (be >= 0)})7183 #readiness7184 Check returns ok7185 is expected to have attributes {:success => true}7186 Check is misbehaving7187 is expected to have attributes {:message => "unexpected Shared_state check result: error!", :success => false}7188 Check is timeouting7189 is expected to have attributes {:message => "Shared_state check timed out", :success => false}7190 Check is raising an unhandled exception7191 is expected to have attributes {:message => "unexpected Shared_state check result: unexpected error", :success => false}7192Gitlab::Diff::Highlight7193 #highlight7194 with a diff file7195 returns Gitlab::Diff::Line elements7196 does not modify "match" lines7197 highlights and marks unchanged lines7198 highlights and marks removed lines7199 highlights and marks added lines7200 when no diff_refs7201 when no inline diffs7202 behaves like without inline diffs7203 returns html escaped diff text7204 with diff lines7205 returns Gitlab::Diff::Line elements7206 does not modify "match" lines7207 marks unchanged lines7208 marks removed lines7209 marks added lines7210 when the inline diff marker has an invalid range7211 keeps the original rich line7212 reports to Sentry if configured7213 when `use_marker_ranges` feature flag is disabled7214 returns the same result7215 when no inline diffs7216 behaves like without inline diffs7217 returns html escaped diff text7218 when blob is too large7219 blobs are highlighted as plain text without loading all data7220Mutations::AlertManagement::UpdateAlertStatus7221 is expected to require graphql authorizations :update_alert_management_alert7222 #resolve7223 raises an error if the resource is not accessible to the user7224 user has access to project7225 changes the status7226 returns the alert with no errors7227 behaves like an incident management tracked event7228 .track_event7229 tracks the event using redis7230 error occurs when updating7231 returns the alert with errors7232 invalid status given7233 returns the alert with errors7234Gitlab::Cache::Helpers7235 #render_cached7236 single object7237 behaves like object cache helper7238 is expected to be a kind of Gitlab::Json::PrecompiledJson7239 uses the presenter7240 is valid JSON7241 fetches from the cache7242 when a cache context is supplied7243 uses the context to augment the cache key7244 when expires_in is supplied7245 sets the expiry when accessing the cache7246 collection of objects7247 behaves like collection cache helper7248 is expected to be a kind of Gitlab::Json::PrecompiledJson7249 uses the presenter7250 is valid JSON7251 fetches from the cache7252 when a cache context is supplied7253 uses the context to augment the cache key7254 expires_in is supplied7255 sets the expiry when accessing the cache7256Lfs::LockFileService7257 #execute7258 when not authorized7259 doesn't succeed7260 when authorized7261 with an existent lock7262 doesn't succeed7263 doesn't create the Lock7264 without an existent lock7265 succeeds7266 creates the Lock7267 when an error is raised7268 doesn't succeed7269EnvironmentHelper7270 #render_deployment_status7271 when using a manual deployment7272 renders a span tag7273 when using a deployment from a build7274 renders a link tag7275 for a blocked deployment7276 indicates the status7277 #environments_detail_data_json7278 returns the correct data7279Spam::AkismetService7280 #spam?7281 behaves like no activity if Akismet is not enabled7282 is automatically false7283 performs no check7284 if Akismet is enabled7285 correctly transforms options for the akismet client, including spelling of referrer key7286 the text is spam7287 is expected to be truthy7288 the text is blatant spam7289 is expected to be truthy7290 the text is not spam7291 is expected to be falsey7292 error handling7293 StandardError other than ArgumentError is raised7294 is expected to be falsey7295 logs an error7296 ArgumentError is raised in dev7297 raises original error7298 #submit_ham7299 behaves like no activity if Akismet is not enabled7300 is automatically false7301 performs no check7302 behaves like false if Akismet is not available7303 if Akismet is not available7304 is expected to be falsey7305 logs an error7306 if Akismet is available7307 is expected to be truthy7308 #submit_spam7309 behaves like no activity if Akismet is not enabled7310 is automatically false7311 performs no check7312 behaves like false if Akismet is not available7313 if Akismet is not available7314 is expected to be falsey7315 logs an error7316 if Akismet is available7317 is expected to be truthy7318RuboCop::Cop::FileDecompression7319 does not flag when using a system command not related to file decompression7320 flags the when using 'gunzip' system command7321 flags the when using 'gunzip' subshell command7322 flags the when using 'gzip' system command7323 flags the when using 'gzip' subshell command7324 flags the when using 'zip' system command7325 flags the when using 'zip' subshell command7326 flags the when using 'tar' system command7327 flags the when using 'tar' subshell command7328Gitlab::Diff::Formatters::TextFormatter7329 behaves like position formatter7330 #key7331 is expected to eq [123, 456, 789, "35bd01186d18c9f4842e2f377cc780a95bab7bcf", "02fa17b1a8378a17c3103dc5a6cb16a5f73a1433", 1, 2]7332 #complete?7333 when there are missing key attributes7334 is expected to be truthy7335 when old_line and new_line are nil7336 is expected to be falsy7337 #to_h7338 when file_identifier_hash is disabled7339 is expected to eq {:base_sha=>123, :head_sha=>789, :line_range=>nil, :new_line=>2, :new_path=>"new_path.txt", :old_line=>1, :old_path=>"old_path.txt", :position_type=>"text", :start_sha=>456}7340 when file_identifier_hash is enabled7341 is expected to eq {:base_sha=>123, :file_identifier_hash=>"777", :head_sha=>789, :line_range=>nil, :new_line=>2, :new_p...h=>"new_path.txt", :old_line=>1, :old_path=>"old_path.txt", :position_type=>"text", :start_sha=>456}7342 #==7343 is expected to eq #<Gitlab::Diff::Formatters::TextFormatter:0x00007f646a136548 @old_line=1, @new_line=2, @line_range=ni...@new_path="new_path.txt", @file_identifier_hash="777", @base_sha=123, @start_sha=456, @head_sha=789>7344 #line_age7345 when there is only new_line7346 is expected to eq "new"7347 when there is only old_line7348 is expected to eq "old"7349 #==7350 is false when the line_range changes7351 is true when the line_range doesn't change7352BulkImports::Tracker7353 associations7354 is expected to belong to entity required: true7355 validations7356 is expected to validate that :relation cannot be empty/falsy7357 is expected to validate that :relation is case-sensitively unique within the scope of :bulk_import_entity_id7358 is expected to validate that :stage cannot be empty/falsy7359 when has_next_page is true7360 validates presence of `next_page`7361 .stage_running?7362 returns true if there is any unfinished pipeline in the given stage7363 returns false if there are no unfinished pipeline in the given stage7364 .next_pipeline_trackers_for7365 returns empty when all the stages pipelines are finished7366 returns the not started pipeline trackers from the minimum stage number7367 #pipeline_class7368 returns the pipeline class7369 raises an error when the pipeline is not valid7370Gitlab::PhabricatorImport::Issues::TaskImporter7371 #execute7372 creates the issue with the expected attributes7373 does not recreate the issue when called multiple times7374 does not trigger a save when the object did not change7375 links the author if the author can be found7376 links an assignee if the user can be found7377Integrations::CreateExternalCrossReferenceWorker7378 has the `until_executed` deduplicate strategy7379 behaves like an idempotent worker7380 is labeled as idempotent7381 performs multiple times sequentially without raising an exception7382 can run multiple times with the same arguments7383 mentionable_type: "Commit", mentionable_id: lazy { commit.id }7384 creates a cross reference7385 mentionable_type: "Issue", mentionable_id: lazy { issue.id }7386 creates a cross reference7387 mentionable_type: "MergeRequest", mentionable_id: lazy { merge_request.id }7388 creates a cross reference7389 mentionable_type: "Note", mentionable_id: lazy { note.id }7390 creates a cross reference7391 mentionable_type: "Snippet", mentionable_id: lazy { snippet.id }7392 creates a cross reference7393 error handling7394 project_id does not exist7395 behaves like does not create a cross reference7396 does not create a cross reference7397 author_id does not exist7398 behaves like does not create a cross reference7399 does not create a cross reference7400 mentionable_id does not exist7401 behaves like does not create a cross reference7402 does not create a cross reference7403 mentionable_type is not a Mentionable7404 behaves like does not create a cross reference7405 does not create a cross reference7406 mentionable_type is not a defined constant7407 behaves like does not create a cross reference7408 does not create a cross reference7409 mentionable is a Commit and mentionable_id does not exist7410 behaves like does not create a cross reference7411 does not create a cross reference7412UsersStarProjectsFinder7413 #execute7414 as same user7415 is expected to contain exactly #<UsersStarProject id: 21, project_id: 1483, user_id: 3020, created_at: "2022-02-04 17:24:40.101994000 +0000", updated_at: "2022-02-04 17:24:40.101994000 +0000"> and #<UsersStarProject id: 20, project_id: 1483, user_id: 3018, created_at: "2022-02-04 17:24:40.006668000 +0000", updated_at: "2022-02-04 17:24:40.006668000 +0000">7416 as other user7417 is expected to contain exactly #<UsersStarProject id: 22, project_id: 1484, user_id: 3021, created_at: "2022-02-04 17:24:40.643223000 +0000", updated_at: "2022-02-04 17:24:40.643223000 +0000">7418 as no user7419 is expected to contain exactly #<UsersStarProject id: 24, project_id: 1485, user_id: 3025, created_at: "2022-02-04 17:24:41.550271000 +0000", updated_at: "2022-02-04 17:24:41.550271000 +0000">7420Terraform.gitlab-ci.yml7421 the created pipeline7422 on master branch7423 creates init, validate and build jobs7424 outside the master branch7425 does not creates a deploy and a test job7426Snippets::RepositoryValidationService7427 #execute7428 returns error when the repository has more than one branch7429 returns error when existing branch name is not the default one7430 returns error when the repository has tags7431 returns error when the repository has more file than the limit7432 returns error when the repository has no files7433 returns error when the repository size is over the limit7434 returns success when no validation errors are raised7435Gitlab::Email::Hook::SmimeSignatureInterceptor7436 signs the email appropriately with SMIME7437Gitlab::Database::Partitioning::PartitionManager7438 creating partitions (mocked)7439 creates the partition7440 when an error occurs during partition management7441 does not raise an error7442 creating partitions7443 creates partitions7444 detaching partitions (mocked)7445 detaches each extra partition7446 #detach_partitions7447 detaches exactly one partition7448 detaches the old partition7449 deletes zero tables7450 creates the appropriate PendingPartitionDrop entry7451 when the model is the target of a foreign key7452 does not detach partitions with a referenced foreign key7453 creating and then detaching partitions for a table7454 creates partitions for the future then drops the oldest one after a month7455Participable7456 .participant7457 adds the participant attributes to the existing list7458 #participants7459 returns the list of participants7460 caches the list of filtered participants7461 supports attributes returning another Participable7462 when using a Proc as an attribute7463 calls the supplied Proc7464 participable is a personal snippet7465 returns the list of participants7466 #visible_participants7467 returns the list of participants7468 when Participable is not readable by the user7469 does not return unavailable participants7470 #participant?7471 returns whether the user is a participant7472 caches the list of raw participants7473 participable is a personal snippet7474 returns whether the user is a participant7475Ci::ChangeVariableService7476 #execute7477 when creating a variable7478 persists a variable7479 when updating a variable7480 updates a variable7481 when the variable does not exist7482 raises a record not found error7483 when destroying a variable7484 destroys a variable7485 when the variable does not exist7486 raises a record not found error7487Constraints::ProjectUrlConstrainer7488 #matches?7489 valid request7490 is expected to be truthy7491 invalid request7492 non-existing project7493 is expected to be falsey7494 existence_check is false7495 is expected to be truthy7496 project id ending with .git7497 is expected to be falsey7498 when the request matches a redirect route7499 and is a GET request7500 is expected to be truthy7501 and is NOT a GET request7502 is expected to be falsey7503Gitlab::Diff::FileCollection::MergeRequestDiffBase7504 #overflow?7505 when it is not overflown7506 returns false7507 when it is overflown7508 returns true7509 #cache_key7510 returns cache_key from merge_request_diff7511IssueSidebarBasicEntity7512 contains keys related to issuables7513 contains attributes related to the issue7514 current_user7515 contains attributes related to the current user7516 can_update_escalation_status7517 for a standard issue7518 is not present7519 for an incident issue7520 is present and true7521 without permissions7522 is present and false7523 with :incident_escalations feature flag disabled7524 is not present7525Resolvers::AlertManagement::IntegrationsResolver7526 is expected to have nullable GraphQL type AlertManagementIntegrationConnection7527 user does not have permission7528 is expected to be empty7529 user has permission7530 is expected to contain exactly #<AlertManagement::HttpIntegration id: 2, created_at: "2022-02-04 17:24:59.149971857 +0000", updated_...tifier: "7f18fcce", name: "DataDog", payload_example: {}, payload_attribute_mapping: {}, token: nil> and #<Integrations::Prometheus id: 31, type: "PrometheusService", project_id: 1498, created_at: "2022-02-...: true, group_id: nil, type_new: nil, vulnerability_events: false, archive_trace_events: [FILTERED]>7531 when HTTP Integration ID is given7532 when integration is from the current project7533 is expected to contain exactly #<AlertManagement::HttpIntegration id: 3, created_at: "2022-02-04 17:24:59.154460106 +0000", updated_...tifier: "ad77e83b", name: "DataDog", payload_example: {}, payload_attribute_mapping: {}, token: nil>7534 when integration is from other project7535 is expected to be empty7536 when Prometheus Integration ID is given7537 when integration is from the current project7538 is expected to contain exactly #<Integrations::Prometheus id: 31, type: "PrometheusService", project_id: 1498, created_at: "2022-02-...: true, group_id: nil, type_new: nil, vulnerability_events: false, archive_trace_events: [FILTERED]>7539 when integration is from other project7540 is expected to be empty7541Ci::CompareReportsBaseService7542 #latest?7543 when cache key is latest7544 is expected to be truthy7545 when cache key is outdated7546 is expected to be falsy7547 when cache key is empty7548 is expected to be falsy7549Gitlab::Spamcheck::Client7550 url scheme7551 is tls7552 uses secure connection7553 is grpc7554 uses insecure connection7555 #issue_spam?7556 includes interceptors7557 verdict: 0, expected: "allow"7558 returns expected spam constant7559 verdict: 1, expected: "conditional_allow"7560 returns expected spam constant7561 verdict: 2, expected: "disallow"7562 returns expected spam constant7563 verdict: 3, expected: "block"7564 returns expected spam constant7565 verdict: 4, expected: "noop"7566 returns expected spam constant7567 #build_issue_protobuf7568 builds the expected protobuf object7569 #build_user_protobuf7570 builds the expected protobuf object7571 when user has multiple email addresses7572 adds emails to the user pb object7573 #build_project_protobuf7574 builds the expected protobuf object7575Gitlab::RackAttack::UserAllowlist7576 input: nil, elements: []7577 has the expected elements7578 implements empty?7579 implements include?7580 input: "", elements: []7581 has the expected elements7582 implements empty?7583 implements include?7584 input: "123", elements: [123]7585 has the expected elements7586 implements empty?7587 implements include?7588 input: "123,456", elements: [123, 456]7589 has the expected elements7590 implements empty?7591 implements include?7592 input: "123,foobar, 456,", elements: [123, 456]7593 has the expected elements7594 implements empty?7595 implements include?7596Gitlab::Cleanup::OrphanJobArtifactFiles7597 passes on dry_run7598 errors when invalid niceness is given7599 passes correct arguments to ionice7600 finds artifacts on disk7601 stops when limit is reached7602 cleans even if batch is not full7603 cleans in batches7604Mutations::Todos::MarkDone7605 is expected to require graphql authorizations :update_todo7606 #resolve7607 marks a single todo as done7608 handles a todo which is already done as expected7609 ignores requests for todos which do not belong to the current user7610 ignores invalid GIDs7611Gitlab::Middleware::Speedscope7612 #call7613 when flamegraph is not requested7614 behaves like returns original response7615 returns original response7616 when flamegraph requested7617 when user is not allowed7618 behaves like returns original response7619 returns original response7620 when user is allowed7621 returns a flamegraph7622 when the stackprof_mode parameter is set and valid7623 runs StackProf in the mode specified in the stackprof_mode parameter7624 when the stackprof_mode parameter is not set7625 runs StackProf in wall mode7626 when the stackprof_mode parameter is invalid7627 runs StackProf in wall mode7628 when the stackprof_mode parameter is set to object mode7629 runs StackProf with an interval of 1007630 when the stackprof_mode parameter is not set to object mode7631 runs StackProf with an interval of 10_1007632Gitlab::Checks::LfsCheck7633 #validate!7634 with LFS not enabled7635 skips integrity check7636 with LFS enabled7637 fails if any LFS blobs are missing7638 succeeds if LFS objects have already been uploaded7639 with lfs_check feature disabled7640 skips integrity check7641 with deletion7642 with missing newrev7643 behaves like a skipped integrity check7644 skips integrity check7645 with blank newrev7646 behaves like a skipped integrity check7647 skips integrity check7648Gitlab::Analytics::CycleAnalytics::RecordsFetcher7649 #serialized_records7650 for issue based stage7651 returns all records7652 when records are loaded by guest7653 filters out confidential issues7654 for merge request based stage7655 returns all records7656 pagination7657 limits the results7658 loads the record for the next page7659Postgresql::ReplicationSlot7660 is expected to be a kind of Gitlab::Database::SharedModel(abstract)7661 .in_use?7662 returns true when replication slots are present7663 returns false when replication slots are not present7664 returns false if the existence check is invalid7665 .lag_too_great?7666 does not raise an exception7667 returns true when replication lag is too great7668 returns false when more than one replicas is up to date enough7669 returns false when replication lag is not too great7670 returns false when there is a nil replication lag7671 #max_replication_slots7672 returns the maximum number of replication slots7673 with enough slots available7674 #slots_count7675 returns the number of replication slots7676 #unused_slots_count7677 returns the number of unused replication slots7678 #max_retained_wal7679 returns the retained WAL size7680 #slots_retained_bytes7681 returns the number of retained bytes7682ErrorTracking::SentryClient::ApiUrls7683 #issues_url7684 behaves like correct url7685 is expected to eq uri "https://sentrytest.gitlab.com/api/0/projects/sentry-org/sentry-project/issues/"7686 behaves like correct url with extra slashes7687 behaves like correct url7688 is expected to eq uri "https://sentrytest.gitlab.com/api/0/projects/sentry-org/sentry-project/issues/"7689 #issue_url7690 behaves like correct url7691 is expected to eq uri "https://sentrytest.gitlab.com/api/0/issues/123456/"7692 behaves like correct url with extra slashes7693 behaves like correct url7694 is expected to eq uri "https://sentrytest.gitlab.com/api/0/issues/123456/"7695 behaves like correctly escapes issue ID7696 with param a string with reserved chars7697 is expected to include "123%24%25"7698 with param a symbol with reserved chars7699 is expected to include "123%24%25"7700 with param an integer7701 is expected to include "12345678"7702 #projects_url7703 behaves like correct url7704 is expected to eq uri "https://sentrytest.gitlab.com/api/0/projects/"7705 behaves like correct url with extra slashes7706 behaves like correct url7707 is expected to eq uri "https://sentrytest.gitlab.com/api/0/projects/"7708 #issue_latest_event_url7709 behaves like correct url7710 is expected to eq uri "https://sentrytest.gitlab.com/api/0/issues/123456/events/latest/"7711 behaves like correct url with extra slashes7712 behaves like correct url7713 is expected to eq uri "https://sentrytest.gitlab.com/api/0/issues/123456/events/latest/"7714 behaves like correctly escapes issue ID7715 with param a string with reserved chars7716 is expected to include "123%24%25"7717 with param a symbol with reserved chars7718 is expected to include "123%24%25"7719 with param an integer7720 is expected to include "12345678"7721IncidentManagement::IssuableEscalationStatuses::AfterUpdateService7722 with status attributes7723 updates the alert with the new alert status7724 behaves like adds a status change system note7725 is expected to change `issue.reload.notes.count` by 17726 when incident is not associated with an alert7727 behaves like does not attempt to update the alert7728 is expected to be success7729 behaves like adds a status change system note7730 is expected to change `issue.reload.notes.count` by 17731 when new status matches the current status7732 is expected not to change `issue.reload.notes.count`7733 behaves like does not attempt to update the alert7734 is expected to be success7735WebHookLogPresenter7736 #details_path7737 project hook7738 is expected to eq "/namespace1295/project1544/-/hooks/1/hook_logs/1"7739 service hook7740 is expected to eq "/namespace1296/project1545/-/integrations/drone_ci/hook_logs/2"7741 #retry_path7742 project hook7743 is expected to eq "/namespace1297/project1546/-/hooks/4/hook_logs/3/retry"7744 service hook7745 is expected to eq "/namespace1298/project1547/-/integrations/drone_ci/hook_logs/4/retry"7746Gitlab::Ci::Pipeline::Logger7747 #log_when7748 stores blocks for later evaluation7749 #instrument7750 returns the block's value7751 records durations of instrumented operations7752 raises an error when block is not provided7753 #instrument_with_sql7754 with a single query7755 is expected to eq 07756 includes SQL metrics7757 with multiple queries7758 is expected to eq 07759 includes SQL metrics7760 with multiple observations7761 includes SQL metrics7762 when there are not SQL operations7763 is expected to eq 1237764 does not include SQL metrics7765 #observe7766 records durations of observed operations7767 #commit7768 when the feature flag is enabled7769 logs to application.json7770 with log conditions7771 does not log when the conditions are false7772 logs when a condition is true7773 when the feature flag is disabled7774 does not log7775GoogleApi::CloudPlatform::Client7776 .session_key_for_redirect_uri7777 creates a new session key7778 .new_session_key_for_redirect_uri7779 generates a new session key7780 #validate_token7781 when token is nil7782 is expected to be falsy7783 when expires_at is nil7784 is expected to be falsy7785 when expires in 1 hour7786 is expected to be truthy7787 when expires in 10 minutes7788 is expected to be falsy7789 #projects_zones_clusters_get7790 is expected to eq #<Double (anonymous)>7791 #projects_zones_clusters_create7792 sets corresponded parameters7793 create without legacy_abac7794 sets corresponded parameters7795 create with enable_addons for cloud_run7796 sets corresponded parameters7797 #projects_zones_operations7798 is expected to eq #<Double (anonymous)>7799 #parse_operation_id7800 when expected url7801 is expected to eq "ope-123"7802 when unexpected url7803 is expected to be nil7804 #user_agent_header7805 returns a RequestOptions object7806 has the correct GitLab version in User-Agent header7807 #list_projects7808 calls Google Api CloudResourceManagerService#list_projects7809 #create_service_account7810 calls Google Api IamService#create_service_account7811 #create_service_account_key7812 calls Google Api IamService#create_service_account_key7813 grant_service_account_roles7814 calls Google Api CloudResourceManager#set_iam_policy7815projects/issues/_service_desk_info_content7816 when service desk is disabled7817 when the logged user is at least maintainer7818 shows the info including the project settings link7819 when the logged user is at only a developer7820 shows the info without the project settings link7821 when service desk is enabled7822 when the logged user is at least reporter7823 shows the info including the email address7824 when the logged user is at only a guest7825 shows the info without the email address7826 when user is not logged in7827 shows the info without the email address7828Ci::PipelineArtifacts::CreateQualityReportWorker7829 #perform7830 when pipeline exists7831 calls pipeline codequality report service7832 behaves like an idempotent worker7833 is labeled as idempotent7834 performs multiple times sequentially without raising an exception7835 does not create another pipeline artifact if already has one7836 when pipeline does not exist7837 does not call pipeline codequality report service7838LearnGitlab::Onboarding7839 #completed_percentage7840 when no onboarding_progress exists7841 is expected to eq 07842 when no action has been completed7843 is expected to eq 07844 when one action has been completed7845 is expected to eq 117846 when all tracked actions have been completed7847 is expected to eq 1007848AwardEmojis::ToggleService7849 #execute7850 when user has awarded an emoji7851 calls AwardEmojis::DestroyService7852 destroys an AwardEmoji7853 returns the result of DestroyService#execute7854 when user has not awarded an emoji7855 calls AwardEmojis::AddService7856 creates an AwardEmoji7857 returns the result of AddService#execute7858Gitlab::UsageData::Topology7859 #topology_usage_data7860 can reach a ready Prometheus client7861 behaves like query topology data from Prometheus7862 tracking node metrics7863 contains node level metrics for each instance7864 and some node memory metrics are missing7865 removes the respective entries and includes the failures7866 and services run on the same node but report different instance values7867 normalizes equivalent instance values and maps them to the same node7868 and node metrics are missing but service metrics exist7869 still reports service metrics7870 and unknown services are encountered7871 filters out unknown service data and reports the unknown services as a failure7872 and an error is raised when querying Prometheus7873 without timeout failures7874 returns empty result and executes subsequent queries as usual7875 with timeout failures7876 exception: Errno::ETIMEDOUT7877 returns empty result and cancelled subsequent queries7878 exception: Net::OpenTimeout7879 returns empty result and cancelled subsequent queries7880 exception: Net::ReadTimeout7881 returns empty result and cancelled subsequent queries7882 can not reach a ready Prometheus client7883 behaves like returns empty result with no failures7884 is expected to eq {:duration_s=>0, :failures=>[]}7885 when top-level function raises error7886 returns empty result with generic failure7887Gitlab::SearchContext::ControllerConcern7888 exposing @project7889 behaves like has the proper context7890 aggregate_failures7891 when the project is owned by a group7892 behaves like has the proper context7893 aggregate_failures7894 exposing @group7895 behaves like has the proper context7896 aggregate_failures7897 exposing @snippet, @snippets7898 behaves like has the proper context7899 aggregate_failures7900 exposing @ref7901 behaves like has the proper context7902 aggregate_failures7903Gitlab::Graphql::Pagination::OffsetActiveRecordRelationConnection7904 subclasses from GraphQL::Relay::RelationConnection7905 behaves like a connection with collection methods7906 responds to to_a7907 responds to size7908 responds to map7909 responds to include?7910 responds to empty?7911 behaves like a redactable connection7912 no redactor set7913 contains the unwanted item7914 does not redact more than once7915 redactor is set7916 does not contain the unwanted item7917 does not redact more than once7918Gitlab::Ci::Status::Build::FailedUnmetPrerequisites7919 #illustration7920 is expected to include :image, :size, :title, and :content7921 .matches?7922 when build has not failed7923 is expected to be falsey7924 when build has failed7925 with unmet prerequisites7926 is expected to be truthy7927 with a different error7928 is expected to be falsey7929RspecFlaky::FlakyExamplesCollection7930 #initialize7931 accepts no argument7932 accepts a hash7933 does not accept anything else7934 #to_h7935 calls #to_h on the values7936 #-7937 returns only examples that are not present in the given collection7938 fails if the given collection does not respond to `#key?`7939Gitlab::Database::Partitioning7940 .register_models7941 ensure that the registered models have partitioning strategy7942 fails when partitioning_strategy is not specified for the model7943 .sync_partitions_ignore_db_error7944 calls sync_partitions7945 when ActiveRecord::ActiveRecordError is raised7946 ignores it7947 when PG::Error is raised7948 ignores it7949 when DISABLE_POSTGRES_PARTITION_CREATION_ON_STARTUP is set7950 does not call sync_partitions7951 .sync_partitions7952 manages partitions for each given model7953 when no partitioned models are given7954 manages partitions for each registered model7955 .report_metrics7956 when no partitioned models are given7957 reports metrics for each registered model7958 when partitioned models are given7959 reports metrics for each given model7960 .drop_detached_partitions7961 drops detached partitions for each database7962Gitlab::Utils::DelegatorOverride::Validator7963 #add_allowlist7964 adds a method name to the allowlist7965 #add_target7966 adds the target class7967 #expand_on_ancestors7968 adds the allowlist in the ancestors7969 #validate_overrides!7970 does not raise an error when the overrides are allowed7971 raises an error when there is an override7972Ci::FindExposedArtifactsService7973 #for_pipeline7974 with jobs having no exposed artifacts7975 behaves like does not find any matches7976 returns empty array7977 with jobs having no artifacts (metadata)7978 behaves like does not find any matches7979 returns empty array7980 with jobs having at most 1 matching exposed artifact7981 behaves like finds a single match7982 returns the artifact with exact location7983 with jobs having more than 1 matching exposed artifacts7984 behaves like finds multiple matches7985 returns the path to the artifacts browser7986 with jobs having more than 1 matching exposed artifacts inside a directory7987 behaves like finds multiple matches7988 returns the path to the artifacts browser7989 with jobs having paths with glob expression7990 behaves like finds a single match7991 returns the artifact with exact location7992 limiting results7993 returns first 2 results7994 cross-project MR7995 returns the correct path for cross-project MRs7996Ci::BuildTraceChunkFlushWorker7997 migrates chunk to a permanent store7998 #perform7999 behaves like an idempotent worker8000 is labeled as idempotent8001 performs multiple times sequentially without raising an exception8002 migrates build trace chunk to a safe store8003Pages::DestroyDeploymentsService8004 destroys all deployments of the project8005 destroy only deployments older than last deployment if it is provided8006Gitlab::Ci::Pipeline::Quota::Deployments8007 #enabled?8008 when limit is enabled in plan8009 is enabled8010 when limit is not enabled8011 is not enabled8012 when limit does not exist8013 is enabled by default8014 #exceeded?8015 when limit is exceeded8016 is exceeded8017 when limit is not exceeded8018 is not exceeded8019 #message8020 when limit is exceeded8021 returns info about pipeline deployment limit exceeded8022Preloaders::MergeRequestDiffPreloader8023 does not trigger N+1 queries8024Groups::ParticipantsService8025 #group_members8026 returns all members in parent groups, sub-groups, and sub-projects8027Packages::Helm::PackageFilesFinder8028 #execute8029 with empty params8030 is expected to eq [#<Packages::PackageFile id: 12, package_id: 12, created_at: "2022-02-04 17:25:42.707745136 +0000", u...m: nil, verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil>]8031 with another project8032 is expected to eq []8033 with another channel8034 is expected to eq []8035 with matching file_name8036 is expected to eq [#<Packages::PackageFile id: 12, package_id: 12, created_at: "2022-02-04 17:25:42.707745136 +0000", u...m: nil, verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil>]8037 with another file_name8038 is expected to eq []8039 #most_recent!8040 is expected to eq #<Packages::PackageFile id: 12, package_id: 12, created_at: "2022-02-04 17:25:42.707745136 +0000", up...um: nil, verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil>8041Marginalia spec8042 For rails web requests8043 generates a query that includes the component and value8044 when using CI database8045 generates a query that includes the component and value (PENDING: Skipping because multiple databases not set up)8046 for Sidekiq worker jobs8047 generates a query that includes the component and value8048 for ActionMailer delivery jobs8049 generates a query that includes the component and value8050Packages::Nuget::DependencyLinkMetadatum8051 relationships8052 is expected to belong to dependency_link required: false8053 validations8054 is expected to validate that :dependency_link cannot be empty/falsy8055 is expected to validate that :target_framework cannot be empty/falsy8056 #ensure_nuget_package_type8057 validates package of type nuget8058 validates package of type nuget with nil dependency_link8059AwardEmojis::CopyService8060 #initialize8061 validates that we cannot copy AwardEmoji to the same Awardable8062 #execute8063 copies AwardEmojis8064 returns success8065Gitlab::Ci::Pipeline::Expression::Lexeme::String8066 .build8067 creates a new instance of the token8068 .type8069 is a value lexeme8070 .scan8071 when using double quotes8072 correctly identifies string token8073 when using single quotes8074 correctly identifies string token8075 when there are mixed quotes in the string8076 is a greedy scanner for double quotes8077 is a greedy scanner for single quotes8078 allows to use single quotes inside double quotes8079 allow to use double quotes inside single quotes8080 allows to use an empty string inside single quotes8081 allow to use an empty string inside double quotes8082 #evaluate8083 returns string value if it is present8084 returns an empty string if it is empty8085Environments::CanaryIngress::UpdateWorker8086 #perform8087 executes the update service8088 when an environment does not exist8089 does not execute the update service8090Projects::Prometheus::Alerts::CreateService8091 #execute8092 with params8093 creates an alert8094 without params8095 fails to create8096NotifyHelper8097 merge_request_reference_link8098 returns link to merge request with the text reference8099 issue_reference_link8100 returns link to issue with the text reference8101 #invited_to_description8102 truncates long descriptions8103 source: #<Project id: namespace1/project1>>, description: /Projects are/8104 is expected to match /Projects are/8105 source: #<Group id: @group1>, description: /Groups assemble/8106 is expected to match /Groups assemble/8107 source: #<Project id: namespace2/project2>>, description: "_description_"8108 is expected to match "_description_"8109 source: #<Group id: @group2>, description: "_description_"8110 is expected to match "_description_"8111ExpireBuildArtifactsWorker8112 #perform8113 executes a service8114LegacyBulkInsert8115 #bulk_insert8116 does nothing with empty rows8117 uses the ordering from the first row8118 quotes column names8119 quotes values8120 does not quote values of a column in the disable_quote option8121 does not quote values of columns in the disable_quote option8122 handles non-UTF-8 data8123 when using PostgreSQL8124 allows the returning of the IDs of the inserted rows8125 allows setting the upsert to do nothing8126Gitlab::Metrics::RailsSlis8127 .initialize_request_slis_if_needed!8128 initializes the SLI for all possible endpoints if they weren't8129 does not initialize the SLI if they were initialized already8130 .request_apdex8131 returns the initialized request apdex SLI object8132 .graphql_query_apdex8133 returns the initialized request apdex SLI object8134Releases::ManageEvidenceWorker8135 when `released_at` in inside the window8136 when Evidence has not been created8137 creates a new Evidence record8138 when evidence has already been created8139 behaves like does not create a new Evidence record8140 sidekiq_inline8141 when `released_at` is outside the window8142 behaves like does not create a new Evidence record8143 sidekiq_inline8144Gitlab::Ci::Reports::TestReportSummary8145 #total8146 when test report summary has several build report results8147 returns all the total count in a hash8148 #test_suites8149 when test report summary has several build report results8150 returns test suites grouped by name8151GroupLabel8152 relationships8153 is expected to belong to group required: false8154 validations8155 is expected to validate that :group cannot be empty/falsy8156 #subject8157 aliases group to subject8158 #to_reference8159 using id8160 returns a String reference to the object8161 using name8162 returns a String reference to the object8163 uses id when name contains double quote8164 cross-project8165 returns a String reference to the object8166 using invalid format8167 raises error8168ArchiveTraceWorker8169 #perform8170 when job is found8171 executes service8172 when job is not found8173 does not execute service8174Mutations::Clusters::AgentTokens::Revoke8175 is expected to eq "ClusterAgentTokenRevoke"8176 is expected to require graphql authorizations :admin_cluster8177 #resolve8178 user does not have permission8179 does not revoke the token8180 user has permission8181 revokes the token8182 supplied ID is invalid8183 raises a coercion error8184Types::Projects::Services::JiraServiceType8185 is expected to eq "JiraService"8186 has basic expected fields8187 is expected to require graphql authorizations :admin_project8188IncidentManagement::AddSeveritySystemNoteWorker8189 #perform8190 when incident and user exist8191 creates a system note8192 when incident does not exist8193 behaves like does not add a system note8194 does not change incident notes count8195 when incident_id is nil8196 behaves like does not add a system note8197 does not change incident notes count8198 when issue is not an incident8199 behaves like does not add a system note8200 does not change incident notes count8201 when user does not exist8202 behaves like does not add a system note8203 does not change incident notes count8204 when user_id is nil8205 behaves like does not add a system note8206 does not change incident notes count8207IssueDueSchedulerWorker8208 #perform8209 schedules one MailScheduler::IssueDueWorker per project with open issues due tomorrow8210Gitlab::Metrics::RackMiddleware8211 #call8212 tracks a transaction8213 tracks any raised exceptions8214Gitlab::DataBuilder::WikiPage8215 .build8216 is expected to be a kind of Hash8217 is expected to eq "wiki_page"8218 is expected to eq {:avatar_url=>"https://www.gravatar.com/avatar/8e1d643b0b91bbb09dd337c105cbec75?s=80&d=identicon", :email=>"[REDACTED]", :id=>3152, :name=>"Sidney Jones3655", :username=>"user2038"}8219 is expected to eq {:avatar_url=>nil, :ci_config_path=>nil, :default_branch=>"master", :description=>nil, :git_http_url=...1362/project1606.git", :visibility_level=>0, :web_url=>"http://localhost/namespace1362/project1606"}8220 is expected to eq {:default_branch=>"main", :git_http_url=>"http://localhost/namespace1362/project1606.wiki.git", :git_...amespace1362/project1606.wiki", :web_url=>"http://localhost/namespace1362/project1606/-/wikis/home"}8221 is expected to include {:slug => "Page-1", :title => "Page 1", :content => "Content for wiki page", :format => :markdown, :message => nil, "content" => "Content for wiki page"}8222 is expected to include {:url => "http://localhost/namespace1362/project1606/-/wikis/Page-1"}8223 is expected to include {:action => "create"}8224 is expected to include {:diff_url => "http://localhost/namespace1362/project1606/-/wikis/Page-1/diff?version_id=5f16db555607afffa25e49b23eefab4b99009a3a"}8225Ci::DailyBuildGroupReportResultSerializer8226 #to_json8227 returns an array of group results8228Gitlab::Metrics::ElasticsearchRackMiddleware8229 #call8230 calls the app8231 records elasticsearch metrics8232 records elasticsearch metrics if an error is raised8233 when there are no elasticsearch requests8234 does not record any metrics8235BulkImports::ExportService8236 #execute8237 schedules RelationExportWorker for each top level relation8238 when exception occurs8239 does not schedule RelationExportWorker8240Subscription8241 relationships8242 is expected to belong to project required: false8243 is expected to belong to subscribable required: false8244 is expected to belong to user required: false8245 validations8246 is expected to validate that :subscribable cannot be empty/falsy8247 is expected to validate that :user cannot be empty/falsy8248 validates uniqueness of project_id scoped to subscribable_id, subscribable_type, and user_id8249ServiceHookPresenter8250 #logs_details_path8251 is expected to eq "/namespace1365/project1609/-/integrations/drone_ci/hook_logs/5"8252 #logs_retry_path8253 is expected to eq "/namespace1366/project1610/-/integrations/drone_ci/hook_logs/6/retry"8254Integrations::Irker8255 Validations8256 when integration is active8257 is expected to validate that :recipients cannot be empty/falsy8258 when integration is inactive8259 is expected not to validate that :recipients cannot be empty/falsy8260 Execute8261 sends valid JSON messages to an Irker listener8262Gitlab::GitalyClient::HealthCheckService8263 #check8264 successfully sends a health check request8265 receives an unsuccessful health check request8266 gracefully handles gRPC error8267Sidebars::Projects::Menus::SnippetsMenu8268 #render?8269 when user cannot access snippets8270 returns false8271 when user can access snippets8272 returns true8273InstanceMetadata::Kas8274 has InstanceMetadataPolicy as declarative policy8275 when KAS is enabled8276 has the correct properties8277 when KAS is disabled8278 has the correct properties8279Gitlab::ExclusiveLeaseHelpers::SleepingLock8280 #retried?8281 we have not made any attempts8282 is expected not to be retried8283 we just made a single (initial) attempt8284 is not considered a retry8285 made multiple attempts8286 is considered a retry8287 #obtain8288 when the lease is not held8289 obtains the lease on the first attempt, without sleeping8290 when the lease is held elsewhere8291 retries to obtain a lease and raises an error8292 when the delay is computed from the attempt number8293 uses the computation to determine the sleep length8294 when lease is granted after retry8295 knows that it retried8296 cancel8297 cancels the lease8298MailScheduler::NotificationServiceWorker8299 #perform8300 deserializes arguments from global IDs8301 when the arguments cannot be deserialized8302 when the arguments are not deserializeable8303 raises exception8304 when the arguments are deserializeable8305 does nothing8306 when the method is not a public method8307 raises NoMethodError8308 .perform_async8309 serializes arguments as global IDs when scheduling8310 with ActiveController::Parameters8311 when permitted8312 serializes as a serializable Hash8313 when not permitted8314 fails to serialize8315Spam::AkismetMarkAsSpamService8316 #execute8317 when the spammable object is not submittable8318 does not submit as spam8319 spam is submitted successfully8320 submits as spam8321 updates the spammable object's user agent detail as being submitted as spam8322 when Akismet does not consider it spam8323 does not update the spammable object as spam8324Gitlab::Git::RemoteMirror8325 #update8326 delegates to the Gitaly client8327 wraps gitaly errors8328TreeEntryPresenter8329 .web_url8330 is expected to eq "http://localhost/namespace1383/project1627/-/tree/b83d6e391c22777fca1ed3012fce84f633d7fed0/bar"8331 #web_path8332 is expected to eq "/namespace1384/project1628/-/tree/b83d6e391c22777fca1ed3012fce84f633d7fed0/bar"8333Keys::LastUsedService8334 #execute8335 updates the key when it has not been used recently8336 does not update the key when it has been used recently8337 does not update the updated_at field8338 #update?8339 returns true when no last used timestamp is present8340 returns true when the key needs to be updated8341 returns false when a lease has already been obtained8342 returns false when the key does not yet need to be updated8343Ci::DailyBuildGroupReportResultsWorker8344 #perform8345 when pipeline is found8346 executes service8347 when pipeline is not found8348 does not execute service8349Gitlab::Database::Reindexing::Coordinator8350 #perform8351 locking8352 acquires a lock while reindexing8353 does not perform reindexing actions if lease is not granted8354 notifications8355 sends #notify_start before reindexing8356 sends #notify_end after reindexing and updating the action is done8357 action tracking8358 calls #finish on the action8359 upon error, it still calls finish and raises the error8360 #drop8361 when exclusive lease is granted8362 drops the index with lock retries8363 when exclusive lease is not granted8364 does not drop the index8365Mutations::Notes::RepositionImageDiffNote8366 #resolve8367 when the user does not have permission8368 raises an error if the resource is not accessible to the user8369 when the user has permission8370 mutates the note8371 when the note is a DiffNote, but not on an image8372 raises an error8373MergeRequests::AssignsMergeParams8374 raises an error when used from an instance that does not respond to #current_user8375 #assign_allowed_merge_params8376 only assigns known parameters to the merge request8377 returns a hash without the known merge params8378 the force_remove_source_branch param8379 assigns the param if the user is allowed to do that8380 only removes the param if the user is not allowed to do that8381UserProjectAccessChangedService8382 #execute8383 schedules the user IDs8384 permits non-blocking operation8385 permits low-priority operation8386 sets the current caller_id as related_class in the context of all the enqueued jobs8387 with load balancing enabled8388 sticks all the updated users and returns the original result8389 avoids N+1 cached queries8390Gitlab::UsageDataCounters::StaticSiteEditorCounter8391 behaves like a redis usage counter8392 .count(views)8393 increments the StaticSiteEditor views counter by 18394 .read(views)8395 returns the total number of views events8396 behaves like a redis usage counter8397 .count(commits)8398 increments the StaticSiteEditor commits counter by 18399 .read(commits)8400 returns the total number of commits events8401 behaves like a redis usage counter8402 .count(merge_requests)8403 increments the StaticSiteEditor merge_requests counter by 18404 .read(merge_requests)8405 returns the total number of merge_requests events8406 behaves like a redis usage counter with totals8407 totals8408 can report all totals8409 unknown events8410 cannot increment8411 cannot read8412Ci::Pipelines::HookService8413 #execute_hooks8414 HOOK_NAME8415 is expected to eq :pipeline_hooks8416 with pipeline hooks enabled8417 calls pipeline.project.execute_hooks and pipeline.project.execute_integrations8418 with pipeline hooks and integrations disabled8419 does not call pipeline.project.execute_hooks and pipeline.project.execute_integrations8420Gitlab::ImportExport::SnippetRepoSaver8421 bundle a project Git repo8422 with project snippet8423 bundles the repo successfully8424 when snippet does not have a repository8425 returns true8426 does not create any file8427Quality::Seeders::Issues8428 #seed8429 seeds issues8430RuboCop::Cop::Scalability::BulkPerformWithContext8431 adds an offense when calling bulk_perform_async8432 adds an offense when calling bulk_perform_in8433 does not add an offense for migrations8434 does not add an offence for specs8435 does not add an offense for scheduling BackgroundMigrations8436Gitlab::Config::Entry::Simplifiable8437 .strategy8438 defines entry strategies8439 setting strategy by a condition8440 when first strategy should be used8441 attemps to load a first strategy8442 when second strategy should be used8443 attemps to load a second strategy8444 when neither one is a valid strategy8445 instantiates an unknown strategy8446 when a unknown strategy class is not defined8447 raises an error when being initialized8448Gitlab::Ci::Status::Failed8449 #text8450 is expected to eq "failed"8451 #label8452 is expected to eq "failed"8453 #icon8454 is expected to eq "status_failed"8455 #favicon8456 is expected to eq "favicon_status_failed"8457 #group8458 is expected to eq "failed"8459 #details_path8460 is expected to be nil8461Gitlab::Git::WrapsGitalyErrors8462 #wrapped_gitaly_errors8463 wraps GRPC::NotFound in a Gitlab::Git::Repository::NoRepository8464 wraps GRPC::InvalidArgument in a ArgumentError8465 wraps GRPC::DeadlineExceeded in a Gitlab::Git::CommandTimedOut8466 wraps GRPC::BadStatus in a Gitlab::Git::CommandError8467 does not swallow other errors8468Gitlab::Metrics::Dashboard::Stages::VariableEndpointInserter8469 #transform!8470 when dashboard variables are present8471 assigns prometheus_endpoint_path to metric_label_values variable type8472 does not modify other variable types8473 when variable does not have the required series_selector8474 adds prometheus_endpoint_path without match parameter8475 when no variables are present8476 does not fail8477 with no environment8478 raises error8479Gitlab::LetsEncrypt::Challenge8480 #status8481 delegates to Acme::Client::Resources::Challenge8482 #token8483 delegates to Acme::Client::Resources::Challenge8484 #file_content8485 delegates to Acme::Client::Resources::Challenge8486 #request_validation8487 delegates to Acme::Client::Resources::Challenge8488 #error8489 delegates to Acme::Client::Resources::Challenge8490Import::GithubishProviderRepoEntity8491 behaves like exposes required fields for import entity8492 exposes required fields8493 correctly exposes id8494 correctly exposes full name8495 correctly exposes sanitized name8496 correctly exposes provider link8497Gitlab::SlashCommands::Presenters::Run8498 #present8499 when no builds are present8500 returns an error8501 when a responder could be found8502 returns the output for a scheduled pipeline8503 when a responder could not be found8504 returns an error8505 #unsupported_chat_service8506 returns an ephemeral response8507 #failed_to_schedule8508 returns an ephemeral response8509Integrations::Assembla8510 Execute8511 calls Assembla API8512IssuableSidebarExtrasEntity8513 have assignee attribute8514Types::Packages::Nuget::MetadatumType8515 includes nuget metadatum fields8516 projectUrl can be null8517 licenseUrl can be null8518 iconUrl can be null8519API::Entities::DeploymentExtended8520 #as_json8521 includes fields from deployment entity8522Gitlab::Usage::Metrics::Instrumentations::CountUsersAssociatingMilestonesToReleasesMetric8523 behaves like a correct instrumented metric value8524 has correct value8525RuboCop::Cop::ActiveRecordAssociationReload8526 when using ActiveRecord::Base8527 registers an offense on reload usage8528 does not register an offense on reset usage8529 when using ActiveRecord::Relation8530 registers an offense on reload usage8531 does not register an offense on reset usage8532 when using on self8533 registers an offense on reload usage8534 does not register an offense on reset usage8535RuboCop::Cop::Migration::RemoveConcurrentIndex8536 in migration8537 registers an offense when remove_concurrent_index is used inside a change method8538 registers no offense when remove_concurrent_index is used inside an up method8539 outside of migration8540 registers no offense8541DependencyProxy::ImageTtlGroupPolicyWorker8542 #perform8543 when there are images to expire8544 updates the old images to pending_destruction8545 counts logging8546 logs all the counts8547 with load balancing enabled8548 reads the counts from the replica8549BulkImports::Projects::Pipelines::ProtectedBranchesPipeline8550 #run8551 imports protected branch information8552Packages::PackagePolicy8553 when the user is part of the project8554 allows read_package8555 when the user is not part of the project8556 disallows read_package for any Package8557API::Entities::GroupDetail8558 #as_json8559 includes prevent_sharing_groups_outside_hierarchy for a root group8560 excludes prevent_sharing_groups_outside_hierarchy for a subgroup8561API::Helpers::VariablesHelpers8562 #filter_variable_parameters8563 returns unmodified params (overridden in EE)8564 #find_variable8565 is expected to eq #<Double (anonymous)>8566 there are multiple variables with the supplied key8567 raises a conflict!8568GroupLink::ProjectGroupLinkSerializer8569 matches json schema8570ForceCompanyTrialExperiment8571 when a user is setup_for_company8572 is not excluded8573 when a user is not setup_for_company8574 is excluded8575Gitlab::Database::SchemaMigrations::Migrations8576 #touch_all8577 creates a file containing a checksum for each version with a matching migration8578 #load_all8579 when there are no version files8580 does nothing8581 when there are version files8582 inserts the missing versions into schema_migrations8583Webauthn::AuthenticateService8584 #execute8585 returns true if the response is valid and a matching stored credential is present8586 returns false if the response is valid but no matching stored credential is present8587WorkItems::BuildService8588 #execute8589 is expected to be a kind of WorkItem(id: integer, title: string, author_id: integer, project_id: integer, created_at: datetime, u...e_type: integer, blocking_issues_count: integer, upvotes_count: integer, work_item_type_id: integer)8590Gitlab::Ci::JwtV28591 is expected to be a kind of Gitlab::Ci::Jwt8592 #payload8593 has correct values for the standard JWT attributes8594groups/new.html.haml8595 setup_for_company field8596 does not have a default selection8597Types::Clusters::AgentActivityEventType8598 is expected to eq "ClusterAgentActivityEvent"8599 is expected to require graphql authorizations :read_cluster8600 is expected to have graphql fields :recorded_at, :kind, :level, :user, and :agent_token8601ProjectImportEntity8602 #as_json8603 includes required fields8604RuboCop::Cop::AvoidRouteRedirectLeadingSlash8605 registers an offense when redirect has a leading slash and corrects8606 does not register an offense when redirect does not have a leading slash8607Banzai::RenderContext8608 #project_for_node8609 returns the default project if no associated project was found8610 returns the associated project if one was associated explicitly8611 returns the project associated with a DocumentFragment when using a node8612Types::CustomerRelations::ContactType8613 is expected to eq "CustomerRelationsContact"8614 is expected to have graphql fields :id, :organization, :first_name, :last_name, :phone, :email, :description, :created_at, and :updated_at8615 is expected to require graphql authorizations :read_crm_contact8616Rack::Multipart8617 with Content-Length under the limit8618 extracts multipart message8619 with Content-Length over the limit8620 from environment8621 behaves like logs multipart message8622 extracts multipart message8623 default limit8624 behaves like logs multipart message8625 extracts multipart message8626admin/application_settings/_repository_storage.html.haml8627 additional storage config8628 lists them all8629 fewer storage configs8630 lists only configured storages8631OmniAuth::Strategies::OAuth28632 verifies the gem version8633 when a Faraday exception is raised8634 exception: Faraday::TimeoutError8635 passes the exception to OmniAuth8636 exception: Faraday::ConnectionFailed8637 passes the exception to OmniAuth8638Gitlab::Graphql::Tracers::LoggerTracer8639 logs every query8640 logs exceptions for breaking queries8641Evidences::EvidenceSerializer8642 represents an EvidenceEntity entity8643Types::Ci::Config::JobType8644 is expected to eq "CiConfigJob"8645 exposes the expected fields8646Groups::CrmSettingsHelper8647 #crm_feature_flag_enabled?8648 when feature flag is enabled8649 is expected to be truthy8650 when feature flag is disabled8651 is expected to be falsy8652Types::Ci::TestSuiteType8653 is expected to eq "TestSuite"8654 contains attributes related to a pipeline test suite8655Banzai::Pipeline::EmojiPipeline8656 replaces emoji8657 filters out HTML tags8658Types::LabelType8659 has the correct fields8660 is expected to require graphql authorizations :read_label8661BlobViewer::PodspecJson8662 #package_name8663 returns the package name8664RuboCop::Cop::Migration::RemoveIndex8665 when in migration8666 registers an offense when remove_index is used8667 when outside of migration8668 registers no offense8669Gitlab::APIAuthentication::SentThroughBuilder8670 #sent_through8671 adds a strategy for each of locators x resolvers8672Gitlab::ImportExport::Error8673 .permission_error8674 when supplied a project8675 returns an error with the correct message8676 when supplied a group8677 returns an error with the correct message8678Gitlab::Auth::Otp::Strategies::Devise8679 calls Devise8680Asset proxy settings initialization8681 #asset_proxy8682 defaults to disabled8683DeployKeys::CreateService8684 creates a deploy key8685Types::PermissionTypes::Project8686 is expected to have graphql field :destroy_design8687Gitlab::Metrics::Exporter::GcRequestMiddleware8688 #call8689 runs a major GC after the next middleware is called8690Types::BlobViewerType8691 has the correct fields8692Session initializer for GitLab8693 config#session_store8694 initialized as a redis_store with a proper servers configuration8695Types::MergeRequestStateEventEnum8696 has the appropriate values8697Knapsack report was generated. Preview:8698{8699 "spec/models/user_spec.rb": 302.42885525999964,8700 "spec/services/todos/destroy/entity_leave_service_spec.rb": 161.43175174299995,8701 "spec/models/member_spec.rb": 61.30683671099996,8702 "spec/services/projects/overwrite_project_service_spec.rb": 90.24912574900054,8703 "spec/models/milestone_spec.rb": 44.43944637799996,8704 "spec/services/projects/transfer_service_spec.rb": 52.960557132999384,8705 "spec/models/integrations/microsoft_teams_spec.rb": 43.09477371400044,8706 "spec/lib/gitlab/import_export/project/relation_tree_restorer_spec.rb": 45.890492741000344,8707 "spec/policies/global_policy_spec.rb": 26.318884903999788,8708 "spec/presenters/ci/build_runner_presenter_spec.rb": 26.67083997499958,8709 "spec/lib/gitlab/gpg/commit_spec.rb": 32.22510488199987,8710 "spec/uploaders/avatar_uploader_spec.rb": 15.836422638999466,8711 "spec/models/ci/pipeline_schedule_spec.rb": 19.644726054000785,8712 "spec/services/merge_requests/reopen_service_spec.rb": 26.508154584000295,8713 "spec/lib/gitlab/closing_issue_extractor_spec.rb": 12.638998211000398,8714 "spec/lib/gitlab/import_export/fast_hash_serializer_spec.rb": 20.563855514000352,8715 "spec/services/milestones/transfer_service_spec.rb": 22.684336712000004,8716 "spec/services/merge_requests/cleanup_refs_service_spec.rb": 18.730940542999633,8717 "spec/services/design_management/delete_designs_service_spec.rb": 14.192330275000131,8718 "spec/helpers/emails_helper_spec.rb": 6.593956873000025,8719 "spec/uploaders/external_diff_uploader_spec.rb": 12.74497756799974,8720 "spec/services/projects/update_repository_storage_service_spec.rb": 15.89141753200056,8721 "spec/helpers/users_helper_spec.rb": 7.30241298799956,8722 "spec/lib/gitlab/alert_management/payload/prometheus_spec.rb": 3.0668956440003967,8723 "spec/lib/gitlab/database/batch_count_spec.rb": 7.096293122999668,8724 "spec/services/merge_requests/ff_merge_service_spec.rb": 16.06307880299937,8725 "spec/lib/gitlab/ci/pipeline/expression/lexeme/not_equals_spec.rb": 2.37563750299978,8726 "spec/lib/gitlab/ci/templates/npm_spec.rb": 13.467145335999703,8727 "spec/models/ci/pending_build_spec.rb": 11.05472952799937,8728 "spec/models/clusters/integrations/prometheus_spec.rb": 13.675606969,8729 "spec/services/dependency_proxy/image_ttl_group_policies/update_service_spec.rb": 7.2796847969993905,8730 "spec/services/deployments/link_merge_requests_service_spec.rb": 9.914335077000032,8731 "spec/lib/gitlab/ci/config/external/file/artifact_spec.rb": 9.41087829099979,8732 "spec/serializers/deploy_key_entity_spec.rb": 11.240042854000421,8733 "spec/services/clusters/integrations/prometheus_health_check_service_spec.rb": 13.180460935000156,8734 "spec/lib/gitlab/database/reflection_spec.rb": 6.214913284999966,8735 "spec/lib/gitlab/import_export/merge_request_parser_spec.rb": 9.630909293000514,8736 "spec/lib/banzai/filter/sanitization_filter_spec.rb": 2.835853132999546,8737 "spec/models/pages_domain_acme_order_spec.rb": 9.11888012899999,8738 "spec/helpers/tab_helper_spec.rb": 2.4464162530002795,8739 "spec/services/groups/autocomplete_service_spec.rb": 10.375152376000187,8740 "spec/services/groups/open_issues_count_service_spec.rb": 6.014083350999499,8741 "spec/tasks/gitlab/packages/events_rake_spec.rb": 2.974600305000422,8742 "spec/lib/banzai/reference_parser/issue_parser_spec.rb": 6.065654815000016,8743 "spec/lib/atlassian/jira_connect/serializers/deployment_entity_spec.rb": 7.4194614300004105,8744 "spec/services/projects/lfs_pointers/lfs_download_link_list_service_spec.rb": 6.4109665389996735,8745 "spec/views/ci/status/_badge.html.haml_spec.rb": 7.144959655000093,8746 "spec/lib/gitlab/database/query_analyzers/prevent_cross_database_modification_spec.rb": 5.028433559000405,8747 "spec/services/issues/reorder_service_spec.rb": 6.429190617000131,8748 "spec/models/merge_request_assignee_spec.rb": 6.876117009999689,8749 "spec/lib/gitlab/sidekiq_config/worker_router_spec.rb": 1.8062395670003752,8750 "spec/workers/repository_check/batch_worker_spec.rb": 6.761336845000187,8751 "spec/models/audit_event_spec.rb": 3.863037199000246,8752 "spec/lib/gitlab/ci/variables/collection/item_spec.rb": 1.7518488929999876,8753 "spec/views/notify/pipeline_success_email.html.haml_spec.rb": 7.646461759999511,8754 "spec/graphql/types/ci/job_token_scope_type_spec.rb": 4.563035259000571,8755 "spec/policies/user_policy_spec.rb": 3.311988110999664,8756 "spec/lib/gitlab/kubernetes/default_namespace_spec.rb": 6.412538229999882,8757 "spec/lib/gitlab/gitaly_client/object_pool_service_spec.rb": 6.6005160960003195,8758 "spec/models/packages/debian/group_component_file_spec.rb": 2.26842523599953,8759 "spec/serializers/cluster_application_entity_spec.rb": 4.670480615000088,8760 "spec/lib/gitlab/slash_commands/issue_new_spec.rb": 3.7162163589991906,8761 "spec/finders/security/security_jobs_finder_spec.rb": 5.418423558000541,8762 "spec/models/issue_assignee_spec.rb": 3.8193654349997814,8763 "spec/lib/banzai/reference_parser/external_issue_parser_spec.rb": 5.054465115000312,8764 "spec/lib/gitlab/github_import/importer/labels_importer_spec.rb": 4.832374083999639,8765 "spec/services/packages/update_package_file_service_spec.rb": 4.680034154000168,8766 "spec/lib/gitaly/server_spec.rb": 1.0301590369999758,8767 "spec/lib/gitlab/jwt_authenticatable_spec.rb": 0.6573550049997721,8768 "spec/models/state_note_spec.rb": 1.516707353000129,8769 "spec/workers/project_export_worker_spec.rb": 4.7633683730000485,8770 "spec/lib/gitlab/slash_commands/run_spec.rb": 4.451799104000202,8771 "spec/graphql/resolvers/project_pipeline_resolver_spec.rb": 2.9824067939998713,8772 "spec/helpers/projects/project_members_helper_spec.rb": 4.432274265999695,8773 "spec/services/notification_recipients/builder/default_spec.rb": 3.744209745000262,8774 "spec/services/groups/auto_devops_service_spec.rb": 2.393908570000349,8775 "spec/lib/banzai/filter/inline_grafana_metrics_filter_spec.rb": 0.945973746999698,8776 "spec/serializers/merge_request_metrics_helper_spec.rb": 4.183314928999607,8777 "spec/services/projects/move_deploy_keys_projects_service_spec.rb": 3.513620183999592,8778 "spec/lib/gitlab/kubernetes/helm/v2/patch_command_spec.rb": 0.6282587790001344,8779 "spec/lib/gitlab/database/transaction/observer_spec.rb": 3.637796918999811,8780 "spec/views/shared/deploy_tokens/_form.html.haml_spec.rb": 3.034820827000658,8781 "spec/lib/gitlab/checks/push_check_spec.rb": 2.981183603000318,8782 "spec/lib/gitlab/ci/config/entry/variables_spec.rb": 0.7447315539993724,8783 "spec/lib/banzai/filter/upload_link_filter_spec.rb": 1.52719843199975,8784 "spec/lib/extracts_ref_spec.rb": 1.2609583659996133,8785 "spec/lib/gitlab/metrics/subscribers/rack_attack_spec.rb": 0.9283663300002445,8786 "spec/services/bulk_imports/file_download_service_spec.rb": 1.4356824839996989,8787 "spec/lib/gitlab/health_checks/redis/shared_state_check_spec.rb": 0.6916196209995178,8788 "spec/lib/gitlab/diff/highlight_spec.rb": 1.7184857769998416,8789 "spec/graphql/mutations/alert_management/update_alert_status_spec.rb": 1.8875036259996705,8790 "spec/lib/gitlab/cache/helpers_spec.rb": 2.9838247929992576,8791 "spec/services/lfs/lock_file_service_spec.rb": 4.057851014999869,8792 "spec/helpers/environment_helper_spec.rb": 1.401402188999782,8793 "spec/services/spam/akismet_service_spec.rb": 1.1666591390003305,8794 "spec/rubocop/cop/file_decompression_spec.rb": 0.40294320800057903,8795 "spec/lib/gitlab/diff/formatters/text_formatter_spec.rb": 0.5635011960002885,8796 "spec/models/bulk_imports/tracker_spec.rb": 1.6430599169998459,8797 "spec/lib/gitlab/phabricator_import/issues/task_importer_spec.rb": 2.05150333399979,8798 "spec/workers/integrations/create_external_cross_reference_worker_spec.rb": 1.8357771620003405,8799 "spec/finders/users_star_projects_finder_spec.rb": 2.3441037369993865,8800 "spec/lib/gitlab/ci/templates/terraform_gitlab_ci_yaml_spec.rb": 1.8981244250007876,8801 "spec/services/snippets/repository_validation_service_spec.rb": 0.7413608950000707,8802 "spec/lib/gitlab/email/hook/smime_signature_interceptor_spec.rb": 3.1677422390002903,8803 "spec/lib/gitlab/database/partitioning/partition_manager_spec.rb": 1.604294822999691,8804 "spec/models/concerns/participable_spec.rb": 0.95140415700007,8805 "spec/services/ci/change_variable_service_spec.rb": 1.4523611419999725,8806 "spec/lib/constraints/project_url_constrainer_spec.rb": 3.207294185000137,8807 "spec/lib/gitlab/diff/file_collection/merge_request_diff_base_spec.rb": 2.4720504300003086,8808 "spec/serializers/issue_sidebar_basic_entity_spec.rb": 1.1128894960002071,8809 "spec/graphql/resolvers/alert_management/integrations_resolver_spec.rb": 2.0407570159995885,8810 "spec/services/ci/compare_reports_base_service_spec.rb": 1.7823411890003626,8811 "spec/lib/gitlab/spamcheck/client_spec.rb": 1.2232062820003193,8812 "spec/lib/gitlab/rack_attack/user_allowlist_spec.rb": 0.7659840699998313,8813 "spec/lib/gitlab/cleanup/orphan_job_artifact_files_spec.rb": 1.1382483529996534,8814 "spec/graphql/mutations/todos/mark_done_spec.rb": 2.0088160499999503,8815 "spec/lib/gitlab/middleware/speedscope_spec.rb": 1.1726113080003415,8816 "spec/lib/gitlab/checks/lfs_check_spec.rb": 1.26638945600007,8817 "spec/lib/gitlab/analytics/cycle_analytics/records_fetcher_spec.rb": 2.473158038999827,8818 "spec/models/postgresql/replication_slot_spec.rb": 0.6553253550000591,8819 "spec/lib/error_tracking/sentry_client/api_urls_spec.rb": 0.7305179150007461,8820 "spec/services/incident_management/issuable_escalation_statuses/after_update_service_spec.rb": 2.1358073130004414,8821 "spec/presenters/web_hook_log_presenter_spec.rb": 2.2864301340005113,8822 "spec/lib/gitlab/ci/pipeline/logger_spec.rb": 0.7979390769996826,8823 "spec/lib/google_api/cloud_platform/client_spec.rb": 0.9171251210000264,8824 "spec/views/projects/issues/_service_desk_info_content.html.haml_spec.rb": 1.1225070939999569,8825 "spec/workers/ci/pipeline_artifacts/create_quality_report_worker_spec.rb": 1.8717629880002278,8826 "spec/lib/learn_gitlab/onboarding_spec.rb": 0.3117009990000952,8827 "spec/services/award_emojis/toggle_service_spec.rb": 1.5982623039999453,8828 "spec/lib/gitlab/usage_data/topology_spec.rb": 0.6870465399997556,8829 "spec/lib/gitlab/search_context/controller_concern_spec.rb": 1.9443774280007347,8830 "spec/lib/gitlab/graphql/pagination/offset_active_record_relation_connection_spec.rb": 0.5878744040001038,8831 "spec/lib/gitlab/ci/status/build/failed_unmet_prerequisites_spec.rb": 1.6926302010006111,8832 "spec/tooling/rspec_flaky/flaky_examples_collection_spec.rb": 0.4554818010001327,8833 "spec/lib/gitlab/database/partitioning_spec.rb": 1.003537289999258,8834 "spec/lib/gitlab/utils/delegator_override/validator_spec.rb": 0.27708365399939794,8835 "spec/services/ci/find_exposed_artifacts_service_spec.rb": 1.9108602329997666,8836 "spec/workers/ci/build_trace_chunk_flush_worker_spec.rb": 1.8653961680001885,8837 "spec/services/pages/destroy_deployments_service_spec.rb": 2.0941665390000708,8838 "spec/lib/gitlab/ci/pipeline/quota/deployments_spec.rb": 1.136491352000121,8839 "spec/models/preloaders/merge_request_diff_preloader_spec.rb": 1.3520870950005701,8840 "spec/services/groups/participants_service_spec.rb": 2.5141304650005623,8841 "spec/finders/packages/helm/package_files_finder_spec.rb": 1.564462327000001,8842 "spec/lib/marginalia_spec.rb": 0.333919116999823,8843 "spec/models/packages/nuget/dependency_link_metadatum_spec.rb": 0.5852585729999191,8844 "spec/services/award_emojis/copy_service_spec.rb": 2.4342935149998084,8845 "spec/lib/gitlab/ci/pipeline/expression/lexeme/string_spec.rb": 0.7293729559996791,8846 "spec/workers/environments/canary_ingress/update_worker_spec.rb": 0.5384216500006005,8847 "spec/services/projects/prometheus/alerts/create_service_spec.rb": 0.6669684639991829,8848 "spec/helpers/notify_helper_spec.rb": 1.4910428470002444,8849 "spec/workers/expire_build_artifacts_worker_spec.rb": 1.488564487000076,8850 "spec/models/concerns/legacy_bulk_insert_spec.rb": 0.6849699819995294,8851 "spec/lib/gitlab/metrics/rails_slis_spec.rb": 0.2863891320002949,8852 "spec/workers/releases/manage_evidence_worker_spec.rb": 1.7407457540002724,8853 "spec/lib/gitlab/ci/reports/test_report_summary_spec.rb": 1.5736928959995566,8854 "spec/models/group_label_spec.rb": 1.4328453839998474,8855 "spec/workers/archive_trace_worker_spec.rb": 0.6004371830003947,8856 "spec/graphql/mutations/clusters/agent_tokens/revoke_spec.rb": 0.9117651220003609,8857 "spec/graphql/types/projects/jira_service_type_spec.rb": 0.30085519200019917,8858 "spec/workers/incident_management/add_severity_system_note_worker_spec.rb": 1.0529329230002986,8859 "spec/workers/issue_due_scheduler_worker_spec.rb": 2.0318607469998824,8860 "spec/lib/gitlab/metrics/rack_middleware_spec.rb": 0.24365144799958216,8861 "spec/lib/gitlab/data_builder/wiki_page_spec.rb": 0.8145062550001967,8862 "spec/serializers/ci/daily_build_group_report_result_serializer_spec.rb": 0.10271368599933339,8863 "spec/lib/gitlab/metrics/elasticsearch_rack_middleware_spec.rb": 0.26336949600045045,8864 "spec/services/bulk_imports/export_service_spec.rb": 0.7311230149998664,8865 "spec/models/subscription_spec.rb": 1.2966577429997415,8866 "spec/presenters/service_hook_presenter_spec.rb": 1.6328114389998518,8867 "spec/models/integrations/irker_spec.rb": 1.0104905589996633,8868 "spec/lib/gitlab/gitaly_client/health_check_service_spec.rb": 1.2500838480000311,8869 "spec/lib/sidebars/projects/menus/snippets_menu_spec.rb": 0.24875355800031684,8870 "spec/models/instance_metadata/kas_spec.rb": 0.16435188800005562,8871 "spec/lib/gitlab/exclusive_lease_helpers/sleeping_lock_spec.rb": 0.6046177319994968,8872 "spec/workers/mail_scheduler/notification_service_worker_spec.rb": 0.39008404900050664,8873 "spec/services/spam/akismet_mark_as_spam_service_spec.rb": 1.073742661000324,8874 "spec/lib/gitlab/git/remote_mirror_spec.rb": 1.1288360039998224,8875 "spec/presenters/tree_entry_presenter_spec.rb": 1.0663686319994667,8876 "spec/services/keys/last_used_service_spec.rb": 0.6825332809994507,8877 "spec/workers/ci/daily_build_group_report_results_worker_spec.rb": 1.1031408569997438,8878 "spec/lib/gitlab/database/reindexing/coordinator_spec.rb": 0.6639781639996727,8879 "spec/graphql/mutations/notes/reposition_image_diff_note_spec.rb": 1.103778837000391,8880 "spec/services/concerns/merge_requests/assigns_merge_params_spec.rb": 0.4658275899992077,8881 "spec/services/user_project_access_changed_service_spec.rb": 0.4111054069999227,8882 "spec/lib/gitlab/usage_data_counters/static_site_editor_counter_spec.rb": 0.47781566899993777,8883 "spec/services/ci/pipelines/hook_service_spec.rb": 0.672727981999742,8884 "spec/lib/gitlab/import_export/snippet_repo_saver_spec.rb": 0.5950080120001076,8885 "spec/lib/quality/seeders/issues_spec.rb": 0.6981045800002903,8886 "spec/rubocop/cop/scalability/bulk_perform_with_context_spec.rb": 0.22377813099956256,8887 "spec/lib/gitlab/config/entry/simplifiable_spec.rb": 0.27881452400015405,8888 "spec/lib/gitlab/ci/status/failed_spec.rb": 0.369007373000386,8889 "spec/lib/gitlab/git/wraps_gitaly_errors_spec.rb": 0.3497204450004574,8890 "spec/lib/gitlab/metrics/dashboard/stages/variable_endpoint_inserter_spec.rb": 0.514247893999709,8891 "spec/lib/gitlab/lets_encrypt/challenge_spec.rb": 0.2772527139995873,8892 "spec/serializers/import/githubish_provider_repo_entity_spec.rb": 0.36605830200005585,8893 "spec/lib/gitlab/slash_commands/presenters/run_spec.rb": 0.3609902329999386,8894 "spec/models/integrations/assembla_spec.rb": 0.8500794589999714,8895 "spec/serializers/issuable_sidebar_extras_entity_spec.rb": 0.6756393730001946,8896 "spec/graphql/types/packages/nuget/metadatum_type_spec.rb": 0.2299687400000039,8897 "spec/lib/api/entities/deployment_extended_spec.rb": 0.9437663569997312,8898 "spec/lib/gitlab/usage/metrics/instrumentations/count_users_associating_milestones_to_releases_metric_spec.rb": 0.8342138230000273,8899 "spec/rubocop/cop/active_record_association_reload_spec.rb": 0.41019478699945466,8900 "spec/rubocop/cop/migration/remove_concurrent_index_spec.rb": 0.2629250759991919,8901 "spec/workers/dependency_proxy/image_ttl_group_policy_worker_spec.rb": 0.5164249030003703,8902 "spec/lib/bulk_imports/projects/pipelines/protected_branches_pipeline_spec.rb": 0.5630907269996897,8903 "spec/policies/packages/package_policy_spec.rb": 0.5487444489999689,8904 "spec/lib/api/entities/group_detail_spec.rb": 0.2523621269992873,8905 "spec/lib/api/helpers/variables_helpers_spec.rb": 0.21095523300027708,8906 "spec/serializers/group_link/project_group_link_serializer_spec.rb": 0.3747462020000967,8907 "spec/experiments/force_company_trial_experiment_spec.rb": 0.35221273500064854,8908 "spec/lib/gitlab/database/schema_migrations/migrations_spec.rb": 0.18706538599963096,8909 "spec/services/webauthn/authenticate_service_spec.rb": 0.597842352999578,8910 "spec/services/work_items/build_service_spec.rb": 0.635693158000322,8911 "spec/lib/gitlab/ci/jwt_v2_spec.rb": 0.34729822400004196,8912 "spec/views/groups/new.html.haml_spec.rb": 0.7655567720003091,8913 "spec/graphql/types/clusters/agent_activity_event_type_spec.rb": 0.21740786200007278,8914 "spec/serializers/project_import_entity_spec.rb": 0.4644601899999543,8915 "spec/rubocop/cop/avoid_route_redirect_leading_slash_spec.rb": 0.1920881449996159,8916 "spec/lib/banzai/render_context_spec.rb": 0.3054580709995207,8917 "spec/graphql/types/customer_relations/contact_type_spec.rb": 0.18542732700007036,8918 "spec/initializers/rack_multipart_patch_spec.rb": 0.32521908700073254,8919 "spec/views/admin/application_settings/_repository_storage.html.haml_spec.rb": 0.31990112899984524,8920 "spec/initializers/100_patch_omniauth_oauth2_spec.rb": 0.3908218789993043,8921 "spec/lib/gitlab/graphql/tracers/logger_tracer_spec.rb": 0.1964023950004048,8922 "spec/serializers/evidences/evidence_serializer_spec.rb": 0.18404944599933515,8923 "spec/graphql/types/ci/config/job_type_spec.rb": 0.1799321360003887,8924 "spec/helpers/groups/crm_settings_helper_spec.rb": 0.2221118209999986,8925 "spec/graphql/types/ci/test_suite_type_spec.rb": 0.20354711399977532,8926 "spec/lib/banzai/pipeline/emoji_pipeline_spec.rb": 0.31939836899982765,8927 "spec/graphql/types/label_type_spec.rb": 0.2106193820000044,8928 "spec/models/blob_viewer/podspec_json_spec.rb": 0.14241223199951492,8929 "spec/rubocop/cop/migration/remove_index_spec.rb": 0.15116514000055759,8930 "spec/lib/gitlab/api_authentication/sent_through_builder_spec.rb": 0.11214778600060527,8931 "spec/lib/gitlab/import_export/error_spec.rb": 0.29631159200016555,8932 "spec/lib/gitlab/auth/otp/strategies/devise_spec.rb": 0.2501793980000002,8933 "spec/initializers/asset_proxy_setting_spec.rb": 0.13903632200072025,8934 "spec/services/deploy_keys/create_service_spec.rb": 0.3254546180005491,8935 "spec/graphql/types/permission_types/project_spec.rb": 0.20018979499946,8936 "spec/lib/gitlab/metrics/exporter/gc_request_middleware_spec.rb": 0.14112366199969983,8937 "spec/graphql/types/blob_viewer_type_spec.rb": 0.18962358600037987,8938 "spec/initializers/session_store_spec.rb": 0.2735023440000077,8939 "spec/graphql/types/merge_request_state_event_enum_spec.rb": 0.15970839900001018940}8941Knapsack global time execution for tests: 26m 02s8942Pending: (Failures listed here are expected and do not affect your suite's status)8943 1) User with uploads behaves like model with uploads .destroy with not mounted uploads with local files deletes any FileUploader uploads which are not mounted8944 # No reason given8945 # ./spec/support/shared_examples/models/with_uploads_shared_examples.rb:238946 2) User with uploads behaves like model with uploads .destroy with not mounted uploads with local files deletes local files8947 # No reason given8948 # ./spec/support/shared_examples/models/with_uploads_shared_examples.rb:278949 3) User with uploads behaves like model with uploads .destroy with not mounted uploads with remote files deletes any FileUploader uploads which are not mounted8950 # No reason given8951 # ./spec/support/shared_examples/models/with_uploads_shared_examples.rb:378952 4) User with uploads behaves like model with uploads .destroy with not mounted uploads with remote files deletes remote files8953 # No reason given8954 # ./spec/support/shared_examples/models/with_uploads_shared_examples.rb:418955 5) Milestone behaves like a timebox modules with a project 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 blank8956 # No reason given8957 # ./spec/support/shared_examples/models/atomic_internal_id_shared_examples.rb:498958 6) Milestone behaves like a timebox modules with a project 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 blank8959 # No reason given8960 # ./spec/support/shared_examples/models/atomic_internal_id_shared_examples.rb:578961 7) Milestone behaves like a timebox modules with a group 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 blank8962 # No reason given8963 # ./spec/support/shared_examples/models/atomic_internal_id_shared_examples.rb:498964 8) Milestone behaves like a timebox modules with a group 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 blank8965 # No reason given8966 # ./spec/support/shared_examples/models/atomic_internal_id_shared_examples.rb:578967 9) AvatarUploader behaves like builds correct paths #cache_dir behaves like matches the method pattern 8968 # No pattern provided, skipping.8969 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88970 10) AvatarUploader behaves like builds correct paths #work_dir behaves like matches the method pattern 8971 # No pattern provided, skipping.8972 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88973 11) AvatarUploader behaves like builds correct paths #relative_path is relative8974 # Path not set, skipping.8975 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:408976 12) AvatarUploader behaves like builds correct paths .base_dir behaves like matches the method pattern 8977 # No pattern provided, skipping.8978 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88979 13) AvatarUploader object_store is REMOTE behaves like builds correct paths #cache_dir behaves like matches the method pattern 8980 # No pattern provided, skipping.8981 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88982 14) AvatarUploader object_store is REMOTE behaves like builds correct paths #work_dir behaves like matches the method pattern 8983 # No pattern provided, skipping.8984 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88985 15) AvatarUploader object_store is REMOTE behaves like builds correct paths #relative_path is relative8986 # Path not set, skipping.8987 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:408988 16) AvatarUploader object_store is REMOTE behaves like builds correct paths .absolute_path behaves like matches the method pattern 8989 # No pattern provided, skipping.8990 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88991 17) AvatarUploader object_store is REMOTE behaves like builds correct paths .base_dir behaves like matches the method pattern 8992 # No pattern provided, skipping.8993 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88994 18) ExternalDiffUploader behaves like builds correct paths #upload_path behaves like matches the method pattern 8995 # No pattern provided, skipping.8996 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88997 19) ExternalDiffUploader behaves like builds correct paths #relative_path is relative8998 # Path not set, skipping.8999 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:409000 20) ExternalDiffUploader behaves like builds correct paths .absolute_path behaves like matches the method pattern 9001 # No pattern provided, skipping.9002 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:89003 21) ExternalDiffUploader behaves like builds correct paths .base_dir behaves like matches the method pattern 9004 # No pattern provided, skipping.9005 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:89006 22) ExternalDiffUploader object store is REMOTE behaves like builds correct paths #cache_dir behaves like matches the method pattern 9007 # No pattern provided, skipping.9008 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:89009 23) ExternalDiffUploader object store is REMOTE behaves like builds correct paths #work_dir behaves like matches the method pattern 9010 # No pattern provided, skipping.9011 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:89012 24) ExternalDiffUploader object store is REMOTE behaves like builds correct paths #upload_path behaves like matches the method pattern 9013 # No pattern provided, skipping.9014 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:89015 25) ExternalDiffUploader object store is REMOTE behaves like builds correct paths #relative_path is relative9016 # Path not set, skipping.9017 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:409018 26) ExternalDiffUploader object store is REMOTE behaves like builds correct paths .absolute_path behaves like matches the method pattern 9019 # No pattern provided, skipping.9020 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:89021 27) ExternalDiffUploader object store is REMOTE behaves like builds correct paths .base_dir behaves like matches the method pattern 9022 # No pattern provided, skipping.9023 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:89024 28) Marginalia spec For rails web requests when using CI database generates a query that includes the component and value9025 # Skipping because multiple databases not set up9026 # ./spec/lib/marginalia_spec.rb:729027Finished in 26 minutes 5 seconds (files took 1 minute 5.85 seconds to load)90284062 examples, 0 failures, 28 pending9029RSpec exited with 0.9030No examples to retry, congrats!9032Not uploading cache ruby-gems-v1-9 due to policy9033Not uploading cache gitaly-ruby-gems-v1-9 due to policy9035Uploading artifacts...9036coverage/: found 5 matching files and directories 9037crystalball/: found 2 matching files and directories 9038deprecations/: found 3 matching files and directories 9039knapsack/: found 3 matching files and directories 9040rspec/: found 8 matching files and directories 9041WARNING: tmp/capybara/: no matching files 9042tmp/memory_test/: found 2 matching files and directories 9043log/*.log: found 17 matching files and directories 9044Uploading artifacts as "archive" to coordinator... 201 Created id=2055931365 responseStatus=201 Created token=ctnyT_tf9045Uploading artifacts...9046rspec/junit_rspec.xml: found 1 matching files and directories 9047Uploading artifacts as "junit" to coordinator... 201 Created id=2055931365 responseStatus=201 Created token=ctnyT_tf9049Job succeeded