rspec unit pg13 13/28
Passed Started
by
@fabiopitino
Fabio Pitino
1Running with gitlab-runner 16.1.0~beta.5.gf131a6a2 (f131a6a2)2 on blue-2.shared-gitlab-org.runners-manager.gitlab.com/default NL4gfoBe, system ID: s_74c3e13161643 feature flags: FF_NETWORK_PER_BUILD:true, FF_USE_FASTZIP:true, FF_USE_IMPROVED_URL_MASKING:true6Using Docker executor with image registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-18.16-postgresql-13:rubygems-3.4-git-2.36-lfs-2.9-chrome-113-yarn-1.22-graphicsmagick-1.3.36 ...7Starting service registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-13-pgvector-0.4.1 ...8Authenticating with credentials from job payload (GitLab Registry)9Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-13-pgvector-0.4.1 ...10Using docker image sha256:73740c557807c4bc5d692f263c0e35454270600da4b22bbe952331411426c8b5 for registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-13-pgvector-0.4.1 with digest registry.gitlab.com/gitlab-org/gitlab-build-images@sha256:3174001f839c42e299ac06a42f8ded446edfcb33b0eb820874749a3f53eb799c ...11WARNING: Service registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 is already created. Ignoring.12WARNING: Service registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 is already created. Ignoring.13Starting service registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 ...14Authenticating with credentials from job payload (GitLab Registry)15Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 ...16Using docker image sha256:a9a90ece30d9630d694ab1997cd103ea8ec729789451b983a75c7b58b0062d45 for registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 with digest registry.gitlab.com/gitlab-org/gitlab-build-images@sha256:7ef36177d5d0bc554fbb63d8210ae751bcc538bea7905b51d078d9ab90a755fa ...17Starting service redis:6.2-alpine ...18Pulling docker image redis:6.2-alpine ...19Using docker image sha256:85fd7bd884b6493c8eb6f4dffbe5406d97cce56aff84f1580a5eb5b9d841f158 for redis:6.2-alpine with digest redis@sha256:87c44d5d9f472e767c8737f4130c765d77bdc95c7472d6427cfc9d4632f12da6 ...20Waiting for services to be up and running (timeout 30 seconds)...21Authenticating with credentials from job payload (GitLab Registry)22Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-18.16-postgresql-13:rubygems-3.4-git-2.36-lfs-2.9-chrome-113-yarn-1.22-graphicsmagick-1.3.36 ...23Using docker image sha256:61b59025d0d646cd177f654d8f81df859675be528f37dcc2ce6f39a49c7a5dd9 for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-18.16-postgresql-13:rubygems-3.4-git-2.36-lfs-2.9-chrome-113-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-18.16-postgresql-13@sha256:25367d41b1034f1ecacfc9cb8eebc70cb30c6fdade3781cf295488255bf61614 ...25Running on runner-nl4gfobe-project-278964-concurrent-0 via runner-nl4gfobe-shared-gitlab-org-1685669363-60741a1f...27Fetching changes with git depth set to 20...28Initialized empty Git repository in /builds/gitlab-org/gitlab/.git/29Created fresh repository.30remote: Enumerating objects: 139970, done. 31remote: Counting objects: 100% (139970/139970), done. 32remote: Compressing objects: 100% (94736/94736), done. 33remote: Total 139970 (delta 61223), reused 92025 (delta 39894), pack-reused 0 34Receiving objects: 100% (139970/139970), 123.36 MiB | 29.23 MiB/s, done.35Resolving deltas: 100% (61223/61223), done.37 * [new ref] refs/pipelines/887306308 -> refs/pipelines/88730630838Checking out 95754c79 as detached HEAD (ref is refs/merge-requests/122015/merge)...39Skipping Git submodules setup40$ git remote set-url origin "${CI_REPOSITORY_URL}"42Checking cache for ruby-gems-debian-bullseye-ruby-3.0-16...43Downloading cache.zip from https://storage.googleapis.com/gitlab-com-runners-cache/project/278964/ruby-gems-debian-bullseye-ruby-3.0-16 44Successfully extracted cache46Downloading artifacts for compile-test-assets (4400964016)...47Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4400964016 responseStatus=200 OK token=64_3M3RQ48Downloading artifacts for detect-tests (4400964025)...49Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4400964025 responseStatus=200 OK token=64_3M3RQ50Downloading artifacts for retrieve-tests-metadata (4400964028)...51Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4400964028 responseStatus=200 OK token=64_3M3RQ52Downloading artifacts for setup-test-env (4400964019)...53Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4400964019 responseStatus=200 OK token=64_3M3RQ55Using docker image sha256:61b59025d0d646cd177f654d8f81df859675be528f37dcc2ce6f39a49c7a5dd9 for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-18.16-postgresql-13:rubygems-3.4-git-2.36-lfs-2.9-chrome-113-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-18.16-postgresql-13@sha256:25367d41b1034f1ecacfc9cb8eebc70cb30c6fdade3781cf295488255bf61614 ...56$ echo $FOSS_ONLY57$ [ "$FOSS_ONLY" = "1" ] && rm -rf ee/ qa/spec/ee/ qa/qa/specs/features/ee/ qa/qa/ee/ qa/qa/ee.rb58$ export GOPATH=$CI_PROJECT_DIR/.go59$ mkdir -p $GOPATH60$ source scripts/utils.sh61$ source scripts/prepare_build.sh716Using decomposed database config (config/database.yml.decomposed-postgresql)717Geo DB won't be set up.718Embedding DB won't be set up.734$ source ./scripts/rspec_helpers.sh735$ run_timed_command "gem install knapsack --no-document"736$ gem install knapsack --no-document737Successfully installed knapsack-4.0.07381 gem installed739==> 'gem install knapsack --no-document' succeeded in 0 seconds.740$ echo -e "\e[0Ksection_start:`date +%s`:gitaly-test-spawn[collapsed=true]\r\e[0KStarting Gitaly"742$ section_start "gitaly-test-spawn" "Spawning Gitaly"; scripts/gitaly-test-spawn; section_end "gitaly-test-spawn"747$ echo -e "\e[0Ksection_end:`date +%s`:gitaly-test-spawn\r\e[0K"748$ rspec_paralellized_job "--tag ~quarantine --tag ~level:background_migration"749SKIP_FLAKY_TESTS_AUTOMATICALLY: 750RETRY_FAILED_TESTS_IN_NEW_PROCESS: true751KNAPSACK_GENERATE_REPORT: true752FLAKY_RSPEC_GENERATE_REPORT: true753KNAPSACK_TEST_FILE_PATTERN: spec/{bin,channels,components,config,contracts,db,dependencies,elastic,elastic_integration,experiments,factories,finders,frontend,graphql,haml_lint,helpers,initializers,lib,metrics_server,models,policies,presenters,rack_servers,replicators,routing,rubocop,scripts,serializers,services,sidekiq,sidekiq_cluster,spam,support_specs,tasks,uploaders,validators,views,workers,tooling}{,/**/}*_spec.rb754KNAPSACK_LOG_LEVEL: debug755KNAPSACK_REPORT_PATH: knapsack/rspec_unit_pg13_13_28_report.json756FLAKY_RSPEC_SUITE_REPORT_PATH: rspec/flaky/report-suite.json757FLAKY_RSPEC_REPORT_PATH: rspec/flaky/all_rspec_unit_pg13_13_28_report.json758NEW_FLAKY_RSPEC_REPORT_PATH: rspec/flaky/new_rspec_unit_pg13_13_28_report.json759SKIPPED_TESTS_REPORT_PATH: rspec/skipped_tests_rspec_unit_pg13_13_28.txt760CRYSTALBALL: 761RSPEC_TESTS_MAPPING_ENABLED: 762RSPEC_TESTS_FILTER_FILE: 763Running command: bundle exec rspec -Ispec -rspec_helper --color --failure-exit-code 1 --error-exit-code 2 --format documentation --format Support::Formatters::JsonFormatter --out rspec/rspec-4400964227.json --format RspecJunitFormatter --out rspec/rspec-4400964227.xml --tag ~quarantine --tag ~level:background_migration -- spec/services/merge_requests/update_service_spec.rb spec/lib/gitlab/background_migration/backfill_snippet_repositories_spec.rb spec/services/merge_requests/create_from_issue_service_spec.rb spec/lib/gitlab/database/load_balancing_spec.rb spec/models/integrations/jira_spec.rb spec/lib/gitlab/http_spec.rb spec/models/ci/stage_spec.rb spec/services/packages/debian/generate_distribution_service_spec.rb spec/helpers/issuables_helper_spec.rb spec/lib/gitlab/background_migration/batching_strategies/backfill_project_namespace_per_group_batching_strategy_spec.rb spec/models/integrations/microsoft_teams_spec.rb spec/serializers/ci/job_entity_spec.rb spec/finders/ci/runners_finder_spec.rb spec/lib/gitlab/ci/pipeline/expression/statement_spec.rb spec/helpers/application_helper_spec.rb spec/uploaders/avatar_uploader_spec.rb spec/services/system_note_service_spec.rb spec/lib/gitlab/ci/config_spec.rb spec/services/namespaces/package_settings/update_service_spec.rb spec/views/projects/issues/show.html.haml_spec.rb spec/services/members/create_service_spec.rb spec/services/web_hook_service_spec.rb spec/models/incident_management/issuable_escalation_status_spec.rb spec/models/projects/data_transfer_spec.rb spec/finders/container_repositories_finder_spec.rb spec/workers/concerns/application_worker_spec.rb spec/serializers/project_note_entity_spec.rb spec/helpers/avatars_helper_spec.rb spec/models/concerns/approvable_spec.rb spec/services/suggestions/create_service_spec.rb spec/lib/gitlab/github_import/representation/pull_request_spec.rb spec/services/projects/git_deduplication_service_spec.rb spec/presenters/blob_presenter_spec.rb spec/lib/gitlab/usage/metrics/instrumentations/count_bulk_imports_entities_metric_spec.rb spec/workers/packages/go/sync_packages_worker_spec.rb spec/models/ci/job_token/scope_spec.rb spec/lib/service_ping/build_payload_spec.rb spec/lib/gitlab/lfs_token_spec.rb spec/lib/gitlab/checks/single_change_access_spec.rb spec/lib/gitlab/ci/config/entry/retry_spec.rb spec/services/system_notes/design_management_service_spec.rb spec/workers/concerns/reenqueuer_spec.rb spec/services/jira/requests/projects/list_service_spec.rb spec/serializers/test_suite_entity_spec.rb spec/models/pages_deployment_spec.rb spec/lib/gitlab/quick_actions/extractor_spec.rb spec/services/labels/transfer_service_spec.rb spec/lib/gitlab/ci/config/entry/need_spec.rb spec/services/users/approve_service_spec.rb spec/lib/gitlab/exclusive_lease_spec.rb spec/lib/banzai/filter/gollum_tags_filter_spec.rb spec/models/design_management/design_collection_spec.rb spec/lib/gitlab/safe_request_store_spec.rb spec/finders/crm/organizations_finder_spec.rb spec/services/users/refresh_authorized_projects_service_spec.rb spec/models/board_group_recent_visit_spec.rb spec/lib/gitlab/ci/config/yaml/interpolator_spec.rb spec/lib/banzai/filter/commit_trailers_filter_spec.rb spec/lib/gitlab/database/reindexing/grafana_notifier_spec.rb spec/lib/gitlab/sidekiq_migrate_jobs_spec.rb spec/lib/gitlab/diff/suggestions_parser_spec.rb spec/models/packages/nuget/metadatum_spec.rb spec/workers/database/ci_project_mirrors_consistency_check_worker_spec.rb spec/models/packages/build_info_spec.rb spec/lib/banzai/filter/syntax_highlight_filter_spec.rb spec/lib/gitlab/robots_txt/parser_spec.rb spec/policies/board_policy_spec.rb spec/tasks/gitlab/external_diffs_rake_spec.rb spec/lib/gitlab/middleware/same_site_cookies_spec.rb spec/services/clusters/management/validate_management_project_permissions_service_spec.rb spec/services/releases/links/destroy_service_spec.rb spec/models/bulk_imports/tracker_spec.rb spec/lib/gitlab/hook_data/base_builder_spec.rb spec/lib/gitlab/git/blame_spec.rb spec/lib/gitlab/ci/config/entry/reports/coverage_report_spec.rb spec/lib/gitlab/database/async_constraints/postgres_async_constraint_validation_spec.rb spec/serializers/suggestion_entity_spec.rb spec/tasks/gitlab/artifacts/check_rake_spec.rb spec/services/metrics/dashboard/transient_embed_service_spec.rb spec/models/concerns/sha_attribute_spec.rb spec/lib/gitlab/metrics/dashboard/validator/errors_spec.rb spec/models/integrations/harbor_spec.rb spec/lib/gitlab/usage/metrics/instrumentations/in_product_marketing_email_cta_clicked_metric_spec.rb spec/services/work_items/widgets/description_service/update_service_spec.rb spec/lib/api/entities/ci/job_request/dependency_spec.rb spec/services/users/email_verification/validate_token_service_spec.rb spec/rubocop/cop/rspec/factory_bot/local_static_assignment_spec.rb spec/lib/gitlab/diff/line_spec.rb spec/services/projects/branches_by_mode_service_spec.rb spec/lib/gitlab/daemon_spec.rb spec/lib/gitlab/auth/two_factor_auth_verifier_spec.rb spec/models/preloaders/user_max_access_level_in_projects_preloader_spec.rb spec/services/gpg_keys/create_service_spec.rb spec/lib/sidebars/projects/menus/issues_menu_spec.rb spec/graphql/mutations/todos/mark_all_done_spec.rb spec/services/work_items/delete_task_service_spec.rb spec/lib/gitlab/alert_management/fingerprint_spec.rb spec/models/jira_connect_subscription_spec.rb spec/views/events/event/_push.html.haml_spec.rb spec/lib/gitlab/auth/ldap/auth_hash_spec.rb spec/lib/gitlab/usage/metrics/instrumentations/work_items_activity_aggregated_metric_spec.rb spec/lib/gitlab/ci/config/entry/hidden_spec.rb spec/services/dependency_proxy/request_token_service_spec.rb spec/tooling/danger/analytics_instrumentation_spec.rb spec/finders/ci/freeze_periods_finder_spec.rb spec/services/projects/group_links/destroy_service_spec.rb spec/services/milestones/close_service_spec.rb spec/services/releases/links/update_service_spec.rb spec/views/projects/pages_domains/show.html.haml_spec.rb spec/lib/gitlab/usage_data_counters/ipynb_diff_activity_counter_spec.rb spec/lib/gitlab/ci/interpolation/access_spec.rb spec/serializers/label_serializer_spec.rb spec/graphql/resolvers/ci/project_pipeline_counts_resolver_spec.rb spec/lib/gitlab/ci/status/scheduled_spec.rb spec/helpers/projects/pipeline_helper_spec.rb spec/models/token_with_iv_spec.rb spec/models/integrations/base_issue_tracker_spec.rb spec/models/merge_request/approval_removal_settings_spec.rb spec/validators/system_hook_url_validator_spec.rb spec/validators/any_field_validator_spec.rb spec/lib/gitlab/query_limiting/transaction_spec.rb spec/lib/gitlab/sample_data_template_spec.rb spec/lib/gitlab/url_blockers/ip_allowlist_entry_spec.rb spec/scripts/failed_tests_spec.rb spec/lib/gitlab/job_waiter_spec.rb spec/helpers/numbers_helper_spec.rb spec/lib/banzai/filter/attributes_filter_spec.rb spec/lib/gitlab/database/postgres_partition_spec.rb spec/rubocop/cop/search/namespaced_class_spec.rb spec/rubocop/cop/sidekiq_api_usage_spec.rb spec/models/integrations/asana_spec.rb spec/workers/ci/pipeline_artifacts/expire_artifacts_worker_spec.rb spec/services/jira_connect_installations/destroy_service_spec.rb spec/models/releases/evidence_spec.rb spec/workers/google_cloud/create_cloudsql_instance_worker_spec.rb spec/services/keys/last_used_service_spec.rb spec/lib/backup/dump/postgres_spec.rb spec/lib/gitlab/import_export/saver_spec.rb spec/graphql/resolvers/ci/test_suite_resolver_spec.rb spec/graphql/types/time_type_spec.rb spec/finders/award_emojis_finder_spec.rb spec/lib/gitlab/github_import/issuable_finder_spec.rb spec/graphql/resolvers/projects/jira_projects_resolver_spec.rb spec/graphql/types/ci/status_action_type_spec.rb spec/initializers/0_postgresql_types_spec.rb spec/lib/api/base_spec.rb spec/workers/gitlab/github_import/stage/import_protected_branches_worker_spec.rb spec/lib/gitlab/database/async_constraints/validators/foreign_key_spec.rb spec/lib/gitlab/memory/reports/jemalloc_stats_spec.rb spec/lib/atlassian/jira_connect/serializers/branch_entity_spec.rb spec/rubocop/cop/qa/element_with_pattern_spec.rb spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/strategies/until_executing_spec.rb spec/workers/gitlab/bitbucket_server_import/stage/import_repository_worker_spec.rb spec/lib/banzai/filter/truncate_visible_filter_spec.rb spec/lib/gitlab/database/reindexing/reindex_concurrently_spec.rb spec/lib/gitlab/legacy_github_import/user_formatter_spec.rb spec/models/subscription_spec.rb spec/models/license_template_spec.rb spec/lib/gitlab/memory/watchdog/monitor/rss_memory_limit_spec.rb spec/models/merge_request/diff_llm_summary_spec.rb spec/graphql/types/work_items/widgets/award_emoji_type_spec.rb spec/serializers/accessibility_reports_comparer_entity_spec.rb spec/services/ci/create_pipeline_service/scripts_spec.rb spec/graphql/resolvers/users/group_count_resolver_spec.rb spec/validators/qualified_domain_array_validator_spec.rb spec/lib/gitlab/diff/formatters/image_formatter_spec.rb spec/lib/gitlab/ci/config/extendable_spec.rb spec/lib/gitlab/template/gitlab_ci_yml_template_spec.rb spec/services/cohorts_service_spec.rb spec/presenters/service_hook_presenter_spec.rb spec/services/bulk_imports/relation_batch_export_service_spec.rb spec/models/diff_viewer/server_side_spec.rb spec/lib/gitlab/jira_import/handle_labels_service_spec.rb spec/views/notify/user_deactivated_email.text.erb_spec.rb spec/lib/gitlab/github_import/importer/issues_importer_spec.rb spec/services/jira_connect/sync_service_spec.rb spec/lib/gitlab/service_desk_spec.rb spec/lib/gitlab/sanitizers/exception_message_spec.rb spec/lib/bulk_imports/common/pipelines/entity_finisher_spec.rb spec/models/project_pages_metadatum_spec.rb spec/services/protected_tags/create_service_spec.rb spec/scripts/setup/find_jh_branch_spec.rb spec/lib/gitlab/gitaly_client/praefect_info_service_spec.rb spec/helpers/blame_helper_spec.rb spec/lib/gitlab/repository_size_error_message_spec.rb spec/lib/gitlab/metrics/subscribers/load_balancing_spec.rb spec/lib/sidebars/projects/menus/shimo_menu_spec.rb spec/lib/gitlab/graphql/pagination/connections_spec.rb spec/lib/gitlab/loggable_spec.rb spec/serializers/integrations/field_entity_spec.rb spec/lib/gitlab/config/entry/attributable_spec.rb spec/helpers/url_helper_spec.rb spec/lib/gitlab/usage_data_counters/vscode_extension_activity_unique_counter_spec.rb spec/lib/json_web_token/rsa_token_spec.rb spec/lib/gitlab/mailgun/webhook_processors/failure_logger_spec.rb spec/graphql/types/merge_requests/assignee_type_spec.rb spec/lib/gitlab/metrics/dashboard/stages/grafana_formatter_spec.rb spec/lib/gitlab/ci/config/entry/stages_spec.rb spec/workers/gitlab/github_import/import_issue_worker_spec.rb spec/lib/gitlab/query_limiting/middleware_spec.rb spec/models/work_items/widgets/notifications_spec.rb spec/graphql/types/container_repository_tag_type_spec.rb spec/workers/service_desk_email_receiver_worker_spec.rb spec/graphql/types/ci/pipeline_schedule_variable_type_spec.rb spec/lib/gitlab/ci/pipeline/chain/assign_partition_spec.rb spec/workers/users/create_statistics_worker_spec.rb spec/lib/gitlab/ci/build/hook_spec.rb spec/lib/gitlab/ci/config/entry/paths_spec.rb spec/lib/gitlab/usage/metrics/instrumentations/count_boards_metric_spec.rb spec/rubocop/cop/rspec/avoid_conditional_statements_spec.rb spec/rubocop/cop/group_public_or_visible_to_user_spec.rb spec/services/import/github/gists_import_service_spec.rb spec/views/profiles/audit_log.html.haml_spec.rb spec/models/preloaders/runner_manager_policy_preloader_spec.rb spec/serializers/analytics/cycle_analytics/stage_entity_spec.rb spec/lib/gitlab/diff/suggestion_diff_spec.rb spec/serializers/codequality_degradation_entity_spec.rb spec/graphql/types/release_asset_link_type_spec.rb spec/graphql/types/design_management/version_type_spec.rb spec/lib/gitlab/ci_access_spec.rb spec/lib/gitlab/backtrace_cleaner_spec.rb spec/lib/api/entities/ci/job_artifact_file_spec.rb spec/workers/concerns/repository_check_queue_spec.rb spec/lib/sidebars/projects/super_sidebar_menus/build_menu_spec.rb spec/validators/html_safety_validator_spec.rb spec/lib/gitlab/hashed_path_spec.rb spec/lib/error_tracking/collector/sentry_request_parser_spec.rb spec/lib/api/entities/bulk_imports/export_status_spec.rb spec/graphql/types/issue_status_count_type_spec.rb spec/graphql/types/ci/job_kind_enum_spec.rb spec/lib/gitlab/metrics/dashboard/validator/custom_formats_spec.rb spec/tooling/docs/deprecation_handling_spec.rb spec/graphql/types/packages/package_group_sort_enum_spec.rb spec/graphql/types/packages/package_status_enum_spec.rb spec/graphql/types/blob_viewer_type_spec.rb spec/lib/gitlab/kubernetes/pod_cmd_spec.rb spec/helpers/export_helper_spec.rb spec/workers/trending_projects_worker_spec.rb spec/lib/gitlab/ci/status/core_spec.rbKnapsack report generator started!764warning: parser/current is loading parser/ruby30, which recognizes 3.0.5-compliant syntax, but you are running 3.0.6.766Run options: exclude {:quarantine=>true, :level=>"background_migration"}767Test environment set up in 1.497412761 seconds768MergeRequests::UpdateService769 execute770 behaves like issuable update service updating last_edited_at values771 when updating the title of the issuable772 does not update last_edited values773 when updating the description of the issuable774 updates last_edited values775 valid params776 matches base expectations777 executes hooks with update action778 creates a resource label event779 creates system note about title change780 creates system note about description change781 creates system note about branch change782 creates system note about discussion lock783 usage counters784 update as expected785 tracks Draft marking786 tracks Draft un-marking787 tracks time estimate and spend time changes788 tracks milestone change789 track labels change790 when MR is locked791 when locked again792 does not track discussion locking793 when unlocked794 tracks dicussion unlocking795 when MR is unlocked796 when unlocked again797 does not track discussion unlocking798 when locked799 tracks dicussion locking800 reviewers801 when reviewers changed802 tracks reviewers changed event803 when reviewers did not change804 does not track reviewers changed event805 updating milestone806 with milestone_id param807 sets milestone808 milestone counters cache reset809 deletes milestone counters810 deletes milestone counters when the milestone is removed811 deletes milestone counters when the milestone was not set812 with reviewers813 creates system note about merge_request review request814 updates the tracking815 when current user cannot admin issues in the project816 filters out params that cannot be set without the :admin_merge_request permission817 updating milestone818 when milestone_id param819 behaves like does not update milestone820 sets milestone821 when milestone param822 behaves like does not update milestone823 sets milestone824 when not including source branch removal options825 maintains the original options826 behaves like reviewer_ids filter827 filter_reviewer828 without reviewer_ids829 contains no reviewer_ids830 with reviewer_ids831 when the current user can admin the merge_request832 with a reviewer who can read the merge_request833 contains reviewers who can read the merge_request834 when the current_user cannot admin the merge_request835 contains no reviewers836 with an existing reviewer837 removes reviewers838 after_save callback to store_mentions839 when mentionable attributes change840 saves mentions841 when mentionable attributes do not change842 does not call store_mentions843 when save fails844 does not call store_mentions845 merge846 behaves like correct merge behavior847 without pipeline848 merges the MR849 with finished pipeline850 merges the MR851 with active pipeline852 is expected to receive execute(#<MergeRequest id:44 group41/project-46!1>) 1 time853 with a non-authorised user854 does not merge the MR855 MR can not be merged when note sha != MR sha856 is expected to eq "opened"857 todos858 when the title change859 calls MergeRequest::ResolveTodosService#async_execute860 does not create any new todos861 when the description change862 calls MergeRequest::ResolveTodosService#async_execute863 creates only 1 new todo864 triggers GraphQL description updated subscription865 when decription is not changed866 does not trigger GraphQL description updated subscription867 when is reassigned868 calls MergeRequest::ResolveTodosService#async_execute869 when reviewers gets changed870 calls MergeRequest::ResolveTodosService#async_execute871 creates a pending todo for new review request872 sends email reviewer change notifications to old and new reviewers873 updates open merge request counter for reviewers874 behaves like triggers GraphQL subscription mergeRequestReviewersUpdated875 is expected to receive merge_request_reviewers_updated(#<MergeRequest id:58 group55/project-60!1>) 1 time876 when reviewers did not change877 behaves like does not trigger GraphQL subscription mergeRequestReviewersUpdated878 is expected not to receive merge_request_reviewers_updated(*(any args)) 0 times879 when the milestone is removed880 sends notifications for subscribers of changed milestone881 when the milestone is changed882 calls MergeRequests::ResolveTodosService#async_execute883 sends notifications for subscribers of changed milestone884 when the labels change885 calls MergeRequests::ResolveTodosService#async_execute886 updates updated_at887 when the assignee changes888 updates open merge request counter for assignees when merge request is reassigned889 records the assignment history890 when the target branch changes891 calls MergeRequests::ResolveTodosService#async_execute892 does not try to mark as unchecked if it's already unchecked893 behaves like creates a new pipeline894 creates a new pipeline895 when auto merge is enabled and target branch changed896 calls MergeRequests::ResolveTodosService#async_execute897 behaves like creates a new pipeline898 creates a new pipeline899 when the draft status is changed900 removing draft status901 sends notifications for subscribers902 triggers GraphQL subscription mergeRequestMergeStatusUpdated903 when removing through wip_event param904 removes Draft from the title905 adding draft status906 does not send notifications907 triggers GraphQL subscription mergeRequestMergeStatusUpdated908 when adding through wip_event param909 adds Draft to the title910 when the merge request is relabeled911 sends notifications for subscribers of newly added labels912 when issue has the `label` label913 does not send notifications for existing labels914 does not send notifications for removed labels915 updating mentions916 when mentioning a different user917 in title918 emails only the newly-mentioned user919 in description920 emails only the newly-mentioned user921 when mentioning a user and a group with access to922 when group is public923 behaves like updating attribute with allowed mentions924 emails group members925 behaves like updating attribute with allowed mentions926 emails group members927 behaves like updating attribute with existing group mention928 creates todos for only newly mentioned users929 behaves like updating attribute with existing group mention930 creates todos for only newly mentioned users931 when the group is private932 behaves like updating attribute with allowed mentions933 emails group members934 behaves like updating attribute with allowed mentions935 emails group members936 behaves like updating attribute with existing group mention937 creates todos for only newly mentioned users938 behaves like updating attribute with existing group mention939 creates todos for only newly mentioned users940 when mentioning a user and a group without access to941 when the group is private942 behaves like updating attribute with not allowed mentions943 emails mentioned user944 behaves like updating attribute with not allowed mentions945 emails mentioned user946 when MergeRequest has tasks947 is expected to eq true948 behaves like updating a single task949 usage counters950 update as expected951 when a task is marked as completed952 creates system note about task status change953 when a task is marked as incomplete954 creates system note about task status change955 when the task position has been modified956 raises an exception957 when the content changes but not task line number958 creates system note about task status change959 when tasks are marked as completed960 creates system note about task status change961 when tasks are marked as incomplete962 creates system note about task status change963 while saving references to issues that the updated merge request closes964 creates a `MergeRequestsClosingIssues` record for each issue965 removes `MergeRequestsClosingIssues` records when issues are not closed anymore966 updating asssignee_ids967 does not update assignee when assignee_id is invalid968 unassigns assignee when user id is 0969 saves assignee when user id is valid970 does not update assignee_id when user cannot read issue971 :use_specialized_service972 when true973 passes the update action to ::MergeRequests::UpdateAssigneesService974 when false or nil975 does not pass the update action to ::MergeRequests::UpdateAssigneesService when false976 does not pass the update action to ::MergeRequests::UpdateAssigneesService when nil977 when issuable feature is private978 does not update with unauthorized assignee when project is Internal979 does not update with unauthorized assignee when project is Public980 when adding time spent981 :use_specialized_service982 when true983 passes the update action to ::MergeRequests::AddSpentTimeService984 when false or nil985 does not pass the update action to ::MergeRequests::UpdateAssigneesService when false986 does not pass the update action to ::MergeRequests::UpdateAssigneesService when nil987 behaves like issuable update service988 changing state989 to reopened990 executes hooks991 to closed992 executes hooks993 setting `allow_collaboration`994 does not allow a maintainer of the target project to set `allow_collaboration`995 is allowed by a user that can push to the source and can update the merge request996 updating `force_remove_source_branch`997 cannot be done by members of the target project when they don't have access998 can be done by members of the target project if they can push to the source project999 updating `target_branch`1000 updates to master1001 updates to master because of branch deletion1002 behaves like creates a new pipeline1003 creates a new pipeline1004 behaves like issuable record that supports quick actions1005 with labels in command only1006 attaches labels to issuable1007 with labels in params and command1008 attaches all labels to issuable1009 with assignee and milestone in command only1010 assigns and sets milestone to issuable1011 labels are updated1012 behaves like keeps issuable labels sorted after update1013 when label is changed1014 keeps the labels sorted by title ASC1015 behaves like broadcasting issuable labels updates1016 when label is added1017 triggers the GraphQL subscription1018 when label is removed1019 triggers the GraphQL subscription1020 when label is unchanged1021 does not trigger the GraphQL subscription1022MergeRequests::CreateFromIssueService1023 #execute1024 no target_project_id specified1025 inherits labels1026 inherits milestones1027 sets the merge request title to: "Draft: Resolves "$issue-title"1028 behaves like a service that creates a merge request from an issue1029 returns an error when user can not create merge request on target project1030 returns an error with invalid issue iid1031 creates a branch based on issue title1032 creates a branch using passed name1033 creates the new_merge_request system note1034 tracks the mr creation when the mr is valid1035 creates the new_issue_branch system note when the branch could be created but the merge_request cannot be created1036 does not track the mr creation when the Mr is invalid1037 creates a merge request1038 sets the merge request author to current user and assigns them1039 sets the merge request source branch to the new issue branch1040 sets the merge request source branch to the passed branch name1041 sets the merge request target branch to the project default branch1042 executes quick actions if the build service sets them in the description1043 when ref branch is set1044 sets the merge request source branch to the new issue branch1045 sets the merge request target branch to the ref branch1046 when the ref is a tag1047 sets the merge request source branch to the new issue branch1048 creates a merge request1049 sets the merge request target branch to the project default branch1050 when ref branch does not exist1051 creates a merge request1052 sets the merge request target branch to the project default branch1053 target_project_id is specified1054 target project is not a fork of the project1055 returns an error about not finding the project1056 does not create merge request1057 target project is a fork of project project1058 sets the merge request title to: "Draft: $issue-branch-name1059 behaves like a service that creates a merge request from an issue1060 returns an error when user can not create merge request on target project1061 returns an error with invalid issue iid1062 creates a branch based on issue title1063 creates a branch using passed name1064 creates the new_merge_request system note1065 tracks the mr creation when the mr is valid1066 creates the new_issue_branch system note when the branch could be created but the merge_request cannot be created1067 does not track the mr creation when the Mr is invalid1068 creates a merge request1069 sets the merge request author to current user and assigns them1070 sets the merge request source branch to the new issue branch1071 sets the merge request source branch to the passed branch name1072 sets the merge request target branch to the project default branch1073 executes quick actions if the build service sets them in the description1074 when ref branch is set1075 sets the merge request source branch to the new issue branch1076 sets the merge request target branch to the ref branch1077 when the ref is a tag1078 sets the merge request source branch to the new issue branch1079 creates a merge request1080 sets the merge request target branch to the project default branch1081 when ref branch does not exist1082 creates a merge request1083 sets the merge request target branch to the project default branch1084Gitlab::Database::LoadBalancing1085 .base_models1086 returns the models to apply load balancing to1087 returns the models as a frozen array1088 .each_load_balancer1089 yields every load balancer to the supplied block1090 returns an Enumerator when no block is given1091 .primary_only?1092 returns true if all load balancers have no replicas1093 returns false if at least one has replicas1094 .release_hosts1095 releases the host of every load balancer1096 .db_role_for_connection1097 when the NullPool is used for connection1098 returns unknown1099 when the load balancing is configured1100 when a proxy connection is used1101 returns :unknown1102 when an invalid connection is used1103 returns :unknown1104 when a null connection is used1105 returns :unknown1106 when a read connection is used1107 returns :replica1108 when a read_write connection is used1109 returns :primary1110 LoadBalancing integration tests1111-- create_table(:_test_load_balancing_test, {:force=>true})1112 -> 0.0492s1113 queries: -> { model.first }, include_transaction: false, expected_results: [:replica]1114 redirects queries to the right roles1115 queries: -> { model.find_by(id: 123) }, include_transaction: false, expected_results: [:replica]1116 redirects queries to the right roles1117 queries: -> { model.where(name: 'hello').to_a }, include_transaction: false, expected_results: [:replica]1118 redirects queries to the right roles1119 queries: -> { model.create!(name: 'test1') }, include_transaction: false, expected_results: [:primary]1120 redirects queries to the right roles1121 queries: -> {1122 instance = model.create!(name: 'test1')1123 instance.update!(name: 'test2')1124 }, include_transaction: false, expected_results: [:primary, :primary]1125 redirects queries to the right roles1126 queries: -> { model.update_all(name: 'test2') }, include_transaction: false, expected_results: [:primary]1127 redirects queries to the right roles1128 queries: -> {1129 instance = model.create!(name: 'test1')1130 instance.destroy!1131 }, include_transaction: false, expected_results: [:primary, :primary]1132 redirects queries to the right roles1133 queries: -> { model.delete_all }, include_transaction: false, expected_results: [:primary]1134 redirects queries to the right roles1135 queries: -> { model.connection.exec_query('SELECT 1').to_a }, include_transaction: false, expected_results: [:primary]1136 redirects queries to the right roles1137 queries: -> {1138 model.first1139 model.create!(name: 'test1')1140 model.first1141 model.find_by(name: 'test1')1142 }, include_transaction: false, expected_results: [:replica, :primary, :primary, :primary]1143 redirects queries to the right roles1144 queries: -> {1145 model.transaction do1146 model.find_by(name: 'test1')1147 model.create!(name: 'test1')1148 instance = model.find_by(name: 'test1')1149 instance.update!(name: 'test2')1150 end1151 model.find_by(name: 'test1')1152 }, include_transaction: true, expected_results: [:primary, :primary, :primary, :primary, :primary, :primary, :primary]1153 redirects queries to the right roles1154 queries: -> {1155 model.transaction do1156 model.transaction do1157 model.create!(name: 'test1')1158 end1159 model.update_all(name: 'test2')1160 end1161 model.find_by(name: 'test1')1162 }, include_transaction: true, expected_results: [:primary, :primary, :primary, :primary, :primary]1163 redirects queries to the right roles1164 queries: -> {1165 model.transaction do1166 model.first1167 model.where(name: 'test1').to_a1168 end1169 }, include_transaction: true, expected_results: [:primary, :primary, :primary, :primary]1170 redirects queries to the right roles1171 queries: -> {1172 ::Gitlab::Database::LoadBalancing::Session.current.use_primary do1173 model.first1174 model.where(name: 'test1').to_a1175 end1176 model.first1177 }, include_transaction: false, expected_results: [:primary, :primary, :replica]1178 redirects queries to the right roles1179 queries: -> {1180 model.first1181 ::Gitlab::Database::LoadBalancing::Session.current.use_primary!1182 model.where(name: 'test1').to_a1183 }, include_transaction: false, expected_results: [:replica, :primary]1184 redirects queries to the right roles1185 queries: -> {1186 ::Gitlab::Database::LoadBalancing::Session.current.use_replicas_for_read_queries do1187 model.where(name: 'test1').to_a1188 end1189 }, include_transaction: false, expected_results: [:replica]1190 redirects queries to the right roles1191 queries: -> {1192 ::Gitlab::Database::LoadBalancing::Session.current.use_replicas_for_read_queries do1193 model.create!(name: 'test1')1194 end1195 }, include_transaction: false, expected_results: [:primary]1196 redirects queries to the right roles1197 queries: -> {1198 ::Gitlab::Database::LoadBalancing::Session.current.use_replicas_for_read_queries do1199 model.connection.exec_query("SELECT 1")1200 end1201 }, include_transaction: false, expected_results: [:primary]1202 redirects queries to the right roles1203 queries: -> {1204 ::Gitlab::Database::LoadBalancing::Session.current.use_primary!1205 ::Gitlab::Database::LoadBalancing::Session.current.use_replicas_for_read_queries do1206 model.where(name: 'test1').to_a1207 end1208 }, include_transaction: false, expected_results: [:replica]1209 redirects queries to the right roles1210 queries: -> {1211 ::Gitlab::Database::LoadBalancing::Session.current.use_primary!1212 ::Gitlab::Database::LoadBalancing::Session.current.use_replicas_for_read_queries do1213 model.create!(name: 'test1')1214 end1215 }, include_transaction: false, expected_results: [:primary]1216 redirects queries to the right roles1217 queries: -> {1218 ::Gitlab::Database::LoadBalancing::Session.current.use_primary!1219 ::Gitlab::Database::LoadBalancing::Session.current.use_replicas_for_read_queries do1220 model.connection.exec_query('SELECT 1')1221 end1222 }, include_transaction: false, expected_results: [:primary]1223 redirects queries to the right roles1224 queries: -> {1225 ::Gitlab::Database::LoadBalancing::Session.current.use_primary do1226 ::Gitlab::Database::LoadBalancing::Session.current.use_replicas_for_read_queries do1227 model.where(name: 'test1').to_a1228 end1229 end1230 }, include_transaction: false, expected_results: [:replica]1231 redirects queries to the right roles1232 queries: -> {1233 ::Gitlab::Database::LoadBalancing::Session.current.write!1234 ::Gitlab::Database::LoadBalancing::Session.current.use_replicas_for_read_queries do1235 model.where(name: 'test1').to_a1236 end1237 }, include_transaction: false, expected_results: [:replica]1238 redirects queries to the right roles1239 queries: -> {1240 ::Gitlab::Database::LoadBalancing::Session.current.fallback_to_replicas_for_ambiguous_queries do1241 model.first1242 model.where(name: 'test1').to_a1243 end1244 }, include_transaction: false, expected_results: [:replica, :replica]1245 redirects queries to the right roles1246 queries: -> {1247 ::Gitlab::Database::LoadBalancing::Session.current.fallback_to_replicas_for_ambiguous_queries do1248 model.transaction do1249 model.first1250 model.where(name: 'test1').to_a1251 end1252 end1253 }, include_transaction: false, expected_results: [:replica, :replica]1254 redirects queries to the right roles1255 queries: -> {1256 ::Gitlab::Database::LoadBalancing::Session.current.fallback_to_replicas_for_ambiguous_queries do1257 model.connection.exec_query("SELECT 1")1258 end1259 }, include_transaction: false, expected_results: [:replica]1260 redirects queries to the right roles1261 queries: -> {1262 ::Gitlab::Database::LoadBalancing::Session.current.fallback_to_replicas_for_ambiguous_queries do1263 model.transaction do1264 model.connection.exec_query("SET LOCAL statement_timeout = 5000")1265 model.count1266 end1267 end1268 }, include_transaction: true, expected_results: [:replica, :replica, :replica, :replica]1269 redirects queries to the right roles1270 queries: -> {1271 model.create!(name: 'Test1')1272 ::Gitlab::Database::LoadBalancing::Session.current.fallback_to_replicas_for_ambiguous_queries do1273 model.connection.exec_query("SELECT 1")1274 end1275 }, include_transaction: false, expected_results: [:primary, :primary]1276 redirects queries to the right roles1277 queries: -> {1278 ::Gitlab::Database::LoadBalancing::Session.current.use_primary!1279 ::Gitlab::Database::LoadBalancing::Session.current.fallback_to_replicas_for_ambiguous_queries do1280 model.connection.exec_query("SELECT 1")1281 end1282 }, include_transaction: false, expected_results: [:primary]1283 redirects queries to the right roles1284 queries: -> {1285 ::Gitlab::Database::LoadBalancing::Session.current.use_primary do1286 ::Gitlab::Database::LoadBalancing::Session.current.fallback_to_replicas_for_ambiguous_queries do1287 model.connection.exec_query("SELECT 1")1288 end1289 end1290 }, include_transaction: false, expected_results: [:primary]1291 redirects queries to the right roles1292 queries: -> {1293 ::Gitlab::Database::LoadBalancing::Session.current.fallback_to_replicas_for_ambiguous_queries do1294 ::Gitlab::Database::LoadBalancing::Session.current.use_primary do1295 model.connection.exec_query("SELECT 1")1296 end1297 end1298 }, include_transaction: false, expected_results: [:primary]1299 redirects queries to the right roles1300 queries: -> {1301 ::Gitlab::Database::LoadBalancing::Session.current.fallback_to_replicas_for_ambiguous_queries do1302 model.connection.exec_query("SELECT 1")1303 model.delete_all1304 model.connection.exec_query("SELECT 1")1305 end1306 }, include_transaction: false, expected_results: [:replica, :primary, :primary]1307 redirects queries to the right roles1308 queries: -> {1309 ::Gitlab::Database::LoadBalancing::Session.current.use_replicas_for_read_queries do1310 ::Gitlab::Database::LoadBalancing::Session.current.fallback_to_replicas_for_ambiguous_queries do1311 model.connection.exec_query('SELECT 1')1312 model.where(name: 'test1').to_a1313 end1314 end1315 }, include_transaction: false, expected_results: [:replica, :replica]1316 redirects queries to the right roles1317 custom connection handling1318 queries: -> {1319 ::Gitlab::Database::LoadBalancing::Session.current.use_primary!1320 model.connection.clear_cache!1321 model.connection.schema_cache.add('users')1322 model.connection.pool.release_connection1323 }, expected_role: :replica1324 redirects queries to the right roles1325 queries: -> {1326 connection = model.connection1327 connection.select_one('SELECT 1')1328 connection.pool.release_connection1329 }, expected_role: :replica1330 redirects queries to the right roles1331 queries: -> {1332 connection = model.retrieve_connection1333 connection.select_one('SELECT 1')1334 connection.pool.release_connection1335 }, expected_role: :primary1336 redirects queries to the right roles1337 a write inside a transaction inside fallback_to_replicas_for_ambiguous_queries block1338 raises an exception1339-- drop_table(:_test_load_balancing_test, {:force=>true})1340 -> 0.0483s1341Integrations::Jira1342 behaves like Integrations::ResetSecretFields1343 #exposing_secrets_fields1344 returns an array of strings1345 #reset_secret_fields?1346 returns false if no exposing field has changed1347 returns true if any exposing field has changed1348 validation callback1349 when an exposing field has changed1350 clears all secret fields1351 when a secret field has been updated1352 does not clear this secret field1353 when a secret field has been updated with the same value1354 does not clear this secret field1355 when no exposing field has changed1356 does not clear any secret fields1357 validations1358 when integration is active1359 is expected to be valid1360 is expected to validate that :url cannot be empty/falsy1361 is expected to validate that :username cannot be empty/falsy1362 is expected to validate that :password cannot be empty/falsy1363 is expected to validate that :jira_auth_type cannot be empty/falsy1364 is expected to validate that the length of :jira_issue_regex is at most 2551365 is expected to validate that the length of :jira_issue_prefix is at most 2551366 is expected to validate that :jira_auth_type is either ‹0› or ‹1›1367 behaves like issue tracker integration URL attribute1368 is expected to allow :url to be ‹"https://example.com"›1369 is expected not to allow :url to be ‹"example.com"›1370 is expected not to allow :url to be ‹"ftp://example.com"›1371 is expected not to allow :url to be ‹"herp-and-derp"›1372 behaves like issue tracker integration URL attribute1373 is expected to allow :api_url to be ‹"https://example.com"›1374 is expected not to allow :api_url to be ‹"example.com"›1375 is expected not to allow :api_url to be ‹"ftp://example.com"›1376 is expected not to allow :api_url to be ‹"herp-and-derp"›1377 with personal_access_token_authorization1378 is expected not to validate that :username cannot be empty/falsy1379 when URL is for Jira Cloud1380 is valid when jira_auth_type is basic1381 is invalid when jira_auth_type is PAT1382 when integration is inactive1383 is expected to be valid1384 is expected not to validate that :url cannot be empty/falsy1385 is expected not to validate that :username cannot be empty/falsy1386 is expected not to validate that :password cannot be empty/falsy1387 is expected not to validate that :jira_auth_type cannot be empty/falsy1388 is expected not to validate that the length of :jira_issue_regex is at most 2551389 is expected not to validate that the length of :jira_issue_prefix is at most 2551390 is expected not to validate that :jira_auth_type is either ‹0› or ‹1›1391 jira_issue_transition_id1392 accepts a blank value1393 accepts any string containing numbers1394 does not accept a string without numbers1395 #options1396 sets the URL properly1397 leaves out trailing slashes in context1398 provides additional cookies to allow basic auth with oracle webgate1399 URL without a path1400 leaves out trailing slashes in context1401 URL with query string parameters1402 removes query string parameters1403 username with trailing whitespaces1404 leaves out trailing whitespaces in username1405 using api URL1406 leaves out trailing slashes in context1407 #fields1408 returns custom fields1409 #sections1410 when project_level? is true1411 includes SECTION_TYPE_JIRA_ISSUES1412 section SECTION_TYPE_JIRA_ISSUES has `plan` attribute1413 when project_level? is false1414 does not include SECTION_TYPE_JIRA_ISSUES1415 #reference_pattern1416 key: "#123", result: ""1417 is expected to eq ""1418 key: "1#23#12", result: ""1419 is expected to eq ""1420 key: "JIRA-1234A", result: "JIRA-1234"1421 is expected to eq "JIRA-1234"1422 key: "JIRA-1234-some_tag", result: "JIRA-1234"1423 is expected to eq "JIRA-1234"1424 key: "JIRA-1234_some_tag", result: "JIRA-1234"1425 is expected to eq "JIRA-1234"1426 key: "EXT_EXT-1234", result: "EXT_EXT-1234"1427 is expected to eq "EXT_EXT-1234"1428 key: "EXT3_EXT-1234", result: "EXT3_EXT-1234"1429 is expected to eq "EXT3_EXT-1234"1430 key: "3EXT_EXT-1234", result: ""1431 is expected to eq ""1432 key: "CVE-2022-123", result: ""1433 is expected to eq ""1434 key: "CVE-123", result: "CVE-123"1435 is expected to eq "CVE-123"1436 key: "abc-JIRA-1234", result: "JIRA-1234"1437 is expected to eq "JIRA-1234"1438 with match prefix1439 key: "jira##123", result: "", issue_key: ""1440 is expected to eq ""1441 key: "jira#1#23#12", result: "", issue_key: ""1442 is expected to eq ""1443 key: "jira#JIRA-1234A", result: "jira#JIRA-1234", issue_key: "JIRA-1234"1444 is expected to eq "JIRA-1234"1445 key: "jira#JIRA-1234-some_tag", result: "jira#JIRA-1234", issue_key: "JIRA-1234"1446 is expected to eq "JIRA-1234"1447 key: "JIRA-1234A", result: "", issue_key: ""1448 is expected to eq ""1449 key: "JIRA-1234-some_tag", result: "", issue_key: ""1450 is expected to eq ""1451 key: "myjira#JIRA-1234-some_tag", result: "", issue_key: ""1452 is expected to eq ""1453 key: "MYjira#JIRA-1234-some_tag", result: "", issue_key: ""1454 is expected to eq ""1455 key: "my-jira#JIRA-1234-some_tag", result: "jira#JIRA-1234", issue_key: "JIRA-1234"1456 is expected to eq "JIRA-1234"1457 with trailing space in jira_issue_prefix1458 leaves the trailing space1459 pulls the issue ID without a prefix1460 with custom issue pattern1461 key: "J1-123", result: "J1-123"1462 is expected to eq "J1-123"1463 key: "AAbJ J1-123", result: "J1-123"1464 is expected to eq "J1-123"1465 key: "#A1-123", result: "A1-123"1466 is expected to eq "A1-123"1467 key: "J1-1234-some_tag", result: "J1-1234"1468 is expected to eq "J1-1234"1469 key: "J1-1234A", result: "J1-1234"1470 is expected to eq "J1-1234"1471 key: "J1-1234-some_tag", result: "J1-1234"1472 is expected to eq "J1-1234"1473 key: "JI1-123", result: ""1474 is expected to eq ""1475 key: "J1I-123", result: ""1476 is expected to eq ""1477 key: "JI-123", result: ""1478 is expected to eq ""1479 key: "#123", result: ""1480 is expected to eq ""1481 with long running regex1482 handles long inputs1483 .valid_jira_cloud_url?1484 url: "https://abc.atlassian.net", result: true1485 is expected to eq true1486 url: "http://abc.atlassian.net", result: false1487 is expected to eq false1488 url: "abc.atlassian.net", result: false1489 is expected to eq false1490 url: "https://somethingelse.com", result: false1491 is expected to eq false1492 url: "javascript://test.atlassian.net/%250dalert(document.domain)", result: false1493 is expected to eq false1494 url: "https://example.com\".atlassian.net", result: false1495 is expected to eq false1496 url: nil, result: false1497 is expected to eq false1498 #create1499 does not store data into properties1500 stores data in data_fields correctly1501 when loading serverInfo1502 with a Cloud instance1503 is detected1504 with a Server instance1505 is detected1506 from an Unknown instance1507 and URL ends in .atlassian.net1508 deployment_type is set to cloud1509 and URL is something else1510 deployment_type is set to server1511 and no ServerInfo response is received1512 and URL ends in .atlassian.net1513 deployment_type is set to cloud1514 and URL is something else1515 deployment_type is set to server1516 overriding properties1517 with properties1518 when data are stored in properties1519 behaves like handles jira fields1520 reading data1521 reads data correctly1522 #update1523 basic update1524 stores updated data in jira_tracker_data table1525 when updating the url, api_url, username, or password1526 calls serverInfo for url1527 calls serverInfo for api_url1528 calls serverInfo for username1529 calls serverInfo for password1530 when updating the integration1531 updates deployment type1532 when removing the integration1533 updates deployment type1534 when not updating the url, api_url, username, or password1535 does not update deployment type1536 when data are stored in separated fields1537 behaves like handles jira fields1538 reading data1539 reads data correctly1540 #update1541 basic update1542 stores updated data in jira_tracker_data table1543 when updating the url, api_url, username, or password1544 calls serverInfo for url1545 calls serverInfo for api_url1546 calls serverInfo for username1547 calls serverInfo for password1548 when updating the integration1549 updates deployment type1550 when removing the integration1551 updates deployment type1552 when not updating the url, api_url, username, or password1553 does not update deployment type1554 when data are stored in both properties and separated fields1555 behaves like handles jira fields1556 reading data1557 reads data correctly1558 #update1559 basic update1560 stores updated data in jira_tracker_data table1561 when updating the url, api_url, username, or password1562 calls serverInfo for url1563 calls serverInfo for api_url1564 calls serverInfo for username1565 calls serverInfo for password1566 when updating the integration1567 updates deployment type1568 when removing the integration1569 updates deployment type1570 when not updating the url, api_url, username, or password1571 does not update deployment type1572 #client1573 uses the default GitLab::HTTP timeouts1574 with basic auth1575 uses correct authorization options1576 with personal access token auth1577 uses correct authorization options1578 #find_issue1579 calls the Jira API to get the issue1580 with options1581 calls the Jira API with the options to get the issue1582 with restricted restrict_project_key option1583 is expected to eq nil1584 and project_key matches1585 calls the Jira API to get the issue1586 #close_issue1587 when resource is a merge request1588 behaves like close_issue1589 calls Jira API1590 tracks usage1591 does not fail if remote_link.all on issue returns nil1592 creates Remote Link reference in Jira for comment1593 does not send comment or remote links to issues already closed1594 does not send comment or remote links to issues with unknown resolution1595 references the GitLab commit1596 references the GitLab commit1597 logs exception when transition id is not valid1598 calls the api with jira_issue_transition_id1599 behaves like Snowplow event tracking with RedisHLL context1600 behaves like Snowplow event tracking1601 is emitted1602 when "comment_on_event_enabled" is set to false1603 creates Remote Link reference but does not create comment1604 when Remote Link already exists1605 does not create comment1606 when custom transition IDs are blank1607 does not transition the issue1608 when using automatic issue transitions1609 uses the next transition with a status category of done1610 when no done transition is available1611 does not attempt to transition1612 when no valid transitions are returned1613 does not attempt to transition1614 when using multiple transition ids1615 calls the api with transition ids separated by comma1616 calls the api with transition ids separated by semicolon1617 when a transition fails1618 stops the sequence1619 when resource is a commit1620 behaves like close_issue1621 calls Jira API1622 tracks usage1623 does not fail if remote_link.all on issue returns nil1624 creates Remote Link reference in Jira for comment1625 does not send comment or remote links to issues already closed1626 does not send comment or remote links to issues with unknown resolution1627 references the GitLab commit1628 references the GitLab commit1629 logs exception when transition id is not valid1630 calls the api with jira_issue_transition_id1631 behaves like Snowplow event tracking with RedisHLL context1632 behaves like Snowplow event tracking1633 is emitted1634 when "comment_on_event_enabled" is set to false1635 creates Remote Link reference but does not create comment1636 when Remote Link already exists1637 does not create comment1638 when custom transition IDs are blank1639 does not transition the issue1640 when using automatic issue transitions1641 uses the next transition with a status category of done1642 when no done transition is available1643 does not attempt to transition1644 when no valid transitions are returned1645 does not attempt to transition1646 when using multiple transition ids1647 calls the api with transition ids separated by comma1648 calls the api with transition ids separated by semicolon1649 when a transition fails1650 stops the sequence1651 #create_cross_reference_note1652 for commits1653 behaves like handles cross-references1654 tracks usage1655 when enabled1656 creates a comment and remote link1657 when comment already exists1658 does not create a comment or remote link1659 when remote link already exists1660 updates the remote link but does not create a comment1661 when disabled1662 does not create a comment or remote link1663 behaves like Snowplow event tracking with RedisHLL context1664 behaves like Snowplow event tracking1665 is emitted1666 for issues1667 behaves like handles cross-references1668 tracks usage1669 when enabled1670 creates a comment and remote link1671 when comment already exists1672 does not create a comment or remote link1673 when remote link already exists1674 updates the remote link but does not create a comment1675 when disabled1676 does not create a comment or remote link1677 behaves like Snowplow event tracking with RedisHLL context1678 behaves like Snowplow event tracking1679 is emitted1680 for merge requests1681 behaves like handles cross-references1682 tracks usage1683 when enabled1684 creates a comment and remote link1685 when comment already exists1686 does not create a comment or remote link1687 when remote link already exists1688 updates the remote link but does not create a comment1689 when disabled1690 does not create a comment or remote link1691 behaves like Snowplow event tracking with RedisHLL context1692 behaves like Snowplow event tracking1693 is emitted1694 for notes1695 behaves like handles cross-references1696 tracks usage1697 when enabled1698 creates a comment and remote link1699 when comment already exists1700 does not create a comment or remote link1701 when remote link already exists1702 updates the remote link but does not create a comment1703 when disabled1704 does not create a comment or remote link1705 behaves like Snowplow event tracking with RedisHLL context1706 behaves like Snowplow event tracking1707 is emitted1708 for snippets1709 behaves like handles cross-references1710 tracks usage1711 when enabled1712 creates a comment and remote link1713 when comment already exists1714 does not create a comment or remote link1715 when remote link already exists1716 updates the remote link but does not create a comment1717 when disabled1718 does not create a comment or remote link1719 behaves like Snowplow event tracking with RedisHLL context1720 behaves like Snowplow event tracking1721 is emitted1722 #test1723 when the test succeeds1724 gets Jira project with URL when API URL not set1725 gets Jira project with API URL if set1726 when the test fails1727 returns result with the error1728 project and issue urls1729 removes trailing slashes from url1730 when gitlab.yml was initialized1731 is prepopulated with the settings1732 favicon urls1733 includes the standard favicon1734 includes returns the custom favicon1735 generating external URLs1736 #web_url1737 handles paths, slashes, and query string1738 preserves existing query string1739 returns an empty string if URL is not set1740 includes Atlassian referrer for SaaS1741 includes Atlassian referrer for self-managed1742 #project_url1743 returns the correct URL1744 returns an empty string if URL is not set1745 #issues_url1746 returns the correct URL1747 returns an empty string if URL is not set1748 #new_issue_url1749 returns the correct URL1750 returns an empty string if URL is not set1751 #issue_transition_enabled?1752 returns true if automatic transitions are enabled1753 returns true if custom transitions are set1754 returns false if automatic and custom transitions are disabled1755 valid_connection? and configured?1756 when the test fails1757 is falsey1758 implies that configured? is also falsey1759 when the test succeeds1760 is truthy1761 when the integration is active1762 implies that configured? is also truthy1763 when the integration is inactive1764 implies that configured? is falsey1765Gitlab::HTTP1766 calls a block1767 when allow_local_requests1768 sends the request to the correct URI1769 when not allow_local_requests1770 sends the request to the correct URI1771 when reading the response is too slow1772 raises an error1773 and timeout option is greater than DEFAULT_READ_TOTAL_TIMEOUT1774 does not raise an error1775 and stream_body option is truthy1776 does not raise an error1777 allow_local_requests_from_web_hooks_and_services is1778 disabled1779 deny requests to localhost1780 deny requests to private network1781 if allow_local_requests set to true1782 override the global value and allow requests to localhost or private network1783 enabled1784 allow requests to localhost1785 allow requests to private network1786 if allow_local_requests set to false1787 override the global value and ban requests to localhost or private network1788 handle redirect loops1789 handles GET requests1790 handles POST requests1791 handles PUT requests1792 handles DELETE requests1793 handles HEAD requests1794 setting default timeouts1795 when no timeouts are set1796 sets default open and read and write timeouts1797 when :timeout is set1798 does not set any default timeouts1799 when :open_timeout is set1800 only sets default read and write timeout1801 when :read_timeout is set1802 only sets default open and write timeout1803 when :write_timeout is set1804 only sets default open and read timeout1805 .try_get1806 with Net::OpenTimeout1807 with path1808 handles requests without extra_log_info1809 handles requests with extra_log_info as hash1810 handles requests with extra_log_info as proc1811 with path and options1812 handles requests without extra_log_info1813 handles requests with extra_log_info as hash1814 handles requests with extra_log_info as proc1815 with path, options, and block1816 handles requests without extra_log_info1817 handles requests with extra_log_info as hash1818 handles requests with extra_log_info as proc1819 with Net::ReadTimeout1820 with path1821 handles requests without extra_log_info1822 handles requests with extra_log_info as hash1823 handles requests with extra_log_info as proc1824 with path and options1825 handles requests without extra_log_info1826 handles requests with extra_log_info as hash1827 handles requests with extra_log_info as proc1828 with path, options, and block1829 handles requests without extra_log_info1830 handles requests with extra_log_info as hash1831 handles requests with extra_log_info as proc1832 with Net::WriteTimeout1833 with path1834 handles requests without extra_log_info1835 handles requests with extra_log_info as hash1836 handles requests with extra_log_info as proc1837 with path and options1838 handles requests without extra_log_info1839 handles requests with extra_log_info as hash1840 handles requests with extra_log_info as proc1841 with path, options, and block1842 handles requests without extra_log_info1843 handles requests with extra_log_info as hash1844 handles requests with extra_log_info as proc1845 with Gitlab::HTTP::ReadTotalTimeout1846 with path1847 handles requests without extra_log_info1848 handles requests with extra_log_info as hash1849 handles requests with extra_log_info as proc1850 with path and options1851 handles requests without extra_log_info1852 handles requests with extra_log_info as hash1853 handles requests with extra_log_info as proc1854 with path, options, and block1855 handles requests without extra_log_info1856 handles requests with extra_log_info as hash1857 handles requests with extra_log_info as proc1858 with EOFError1859 with path1860 handles requests without extra_log_info1861 handles requests with extra_log_info as hash1862 handles requests with extra_log_info as proc1863 with path and options1864 handles requests without extra_log_info1865 handles requests with extra_log_info as hash1866 handles requests with extra_log_info as proc1867 with path, options, and block1868 handles requests without extra_log_info1869 handles requests with extra_log_info as hash1870 handles requests with extra_log_info as proc1871 with SocketError1872 with path1873 handles requests without extra_log_info1874 handles requests with extra_log_info as hash1875 handles requests with extra_log_info as proc1876 with path and options1877 handles requests without extra_log_info1878 handles requests with extra_log_info as hash1879 handles requests with extra_log_info as proc1880 with path, options, and block1881 handles requests without extra_log_info1882 handles requests with extra_log_info as hash1883 handles requests with extra_log_info as proc1884 with OpenSSL::SSL::SSLError1885 with path1886 handles requests without extra_log_info1887 handles requests with extra_log_info as hash1888 handles requests with extra_log_info as proc1889 with path and options1890 handles requests without extra_log_info1891 handles requests with extra_log_info as hash1892 handles requests with extra_log_info as proc1893 with path, options, and block1894 handles requests without extra_log_info1895 handles requests with extra_log_info as hash1896 handles requests with extra_log_info as proc1897 with OpenSSL::OpenSSLError1898 with path1899 handles requests without extra_log_info1900 handles requests with extra_log_info as hash1901 handles requests with extra_log_info as proc1902 with path and options1903 handles requests without extra_log_info1904 handles requests with extra_log_info as hash1905 handles requests with extra_log_info as proc1906 with path, options, and block1907 handles requests without extra_log_info1908 handles requests with extra_log_info as hash1909 handles requests with extra_log_info as proc1910 with Errno::ECONNRESET1911 with path1912 handles requests without extra_log_info1913 handles requests with extra_log_info as hash1914 handles requests with extra_log_info as proc1915 with path and options1916 handles requests without extra_log_info1917 handles requests with extra_log_info as hash1918 handles requests with extra_log_info as proc1919 with path, options, and block1920 handles requests without extra_log_info1921 handles requests with extra_log_info as hash1922 handles requests with extra_log_info as proc1923 with Errno::ECONNREFUSED1924 with path1925 handles requests without extra_log_info1926 handles requests with extra_log_info as hash1927 handles requests with extra_log_info as proc1928 with path and options1929 handles requests without extra_log_info1930 handles requests with extra_log_info as hash1931 handles requests with extra_log_info as proc1932 with path, options, and block1933 handles requests without extra_log_info1934 handles requests with extra_log_info as hash1935 handles requests with extra_log_info as proc1936 with Errno::EHOSTUNREACH1937 with path1938 handles requests without extra_log_info1939 handles requests with extra_log_info as hash1940 handles requests with extra_log_info as proc1941 with path and options1942 handles requests without extra_log_info1943 handles requests with extra_log_info as hash1944 handles requests with extra_log_info as proc1945 with path, options, and block1946 handles requests without extra_log_info1947 handles requests with extra_log_info as hash1948 handles requests with extra_log_info as proc1949 with Errno::ENETUNREACH1950 with path1951 handles requests without extra_log_info1952 handles requests with extra_log_info as hash1953 handles requests with extra_log_info as proc1954 with path and options1955 handles requests without extra_log_info1956 handles requests with extra_log_info as hash1957 handles requests with extra_log_info as proc1958 with path, options, and block1959 handles requests without extra_log_info1960 handles requests with extra_log_info as hash1961 handles requests with extra_log_info as proc1962 with Gitlab::HTTP::BlockedUrlError1963 with path1964 handles requests without extra_log_info1965 handles requests with extra_log_info as hash1966 handles requests with extra_log_info as proc1967 with path and options1968 handles requests without extra_log_info1969 handles requests with extra_log_info as hash1970 handles requests with extra_log_info as proc1971 with path, options, and block1972 handles requests without extra_log_info1973 handles requests with extra_log_info as hash1974 handles requests with extra_log_info as proc1975 with Gitlab::HTTP::RedirectionTooDeep1976 with path1977 handles requests without extra_log_info1978 handles requests with extra_log_info as hash1979 handles requests with extra_log_info as proc1980 with path and options1981 handles requests without extra_log_info1982 handles requests with extra_log_info as hash1983 handles requests with extra_log_info as proc1984 with path, options, and block1985 handles requests without extra_log_info1986 handles requests with extra_log_info as hash1987 handles requests with extra_log_info as proc1988 with Net::HTTPBadResponse1989 with path1990 handles requests without extra_log_info1991 handles requests with extra_log_info as hash1992 handles requests with extra_log_info as proc1993 with path and options1994 handles requests without extra_log_info1995 handles requests with extra_log_info as hash1996 handles requests with extra_log_info as proc1997 with path, options, and block1998 handles requests without extra_log_info1999 handles requests with extra_log_info as hash2000 handles requests with extra_log_info as proc2001 silent mode2002 when silent mode is enabled2003 allows GET requests2004 allows HEAD requests2005 allows OPTIONS requests2006 blocks POST requests2007 blocks PUT requests2008 blocks DELETE requests2009 logs blocked requests2010 when silent mode is disabled2011 allows GET requests2012 allows HEAD requests2013 allows OPTIONS requests2014 blocks POST requests2015 blocks PUT requests2016 blocks DELETE requests2017Ci::Stage2018 behaves like having unique enum values2019 has unique values in "status"2020 associations2021 #statuses2022 returns all commit statuses2023 #builds2024 returns only builds2025 .by_position2026 finds stages by position2027 .by_name2028 finds stages by name2029 #status2030 when stage is pending2031 has a correct status value2032 when stage is success2033 has a correct status value2034 when stage status is not defined2035 sets the default value2036 #set_status2037 from_status: :created, to_status: :waiting_for_resource2038 is expected to eq true2039 from_status: :created, to_status: :preparing2040 is expected to eq true2041 from_status: :created, to_status: :pending2042 is expected to eq true2043 from_status: :created, to_status: :running2044 is expected to eq true2045 from_status: :created, to_status: :failed2046 is expected to eq true2047 from_status: :created, to_status: :success2048 is expected to eq true2049 from_status: :created, to_status: :canceled2050 is expected to eq true2051 from_status: :created, to_status: :skipped2052 is expected to eq true2053 from_status: :created, to_status: :manual2054 is expected to eq true2055 from_status: :created, to_status: :scheduled2056 is expected to eq true2057 from_status: :waiting_for_resource, to_status: :waiting_for_resource2058 is expected to eq false2059 from_status: :waiting_for_resource, to_status: :preparing2060 is expected to eq true2061 from_status: :waiting_for_resource, to_status: :pending2062 is expected to eq true2063 from_status: :waiting_for_resource, to_status: :running2064 is expected to eq true2065 from_status: :waiting_for_resource, to_status: :failed2066 is expected to eq true2067 from_status: :waiting_for_resource, to_status: :success2068 is expected to eq true2069 from_status: :waiting_for_resource, to_status: :canceled2070 is expected to eq true2071 from_status: :waiting_for_resource, to_status: :skipped2072 is expected to eq true2073 from_status: :waiting_for_resource, to_status: :manual2074 is expected to eq true2075 from_status: :waiting_for_resource, to_status: :scheduled2076 is expected to eq true2077 from_status: :preparing, to_status: :waiting_for_resource2078 is expected to eq true2079 from_status: :preparing, to_status: :preparing2080 is expected to eq false2081 from_status: :preparing, to_status: :pending2082 is expected to eq true2083 from_status: :preparing, to_status: :running2084 is expected to eq true2085 from_status: :preparing, to_status: :failed2086 is expected to eq true2087 from_status: :preparing, to_status: :success2088 is expected to eq true2089 from_status: :preparing, to_status: :canceled2090 is expected to eq true2091 from_status: :preparing, to_status: :skipped2092 is expected to eq true2093 from_status: :preparing, to_status: :manual2094 is expected to eq true2095 from_status: :preparing, to_status: :scheduled2096 is expected to eq true2097 from_status: :pending, to_status: :waiting_for_resource2098 is expected to eq true2099 from_status: :pending, to_status: :preparing2100 is expected to eq true2101 from_status: :pending, to_status: :pending2102 is expected to eq false2103 from_status: :pending, to_status: :running2104 is expected to eq true2105 from_status: :pending, to_status: :failed2106 is expected to eq true2107 from_status: :pending, to_status: :success2108 is expected to eq true2109 from_status: :pending, to_status: :canceled2110 is expected to eq true2111 from_status: :pending, to_status: :skipped2112 is expected to eq true2113 from_status: :pending, to_status: :manual2114 is expected to eq true2115 from_status: :pending, to_status: :scheduled2116 is expected to eq true2117 from_status: :running, to_status: :waiting_for_resource2118 is expected to eq true2119 from_status: :running, to_status: :preparing2120 is expected to eq true2121 from_status: :running, to_status: :pending2122 is expected to eq true2123 from_status: :running, to_status: :running2124 is expected to eq false2125 from_status: :running, to_status: :failed2126 is expected to eq true2127 from_status: :running, to_status: :success2128 is expected to eq true2129 from_status: :running, to_status: :canceled2130 is expected to eq true2131 from_status: :running, to_status: :skipped2132 is expected to eq true2133 from_status: :running, to_status: :manual2134 is expected to eq true2135 from_status: :running, to_status: :scheduled2136 is expected to eq true2137 from_status: :failed, to_status: :waiting_for_resource2138 is expected to eq true2139 from_status: :failed, to_status: :preparing2140 is expected to eq true2141 from_status: :failed, to_status: :pending2142 is expected to eq true2143 from_status: :failed, to_status: :running2144 is expected to eq true2145 from_status: :failed, to_status: :failed2146 is expected to eq false2147 from_status: :failed, to_status: :success2148 is expected to eq true2149 from_status: :failed, to_status: :canceled2150 is expected to eq true2151 from_status: :failed, to_status: :skipped2152 is expected to eq true2153 from_status: :failed, to_status: :manual2154 is expected to eq true2155 from_status: :failed, to_status: :scheduled2156 is expected to eq true2157 from_status: :success, to_status: :waiting_for_resource2158 is expected to eq true2159 from_status: :success, to_status: :preparing2160 is expected to eq true2161 from_status: :success, to_status: :pending2162 is expected to eq true2163 from_status: :success, to_status: :running2164 is expected to eq true2165 from_status: :success, to_status: :failed2166 is expected to eq true2167 from_status: :success, to_status: :success2168 is expected to eq false2169 from_status: :success, to_status: :canceled2170 is expected to eq true2171 from_status: :success, to_status: :skipped2172 is expected to eq true2173 from_status: :success, to_status: :manual2174 is expected to eq true2175 from_status: :success, to_status: :scheduled2176 is expected to eq true2177 from_status: :canceled, to_status: :waiting_for_resource2178 is expected to eq true2179 from_status: :canceled, to_status: :preparing2180 is expected to eq true2181 from_status: :canceled, to_status: :pending2182 is expected to eq true2183 from_status: :canceled, to_status: :running2184 is expected to eq true2185 from_status: :canceled, to_status: :failed2186 is expected to eq true2187 from_status: :canceled, to_status: :success2188 is expected to eq true2189 from_status: :canceled, to_status: :canceled2190 is expected to eq false2191 from_status: :canceled, to_status: :skipped2192 is expected to eq true2193 from_status: :canceled, to_status: :manual2194 is expected to eq true2195 from_status: :canceled, to_status: :scheduled2196 is expected to eq true2197 from_status: :skipped, to_status: :waiting_for_resource2198 is expected to eq true2199 from_status: :skipped, to_status: :preparing2200 is expected to eq true2201 from_status: :skipped, to_status: :pending2202 is expected to eq true2203 from_status: :skipped, to_status: :running2204 is expected to eq true2205 from_status: :skipped, to_status: :failed2206 is expected to eq true2207 from_status: :skipped, to_status: :success2208 is expected to eq true2209 from_status: :skipped, to_status: :canceled2210 is expected to eq true2211 from_status: :skipped, to_status: :skipped2212 is expected to eq false2213 from_status: :skipped, to_status: :manual2214 is expected to eq true2215 from_status: :skipped, to_status: :scheduled2216 is expected to eq true2217 from_status: :manual, to_status: :waiting_for_resource2218 is expected to eq true2219 from_status: :manual, to_status: :preparing2220 is expected to eq true2221 from_status: :manual, to_status: :pending2222 is expected to eq true2223 from_status: :manual, to_status: :running2224 is expected to eq true2225 from_status: :manual, to_status: :failed2226 is expected to eq true2227 from_status: :manual, to_status: :success2228 is expected to eq true2229 from_status: :manual, to_status: :canceled2230 is expected to eq true2231 from_status: :manual, to_status: :skipped2232 is expected to eq true2233 from_status: :manual, to_status: :manual2234 is expected to eq false2235 from_status: :manual, to_status: :scheduled2236 is expected to eq true2237 from_status: :scheduled, to_status: :waiting_for_resource2238 is expected to eq true2239 from_status: :scheduled, to_status: :preparing2240 is expected to eq true2241 from_status: :scheduled, to_status: :pending2242 is expected to eq true2243 from_status: :scheduled, to_status: :running2244 is expected to eq true2245 from_status: :scheduled, to_status: :failed2246 is expected to eq true2247 from_status: :scheduled, to_status: :success2248 is expected to eq true2249 from_status: :scheduled, to_status: :canceled2250 is expected to eq true2251 from_status: :scheduled, to_status: :skipped2252 is expected to eq true2253 from_status: :scheduled, to_status: :manual2254 is expected to eq true2255 from_status: :scheduled, to_status: :scheduled2256 is expected to eq false2257 #update_status2258 when stage objects needs to be updated2259 updates stage status correctly2260 when stage has only created builds2261 updates status to skipped2262 when stage is skipped because of skipped builds2263 updates status to skipped2264 when stage is scheduled because of scheduled builds2265 updates status to scheduled2266 when build is waiting for resource2267 updates status to waiting for resource2268 when stage is skipped because is empty2269 updates status to skipped2270 when stage object is locked2271 retries a lock to update a stage status2272 when statuses status was not recognized2273 raises an exception2274 #detailed_status2275 statuses: ["created"], label: :created2276 has a correct label2277 statuses: ["success"], label: :passed2278 has a correct label2279 statuses: ["pending"], label: :pending2280 has a correct label2281 statuses: ["skipped"], label: :skipped2282 has a correct label2283 statuses: ["canceled"], label: :canceled2284 has a correct label2285 statuses: ["success", "failed"], label: :failed2286 has a correct label2287 statuses: ["running", "pending"], label: :running2288 has a correct label2289 when stage has warnings2290 is passed with warnings2291 #groups2292 groups stage builds by name2293 #delay2294 updates stage status2295 #position2296 when stage has been imported and does not have position index set2297 when stage has statuses2298 recalculates index before updating status2299 when stage has statuses with nil idx2300 sets index to a non-empty value2301 when stage does not have statuses2302 fallbacks to zero2303 when stage has warnings2304 #has_warnings?2305 returns true2306 #number_of_warnings2307 returns a lazy stage warnings counter2308 when stage does not have warnings2309 #has_warnings?2310 returns false2311 behaves like manual playable stage2312 #manual_playable?2313 when is manual2314 is expected to be truthy2315 when is scheduled2316 is expected to be truthy2317 when is skipped2318 is expected to be truthy2319 loose foreign key on ci_stages.project_id2320 behaves like cleanup by a loose foreign key2321 cleans up (delete or nullify) the model2322 partitioning2323 with pipeline2324 copies the partition_id from pipeline2325 when it is already set2326 does not change the partition_id value2327 without pipeline2328 is expected to validate that :partition_id cannot be empty/falsy2329 does not change the partition_id value2330Packages::Debian::GenerateDistributionService2331 for project2332 #execute2333 behaves like Generate Debian Distribution and component files2334 with Debian components and architectures2335 generates Debian distribution and component files2336 without components and architectures2337 generates minimal distribution2338 #lease_key2339 returns an unique key2340 for group2341 #execute2342 behaves like Generate Debian Distribution and component files2343 with Debian components and architectures2344 generates Debian distribution and component files2345 without components and architectures2346 generates minimal distribution2347 #lease_key2348 returns an unique key2349IssuablesHelper2350 #users_dropdown_label2351 returns unassigned2352 returns selected user's name2353 returns selected user's name and counter2354 #group_dropdown_label2355 returns default group label when group_id is nil2356 returns "any group" when group_id is 02357 returns group full path when a group was found for the provided id2358 returns default label when a group was not found for the provided id2359 #assignees_label2360 when multiple assignees exist2361 returns assignee label with assignee names2362 returns assignee label only with include_value: false2363 when the name contains a URL2364 returns sanitized name2365 when one assignee exists2366 returns assignee label with no names2367 returns assignee label only with include_value: false2368 when no assignees exist2369 returns assignee label with no names2370 returns assignee label only with include_value: false2371 #assigned_issuables_count2372 when issuable is issues2373 when assigned issues count is over 1002374 is expected to eq 1002375 #assigned_open_issues_count_text2376 when assigned issues count is over 992377 is expected to eq "99+"2378 #issuable_meta2379 Issuable created status text2380 when issuable is a work item and flag is off2381 issuable_type: :issue, text: "Issue created Aug 05, 2022 by"2382 is expected to have text "Issue created Aug 05, 2022 by"2383 issuable_type: :incident, text: "Incident created Aug 05, 2022 by"2384 is expected to have text "Incident created Aug 05, 2022 by"2385 when issuable is a work item and flag is on2386 issuable_type: :issue, text: "Issue created Aug 05, 2022 by"2387 is expected to have text "Issue created Aug 05, 2022 by"2388 issuable_type: :incident, text: "Incident created Aug 05, 2022 by"2389 is expected to have text "Incident created Aug 05, 2022 by"2390 when issuable is not a work item2391 is expected to have text "Created Aug 05, 2022"2392 author status2393 displays an emoji if the user status is set2394 does not displays an emoji if the user status is not set2395 service desk reply to email address2396 with anonymous user2397 is expected to have text "us*****@e*****.c**"2398 with signed in user2399 when user has no role in project2400 is expected to have text "us*****@e*****.c**"2401 when user has reporter role in project2402 is expected to have text "user@example.com"2403 #issuables_state_counter_text2404 state text2405 when number of issuables can be generated2406 returns navigation with badges2407 when count cannot be generated2408 returns navigation without badges2409 when count is over the threshold2410 returns truncated count2411 #issuable_reference2412 when show_full_reference truthy2413 display issuable full reference2414 when show_full_reference falsey2415 when @group present2416 display issuable reference to @group2417 when @project present2418 display issuable reference to @project2419 #issuable_project_reference2420 display project name and simple reference with `#` to an issue2421 display project name and simple reference with `!` to an MR2422 #updated_at_by2423 is expected to eq {}2424 is expected to eq {:updatedAt=>"2023-05-31T06:38:12+00:00", :updatedBy=>{:name=>"Sidney Jones1080", :path=>"/user818"}}2425 when updated by a deleted user2426 returns "Ghost user" as edited_by2427 #issuable_initial_data2428 returns the correct data for an issue2429 for incident tab2430 includes incident attributes2431 #sentryIssueIdentifier2432 sets sentryIssueIdentifier to nil with no sentry issue2433 sets sentryIssueIdentifier to sentry_issue_identifier2434 #zoomMeetingUrl in issue2435 with no "added" zoom mettings2436 behaves like sets zoomMeetingUrl to nil2437 is expected to be nil2438 with multiple removed meetings2439 behaves like sets zoomMeetingUrl to nil2440 is expected to be nil2441 with "added" zoom meeting2442 behaves like sets zoomMeetingUrl to canonical meeting url2443 is expected to include {:zoomMeetingUrl => "https://zoom.us/j/123456789"}2444 with muliple "removed" zoom meetings2445 behaves like sets zoomMeetingUrl to canonical meeting url2446 is expected to include {:zoomMeetingUrl => "https://zoom.us/j/123456789"}2447 #assignee_sidebar_data2448 returns hash of assignee data2449 with merge_request2450 can_merge: true2451 is expected to include {:can_merge => true}2452 can_merge: false2453 is expected to include {:can_merge => false}2454 #reviewer_sidebar_data2455 without merge_request2456 returns hash of reviewer data2457 with merge_request2458 can_merge: true2459 is expected to include {:can_merge => true}2460 can_merge: false2461 is expected to include {:can_merge => false}2462 #issuable_squash_option?2463 issuable_persisted: true, squash: true, squash_enabled_by_default: true, expectation: true2464 returns the correct value2465 issuable_persisted: true, squash: false, squash_enabled_by_default: true, expectation: false2466 returns the correct value2467 issuable_persisted: false, squash: false, squash_enabled_by_default: false, expectation: false2468 returns the correct value2469 issuable_persisted: false, squash: false, squash_enabled_by_default: true, expectation: true2470 returns the correct value2471 issuable_persisted: false, squash: true, squash_enabled_by_default: false, expectation: false2472 returns the correct value2473 issuable_persisted: false, squash: true, squash_enabled_by_default: true, expectation: true2474 returns the correct value2475 #state_name_with_icon2476 for an issue2477 returns the correct state name and icon when issue is open2478 returns the correct state name and icon when issue is closed2479 for a merge request2480 returns the correct state name and icon when merge request is open2481 returns the correct state name and icon when merge request is merged2482 returns the correct state name and icon when merge request is closed2483 #issuable_display_type2484 issuable_type: :issue, issuable_display_type: "issue"2485 is expected to eq "issue"2486 issuable_type: :incident, issuable_display_type: "incident"2487 is expected to eq "incident"2488 issuable_type: :merge_request, issuable_display_type: "merge request"2489 is expected to eq "merge request"2490 #sidebar_milestone_tooltip_label2491 escapes HTML in the milestone title2492 #hidden_issuable_icon2493 when issuable is an issue2494 returns icon with tooltip2495 when issuable is a merge request2496 returns icon with tooltip2497 #issuable_type_selector_data2498 issuable_type: :issue, issuable_display_type: "issue", is_issue_allowed: true, is_incident_allowed: false2499 returns the correct data for the issuable type selector2500 issuable_type: :incident, issuable_display_type: "incident", is_issue_allowed: false, is_incident_allowed: true2501 returns the correct data for the issuable type selector2502 #issuable_label_selector_data2503 with a new issuable2504 returns the expected data2505 with an existing issuable2506 returns the expected data2507Integrations::MicrosoftTeams2508 behaves like chat integration2509 Associations2510 is expected to belong to project required: false2511 Validations2512 when integration is active2513 is expected to validate that :webhook cannot be empty/falsy2514 behaves like issue tracker integration URL attribute2515 is expected to allow :webhook to be ‹"https://example.com"›2516 is expected not to allow :webhook to be ‹"example.com"›2517 is expected not to allow :webhook to be ‹"ftp://example.com"›2518 is expected not to allow :webhook to be ‹"herp-and-derp"›2519 when integration is inactive2520 is expected not to validate that :webhook cannot be empty/falsy2521 .supported_events2522 does not support deployment_events2523 #execute2524 with push events2525 behaves like triggered Microsoft Teams integration2526 calls Microsoft Teams API2527 with default branch2528 when only default branch are to be notified2529 behaves like triggered Microsoft Teams integration2530 calls Microsoft Teams API2531 when only protected branches are to be notified2532 behaves like untriggered Microsoft Teams integration2533 does not call Microsoft Teams API2534 when default and protected branches are to be notified2535 behaves like triggered Microsoft Teams integration2536 calls Microsoft Teams API2537 when all branches are to be notified2538 behaves like triggered Microsoft Teams integration2539 calls Microsoft Teams API2540 with protected branch2541 when only default branch are to be notified2542 behaves like untriggered Microsoft Teams integration2543 does not call Microsoft Teams API2544 when only protected branches are to be notified2545 behaves like triggered Microsoft Teams integration2546 calls Microsoft Teams API2547 when default and protected branches are to be notified2548 behaves like triggered Microsoft Teams integration2549 calls Microsoft Teams API2550 when all branches are to be notified2551 behaves like triggered Microsoft Teams integration2552 calls Microsoft Teams API2553 with neither default nor protected branch2554 when only default branch are to be notified2555 behaves like untriggered Microsoft Teams integration2556 does not call Microsoft Teams API2557 when only protected branches are to be notified2558 behaves like untriggered Microsoft Teams integration2559 does not call Microsoft Teams API2560 when default and protected branches are to be notified2561 behaves like untriggered Microsoft Teams integration2562 does not call Microsoft Teams API2563 when all branches are to be notified2564 behaves like triggered Microsoft Teams integration2565 calls Microsoft Teams API2566 with issue events2567 behaves like triggered Microsoft Teams integration2568 calls Microsoft Teams API2569 with merge events2570 behaves like triggered Microsoft Teams integration2571 calls Microsoft Teams API2572 with wiki page events2573 behaves like triggered Microsoft Teams integration2574 calls Microsoft Teams API2575 with note events2576 with commit comment2577 behaves like triggered Microsoft Teams integration2578 calls Microsoft Teams API2579 with merge request comment2580 behaves like triggered Microsoft Teams integration2581 calls Microsoft Teams API2582 with issue comment2583 behaves like triggered Microsoft Teams integration2584 calls Microsoft Teams API2585 with snippet comment2586 behaves like triggered Microsoft Teams integration2587 calls Microsoft Teams API2588 with pipeline events2589 with failed pipeline2590 behaves like triggered Microsoft Teams integration2591 calls Microsoft Teams API2592 with succeeded pipeline2593 with default notify_only_broken_pipelines2594 does not call Microsoft Teams API2595 when notify_only_broken_pipelines is false2596 behaves like triggered Microsoft Teams integration2597 calls Microsoft Teams API2598 with default branch2599 when only default branch are to be notified2600 behaves like triggered Microsoft Teams integration2601 calls Microsoft Teams API2602 when only protected branches are to be notified2603 behaves like untriggered Microsoft Teams integration2604 does not call Microsoft Teams API2605 when default and protected branches are to be notified2606 behaves like triggered Microsoft Teams integration2607 calls Microsoft Teams API2608 when all branches are to be notified2609 behaves like triggered Microsoft Teams integration2610 calls Microsoft Teams API2611 with protected branch2612 when only default branch are to be notified2613 behaves like untriggered Microsoft Teams integration2614 does not call Microsoft Teams API2615 when only protected branches are to be notified2616 behaves like triggered Microsoft Teams integration2617 calls Microsoft Teams API2618 when default and protected branches are to be notified2619 behaves like triggered Microsoft Teams integration2620 calls Microsoft Teams API2621 when all branches are to be notified2622 behaves like triggered Microsoft Teams integration2623 calls Microsoft Teams API2624 with neither default nor protected branch2625 when only default branch are to be notified2626 behaves like untriggered Microsoft Teams integration2627 does not call Microsoft Teams API2628 when only protected branches are to be notified2629 behaves like untriggered Microsoft Teams integration2630 does not call Microsoft Teams API2631 when default and protected branches are to be notified2632 behaves like untriggered Microsoft Teams integration2633 does not call Microsoft Teams API2634 when all branches are to be notified2635 behaves like triggered Microsoft Teams integration2636 calls Microsoft Teams API2637 deployment events2638 behaves like untriggered Microsoft Teams integration2639 does not call Microsoft Teams API2640 #execute2641 with push events2642 calls Microsoft Teams API for push events2643 specifies the webhook when it is configured2644 with issue events2645 calls Microsoft Teams API2646 with merge events2647 calls Microsoft Teams API2648 with wiki page events2649 calls Microsoft Teams API2650 Note events2651 when commit comment event executed2652 calls Microsoft Teams API for commit comment events2653 when merge request comment event executed2654 calls Microsoft Teams API for merge request comment events2655 when issue comment event executed2656 calls Microsoft Teams API for issue comment events2657 when snippet comment event executed2658 calls Microsoft Teams API for snippet comment events2659 Pipeline events2660 with failed pipeline2661 behaves like call Microsoft Teams API2662 calls Microsoft Teams API for pipeline events2663 with succeeded pipeline2664 with default to notify_only_broken_pipelines2665 does not call Microsoft Teams API for pipeline events2666 with setting notify_only_broken_pipelines to false2667 behaves like call Microsoft Teams API2668 calls Microsoft Teams API for pipeline events2669 with default branch2670 only notify for the default branch2671 behaves like call Microsoft Teams API2672 calls Microsoft Teams API for pipeline events2673 notify for only protected branches2674 behaves like does not call Microsoft Teams API2675 does not call Microsoft Teams API for pipeline events2676 notify for only default and protected branches2677 behaves like call Microsoft Teams API2678 calls Microsoft Teams API for pipeline events2679 notify for all branches2680 behaves like call Microsoft Teams API2681 calls Microsoft Teams API for pipeline events2682 with protected branch2683 only notify for the default branch2684 behaves like does not call Microsoft Teams API2685 does not call Microsoft Teams API for pipeline events2686 notify for only protected branches2687 behaves like call Microsoft Teams API2688 calls Microsoft Teams API for pipeline events2689 notify for only default and protected branches2690 behaves like call Microsoft Teams API2691 calls Microsoft Teams API for pipeline events2692 notify for all branches2693 behaves like call Microsoft Teams API2694 calls Microsoft Teams API for pipeline events2695 with neither protected nor default branch2696 only notify for the default branch2697 behaves like does not call Microsoft Teams API2698 does not call Microsoft Teams API for pipeline events2699 notify for only protected branches2700 behaves like does not call Microsoft Teams API2701 does not call Microsoft Teams API for pipeline events2702 notify for only default and protected branches2703 behaves like does not call Microsoft Teams API2704 does not call Microsoft Teams API for pipeline events2705 notify for all branches2706 behaves like call Microsoft Teams API2707 calls Microsoft Teams API for pipeline events2708Ci::JobEntity2709 contains started2710 contains complete to indicate if a pipeline is completed2711 contains paths to job page action2712 does not contain sensitive information2713 contains whether it is playable2714 contains timestamps2715 contains details2716 contains queued_at2717 contains queued_duration2718 when job is retryable2719 contains cancel path2720 when job is cancelable2721 contains cancel path2722 when job is a regular job2723 does not contain path to play action2724 is not a playable build2725 when job is a manual action2726 when user is allowed to trigger action2727 contains path to play action2728 is a playable action2729 when user is not allowed to trigger action2730 does not contain path to play action2731 is not a playable action2732 when job is scheduled2733 contains path to unschedule action2734 contains scheduled_at2735 when job is running2736 contains started_at2737 when job is generic commit status2738 contains paths to target action2739 does not contain paths to other action paths2740 contains timestamps2741 contains details2742 when job failed2743 contains details2744 states that it failed2745 indicates the failure reason on tooltip2746 includes a callout message with a verbose output2747 states that it is not recoverable2748 when job is allowed to fail2749 contains details2750 states that it failed2751 indicates the failure reason on tooltip2752 includes a callout message with a verbose output2753 states that it is not recoverable2754 when the job failed with a script failure2755 does not include callout message or recoverable keys2756 when job failed and is recoverable2757 states it is recoverable2758 when job passed2759 does not include callout message or recoverable keys2760 when job is a bridge2761 does not include build path2762 does not include cancel path2763Ci::RunnersFinder2764 admin2765 #execute2766 when admin mode setting is disabled2767 behaves like executes as admin2768 with 2 runners2769 with empty params2770 returns all runners2771 with nil group2772 returns all runners2773 with preload param set to :tag_name true2774 requests tags2775 with preload param set to :tag_name false2776 does not request tags2777 filtering2778 by search term2779 calls Ci::Runner.search2780 by upgrade status2781 set to :not_processed2782 calls with_upgrade_status scope with corresponding :not_processed status2783 set to :invalid_version2784 calls with_upgrade_status scope with corresponding :invalid_version status2785 set to :unavailable2786 calls with_upgrade_status scope with corresponding :unavailable status2787 set to :available2788 calls with_upgrade_status scope with corresponding :available status2789 set to :recommended2790 calls with_upgrade_status scope with corresponding :recommended status2791 set to an invalid value2792 raises ArgumentError2793 set to nil2794 does not call with_upgrade_status2795 by status2796 calls the corresponding :active scope on Ci::Runner2797 calls the corresponding :paused scope on Ci::Runner2798 calls the corresponding :online scope on Ci::Runner2799 calls the corresponding :offline scope on Ci::Runner2800 calls the corresponding :never_contacted scope on Ci::Runner2801 calls the corresponding :stale scope on Ci::Runner2802 by active status2803 with active set as false calls the corresponding scope on Ci::Runner with false2804 with active set as true calls the corresponding scope on Ci::Runner with true2805 by runner type2806 calls the corresponding scope on Ci::Runner2807 by tag_name2808 calls the corresponding scope on Ci::Runner2809 sorting2810 without sort param2811 behaves like sorts by created_at descending2812 sorts by created_at descending2813 with sort param equal to created_date2814 behaves like sorts by created_at descending2815 sorts by created_at descending2816 with sort param equal to created_at_desc2817 behaves like sorts by created_at descending2818 sorts by created_at descending2819 with sort param equal to created_at_asc2820 sorts by created_at ascending2821 with sort param equal to contacted_asc2822 sorts by contacted_at ascending2823 with sort param equal to contacted_desc2824 sorts by contacted_at descending2825 with sort param equal to token_expires_at_asc2826 sorts by contacted_at ascending2827 with sort param equal to token_expires_at_desc2828 sorts by contacted_at descending2829 when admin mode setting is enabled2830 when in admin mode2831 behaves like executes as admin2832 with 2 runners2833 with empty params2834 returns all runners2835 with nil group2836 returns all runners2837 with preload param set to :tag_name true2838 requests tags2839 with preload param set to :tag_name false2840 does not request tags2841 filtering2842 by search term2843 calls Ci::Runner.search2844 by upgrade status2845 set to :not_processed2846 calls with_upgrade_status scope with corresponding :not_processed status2847 set to :invalid_version2848 calls with_upgrade_status scope with corresponding :invalid_version status2849 set to :unavailable2850 calls with_upgrade_status scope with corresponding :unavailable status2851 set to :available2852 calls with_upgrade_status scope with corresponding :available status2853 set to :recommended2854 calls with_upgrade_status scope with corresponding :recommended status2855 set to an invalid value2856 raises ArgumentError2857 set to nil2858 does not call with_upgrade_status2859 by status2860 calls the corresponding :active scope on Ci::Runner2861 calls the corresponding :paused scope on Ci::Runner2862 calls the corresponding :online scope on Ci::Runner2863 calls the corresponding :offline scope on Ci::Runner2864 calls the corresponding :never_contacted scope on Ci::Runner2865 calls the corresponding :stale scope on Ci::Runner2866 by active status2867 with active set as false calls the corresponding scope on Ci::Runner with false2868 with active set as true calls the corresponding scope on Ci::Runner with true2869 by runner type2870 calls the corresponding scope on Ci::Runner2871 by tag_name2872 calls the corresponding scope on Ci::Runner2873 sorting2874 without sort param2875 behaves like sorts by created_at descending2876 sorts by created_at descending2877 with sort param equal to created_date2878 behaves like sorts by created_at descending2879 sorts by created_at descending2880 with sort param equal to created_at_desc2881 behaves like sorts by created_at descending2882 sorts by created_at descending2883 with sort param equal to created_at_asc2884 sorts by created_at ascending2885 with sort param equal to contacted_asc2886 sorts by contacted_at ascending2887 with sort param equal to contacted_desc2888 sorts by contacted_at descending2889 with sort param equal to token_expires_at_asc2890 sorts by contacted_at ascending2891 with sort param equal to token_expires_at_desc2892 sorts by contacted_at descending2893 when not in admin mode2894 behaves like executes as normal user2895 returns no runners2896 by non admin user2897 behaves like executes as normal user2898 returns no runners2899 when user is nil2900 returns no runners2901 group2902 #execute2903 with user as group owner2904 with :group as target group2905 passing no params2906 behaves like membership equal to :descendants2907 returns all descendant runners2908 with :descendants membership2909 behaves like membership equal to :descendants2910 returns all descendant runners2911 with :direct membership2912 returns runners belonging to group2913 with :all_available membership2914 returns runners available to group2915 with unknown membership2916 raises an error2917 with nil group2918 returns no runners2919 with sort param2920 sorts by specified attribute2921 filtering2922 by search term2923 returns correct runner2924 by active status2925 returns correct runner2926 by status2927 returns correct runner2928 by tag_name2929 returns correct runner2930 by runner type2931 returns correct runners2932 when user is not group owner2933 user_permission: :maintainer2934 with :sub_group_1 as target group2935 returns no runners2936 with :group as target group2937 returns no runners2938 with :all_available membership2939 returns no runners2940 user_permission: :developer2941 with :sub_group_1 as target group2942 returns no runners2943 with :group as target group2944 returns no runners2945 with :all_available membership2946 returns no runners2947 user_permission: :reporter2948 with :sub_group_1 as target group2949 returns no runners2950 with :group as target group2951 returns no runners2952 with :all_available membership2953 returns no runners2954 user_permission: :guest2955 with :sub_group_1 as target group2956 returns no runners2957 with :group as target group2958 returns no runners2959 with :all_available membership2960 returns no runners2961 when user has no access2962 returns no runners2963 when user is nil2964 returns no runners2965 #sort_key2966 without params2967 returns created_at_desc2968 with params2969 returns contacted_asc2970 project2971 #execute2972 with user as project admin2973 with project runners2974 returns runners available to project2975 with ancestor group runners2976 returns runners available to project2977 with allowed shared runners2978 returns runners available to project2979 with project, ancestor group, and allowed shared runners2980 returns runners available to project2981 filtering2982 by search term2983 returns the correct runner2984 by active status2985 returns the correct runners2986 by status2987 returns correct runner2988 by tag_name2989 returns correct runner2990 by runner type2991 returns correct runners2992 with user as project developer2993 returns no runners2994 when user is nil2995 returns no runners2996 with nil project_full_path2997 returns no runners2998Gitlab::Ci::Pipeline::Expression::Statement2999 .new3000 when variables are not provided3001 allows to properly initializes the statement3002 #evaluate3003 expression: "$PRESENT_VARIABLE == \"my variable\"", value: true3004 evaluates to `true`3005 expression: "\"my variable\" == $PRESENT_VARIABLE", value: true3006 evaluates to `true`3007 expression: "$PRESENT_VARIABLE == null", value: false3008 evaluates to `false`3009 expression: "$EMPTY_VARIABLE == null", value: false3010 evaluates to `false`3011 expression: "\"\" == $EMPTY_VARIABLE", value: true3012 evaluates to `true`3013 expression: "$EMPTY_VARIABLE", value: ""3014 evaluates to `""`3015 expression: "$UNDEFINED_VARIABLE == null", value: true3016 evaluates to `true`3017 expression: "null == $UNDEFINED_VARIABLE", value: true3018 evaluates to `true`3019 expression: "$PRESENT_VARIABLE", value: "my variable"3020 evaluates to `"my variable"`3021 expression: "$UNDEFINED_VARIABLE", value: nil3022 evaluates to `nil`3023 expression: "$PRESENT_VARIABLE =~ /var.*e$/", value: true3024 evaluates to `true`3025 expression: "$PRESENT_VARIABLE =~ /va\\r.*e$/", value: false3026 evaluates to `false`3027 expression: "$PRESENT_VARIABLE =~ /va\\/r.*e$/", value: false3028 evaluates to `false`3029 expression: "$PRESENT_VARIABLE =~ /var.*e$/", value: true3030 evaluates to `true`3031 expression: "$PRESENT_VARIABLE =~ /^var.*/", value: false3032 evaluates to `false`3033 expression: "$EMPTY_VARIABLE =~ /var.*/", value: false3034 evaluates to `false`3035 expression: "$UNDEFINED_VARIABLE =~ /var.*/", value: false3036 evaluates to `false`3037 expression: "$PRESENT_VARIABLE =~ /VAR.*/i", value: true3038 evaluates to `true`3039 expression: "$PATH_VARIABLE =~ /path\\/variable/", value: true3040 evaluates to `true`3041 expression: "$FULL_PATH_VARIABLE =~ /^\\/a\\/full\\/path\\/variable\\/value$/", value: true3042 evaluates to `true`3043 expression: "$FULL_PATH_VARIABLE =~ /\\/path\\/variable\\/value$/", value: true3044 evaluates to `true`3045 expression: "$PRESENT_VARIABLE != \"my variable\"", value: false3046 evaluates to `false`3047 expression: "\"my variable\" != $PRESENT_VARIABLE", value: false3048 evaluates to `false`3049 expression: "$PRESENT_VARIABLE != null", value: true3050 evaluates to `true`3051 expression: "$EMPTY_VARIABLE != null", value: true3052 evaluates to `true`3053 expression: "\"\" != $EMPTY_VARIABLE", value: false3054 evaluates to `false`3055 expression: "$UNDEFINED_VARIABLE != null", value: false3056 evaluates to `false`3057 expression: "null != $UNDEFINED_VARIABLE", value: false3058 evaluates to `false`3059 expression: "$PRESENT_VARIABLE !~ /var.*e$/", value: false3060 evaluates to `false`3061 expression: "$PRESENT_VARIABLE !~ /^var.*/", value: true3062 evaluates to `true`3063 expression: "$PRESENT_VARIABLE !~ /^v\\ar.*/", value: true3064 evaluates to `true`3065 expression: "$PRESENT_VARIABLE !~ /^v\\/ar.*/", value: true3066 evaluates to `true`3067 expression: "$EMPTY_VARIABLE !~ /var.*/", value: true3068 evaluates to `true`3069 expression: "$UNDEFINED_VARIABLE !~ /var.*/", value: true3070 evaluates to `true`3071 expression: "$PRESENT_VARIABLE !~ /VAR.*/i", value: false3072 evaluates to `false`3073 expression: "$PRESENT_VARIABLE && \"string\"", value: "string"3074 evaluates to `"string"`3075 expression: "$PRESENT_VARIABLE && $PRESENT_VARIABLE", value: "my variable"3076 evaluates to `"my variable"`3077 expression: "$PRESENT_VARIABLE && $EMPTY_VARIABLE", value: ""3078 evaluates to `""`3079 expression: "$PRESENT_VARIABLE && null", value: nil3080 evaluates to `nil`3081 expression: "\"string\" && $PRESENT_VARIABLE", value: "my variable"3082 evaluates to `"my variable"`3083 expression: "$EMPTY_VARIABLE && $PRESENT_VARIABLE", value: "my variable"3084 evaluates to `"my variable"`3085 expression: "null && $PRESENT_VARIABLE", value: nil3086 evaluates to `nil`3087 expression: "$EMPTY_VARIABLE && \"string\"", value: "string"3088 evaluates to `"string"`3089 expression: "$EMPTY_VARIABLE && $EMPTY_VARIABLE", value: ""3090 evaluates to `""`3091 expression: "\"string\" && $EMPTY_VARIABLE", value: ""3092 evaluates to `""`3093 expression: "\"string\" && null", value: nil3094 evaluates to `nil`3095 expression: "null && \"string\"", value: nil3096 evaluates to `nil`3097 expression: "\"string\" && \"string\"", value: "string"3098 evaluates to `"string"`3099 expression: "null && null", value: nil3100 evaluates to `nil`3101 expression: "$PRESENT_VARIABLE =~ /my var/ && $EMPTY_VARIABLE =~ /nope/", value: false3102 evaluates to `false`3103 expression: "$EMPTY_VARIABLE == \"\" && $PRESENT_VARIABLE", value: "my variable"3104 evaluates to `"my variable"`3105 expression: "$EMPTY_VARIABLE == \"\" && $PRESENT_VARIABLE != \"nope\"", value: true3106 evaluates to `true`3107 expression: "$PRESENT_VARIABLE && $EMPTY_VARIABLE", value: ""3108 evaluates to `""`3109 expression: "$PRESENT_VARIABLE && $UNDEFINED_VARIABLE", value: nil3110 evaluates to `nil`3111 expression: "$UNDEFINED_VARIABLE && $EMPTY_VARIABLE", value: nil3112 evaluates to `nil`3113 expression: "$UNDEFINED_VARIABLE && $PRESENT_VARIABLE", value: nil3114 evaluates to `nil`3115 expression: "$FULL_PATH_VARIABLE =~ /^\\/a\\/full\\/path\\/variable\\/value$/ && $PATH_VARIABLE =~ /path\\/variable/", value: true3116 evaluates to `true`3117 expression: "$FULL_PATH_VARIABLE =~ /^\\/a\\/bad\\/path\\/variable\\/value$/ && $PATH_VARIABLE =~ /path\\/variable/", value: false3118 evaluates to `false`3119 expression: "$FULL_PATH_VARIABLE =~ /^\\/a\\/full\\/path\\/variable\\/value$/ && $PATH_VARIABLE =~ /bad\\/path\\/variable/", value: false3120 evaluates to `false`3121 expression: "$FULL_PATH_VARIABLE =~ /^\\/a\\/bad\\/path\\/variable\\/value$/ && $PATH_VARIABLE =~ /bad\\/path\\/variable/", value: false3122 evaluates to `false`3123 expression: "$FULL_PATH_VARIABLE =~ /^\\/a\\/full\\/path\\/variable\\/value$/ || $PATH_VARIABLE =~ /path\\/variable/", value: true3124 evaluates to `true`3125 expression: "$FULL_PATH_VARIABLE =~ /^\\/a\\/bad\\/path\\/variable\\/value$/ || $PATH_VARIABLE =~ /path\\/variable/", value: true3126 evaluates to `true`3127 expression: "$FULL_PATH_VARIABLE =~ /^\\/a\\/full\\/path\\/variable\\/value$/ || $PATH_VARIABLE =~ /bad\\/path\\/variable/", value: true3128 evaluates to `true`3129 expression: "$FULL_PATH_VARIABLE =~ /^\\/a\\/bad\\/path\\/variable\\/value$/ || $PATH_VARIABLE =~ /bad\\/path\\/variable/", value: false3130 evaluates to `false`3131 expression: "$PRESENT_VARIABLE =~ /my var/ || $EMPTY_VARIABLE =~ /nope/", value: true3132 evaluates to `true`3133 expression: "$EMPTY_VARIABLE == \"\" || $PRESENT_VARIABLE", value: true3134 evaluates to `true`3135 expression: "$PRESENT_VARIABLE != \"nope\" || $EMPTY_VARIABLE == \"\"", value: true3136 evaluates to `true`3137 expression: "$PRESENT_VARIABLE && null || $EMPTY_VARIABLE == \"\"", value: true3138 evaluates to `true`3139 expression: "$PRESENT_VARIABLE || $UNDEFINED_VARIABLE", value: "my variable"3140 evaluates to `"my variable"`3141 expression: "$UNDEFINED_VARIABLE || $PRESENT_VARIABLE", value: "my variable"3142 evaluates to `"my variable"`3143 expression: "$UNDEFINED_VARIABLE == null || $PRESENT_VARIABLE", value: true3144 evaluates to `true`3145 expression: "$PRESENT_VARIABLE || $UNDEFINED_VARIABLE == null", value: "my variable"3146 evaluates to `"my variable"`3147 expression: "($PRESENT_VARIABLE)", value: "my variable"3148 evaluates to `"my variable"`3149 expression: "(($PRESENT_VARIABLE))", value: "my variable"3150 evaluates to `"my variable"`3151 expression: "(($PRESENT_VARIABLE && null) || $EMPTY_VARIABLE == \"\")", value: true3152 evaluates to `true`3153 expression: "($PRESENT_VARIABLE) && (null || $EMPTY_VARIABLE == \"\")", value: true3154 evaluates to `true`3155 expression: "(\"string\" || \"test\") == \"string\"", value: true3156 evaluates to `true`3157 expression: "(null || (\"test\" == \"string\"))", value: false3158 evaluates to `false`3159 expression: "(\"string\" == (\"test\" && \"string\"))", value: true3160 evaluates to `true`3161 expression: "(\"string\" == (\"test\" || \"string\"))", value: false3162 evaluates to `false`3163 expression: "(\"string\" == \"test\" || \"string\")", value: "string"3164 evaluates to `"string"`3165 expression: "(\"string\" == (\"string\" || ((\"1\" == \"1\") && (\"2\" == \"3\"))))", value: true3166 evaluates to `true`3167 #truthful?3168 expression: "$PRESENT_VARIABLE == \"my variable\"", value: true3169 returns `true`3170 expression: "$PRESENT_VARIABLE == 'no match'", value: false3171 returns `false`3172 expression: "$UNDEFINED_VARIABLE == null", value: true3173 returns `true`3174 expression: "$PRESENT_VARIABLE", value: true3175 returns `true`3176 expression: "$UNDEFINED_VARIABLE", value: false3177 returns `false`3178 expression: "$EMPTY_VARIABLE", value: false3179 returns `false`3180 expression: "$INVALID = 1", value: false3181 returns `false`3182 expression: "$PRESENT_VARIABLE =~ /var.*/", value: true3183 returns `true`3184 expression: "$UNDEFINED_VARIABLE =~ /var.*/", value: false3185 returns `false`3186 expression: "$PRESENT_VARIABLE !~ /var.*/", value: false3187 returns `false`3188 expression: "$UNDEFINED_VARIABLE !~ /var.*/", value: true3189 returns `true`3190 when evaluating expression raises an error3191 returns false3192 when variables have patterns3193 expression: "$teststring =~ \"abcde\"", result: true3194 is expected to eq true3195 expression: "$teststring =~ $teststring", result: true3196 is expected to eq true3197 expression: "$teststring =~ $pattern1", result: true3198 is expected to eq true3199 expression: "$teststring =~ $pattern2", result: false3200 is expected to eq false3201ApplicationHelper3202 current_controller?3203 returns true when controller matches argument3204 returns false when controller does not match argument3205 takes any number of arguments3206 when namespaced3207 returns true when controller matches argument3208 returns true when controller and namespace matches argument in path notation3209 returns false when namespace doesnt match3210 current_action?3211 returns true when action matches3212 returns false when action does not match3213 takes any number of arguments3214 #admin_section?3215 when controller is under the admin namespace3216 returns true3217 when controller is not under the admin namespace3218 returns true3219 simple_sanitize3220 allows the a tag3221 allows the span tag3222 disallows other tags3223 time_ago_with_tooltip3224 returns a time element3225 includes the date string3226 has a datetime attribute3227 has a formatted title attribute3228 includes a default js-timeago class3229 accepts a custom html_class3230 accepts a custom tooltip placement3231 converts to Time3232 add class for the short format3233 returns blank if time is nil3234 edited_time_ago_with_tooltip3235 when editable object was not edited3236 is expected to eq nil3237 when editable object was edited3238 is expected to have text "Edited Jul 02, 2015 by Sidney Jones1237"3239 is expected to have text "Edited Jul 02, 2015"3240 #active_when3241 is expected to eq "active"3242 is expected to eq nil3243 #promo_host3244 returns the url3245 #promo_url3246 returns the url3247 changes if promo_host changes3248 #community_forum3249 returns the url3250 #support_url3251 when alternate support url is specified3252 returns the alternate support url3253 when alternate support url is not specified3254 builds the support url from the promo_url3255 #instance_review_permitted?3256 as admin3257 when admin mode setting is disabled3258 behaves like returns expected result depending on instance setting3259 is expected to equal true3260 behaves like returns expected result depending on instance setting3261 is expected to equal false3262 when admin mode setting is enabled3263 when in admin mode3264 behaves like returns expected result depending on instance setting3265 is expected to equal true3266 behaves like returns expected result depending on instance setting3267 is expected to equal false3268 when not in admin mode3269 behaves like returns expected result depending on instance setting3270 is expected to equal false3271 behaves like returns expected result depending on instance setting3272 is expected to equal false3273 as normal user3274 behaves like returns expected result depending on instance setting3275 is expected to equal false3276 behaves like returns expected result depending on instance setting3277 is expected to equal false3278 #locale_path3279 returns the locale path with an `_`3280 #client_class_list3281 when browser or platform are unknown3282 returns string containing CSS classes representing fallbacks3283 when browser and platform are known3284 returns string containing CSS classes representing them3285 #client_js_flags3286 when browser or platform are unknown3287 returns map containing JS flags representing falllbacks3288 when browser and platform are known3289 returns map containing JS flags representing client browser and platform3290 #page_startup_api_calls3291 returns map containing JS Page Startup Calls3292 #autocomplete_data_sources3293 group3294 returns paths for autocomplete_sources_controller3295 project3296 returns paths for autocomplete_sources_controller3297 #external_storage_url_or_path3298 when external storage is disabled3299 returns the passed path3300 when @snippet is set3301 returns the passed path3302 when external storage is enabled3303 returns the external storage URL prepended to the path3304 preserves the path query parameters3305 when project is public3306 returns does not append a token parameter3307 #body_data3308 when @project is not set3309 does not include project data in the body data elements3310 when @group is set3311 sets group in the body data elements3312 when @project is set3313 includes all possible body data elements and associates the project elements with project3314 when @project is owned by a group3315 includes all possible body data elements and associates the project elements with project3316 when controller is issues3317 when params[:id] is present and the issue exsits and action_name is show3318 sets all project and id elements correctly related to the issue3319 find_file attribute3320 when the project has no repository3321 is expected to be nil3322 when user cannot read_code for the project3323 is expected to be nil3324 when current_user has read_code permission3325 returns find_file with the default branch3326 #profile_social_links3327 when discord is set3328 returns an empty string if discord is not set3329 returns discord url when discord id is set3330 #gitlab_ui_form_for3331 adds custom form builder to options and calls `form_for`3332 #gitlab_ui_form_with3333 adds custom form builder to options and calls `form_with`3334 #page_class3335 is expected not to include "logged-out-marketing-header"3336 #dispensable_render3337 when an error occurs in the template to be rendered3338 calls `track_and_raise_for_dev_exception`3339 for development environment3340 raises an error3341 for production environments3342 returns nil3343 when no error occurs in the template to be rendered3344 does not track or raise and returns the rendered content3345 #dispensable_render_if_exists3346 when an error occurs in the template to be rendered3347 calls `track_and_raise_for_dev_exception`3348 for development environment3349 raises an error3350 for production environments3351 returns nil3352 when no error occurs in the template to be rendered3353 does not track or raise3354 stylesheet_link_tag_defer3355DEPRECATION WARNING: The asset "test.css" is not present in the asset pipeline.3356Falling back to an asset that may be in the public folder.3357This behavior is deprecated and will be removed.3358To bypass the asset pipeline and preserve this behavior,3359use the `skip_pipeline: true` option.3360 (called from stylesheet_link_tag_defer at /builds/gitlab-org/gitlab/app/helpers/application_helper.rb:278)3361 uses print stylesheet when feature flag disabled3362DEPRECATION WARNING: The asset "test.css" is not present in the asset pipeline.3363Falling back to an asset that may be in the public folder.3364This behavior is deprecated and will be removed.3365To bypass the asset pipeline and preserve this behavior,3366use the `skip_pipeline: true` option.3367 (called from stylesheet_link_tag_defer at /builds/gitlab-org/gitlab/app/helpers/application_helper.rb:280)3368 uses regular stylesheet when feature flag enabled3369DEPRECATION WARNING: The asset "test.css" is not present in the asset pipeline.3370Falling back to an asset that may be in the public folder.3371This behavior is deprecated and will be removed.3372To bypass the asset pipeline and preserve this behavior,3373use the `skip_pipeline: true` option.3374 (called from stylesheet_link_tag_defer at /builds/gitlab-org/gitlab/app/helpers/application_helper.rb:280)3375 uses regular stylesheet when no_startup_css param present3376 sign_in_with_redirect?3377 when on the sign-in page that redirects afterwards3378 returns true3379 when on a non sign-in page3380 returns false3381 collapsed_super_sidebar?3382 when @force_desktop_expanded_sidebar is true3383 returns false3384 does not use the cookie value3385 when @force_desktop_expanded_sidebar is not set (default)3386 when super_sidebar_collapsed cookie is true3387 returns true3388 when super_sidebar_collapsed cookie is false3389 returns false3390AvatarUploader3391 behaves like builds correct paths3392 #store_dir3393 behaves like matches the method pattern3394 is expected to match /uploads\/-\/system\/user\/avatar\//3395 #cache_dir3396 behaves like matches the method pattern3397 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3398 #work_dir3399 behaves like matches the method pattern3400 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3401 #upload_path3402 behaves like matches the method pattern3403 is expected to match /uploads\/-\/system\/user\/avatar\//3404 #relative_path3405 is relative (PENDING: Path not set, skipping.)3406 .absolute_path3407 behaves like matches the method pattern3408 is expected to match /\/builds\/gitlab-org\/gitlab\/tmp\/tests\/public\/uploads\/-\/system\/user\/avatar\//3409 .base_dir3410 behaves like matches the method pattern3411 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3412 path traversal exploits3413 throws an exception3414 object_store is REMOTE3415 behaves like builds correct paths3416 #store_dir3417 behaves like matches the method pattern3418 is expected to match /user\/avatar\//3419 #cache_dir3420 behaves like matches the method pattern3421 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3422 #work_dir3423 behaves like matches the method pattern3424 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3425 #upload_path3426 behaves like matches the method pattern3427 is expected to match /user\/avatar\//3428 #relative_path3429 is relative (PENDING: Path not set, skipping.)3430 .absolute_path3431 behaves like matches the method pattern3432 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3433 .base_dir3434 behaves like matches the method pattern3435 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3436 path traversal exploits3437 throws an exception3438 with a file3439 sets the right absolute path3440 behaves like migrates3441 returns corresponding file type3442 does nothing when migrating to the current store3443 migrate to the specified store3444 removes the original file after the migration3445 can access to the original file during migration3446 when migrate! is not occupied by another process3447 executes migrate!3448 executes use_file3449 when migrate! is occupied by another process3450 does not execute migrate!3451 does not execute use_file3452 migration is unsuccessful3453 when the store is not supported3454 does not update the object_store3455 does not delete the original file3456 upon a fog failure3457 does not update the object_store3458 does not delete the original file3459 upon a database failure3460 does not update the object_store3461 does not delete the original file3462 behaves like migrates3463 returns corresponding file type3464 does nothing when migrating to the current store3465 migrate to the specified store3466 removes the original file after the migration3467 can access to the original file during migration3468 when migrate! is not occupied by another process3469 executes migrate!3470 executes use_file3471 when migrate! is occupied by another process3472 does not execute migrate!3473 does not execute use_file3474 migration is unsuccessful3475 when the store is not supported3476 does not update the object_store3477 does not delete the original file3478 upon a fog failure3479 does not update the object_store3480 does not delete the original file3481 upon a database failure3482 does not update the object_store3483 does not delete the original file3484 accept whitelist file content type3485 mime_type: "image/png"3486 behaves like accepted carrierwave upload3487 will accept upload3488 will cache uploaded file3489 mime_type: "image/jpeg"3490 behaves like accepted carrierwave upload3491 will accept upload3492 will cache uploaded file3493 mime_type: "image/gif"3494 behaves like accepted carrierwave upload3495 will accept upload3496 will cache uploaded file3497 mime_type: "image/bmp"3498 behaves like accepted carrierwave upload3499 will accept upload3500 will cache uploaded file3501 mime_type: "image/tiff"3502 behaves like accepted carrierwave upload3503 will accept upload3504 will cache uploaded file3505 mime_type: "image/vnd.microsoft.icon"3506 behaves like accepted carrierwave upload3507 will accept upload3508 will cache uploaded file3509 upload non-whitelisted file content type3510 behaves like denied carrierwave upload3511 will deny upload3512 upload misnamed non-whitelisted file content type3513 behaves like denied carrierwave upload3514 will deny upload3515SystemNoteService3516 .add_commits3517 calls CommitService3518 .tag_commit3519 calls CommitService3520 .change_assignee3521 calls IssuableService3522 .change_issuable_assignees3523 calls IssuableService3524 .change_issuable_reviewers3525 calls IssuableService3526 .change_issuable_contacts3527 calls IssuableService3528 .close_after_error_tracking_resolve3529 calls IssuableService3530 .relate_issuable3531 calls IssuableService3532 .unrelate_issuable3533 calls IssuableService3534 .change_start_date_or_due_date3535 calls TimeTrackingService3536 .change_status3537 calls IssuableService3538 .merge_when_pipeline_succeeds3539 calls MergeRequestsService3540 .cancel_merge_when_pipeline_succeeds3541 calls MergeRequestsService3542 .abort_merge_when_pipeline_succeeds3543 calls MergeRequestsService3544 .change_title3545 calls IssuableService3546 .change_description3547 calls IssuableService3548 .change_issue_confidentiality3549 calls IssuableService3550 .change_branch3551 calls MergeRequestsService3552 .change_branch_presence3553 calls MergeRequestsService3554 .new_issue_branch3555 calls MergeRequestsService3556 .new_merge_request3557 calls MergeRequestsService3558 .zoom_link_added3559 calls ZoomService3560 .zoom_link_removed3561 calls ZoomService3562 .cross_reference3563 calls IssuableService3564 .cross_reference_disallowed?3565 calls IssuableService3566 .cross_reference_exists?3567 calls IssuableService3568 .noteable_moved3569 calls IssuableService3570 .noteable_cloned3571 calls IssuableService3572 .change_time_estimate3573 calls TimeTrackingService3574 .discussion_continued_in_issue3575 creates a new note in the discussion3576 mentions the created issue in the system note3577 behaves like a system note3578 has the correct attributes3579 .change_time_spent3580 calls TimeTrackingService3581 .created_timelog3582 calls TimeTrackingService3583 .remove_timelog3584 calls TimeTrackingService3585 .handle_merge_request_draft3586 calls MergeRequestsService3587 .add_merge_request_draft_from_commit3588 calls MergeRequestsService3589 .change_task_status3590 calls IssuableService3591 .resolve_all_discussions3592 calls MergeRequestsService3593 .diff_discussion_outdated3594 calls MergeRequestsService3595 .mark_duplicate_issue3596 calls IssuableService3597 .mark_canonical_issue_of_duplicate3598 calls IssuableService3599 .discussion_lock3600 calls IssuableService3601 .auto_resolve_prometheus_alert3602 calls IssuableService3603 .design_version_added3604 calls DesignManagementService3605 .design_discussion_added3606 calls DesignManagementService3607 .approve_mr3608 calls MergeRequestsService3609 .unapprove_mr3610 calls MergeRequestsService3611 .change_alert_status3612 with status change reason3613 calls AlertManagementService3614 without status change reason3615 calls AlertManagementService3616 .new_alert_issue3617 calls AlertManagementService3618 .create_new_alert3619 calls AlertManagementService3620 .change_incident_severity3621 calls IncidentService3622 .change_incident_status3623 with status change reason3624 calls IncidentService3625 without status change reason3626 calls IncidentService3627 .log_resolving_alert3628 calls AlertManagementService3629 .change_issue_type3630 calls IssuableService3631 .add_timeline_event3632 calls IncidentsService3633 .edit_timeline_event3634 calls IncidentsService3635 .delete_timeline_event3636 calls IncidentsService3637 .relate_work_item3638 calls IssuableService3639 .unrelate_wotk_item3640 calls IssuableService3641Gitlab::Ci::Config3642 when config is valid3643 #to_hash3644 returns hash created from string3645 #valid?3646 is valid3647 has no errors3648 #stages3649 with default stages3650 is expected to eq [".pre", "build", "test", "deploy", ".post"]3651 with custom stages3652 is expected to eq [".pre", "stage1", "stage2", ".post"]3653 #included_templates3654 is expected to contain exactly "Jobs/Deploy.gitlab-ci.yml" and "Jobs/Build.gitlab-ci.yml"3655 stores includes3656 when using extendable hash3657 correctly extends the hash3658 when config is invalid3659 when yml is incorrect3660 .new3661 raises error3662 when yml is too big3663 .new3664 raises error3665 when config logic is incorrect3666 #valid?3667 is not valid3668 has errors3669 #errors3670 returns an array of strings3671 when invalid extended hash has been provided3672 raises an error3673 when ports have been set3674 in the main image3675 raises an error3676 in the job image3677 raises an error3678 in the services3679 raises an error3680 when yaml uses circular !reference3681 raises error3682 when using 'include' directive3683 when gitlab_ci_yml has valid 'include' defined3684 returns a composed hash3685 stores includes3686 handling variables3687 contains all project variables3688 contains all group variables3689 contains all instance variables3690 overriding a group variable at project level3691 successfully overrides3692 when gitlab_ci.yml has invalid 'include' defined3693 raises ConfigError3694 when gitlab_ci.yml has ambigious 'include' defined3695 raises ConfigError3696 when it takes too long to evaluate includes3697 raises error TimeoutError3698 external file version3699 when external local file SHA is defined3700 is using a defined value3701 when external local file SHA is not defined3702 is using latest SHA on the default branch3703 when both external files and gitlab_ci.yml defined the same key3704 takes precedence3705 when both external files and gitlab_ci.yml define a dictionary of distinct variables3706 merges the variables dictionaries3707 when both external files and gitlab_ci.yml define a dictionary of overlapping variables3708 later declarations should take precedence3709 when both external files and gitlab_ci.yml define a job3710 merges the jobs3711 when the script key is in both3712 uses the script from the gitlab_ci.yml3713 when including file from artifact3714 disallows the use in parent pipelines3715 when used in the context of a child pipeline3716 returns valid config3717 when job key is missing3718 raises an error3719 when artifact key is missing3720 raises an error3721 when including multiple files from a project3722 returns a composed hash3723 when an 'include' has rules3724 when the rule is an if3725 when the rules condition is satisfied3726 includes the file3727 when the rules condition is satisfied3728 does not include the file3729 when the rule is an exists3730 when the exists file does not exist3731 does not include the file3732 when the exists file does exist3733 does include the file3734 when an 'include' has rules with a pipeline variable3735 when a pipeline is passed3736 includes the file3737 when a pipeline is not passed3738 does not include the file3739 #workflow_rules3740 is expected to eq [{:if=>"$CI_COMMIT_REF_NAME == \"master\""}]3741 #workflow_name3742 is expected to eq "Pipeline name"3743 with no name3744 is expected to be nil3745Namespaces::PackageSettings::UpdateService3746 #execute3747 with existing namespace package setting3748 user_role: :owner, shared_examples_name: "updating the namespace package setting"3749 behaves like updating the namespace package setting3750 behaves like updating the namespace package setting attributes3751 updates the namespace package setting3752 behaves like not creating the namespace package setting3753 doesn't create the namespace package setting3754 behaves like returning a success3755 returns a success3756 with invalid params3757 doesn't update the maven_duplicates_allowed3758 behaves like not creating the namespace package setting3759 doesn't create the namespace package setting3760 behaves like returning an error3761 returns an error3762 user_role: :maintainer, shared_examples_name: "denying access to namespace package setting"3763 behaves like denying access to namespace package setting3764 with existing namespace package setting3765 behaves like not creating the namespace package setting3766 doesn't create the namespace package setting3767 behaves like returning an error3768 returns an error3769 behaves like disabling admin_package feature flag3770 behaves like updating the namespace package setting3771 behaves like updating the namespace package setting attributes3772 updates the namespace package setting3773 behaves like not creating the namespace package setting3774 doesn't create the namespace package setting3775 behaves like returning a success3776 returns a success3777 with invalid params3778 doesn't update the maven_duplicates_allowed3779 behaves like not creating the namespace package setting3780 doesn't create the namespace package setting3781 behaves like returning an error3782 returns an error3783 user_role: :developer, shared_examples_name: "denying access to namespace package setting"3784 behaves like denying access to namespace package setting3785 with existing namespace package setting3786 behaves like not creating the namespace package setting3787 doesn't create the namespace package setting3788 behaves like returning an error3789 returns an error3790 user_role: :reporter, shared_examples_name: "denying access to namespace package setting"3791 behaves like denying access to namespace package setting3792 with existing namespace package setting3793 behaves like not creating the namespace package setting3794 doesn't create the namespace package setting3795 behaves like returning an error3796 returns an error3797 user_role: :guest, shared_examples_name: "denying access to namespace package setting"3798 behaves like denying access to namespace package setting3799 with existing namespace package setting3800 behaves like not creating the namespace package setting3801 doesn't create the namespace package setting3802 behaves like returning an error3803 returns an error3804 user_role: :anonymous, shared_examples_name: "denying access to namespace package setting"3805 behaves like denying access to namespace package setting3806 with existing namespace package setting3807 behaves like not creating the namespace package setting3808 doesn't create the namespace package setting3809 behaves like returning an error3810 returns an error3811 without existing namespace package setting3812 user_role: :owner, shared_examples_name: "creating the namespace package setting"3813 behaves like creating the namespace package setting3814 creates a new package setting3815 saves the settings3816 behaves like returning a success3817 returns a success3818 user_role: :maintainer, shared_examples_name: "denying access to namespace package setting"3819 behaves like denying access to namespace package setting3820 with existing namespace package setting3821 behaves like not creating the namespace package setting3822 doesn't create the namespace package setting3823 behaves like returning an error3824 returns an error3825 behaves like disabling admin_package feature flag3826 behaves like creating the namespace package setting3827 creates a new package setting3828 saves the settings3829 behaves like returning a success3830 returns a success3831 user_role: :developer, shared_examples_name: "denying access to namespace package setting"3832 behaves like denying access to namespace package setting3833 with existing namespace package setting3834 behaves like not creating the namespace package setting3835 doesn't create the namespace package setting3836 behaves like returning an error3837 returns an error3838 user_role: :reporter, shared_examples_name: "denying access to namespace package setting"3839 behaves like denying access to namespace package setting3840 with existing namespace package setting3841 behaves like not creating the namespace package setting3842 doesn't create the namespace package setting3843 behaves like returning an error3844 returns an error3845 user_role: :guest, shared_examples_name: "denying access to namespace package setting"3846 behaves like denying access to namespace package setting3847 with existing namespace package setting3848 behaves like not creating the namespace package setting3849 doesn't create the namespace package setting3850 behaves like returning an error3851 returns an error3852 user_role: :anonymous, shared_examples_name: "denying access to namespace package setting"3853 behaves like denying access to namespace package setting3854 with existing namespace package setting3855 behaves like not creating the namespace package setting3856 doesn't create the namespace package setting3857 behaves like returning an error3858 returns an error3859projects/issues/show3860 when the issue is closed3861 shows "Closed" if an issue has not been moved or duplicated3862 shows "Closed" if discussion is locked3863 when the issue was moved3864 when user can see the moved issue3865 shows "Closed (moved)" if an issue has been moved and closed3866 shows "Closed (moved)" if an issue has been moved and discussion is locked3867 links "moved" to the new issue the original issue was moved to3868 does not show "closed (moved)" if an issue has been moved and reopened (not closed)3869 when user cannot see moved issue3870 does not show moved issue link3871 when the issue was duplicated3872 when user can see the duplicated issue3873 shows "Closed (duplicated)" if an issue has been duplicated3874 links "duplicated" to the new issue the original issue was duplicated to3875 when user cannot see duplicated issue3876 does not show duplicated issue link3877 when the issue is open3878 shows "Open" if an issue has been moved3879 shows "Open" if discussion is locked3880 when the issue is related to a sentry error3881 renders a stack trace3882 when the issue is not related to a sentry error3883 does not render a stack trace3884Members::CreateService3885 when the current user does not have permission to create members3886 raises a Gitlab::Access::AccessDeniedError3887 when a project maintainer attempts to add owners3888 raises a Gitlab::Access::AccessDeniedError3889 when passing an invalid source3890 raises a RuntimeError3891 when passing valid parameters3892 adds a user to members3893 when user_id is passed as an integer3894 successfully creates member3895 with user_id as an array of integers3896 successfully creates members3897 with user_id as an array of strings3898 successfully creates members3899 when executing on a group3900 adds a user to members3901 triggers a members added event3902 when only one user fails validations3903 triggers the members added event3904 when all users fail validations3905 does not trigger the members added event3906 when passing no user ids3907 does not add a member3908 when passing many user ids3909 limits the number of users to 1003910 when passing an invalid access level3911 does not add a member3912 when passing an existing invite user id3913 allows already invited members to be re-invited by email and updates the member access3914 when adding a project_bot3915 when project_bot is already a member3916 does not update the member3917 when project_bot is not already a member3918 adds the member3919 when tracking the invite source3920 when invite_source is not passed3921 raises an error3922 when invite_source is passed3923 tracks the invite source from params3924 with an already existing member3925 tracks the invite source from params3926 when it is a net_new_user3927 tracks the invite source from params3928 when assigning tasks to be done3929 creates 2 task issues3930 when it is an invite by email passed to user_id3931 does not create task issues3932 when passing many user ids3933 still creates 2 task issues3934 when a `tasks_project_id` is missing3935 does not create task issues3936 when `tasks_to_be_done` are missing3937 does not create task issues3938 when invalid `tasks_to_be_done` are passed3939 does not create task issues3940 when invalid `tasks_project_id` is passed3941 does not create task issues3942 when a member was already invited3943 does not create task issues3944WebHookService3945 #initialize3946 when SystemHook3947 when local requests are allowed3948 is expected to be truthy3949 when local requests are not allowed3950 is expected to be falsey3951 when ProjectHook3952 when local requests are allowed3953 is expected to be truthy3954 when local requests are not allowed3955 is expected to be falsey3956 #disabled?3957 forced: false, executable: true, disabled: false3958 is expected to have attributes {:disabled? => false}3959 forced: false, executable: false, disabled: true3960 is expected to have attributes {:disabled? => true}3961 forced: true, executable: true, disabled: false3962 is expected to have attributes {:disabled? => false}3963 forced: true, executable: false, disabled: false3964 is expected to have attributes {:disabled? => false}3965 #execute3966 POSTs the data as JSON and returns expected headers3967 catches exceptions3968 does not execute disabled hooks3969 executes and registers the hook with the recursion detection3970 blocks and logs if a recursive web hook is detected3971 blocks and logs if the recursion count limit would be exceeded3972 handles exceptions3973 handles 200 status code3974 handles 2xx status codes3975 when there is an interpolation error3976 logs the error3977 when there are URL variables3978 POSTs to the interpolated URL, and logs the hook.url3979 there is userinfo3980 POSTs to the interpolated URL, and logs the hook.url3981 when token is defined3982 POSTs to the webhook URL3983 when the data is a Gitlab::DataBuilder::Pipeline3984 can log the request payload3985 when auth credentials are present3986 uses the credentials3987 when auth credentials are partial present3988 uses the credentials anyways3989 when url is not encoded3990 handles exceptions3991 when request body size is too big3992 does not perform the request3993 execution logging3994 with success3995 queues LogExecutionWorker correctly3996 queues LogExecutionWorker correctly, resulting in a log record (integration-style test)3997 does not log in the service itself3998 when forced3999 logs execution inline4000 with bad request4001 queues LogExecutionWorker correctly4002 with exception4003 queues LogExecutionWorker correctly4004 with unsafe response body4005 queues LogExecutionWorker with sanitized response_body4006 with oversize response body4007 queues LogExecutionWorker with stripped response_body4008 with massive amount of headers4009 queues LogExecutionWorker with limited amount of headers4010 with oversize header4011 queues LogExecutionWorker with stripped header value4012 with log data exceeding Sidekiq limit4013 queues LogExecutionWorker with request_data overrided in the second attempt4014 new log data still exceeds limit4015 raises an exception4016 #async_execute4017 when rate limiting is not configured4018 queues a worker without tracking the call4019 when rate limiting is configured4020 queues a worker and tracks the call4021 when the hook is throttled (via mock)4022 does not queue a worker and logs an error4023 when the hook is throttled (via Redis)4024 stops queueing workers and logs errors4025 still queues workers for other hooks4026 recursion detection4027 does not queue a worker and logs an error if the call chain limit would be exceeded4028 does not queue a worker and logs an error if a recursive call chain is detected4029 when hook has custom context attributes4030 includes the attributes in the worker context4031IncidentManagement::IssuableEscalationStatus4032 # order random4033 is expected to be valid4034 behaves like a model including Escalatable4035 validations4036 is expected to validate that :status cannot be empty/falsy4037 when status is triggered4038 when resolved_at is blank4039 is expected to be valid4040 when resolved_at is present4041 is expected to be invalid4042 when status is acknowledged4043 when resolved_at is blank4044 is expected to be valid4045 when resolved_at is present4046 is expected to be invalid4047 when status is resolved4048 when resolved_at is blank4049 is expected to be invalid4050 when resolved_at is present4051 is expected to be valid4052 when status is ignored4053 when resolved_at is blank4054 is expected to be valid4055 when resolved_at is present4056 is expected to be invalid4057 scopes4058 .order_status4059 descending4060 is expected to eq [#<IncidentManagement::IssuableEscalationStatus id: 1, created_at: "2023-06-02 06:41:50.253965000 +00...00 +0000", issue_id: 344, policy_id: nil, escalations_started_at: nil, resolved_at: nil, status: 3>]4061 ascending4062 is expected to eq [#<IncidentManagement::IssuableEscalationStatus id: 4, created_at: "2023-06-02 06:41:51.452618000 +00...00 +0000", issue_id: 341, policy_id: nil, escalations_started_at: nil, resolved_at: nil, status: 0>]4063 .open4064 is expected to contain exactly #<IncidentManagement::IssuableEscalationStatus id: 2, created_at: "2023-06-02 06:41:50.623208000 +000...000 +0000", issue_id: 342, policy_id: nil, escalations_started_at: nil, resolved_at: nil, status: 1> and #<IncidentManagement::IssuableEscalationStatus id: 1, created_at: "2023-06-02 06:41:50.253965000 +000...000 +0000", issue_id: 341, policy_id: nil, escalations_started_at: nil, resolved_at: nil, status: 0>4065 .status_value4066 status: :triggered, status_value: 04067 returns status value by its name4068 status: :acknowledged, status_value: 14069 returns status value by its name4070 status: :resolved, status_value: 24071 returns status value by its name4072 status: :ignored, status_value: 34073 returns status value by its name4074 status: :unknown, status_value: nil4075 returns status value by its name4076 .status_name4077 raw_status: 0, status: :triggered4078 returns status name by its values4079 raw_status: 1, status: :acknowledged4080 returns status name by its values4081 raw_status: 2, status: :resolved4082 returns status name by its values4083 raw_status: 3, status: :ignored4084 returns status name by its values4085 raw_status: -1, status: nil4086 returns status name by its values4087 .open_status?4088 status: :triggered, is_open_status: true4089 returns true when the status is open status4090 status: :acknowledged, is_open_status: true4091 returns true when the status is open status4092 status: :resolved, is_open_status: false4093 returns true when the status is open status4094 status: :ignored, is_open_status: false4095 returns true when the status is open status4096 status: nil, is_open_status: false4097 returns true when the status is open status4098 #trigger4099 when escalatable is in triggered state4100 does not change the escalatable status4101 when escalatable is not in triggered state4102 changes the escalatable status to triggered4103 resets resolved at4104 #acknowledge4105 changes the escalatable status to acknowledged4106 resets ended at4107 #resolve4108 when escalatable is already resolved4109 does not change the escalatable status4110 when escalatable is not resolved4111 changes escalatable status to "resolved"4112 #ignore4113 changes the escalatable status to ignored4114 resets ended at4115 #status_event_for4116 for_status: :triggered, event: :trigger4117 returns event by status name4118 for_status: "triggered", event: :trigger4119 returns event by status name4120 for_status: :acknowledged, event: :acknowledge4121 returns event by status name4122 for_status: "acknowledged", event: :acknowledge4123 returns event by status name4124 for_status: :resolved, event: :resolve4125 returns event by status name4126 for_status: "resolved", event: :resolve4127 returns event by status name4128 for_status: :ignored, event: :ignore4129 returns event by status name4130 for_status: "ignored", event: :ignore4131 returns event by status name4132 for_status: :unknown, event: nil4133 returns event by status name4134 for_status: nil, event: nil4135 returns event by status name4136 for_status: "", event: nil4137 returns event by status name4138 for_status: 1, event: nil4139 returns event by status name4140 #open?4141 returns true when the status is open status4142 validatons4143 is expected to validate that :issue cannot be empty/falsy4144 is expected to validate that :issue is case-sensitively unique4145 associations4146 is expected to belong to issue required: false4147 is expected to have one project through issue inverse_of => incident_management_issuable_escalation_statuses4148Projects::DataTransfer4149 # order random4150 is expected to be valid4151 scopes4152 .current_month4153 returns data transfer for the current month4154 .with_project_between_dates4155 returns the correct number of results4156 .with_namespace_between_dates4157 returns the correct number of results4158 behaves like CounterAttribute4159 defines a method to store counters4160 repository_egress4161 #increment_counter4162 when attribute is a counter attribute4163 amount: 104164 increments the counter in Redis and logs it4165 does not increment the counter for the record4166 schedules a worker to flush counter increments asynchronously4167 amount: -34168 increments the counter in Redis and logs it4169 does not increment the counter for the record4170 schedules a worker to flush counter increments asynchronously4171 #increment_amount4172 increases the egress in cache4173 #current_counter4174 increases the amount in cache4175 when increment amount is 04176 does nothing4177 #bulk_increment_counter4178 when attribute is a counter attribute4179 increments the counter in Redis and logs each increment4180 does not increment the counter for the record4181 schedules a worker to flush counter increments asynchronously4182 when feature flag split_log_bulk_increment_counter is disabled4183 logs a single total increment4184 artifacts_egress4185 #increment_counter4186 when attribute is a counter attribute4187 amount: 104188 increments the counter in Redis and logs it4189 does not increment the counter for the record4190 schedules a worker to flush counter increments asynchronously4191 amount: -34192 increments the counter in Redis and logs it4193 does not increment the counter for the record4194 schedules a worker to flush counter increments asynchronously4195 #increment_amount4196 increases the egress in cache4197 #current_counter4198 increases the amount in cache4199 when increment amount is 04200 does nothing4201 #bulk_increment_counter4202 when attribute is a counter attribute4203 increments the counter in Redis and logs each increment4204 does not increment the counter for the record4205 schedules a worker to flush counter increments asynchronously4206 when feature flag split_log_bulk_increment_counter is disabled4207 logs a single total increment4208 packages_egress4209 #increment_counter4210 when attribute is a counter attribute4211 amount: 104212 increments the counter in Redis and logs it4213 does not increment the counter for the record4214 schedules a worker to flush counter increments asynchronously4215 amount: -34216 increments the counter in Redis and logs it4217 does not increment the counter for the record4218 schedules a worker to flush counter increments asynchronously4219 #increment_amount4220 increases the egress in cache4221 #current_counter4222 increases the amount in cache4223 when increment amount is 04224 does nothing4225 #bulk_increment_counter4226 when attribute is a counter attribute4227 increments the counter in Redis and logs each increment4228 does not increment the counter for the record4229 schedules a worker to flush counter increments asynchronously4230 when feature flag split_log_bulk_increment_counter is disabled4231 logs a single total increment4232 registry_egress4233 #increment_counter4234 when attribute is a counter attribute4235 amount: 104236 increments the counter in Redis and logs it4237 does not increment the counter for the record4238 schedules a worker to flush counter increments asynchronously4239 amount: -34240 increments the counter in Redis and logs it4241 does not increment the counter for the record4242 schedules a worker to flush counter increments asynchronously4243 #increment_amount4244 increases the egress in cache4245 #current_counter4246 increases the amount in cache4247 when increment amount is 04248 does nothing4249 #bulk_increment_counter4250 when attribute is a counter attribute4251 increments the counter in Redis and logs each increment4252 does not increment the counter for the record4253 schedules a worker to flush counter increments asynchronously4254 when feature flag split_log_bulk_increment_counter is disabled4255 logs a single total increment4256 #update_counters_with_lease4257 updates counters of the record4258 behaves like obtaining lease to update database4259 when it is unable to obtain lock4260 logs a warning4261 when the execution raises error4262 reraises error4263 .beginning_of_month4264 is expected to eq 2022-05-01 00:00:00.000000000 +00004265 associations4266 is expected to belong to project required: false4267 is expected to belong to namespace required: false4268 unique index4269 raises unique index violation4270 when project was moved from one namespace to another4271 creates a new record4272 when a different project is created4273 creates a new record4274ContainerRepositoriesFinder4275 #execute4276 with authorized user4277 when subject_type is group4278 is expected to contain exactly #<ContainerRepository id: 1, project_id: 418, name: "my_image", created_at: "2023-06-02 06:41:59.3494...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil> and #<ContainerRepository id: 2, project_id: 419, name: "test_repository2", created_at: "2023-06-02 06:42...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>4279 behaves like with name search4280 with name set to my_image4281 is expected to contain exactly #<ContainerRepository id: 1, project_id: 418, name: "my_image", created_at: "2023-06-02 06:41:59.3494...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>4282 is expected not to include #<ContainerRepository id: 3, project_id: 418, name: "foo_bar_baz", created_at: "2023-06-02 06:42:00.2...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>4283 with name set to my_imag4284 is expected to contain exactly #<ContainerRepository id: 1, project_id: 418, name: "my_image", created_at: "2023-06-02 06:41:59.3494...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>4285 is expected not to include #<ContainerRepository id: 3, project_id: 418, name: "foo_bar_baz", created_at: "2023-06-02 06:42:00.2...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>4286 with name set to _image4287 is expected to contain exactly #<ContainerRepository id: 1, project_id: 418, name: "my_image", created_at: "2023-06-02 06:41:59.3494...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>4288 is expected not to include #<ContainerRepository id: 3, project_id: 418, name: "foo_bar_baz", created_at: "2023-06-02 06:42:00.2...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>4289 with name set to _imag4290 is expected to contain exactly #<ContainerRepository id: 1, project_id: 418, name: "my_image", created_at: "2023-06-02 06:41:59.3494...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>4291 is expected not to include #<ContainerRepository id: 3, project_id: 418, name: "foo_bar_baz", created_at: "2023-06-02 06:42:00.2...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>4292 behaves like with sorting4293 with sort set to created_desc4294 is expected to eq [#<ContainerRepository id: 5, project_id: 420, name: "foo", created_at: "2023-06-02 05:42:03.36767123...eleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>]4295 with sort set to updated_asc4296 is expected to eq [#<ContainerRepository id: 5, project_id: 420, name: "foo", created_at: "2023-06-02 05:42:03.36767123...eleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>]4297 with sort set to name_desc4298 is expected to eq [#<ContainerRepository id: 5, project_id: 420, name: "foo", created_at: "2023-06-02 05:42:03.36767123...eleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>]4299 with sort set to created_asc4300 is expected to eq [#<ContainerRepository id: 4, project_id: 420, name: "bar", created_at: "2023-06-01 06:42:03.35345238...eleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>]4301 with sort set to updated_desc4302 is expected to eq [#<ContainerRepository id: 4, project_id: 420, name: "bar", created_at: "2023-06-01 06:42:03.35345238...eleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>]4303 with sort set to name_asc4304 is expected to eq [#<ContainerRepository id: 4, project_id: 420, name: "bar", created_at: "2023-06-01 06:42:03.35345238...eleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>]4305 when project has container registry disabled4306 is expected to contain exactly #<ContainerRepository id: 6, project_id: 421, name: "test_repository2", created_at: "2023-06-02 06:42...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>4307 when subject_type is project4308 is expected to contain exactly #<ContainerRepository id: 1, project_id: 418, name: "my_image", created_at: "2023-06-02 06:41:59.3494...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>4309 behaves like with name search4310 with name set to my_image4311 is expected to contain exactly #<ContainerRepository id: 1, project_id: 418, name: "my_image", created_at: "2023-06-02 06:41:59.3494...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>4312 is expected not to include #<ContainerRepository id: 7, project_id: 418, name: "foo_bar_baz", created_at: "2023-06-02 06:42:06.8...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>4313 with name set to my_imag4314 is expected to contain exactly #<ContainerRepository id: 1, project_id: 418, name: "my_image", created_at: "2023-06-02 06:41:59.3494...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>4315 is expected not to include #<ContainerRepository id: 7, project_id: 418, name: "foo_bar_baz", created_at: "2023-06-02 06:42:06.8...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>4316 with name set to _image4317 is expected to contain exactly #<ContainerRepository id: 1, project_id: 418, name: "my_image", created_at: "2023-06-02 06:41:59.3494...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>4318 is expected not to include #<ContainerRepository id: 7, project_id: 418, name: "foo_bar_baz", created_at: "2023-06-02 06:42:06.8...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>4319 with name set to _imag4320 is expected to contain exactly #<ContainerRepository id: 1, project_id: 418, name: "my_image", created_at: "2023-06-02 06:41:59.3494...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>4321 is expected not to include #<ContainerRepository id: 7, project_id: 418, name: "foo_bar_baz", created_at: "2023-06-02 06:42:06.8...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>4322 behaves like with sorting4323 with sort set to created_desc4324 is expected to eq [#<ContainerRepository id: 9, project_id: 422, name: "foo", created_at: "2023-06-02 05:42:10.01505139...eleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>]4325 with sort set to updated_asc4326 is expected to eq [#<ContainerRepository id: 9, project_id: 422, name: "foo", created_at: "2023-06-02 05:42:10.01505139...eleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>]4327 with sort set to name_desc4328 is expected to eq [#<ContainerRepository id: 9, project_id: 422, name: "foo", created_at: "2023-06-02 05:42:10.01505139...eleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>]4329 with sort set to created_asc4330 is expected to eq [#<ContainerRepository id: 8, project_id: 422, name: "bar", created_at: "2023-06-01 06:42:09.99990576...eleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>]4331 with sort set to updated_desc4332 is expected to eq [#<ContainerRepository id: 8, project_id: 422, name: "bar", created_at: "2023-06-01 06:42:09.99990576...eleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>]4333 with sort set to name_asc4334 is expected to eq [#<ContainerRepository id: 8, project_id: 422, name: "bar", created_at: "2023-06-01 06:42:09.99990576...eleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>]4335 when project has container registry disabled4336 is expected to equal nil4337 with invalid subject_type4338 is expected to raise Exception with "invalid subject_type"4339 with unauthorized user4340 when subject_type is group4341 is expected to equal nil4342 when subject_type is project4343 is expected to equal nil4344ApplicationWorker4345 Sidekiq attributes4346 sets the queue name based on the output of the router4347 when a worker attribute is updated4348 updates the queue name afterward4349 when the worker is inherited4350 sets the queue name for the inherited worker4351 #logging_extras4352 returns extra data to be logged that was set from #log_extra_metadata_on_done4353 returns extra data to be logged that was set from #log_hash_metadata_on_done4354 when nothing is set4355 returns {}4356 #structured_payload4357 adds worker related payload4358 adds labkit context4359 adds custom payload converting stringified keys4360 does not override predefined context keys with custom payload4361 .queue_namespace4362 updates the queue name from the router again4363 updates the queue_namespace options of the worker4364 .queue4365 returns the queue name4366 .data_consistency4367 data_consistency: :delayed, sidekiq_option_retry: false, expect_error: true4368 when workers data consistency is4369 not to raise an exception4370 data_consistency: :delayed, sidekiq_option_retry: 0, expect_error: true4371 when workers data consistency is4372 not to raise an exception4373 data_consistency: :delayed, sidekiq_option_retry: 3, expect_error: false4374 when workers data consistency is4375 not to raise an exception4376 data_consistency: :delayed, sidekiq_option_retry: nil, expect_error: false4377 when workers data consistency is4378 not to raise an exception4379 data_consistency: :sticky, sidekiq_option_retry: false, expect_error: false4380 when workers data consistency is4381 not to raise an exception4382 data_consistency: :sticky, sidekiq_option_retry: 0, expect_error: false4383 when workers data consistency is4384 not to raise an exception4385 data_consistency: :sticky, sidekiq_option_retry: 3, expect_error: false4386 when workers data consistency is4387 not to raise an exception4388 data_consistency: :sticky, sidekiq_option_retry: nil, expect_error: false4389 when workers data consistency is4390 not to raise an exception4391 data_consistency: :always, sidekiq_option_retry: false, expect_error: false4392 when workers data consistency is4393 not to raise an exception4394 data_consistency: :always, sidekiq_option_retry: 0, expect_error: false4395 when workers data consistency is4396 not to raise an exception4397 data_consistency: :always, sidekiq_option_retry: 3, expect_error: false4398 when workers data consistency is4399 not to raise an exception4400 data_consistency: :always, sidekiq_option_retry: nil, expect_error: false4401 when workers data consistency is4402 not to raise an exception4403 .retry4404 data_consistency: :delayed, sidekiq_option_retry: false, expect_error: true4405 when retry sidekiq option is4406 not to raise an exception4407 data_consistency: :delayed, sidekiq_option_retry: 0, expect_error: true4408 when retry sidekiq option is4409 not to raise an exception4410 data_consistency: :delayed, sidekiq_option_retry: 3, expect_error: false4411 when retry sidekiq option is4412 not to raise an exception4413 data_consistency: :sticky, sidekiq_option_retry: false, expect_error: false4414 when retry sidekiq option is4415 not to raise an exception4416 data_consistency: :sticky, sidekiq_option_retry: 0, expect_error: false4417 when retry sidekiq option is4418 not to raise an exception4419 data_consistency: :sticky, sidekiq_option_retry: 3, expect_error: false4420 when retry sidekiq option is4421 not to raise an exception4422 data_consistency: :always, sidekiq_option_retry: false, expect_error: false4423 when retry sidekiq option is4424 not to raise an exception4425 data_consistency: :always, sidekiq_option_retry: 0, expect_error: false4426 when retry sidekiq option is4427 not to raise an exception4428 data_consistency: :always, sidekiq_option_retry: 3, expect_error: false4429 when retry sidekiq option is4430 not to raise an exception4431 different kinds of push_bulk4432 .bulk_perform_async4433 push_bulk in safe limit batches4434 when the number of jobs to be enqueued does not exceed the safe limit4435 behaves like enqueues jobs in one go4436 enqueues jobs in one go4437 behaves like logs bulk insertions4438 logs arguments and job IDs4439 behaves like returns job_id of all enqueued jobs4440 returns job_id of all enqueued jobs4441 behaves like does not schedule the jobs for any specific time4442 does not schedule the jobs for any specific time4443 when the number of jobs to be enqueued exceeds safe limit4444 behaves like enqueues the jobs in a batched fashion, with each batch enqueing jobs as per the set safe limit4445 enqueues the jobs in a batched fashion, with each batch enqueing jobs as per the set safe limit4446 behaves like returns job_id of all enqueued jobs4447 returns job_id of all enqueued jobs4448 behaves like does not schedule the jobs for any specific time4449 does not schedule the jobs for any specific time4450 .bulk_perform_in4451 without batches4452 when the scheduled time falls in the past4453 raises an ArgumentError exception4454 push_bulk in safe limit batches4455 when the number of jobs to be enqueued does not exceed the safe limit4456 behaves like enqueues jobs in one go4457 enqueues jobs in one go4458 behaves like returns job_id of all enqueued jobs4459 returns job_id of all enqueued jobs4460 behaves like schedules all the jobs at a specific time4461 schedules all the jobs at a specific time4462 when the number of jobs to be enqueued exceeds safe limit4463 behaves like enqueues the jobs in a batched fashion, with each batch enqueing jobs as per the set safe limit4464 enqueues the jobs in a batched fashion, with each batch enqueing jobs as per the set safe limit4465 behaves like returns job_id of all enqueued jobs4466 returns job_id of all enqueued jobs4467 behaves like schedules all the jobs at a specific time4468 schedules all the jobs at a specific time4469 with batches4470 when the `batch_size` is invalid4471 when `batch_size` is 04472 raises an ArgumentError exception4473 when `batch_size` is negative4474 raises an ArgumentError exception4475 when the `batch_delay` is invalid4476 when `batch_delay` is 04477 raises an ArgumentError exception4478 when `batch_delay` is negative4479 raises an ArgumentError exception4480 push_bulk in safe limit batches4481 when the number of jobs to be enqueued does not exceed the safe limit4482 behaves like enqueues jobs in one go4483 enqueues jobs in one go4484 behaves like returns job_id of all enqueued jobs4485 returns job_id of all enqueued jobs4486 behaves like schedules all the jobs at a specific time, per batch4487 schedules all the jobs at a specific time, per batch4488 when the number of jobs to be enqueued exceeds safe limit4489 behaves like enqueues the jobs in a batched fashion, with each batch enqueing jobs as per the set safe limit4490 enqueues the jobs in a batched fashion, with each batch enqueing jobs as per the set safe limit4491 behaves like returns job_id of all enqueued jobs4492 returns job_id of all enqueued jobs4493 behaves like schedules all the jobs at a specific time, per batch4494 schedules all the jobs at a specific time, per batch4495 .with_status4496 when the worker does have status_expiration set4497 uses status_expiration from the worker4498 uses status_expiration from the worker without with_status4499 when the worker does not have status_expiration set4500 uses the default status_expiration4501 does not set status_expiration without with_status4502ProjectNoteEntity4503 exposes project-specific elements4504 behaves like note entity4505 basic note4506 exposes correct elements4507 does not expose elements for specific notes cases4508 exposes author correctly4509 does not expose web_url for author4510 exposes permission fields on current_user4511 exposes the report_abuse_path4512 :can_resolve_discussion4513 discussion is resolvable4514 user can resolve4515 is true4516 user cannot resolve4517 is false4518 discussion is not resolvable4519 is false4520 :outdated_line_change_path4521 when note shows outdated changes4522 returns correct outdated_line_change_namespace_project_note_path4523 when note does not show outdated changes4524 does not expose outdated_line_change_path4525 when note was edited4526 exposes last_edited_at and last_edited_by elements4527 when note is a system note4528 exposes system_note_icon_name element4529 when note is part of resolvable discussion4530 exposes paths to resolve note4531AvatarsHelper4532 #project_icon, #group_icon, #topic_icon4533 when providing a project4534 behaves like resource with a default avatar4535 returns a default avatar div4536 behaves like resource with a custom avatar4537 returns a custom avatar image4538 when Gitaly is unavailable4539 handles Gitaly exception gracefully4540 behaves like resource with a default avatar4541 returns a default avatar div4542 when Gitaly request is taking too long4543 handles Gitaly exception gracefully4544 behaves like resource with a default avatar4545 returns a default avatar div4546 when providing a group4547 behaves like resource with a default avatar4548 returns a default avatar div4549 behaves like resource with a custom avatar4550 returns a custom avatar image4551 when providing a topic4552 behaves like resource with a default avatar4553 returns a default avatar div4554 behaves like resource with a custom avatar4555 returns a custom avatar image4556 #avatar_icon_for4557 prefers the user to retrieve the avatar_url4558 falls back to email lookup if no user given4559 #avatar_icon_for_email4560 caches the request4561 behaves like returns avatar for email4562 using an email4563 when there is a matching user4564 returns a relative URL for the avatar4565 when a private email is used4566 calls gravatar_icon4567 when no user exists for the email4568 calls gravatar_icon4569 without an email passed4570 returns the default avatar4571 with a blank email address4572 returns the default avatar4573 #avatar_icon_for_user4574 with a user object passed4575 returns a relative URL for the avatar4576 when the user is blocked4577 behaves like blocked or unconfirmed user with avatar4578 when the viewer is not an admin4579 returns the default avatar4580 when the viewer is an admin4581 returns the default avatar when the user is not passed4582 returns the user avatar when the user is passed4583 when the user is unconfirmed4584 behaves like blocked or unconfirmed user with avatar4585 when the viewer is not an admin4586 returns the default avatar4587 when the viewer is an admin4588 returns the default avatar when the user is not passed4589 returns the user avatar when the user is passed4590 without a user object passed4591 calls gravatar_icon4592 #gravatar_icon4593 with Gravatar disabled4594 returns a generic avatar4595 with Gravatar enabled4596 with FIPS not enabled4597 returns a generic avatar when email is blank4598 returns a valid Gravatar URL4599 uses HTTPs when configured4600 returns custom gravatar path when gravatar_url is set4601 accepts a custom size argument4602 defaults size to 40@2x when given an invalid size4603 accepts a scaling factor4604 ignores case and surrounding whitespace4605 with FIPS enabled4606 returns a generic avatar4607 #user_avatar4608 links to the user's profile4609 has the user's name as title4610 contains the user's avatar image4611 #user_avatar_without_link4612 displays user avatar4613 with css_class parameter4614 uses provided css_class4615 with size parameter4616 uses provided size4617 with url parameter4618 uses provided url4619 with lazy parameter4620 adds `lazy` class to class list, sets `data-src` with avatar URL and `src` with placeholder image4621 with has_tooltip parameter4622 with has_tooltip set to true4623 adds has-tooltip4624 with has_tooltip set to false4625 does not add has-tooltip or data container4626 with user_name parameter4627 uses user_name and user_email parameter if user is not present4628 with user parameter4629 prefers user parameter4630 with only_path parameter set to false4631 with user parameter4632 will return avatar with a full path4633 with user_name and user_email4634 will return avatar with a full path4635 with unregistered email address4636 will return default alt text for avatar4637 #avatar_without_link4638 with users4639 displays user avatar4640 with groups4641 displays group avatar4642Approvable4643 # order random4644 #approved_by?4645 when a user has not approved4646 returns false4647 when a user has approved4648 returns false4649 when a user is nil4650 returns false4651 #eligible_for_approval_by?4652 returns true4653 when a user has approved4654 returns false4655 when a user is nil4656 returns false4657 #eligible_for_unapproval_by?4658 returns false4659 when a user has approved4660 returns true4661 when a user is nil4662 returns false4663 .not_approved_by_users_with_usernames4664 has the merge request that is not approved at all and not approved by either user4665Suggestions::CreateService4666 #execute4667 should not try to parse suggestions4668 when not a diff note for merge requests4669 does not try to parse suggestions4670 behaves like service not tracking add suggestion event4671 does not track add suggestion event4672 when diff note is not for text4673 does not try to parse suggestions4674 behaves like service not tracking add suggestion event4675 does not track add suggestion event4676 when diff file is not found4677 creates no suggestion4678 behaves like service not tracking add suggestion event4679 does not track add suggestion event4680 should create suggestions4681 persists suggestion records4682 persists suggestions data correctly4683 tracks add suggestion event4684 outdated position note4685 uses the correct position when creating the suggestion4686 when a patch removes an empty line4687 creates an appliable suggestion4688Gitlab::GithubImport::Representation::PullRequest4689 .from_api_response4690 does not set the user if the response did not include a user4691 behaves like a PullRequest4692 returns an instance of PullRequest4693 the returned PullRequest4694 includes the pull request number4695 includes the pull request title4696 includes the pull request description4697 includes the source branch name4698 includes the source branch SHA4699 includes the target branch name4700 includes the target branch SHA4701 includes the milestone number4702 includes the user details4703 includes the assignee details4704 includes the created timestamp4705 includes the updated timestamp4706 includes the merged timestamp4707 includes the source repository ID4708 includes the target repository ID4709 includes the source repository owner name4710 includes the pull request state4711 .from_json_hash4712 does not convert the author if it was not specified4713 behaves like a PullRequest4714 returns an instance of PullRequest4715 the returned PullRequest4716 includes the pull request number4717 includes the pull request title4718 includes the pull request description4719 includes the source branch name4720 includes the source branch SHA4721 includes the target branch name4722 includes the target branch SHA4723 includes the milestone number4724 includes the user details4725 includes the assignee details4726 includes the created timestamp4727 includes the updated timestamp4728 includes the merged timestamp4729 includes the source repository ID4730 includes the target repository ID4731 includes the source repository owner name4732 includes the pull request state4733 #state4734 returns :opened for an open pull request4735 returns :closed for a closed pull request4736 returns :merged for a merged pull request4737 #cross_project?4738 returns false for a pull request submitted from the target project4739 returns true for a pull request submitted from a different project4740 returns true if no source repository is present4741 #formatted_source_branch4742 for a cross-project pull request4743 includes the owner name in the branch name4744 for a regular pull request4745 returns the source branch name4746 for a pull request with the same source and target branches4747 returns a generated source branch name4748 #truncated_title4749 truncates the title to 255 characters4750 does not truncate the title if it is shorter than 255 characters4751 #github_identifiers4752 returns a hash with needed identifiers4753Projects::GitDeduplicationService4754 #execute4755 when there is not already a lease4756 when the project does not have a pool repository4757 calls disconnect_git_alternates4758 when the project has a pool repository4759 links the repository to the object pool4760 does not link the repository to the object pool if they are not on the same storage4761 when the project is a source project4762 calls fetch4763 does not call fetch if git objects are not poolable4764 does not call fetch if pool and project are not on the same storage4765 when visibility level of the project4766 is private4767 does not call fetch4768 is public4769 calls fetch4770 is internal4771 calls fetch4772 when the repository access level4773 is private4774 does not call fetch4775 is greater than private4776 calls fetch4777 when a lease is already out4778 fails when a lease is already out4779BlobPresenter4780 #web_url4781 is expected to eq "http://localhost/namespace516/project-540/-/blob/HEAD/files/ruby/regex.rb"4782 #web_path4783 is expected to eq "/namespace516/project-540/-/blob/HEAD/files/ruby/regex.rb"4784 #edit_blob_path4785 is expected to eq "/namespace516/project-540/-/edit/HEAD/files/ruby/regex.rb"4786 #raw_path4787 is expected to eq "/namespace516/project-540/-/raw/HEAD/files/ruby/regex.rb"4788 #replace_path4789 is expected to eq "/namespace516/project-540/-/update/HEAD/files/ruby/regex.rb"4790 #can_current_user_push_to_branch4791 is expected to eq true4792 current_user is nil4793 is expected to eq false4794 branch does not exist4795 is expected to eq false4796 #archived?4797 is expected to eq false4798 #pipeline_editor_path4799 when blob is .gitlab-ci.yml4800 is expected to eq "/namespace516/project-540/-/ci/editor?branch_name=main"4801 Gitpod4802 Gitpod enabled for application and user4803 #gitpod_blob_url4804 is expected to eq "https://gitpod.io#http://localhost/namespace516/project-540/-/tree/HEAD/files/ruby/regex.rb"4805 Gitpod disabled at application level4806 #gitpod_blob_url4807 is expected to eq nil4808 Gitpod disabled at user level4809 #gitpod_blob_url4810 is expected to eq nil4811 #find_file_path4812 is expected to eq "/namespace516/project-540/-/find_file/HEAD"4813 #blame_path4814 is expected to eq "/namespace516/project-540/-/blame/HEAD/files/ruby/regex.rb"4815 #history_path4816 is expected to eq "/namespace516/project-540/-/commits/HEAD/files/ruby/regex.rb"4817 #permalink_path4818 is expected to eq "/namespace516/project-540/-/blob/b83d6e391c22777fca1ed3012fce84f633d7fed0/files/ruby/regex.rb"4819 environment has been deployed4820 #environment_formatted_external_url4821 is expected to eq "some.environment"4822 #environment_external_url_for_route_map4823 is expected to eq "https://some.environment/files/ruby/regex.rb"4824 chooses the latest deployed environment for #environment_formatted_external_url and #environment_external_url_for_route_map4825 is expected to eq "another.environment"4826 is expected to eq "https://another.environment/files/ruby/regex.rb"4827 #code_owners4828 is expected to contain exactly4829 #ide_edit_path4830 is expected to eq "/-/ide/project/namespace516/project-540/edit/HEAD/-/files/ruby/regex.rb"4831 #fork_and_edit_path4832 generates expected URI + query4833 current_user is nil4834 is expected to be nil4835 #ide_fork_and_edit_path4836 generates expected URI + query4837 current_user is nil4838 is expected to be nil4839 #code_navigation_path4840 is expected to eq nil4841 #project_blob_path_root4842 is expected to eq "/namespace516/project-540/-/blob/HEAD"4843 given a Gitlab::Graphql::Representation::TreeEntry4844 #web_url4845 is expected to eq "http://localhost/namespace516/project-540/-/blob/HEAD/files/ruby/regex.rb"4846 #web_path4847 is expected to eq "/namespace516/project-540/-/blob/HEAD/files/ruby/regex.rb"4848 #highlight4849 returns highlighted content4850 returns plain content when :plain is true4851 "to" param is present4852 returns limited highlighted content4853 gitlab-language contains a match4854 passes language to inner call4855 #highlight_and_trim4856 returns trimmed content for longer line4857 #blob_language4858 is expected to eq "ruby"4859 gitlab-language contains a match4860 is expected to eq "cpp"4861 when blob is binary4862 is expected to be nil4863 #raw_plain_data4864 when blob is text4865 does not include html in the content4866 #plain_data4867 when blob is binary4868 returns nil4869 when blob is markup4870 returns plain content4871 when blob has syntax4872 returns highlighted syntax content4873 when blob has plain data4874 returns plain text highlighted content4875Gitlab::Usage::Metrics::Instrumentations::CountBulkImportsEntitiesMetric4876 with no source_type4877 with all time frame4878 behaves like a correct instrumented metric value and query4879 behaves like a correct instrumented metric value4880 has correct value4881 behaves like a correct instrumented metric query4882 has correct generate query4883 for 28d time frame4884 behaves like a correct instrumented metric value and query4885 behaves like a correct instrumented metric value4886 has correct value4887 behaves like a correct instrumented metric query4888 has correct generate query4889 with invalid source_type4890 raises ArgumentError4891 with source_type project_entity4892 with all time frame4893 behaves like a correct instrumented metric value and query4894 behaves like a correct instrumented metric value4895 has correct value4896 behaves like a correct instrumented metric query4897 has correct generate query4898 for 28d time frame4899 behaves like a correct instrumented metric value and query4900 behaves like a correct instrumented metric value4901 has correct value4902 behaves like a correct instrumented metric query4903 has correct generate query4904 with source_type group_entity4905 with all time frame4906 behaves like a correct instrumented metric value and query4907 behaves like a correct instrumented metric value4908 has correct value4909 behaves like a correct instrumented metric query4910 has correct generate query4911 for 28d time frame4912 behaves like a correct instrumented metric value and query4913 behaves like a correct instrumented metric value4914 has correct value4915 behaves like a correct instrumented metric query4916 has correct generate query4917 with entity status4918 with all time frame4919 behaves like a correct instrumented metric value and query4920 behaves like a correct instrumented metric value4921 has correct value4922 behaves like a correct instrumented metric query4923 has correct generate query4924 for 28d time frame4925 behaves like a correct instrumented metric value and query4926 behaves like a correct instrumented metric value4927 has correct value4928 behaves like a correct instrumented metric query4929 has correct generate query4930 with entity status and source_type4931 with all time frame4932 behaves like a correct instrumented metric value and query4933 behaves like a correct instrumented metric value4934 has correct value4935 behaves like a correct instrumented metric query4936 has correct generate query4937 for 28d time frame4938 behaves like a correct instrumented metric value and query4939 behaves like a correct instrumented metric value4940 has correct value4941 behaves like a correct instrumented metric query4942 has correct generate query4943 with has_failures: true4944 with all time frame4945 with project entity4946 behaves like a correct instrumented metric value and query4947 behaves like a correct instrumented metric value4948 has correct value4949 behaves like a correct instrumented metric query4950 has correct generate query4951 with group entity4952 behaves like a correct instrumented metric value and query4953 behaves like a correct instrumented metric value4954 has correct value4955 behaves like a correct instrumented metric query4956 has correct generate query4957 for 28d time frame4958 behaves like a correct instrumented metric value and query4959 behaves like a correct instrumented metric value4960 has correct value4961 behaves like a correct instrumented metric query4962 has correct generate query4963 with has_failures: false4964 with all time frame4965 with project entity4966 behaves like a correct instrumented metric value and query4967 behaves like a correct instrumented metric value4968 has correct value4969 behaves like a correct instrumented metric query4970 has correct generate query4971 with group entity4972 behaves like a correct instrumented metric value and query4973 behaves like a correct instrumented metric value4974 has correct value4975 behaves like a correct instrumented metric query4976 has correct generate query4977 for 28d time frame4978 with project entity4979 behaves like a correct instrumented metric value and query4980 behaves like a correct instrumented metric value4981 has correct value4982 behaves like a correct instrumented metric query4983 has correct generate query4984 with group entity4985 behaves like a correct instrumented metric value and query4986 behaves like a correct instrumented metric value4987 has correct value4988 behaves like a correct instrumented metric query4989 has correct generate query4990Packages::Go::SyncPackagesWorker4991 #perform4992 with no existing packages4993 behaves like it creates a package4994 returns a package for example.com/project@v1.0.14995 behaves like it creates a package4996 returns a package for example.com/project@v1.0.24997 behaves like it creates a package4998 returns a package for example.com/project@v1.0.34999 behaves like it creates a package5000 returns a package for example.com/project/mod@v1.0.35001 behaves like it creates a package5002 returns a package for example.com/project/v2@v2.0.05003 with existing packages5004 behaves like it creates a package5005 returns a package for example.com/project@v1.0.15006 behaves like it creates a package5007 returns a package for example.com/project@v1.0.25008 behaves like it creates a package5009 returns a package for example.com/project@v1.0.35010 behaves like it creates a package5011 returns a package for example.com/project/mod@v1.0.35012 behaves like it creates a package5013 returns a package for example.com/project/v2@v2.0.05014 marked as pending_destruction5015 behaves like it creates a package5016 returns a package for example.com/project@v1.0.15017 behaves like it creates a package5018 returns a package for example.com/project@v1.0.25019 behaves like it creates a package5020 returns a package for example.com/project@v1.0.35021 behaves like it creates a package5022 returns a package for example.com/project/mod@v1.0.35023 behaves like it creates a package5024 returns a package for example.com/project/v2@v2.0.05025 with a package that exceeds project limits5026 logs an exception5027 path: "", version: "v1.0.1"5028 behaves like an idempotent worker5029 is labeled as idempotent5030 performs multiple times sequentially without raising an exception5031 creates a package5032 path: "", version: "v1.0.2"5033 behaves like an idempotent worker5034 is labeled as idempotent5035 performs multiple times sequentially without raising an exception5036 creates a package5037 path: "", version: "v1.0.3"5038 behaves like an idempotent worker5039 is labeled as idempotent5040 performs multiple times sequentially without raising an exception5041 creates a package5042 path: "mod", version: "v1.0.3"5043 behaves like an idempotent worker5044 is labeled as idempotent5045 performs multiple times sequentially without raising an exception5046 creates a package5047 path: "v2", version: "v2.0.0"5048 behaves like an idempotent worker5049 is labeled as idempotent5050 performs multiple times sequentially without raising an exception5051 creates a package5052Ci::JobToken::Scope5053 #outbound_projects5054 when no projects are added to the scope5055 returns the project defining the scope5056 when projects are added to the scope5057 returns all projects that can be accessed from a given scope5058 #inbound_projects5059 when no projects are added to the scope5060 returns the project defining the scope5061 when projects are added to the scope5062 returns all projects that can be accessed from a given scope5063 add!5064 with inbound5065 adds the project5066 with outbound5067 adds the project5068 with inbound only enabled5069 provides access5070 accessible?5071 with inbound and outbound scopes enabled5072 when inbound and outbound access setup5073 accessed_project: current_project, result: true5074 allows self and projects allowed from both directions5075 accessed_project: inbound_allowlist_project, result: false5076 allows self and projects allowed from both directions5077 accessed_project: unscoped_project1, result: false5078 allows self and projects allowed from both directions5079 accessed_project: unscoped_project2, result: false5080 allows self and projects allowed from both directions5081 accessed_project: outbound_allowlist_project, result: false5082 allows self and projects allowed from both directions5083 accessed_project: inbound_accessible_project, result: false5084 allows self and projects allowed from both directions5085 accessed_project: fully_accessible_project, result: true5086 allows self and projects allowed from both directions5087 with inbound scope enabled and outbound scope disabled5088 accessed_project: current_project, result: true5089 is expected to eq true5090 accessed_project: inbound_allowlist_project, result: false5091 is expected to eq false5092 accessed_project: unscoped_project1, result: false5093 is expected to eq false5094 accessed_project: unscoped_project2, result: false5095 is expected to eq false5096 accessed_project: outbound_allowlist_project, result: false5097 is expected to eq false5098 accessed_project: inbound_accessible_project, result: true5099 is expected to eq true5100 accessed_project: fully_accessible_project, result: true5101 is expected to eq true5102 with inbound scope disabled and outbound scope enabled5103 accessed_project: current_project, result: true5104 is expected to eq true5105 accessed_project: inbound_allowlist_project, result: false5106 is expected to eq false5107 accessed_project: unscoped_project1, result: false5108 is expected to eq false5109 accessed_project: unscoped_project2, result: false5110 is expected to eq false5111 accessed_project: outbound_allowlist_project, result: true5112 is expected to eq true5113 accessed_project: inbound_accessible_project, result: false5114 is expected to eq false5115 accessed_project: fully_accessible_project, result: true5116 is expected to eq true5117ServicePing::BuildPayload5118 #execute5119 behaves like complete service ping payload5120 behaves like service ping payload with all expected metrics5121 is expected to have usage metric "topology"5122Gitlab::LfsToken5123 #token5124 when the actor is a user5125 returns the correct username5126 returns the correct token type5127 behaves like a valid LFS token5128 returns a computed token5129 when the actor is a key5130 returns the correct username5131 returns the correct token type5132 behaves like a valid LFS token5133 returns a computed token5134 when the actor is a deploy key5135 returns the correct username5136 returns the correct token type5137 behaves like a valid LFS token5138 returns a computed token5139 when the actor is invalid5140 raises an exception5141 #token_valid?5142 where the token is invalid5143 because it's junk5144 returns false5145 because it's been fiddled with5146 returns false5147 because it was generated with a different secret5148 returns false5149 because it's expired5150 returns false5151 where the token is valid5152 returns true5153 when the actor is a regular user5154 when the user is blocked5155 returns false5156 when the user password is expired5157 returns false5158 when the actor is an ldap user5159 when the user is blocked5160 returns false5161 when the user password is expired5162 returns true5163 #deploy_key_pushable?5164 when actor is not a DeployKey5165 returns false5166 when actor is a DeployKey5167 but the DeployKey cannot push to the project5168 returns false5169 and the DeployKey can push to the project5170 returns true5171 #type5172 when actor is not a User5173 returns :lfs_deploy_token type5174 when actor is a User5175 returns :lfs_token type5176 #authentication_payload5177 returns a Hash designed for gitlab-shell5178Gitlab::Checks::SingleChangeAccess5179 #validate!5180 without failed checks5181 doesn't raise an error5182 calls pushes checks5183 calls branches checks5184 calls tags checks5185 calls diff checks5186 when time limit was reached5187 raises a TimeoutError5188 #commits5189 with provided commits5190 behaves like #commits5191 returns expected commits5192 returns expected commits on repeated calls5193 without provided commits5194 behaves like #commits5195 returns expected commits5196 returns expected commits on repeated calls5197Gitlab::Ci::Config::Entry::Retry5198 #value5199 when retry value is a numeric5200 is returned as a hash with max key5201 when retry value is a hash5202 and `when` is a string5203 returns when wrapped in an array5204 and `when` is an array5205 returns when as it was passed5206 validation5207 when retry value is correct5208 when it is a numeric5209 is valid5210 when it is a hash5211 with max5212 is valid5213 with string when5214 is valid5215 with string when always5216 is valid5217 with array when5218 is valid5219 with when from documentation `always`5220 is valid5221 with when from documentation `unknown_failure`5222 is valid5223 with when from documentation `script_failure`5224 is valid5225 with when from documentation `api_failure`5226 is valid5227 with when from documentation `stuck_or_timeout_failure`5228 is valid5229 with when from documentation `runner_system_failure`5230 is valid5231 with when from documentation `runner_unsupported`5232 is valid5233 with when from documentation `stale_schedule`5234 is valid5235 with when from documentation `job_execution_timeout`5236 is valid5237 with when from documentation `archived_failure`5238 is valid5239 with when from documentation `unmet_prerequisites`5240 is valid5241 with when from documentation `scheduler_failure`5242 is valid5243 with when from documentation `data_integrity_failure`5244 is valid5245 with when from CommitStatus.failure_reasons `unknown_failure`5246 is valid5247 with when from CommitStatus.failure_reasons `script_failure`5248 is valid5249 with when from CommitStatus.failure_reasons `api_failure`5250 is valid5251 with when from CommitStatus.failure_reasons `stuck_or_timeout_failure`5252 is valid5253 with when from CommitStatus.failure_reasons `runner_system_failure`5254 is valid5255 with when from CommitStatus.failure_reasons `missing_dependency_failure`5256 is valid5257 with when from CommitStatus.failure_reasons `runner_unsupported`5258 is valid5259 with when from CommitStatus.failure_reasons `stale_schedule`5260 is valid5261 with when from CommitStatus.failure_reasons `job_execution_timeout`5262 is valid5263 with when from CommitStatus.failure_reasons `archived_failure`5264 is valid5265 with when from CommitStatus.failure_reasons `unmet_prerequisites`5266 is valid5267 with when from CommitStatus.failure_reasons `scheduler_failure`5268 is valid5269 with when from CommitStatus.failure_reasons `data_integrity_failure`5270 is valid5271 with when from CommitStatus.failure_reasons `forward_deployment_failure`5272 is valid5273 with when from CommitStatus.failure_reasons `user_blocked`5274 is valid5275 with when from CommitStatus.failure_reasons `project_deleted`5276 is valid5277 with when from CommitStatus.failure_reasons `ci_quota_exceeded`5278 is valid5279 with when from CommitStatus.failure_reasons `pipeline_loop_detected`5280 is valid5281 with when from CommitStatus.failure_reasons `no_matching_runner`5282 is valid5283 with when from CommitStatus.failure_reasons `trace_size_exceeded`5284 is valid5285 with when from CommitStatus.failure_reasons `builds_disabled`5286 is valid5287 with when from CommitStatus.failure_reasons `environment_creation_failure`5288 is valid5289 with when from CommitStatus.failure_reasons `deployment_rejected`5290 is valid5291 with when from CommitStatus.failure_reasons `failed_outdated_deployment_job`5292 is valid5293 with when from CommitStatus.failure_reasons `protected_environment_failure`5294 is valid5295 with when from CommitStatus.failure_reasons `insufficient_bridge_permissions`5296 is valid5297 with when from CommitStatus.failure_reasons `downstream_bridge_project_not_found`5298 is valid5299 with when from CommitStatus.failure_reasons `invalid_bridge_trigger`5300 is valid5301 with when from CommitStatus.failure_reasons `upstream_bridge_project_not_found`5302 is valid5303 with when from CommitStatus.failure_reasons `insufficient_upstream_permissions`5304 is valid5305 with when from CommitStatus.failure_reasons `bridge_pipeline_is_child_pipeline`5306 is valid5307 with when from CommitStatus.failure_reasons `downstream_pipeline_creation_failed`5308 is valid5309 with when from CommitStatus.failure_reasons `secrets_provider_not_found`5310 is valid5311 with when from CommitStatus.failure_reasons `reached_max_descendant_pipelines_depth`5312 is valid5313 with when from CommitStatus.failure_reasons `ip_restriction_failure`5314 is valid5315 with when from CommitStatus.failure_reasons `reached_max_pipeline_hierarchy_size`5316 is valid5317 when retry value is not correct5318 when it is not a numeric nor an array5319 returns error about invalid type5320 when it is a numeric5321 when it is lower than zero5322 returns error about value too low5323 when it is not an integer5324 returns error about wrong value5325 when the value is too high5326 returns error about value too high5327 when it is a hash5328 with unknown keys5329 returns error about the unknown key5330 with max lower than zero5331 returns error about value too low5332 with max not an integer5333 returns error about wrong value5334 iwth max too high5335 returns error about value too high5336 with when in wrong format5337 returns error about the wrong format5338 with an unknown when string5339 returns error about the wrong format5340 with an unknown failure reason in a when array5341 returns error about the wrong format5342SystemNotes::DesignManagementService5343 #design_version_added5344 with one kind of event5345 makes just one note5346 adds a new system note5347 with a mixture of events5348 makes one note for each kind of event5349 adds a system note for each kind of event5350 icons5351 action: :creation5352 has a valid action5353 action: :modification5354 has a valid action5355 action: :deletion5356 has a valid action5357 it succeeds5358 action: :creation, icon: "designs_added", human_description: "added"5359 has the correct data5360 action: :modification, icon: "designs_modified", human_description: "updated"5361 has the correct data5362 action: :deletion, icon: "designs_removed", human_description: "removed"5363 has the correct data5364 #design_discussion_added5365 adds a new system note5366 has the correct note text5367 behaves like a system note5368 has the correct attributes5369Reenqueuer5370 disables Sidekiq retries5371 behaves like reenqueuer5372 implements lease_timeout5373 uses the :none deduplication strategy5374 #perform5375 tries to obtain a lease5376 behaves like #perform is rate limited to 1 call per5377 when the work finishes in 0 seconds5378 sleeps exactly the minimum duration5379 when the work finishes in 10% of minimum duration5380 sleeps 90% of minimum duration5381 when the work finishes in 90% of minimum duration5382 sleeps 10% of minimum duration5383 when the work finishes exactly at minimum duration5384 does not sleep5385 when the work takes 10% longer than minimum duration5386 does not sleep5387 when the work takes twice as long as minimum duration5388 does not sleep5389 #perform5390 when the lease is available5391 does perform5392 when the lease is taken5393 does not perform5394 when #perform returns truthy5395 reenqueues the worker5396 returns the original value from #perform5397 when #perform returns falsey5398 does not reenqueue the worker5399 returns the original value from #perform5400Reenqueuer::ReenqueuerSleeper5401 behaves like #perform is rate limited to 1 call per5402 when the work finishes in 0 seconds5403 sleeps exactly the minimum duration5404 when the work finishes in 10% of minimum duration5405 sleeps 90% of minimum duration5406 when the work finishes in 90% of minimum duration5407 sleeps 10% of minimum duration5408 when the work finishes exactly at minimum duration5409 does not sleep5410 when the work takes 10% longer than minimum duration5411 does not sleep5412 when the work takes twice as long as minimum duration5413 does not sleep5414 #ensure_minimum_duration5415 when the block completes well before the minimum duration5416 sleeps until the minimum duration5417 when the block completes just before the minimum duration5418 sleeps until the minimum duration5419 when the block completes just after the minimum duration5420 does not sleep5421 when the block completes well after the minimum duration5422 does not sleep5423Jira::Requests::Projects::ListService5424 #execute5425 without jira_integration5426 returns an error response5427 when jira_integration is nil5428 returns an error response5429 with jira_integration5430 when validations and params are ok5431 behaves like a service that handles Jira API errors5432 allows unknown exception classes to bubble5433 logs the error5434 exception_class: Errno::ECONNRESET, exception_message: "", expected_message: "A connection error occurred"5435 handles the error5436 exception_class: Errno::ECONNREFUSED, exception_message: "", expected_message: "A connection error occurred"5437 handles the error5438 exception_class: Errno::ETIMEDOUT, exception_message: "", expected_message: "A timeout error occurred"5439 handles the error5440 exception_class: Timeout::Error, exception_message: "", expected_message: "A timeout error occurred"5441 handles the error5442 exception_class: URI::InvalidURIError, exception_message: "", expected_message: "The Jira API URL"5443 handles the error5444 exception_class: SocketError, exception_message: "", expected_message: "The Jira API URL"5445 handles the error5446 exception_class: OpenSSL::SSL::SSLError, exception_message: "foo", expected_message: "An SSL error occurred while connecting to Jira: foo"5447 handles the error5448 exception_class: JIRA::HTTPError, exception_message: "Unauthorized", expected_message: "The credentials for accessing Jira are not valid"5449 handles the error5450 exception_class: JIRA::HTTPError, exception_message: "Forbidden", expected_message: "The credentials for accessing Jira are not allowed"5451 handles the error5452 exception_class: JIRA::HTTPError, exception_message: "Bad Request", expected_message: "An error occurred while requesting data from Jira"5453 handles the error5454 exception_class: JIRA::HTTPError, exception_message: "Foo", expected_message: "An error occurred while requesting data from Jira."5455 handles the error5456 exception_class: JIRA::HTTPError, exception_message: "{\"errorMessages\":[\"foo\",\"bar\"]}", expected_message: "An error occurred while requesting data from Jira: foo and bar"5457 handles the error5458 exception_class: JIRA::HTTPError, exception_message: "{\"errorMessages\":[\"\"]}", expected_message: "An error occurred while requesting data from Jira."5459 handles the error5460 when the JSON in JIRA::HTTPError is unsafe5461 when JSON is malformed5462 returns the default error message5463 when JSON contains tags5464 sanitizes it5465 when jira runs on a subpath5466 takes the subpath into account5467 when the request does not return any values5468 returns a paylod with no projects returned5469 when the request returns values5470 returns a paylod with Jira projects5471 when filtering projects by name5472 returns a paylod with Jira procjets5473TestSuiteEntity5474 when details option is not present5475 does not expose suite error and test cases5476 when details option is present5477 contains the suite name5478 contains the total time5479 contains the counts5480 contains the test cases5481 contains an empty error message5482 with a suite error5483 contains the suite name5484 contains the total time5485 returns all the counts as 05486 returns no test cases5487 returns a suite error5488PagesDeployment5489 saves size along with the file5490 associations5491 is expected to belong to project required: true5492 is expected to belong to ci_build optional: true5493 validations5494 is expected to validate that :file cannot be empty/falsy5495 is expected to validate that :size cannot be empty/falsy5496 is expected to validate that :size looks like an integer greater than 05497 is expected to validate that :file_count cannot be empty/falsy5498 is expected to validate that :file_count looks like an integer greater than or equal to 05499 is expected to validate that :file_sha256 cannot be empty/falsy5500 is expected to validate that :file_store is either ‹1› or ‹2›5501 is valid when created from the factory5502 .migrated_from_legacy_storage5503 only returns migrated deployments5504 with deployments stored locally and remotely5505 .with_files_stored_locally5506 only returns deployments with files stored locally5507 .with_files_stored_remotely5508 only returns deployments with files stored remotely5509 when uploading the file5510 #store_after_commit?5511 when feature flag pages_deploy_upload_file_outside_transaction is disabled5512 returns false5513 when feature flag pages_deploy_upload_file_outside_transaction is enabled5514 returns true5515 when feature flag pages_deploy_upload_file_outside_transaction is disabled5516 stores the file within the transaction5517 when feature flag pages_deploy_upload_file_outside_transaction is enabled5518 stores the file outsize of the transaction5519 does nothing when the file did not change5520 #migrated?5521 returns false for normal deployment5522 returns true for migrated deployment5523 default for file_store5524 uses local store when object storage is not enabled5525 uses remote store when object storage is enabled5526 .older_than5527 returns deployments with lower id5528Gitlab::QuickActions::Extractor5529 #extract_commands5530 extracts command with multiple arguments and various prefixes5531 extracts command case insensitive5532 does not extract noop commands5533 extracts and performs substitution commands5534 extracts and performs substitution commands5535 extracts and performs multiple substitution commands5536 does not extract substitution command in inline code5537 extracts and performs substitution commands case insensitive5538 extracts and performs substitution commands with comments5539 extracts and performs substitution commands with keep_actions5540 extracts multiple commands5541 does not alter original content if no command is found5542 does not get confused if command comes before an inline code5543 does not get confused if command comes before a blockcode5544 does not extract commands inside a blockcode5545 does not extract commands inside a blockquote5546 does not extract commands inside a HTML tag5547 does not extract commands in multiline inline code on seperated rows5548 does not extract commands in multiline inline code starting from text5549 does not extract commands in inline code5550 limits to passed commands when they are passed5551 fails fast for strings with many newlines5552 command with no argument5553 at the start of content5554 behaves like command with no argument5555 extracts command5556 in the middle of content5557 behaves like command with no argument5558 extracts command5559 in the middle of a line5560 does not extract command5561 at the end of content5562 behaves like command with no argument5563 extracts command5564 command with a single argument5565 at the start of content5566 allows slash in command arguments5567 behaves like command with a single argument5568 extracts command5569 in the middle of content5570 behaves like command with a single argument5571 extracts command5572 in the middle of a line5573 does not extract command5574 at the end of content5575 behaves like command with a single argument5576 extracts command5577 when argument is not separated with a space5578 does not extract command5579 command with multiple arguments5580 at the start of content5581 behaves like command with multiple arguments5582 extracts command5583 in the middle of content5584 behaves like command with multiple arguments5585 extracts command5586 in the middle of a line5587 does not extract command5588 at the end of content5589 behaves like command with multiple arguments5590 extracts command5591 when argument is not separated with a space5592 does not extract command5593 command with keep_actions5594 at the start of content5595 behaves like command with a single argument5596 extracts command5597 in the middle of content5598 behaves like command with a single argument5599 extracts command5600 at the end of content5601 behaves like command with a single argument5602 extracts command5603 #redact_commands5604 text: "hello\n/labels ~label1 ~label2\nworld", expected: "hello\n`/labels ~label1 ~label2`\nworld"5605 encloses quick actions with code span markdown5606 text: "hello\n/open\n/labels ~label1\nworld", expected: "hello\n`/open`\n`/labels ~label1`\nworld"5607 encloses quick actions with code span markdown5608 text: "hello\n/reopen\nworld", expected: "hello\n`/reopen`\nworld"5609 encloses quick actions with code span markdown5610 text: "/reopen\nworld", expected: "`/reopen`\nworld"5611 encloses quick actions with code span markdown5612 text: "hello\n/open", expected: "hello\n`/open`"5613 encloses quick actions with code span markdown5614Labels::TransferService5615 behaves like transfer labels5616 #execute5617 recreates missing group labels at project level and assigns them to the issuables5618 recreates missing ancestor group labels at project level and assigns them to the issuables5619 recreates label priorities related to the missing group labels5620 does not recreate missing group labels that are not applied to issues or merge requests5621 does not recreate missing group labels that already exist in the project group5622 updates only label links in the given project5623 when moving within the same ancestor group5624 does not recreate ancestor group labels5625Gitlab::Ci::Config::Entry::Need5626 with simple config5627 when job is specified5628 #valid?5629 is expected to be valid5630 #value5631 returns job needs configuration5632 behaves like job type5633 #type5634 is expected to eq :job5635 when need is empty5636 #valid?5637 is expected not to be valid5638 #errors5639 is returns an error about an empty config5640 behaves like job type5641 #type5642 is expected to eq :job5643 with complex config5644 with job name and artifacts true5645 #valid?5646 is expected to be valid5647 #value5648 returns job needs configuration5649 behaves like job type5650 #type5651 is expected to eq :job5652 with job name and artifacts false5653 #valid?5654 is expected to be valid5655 #value5656 returns job needs configuration5657 behaves like job type5658 #type5659 is expected to eq :job5660 with job name and artifacts nil5661 #valid?5662 is expected to be valid5663 #value5664 returns job needs configuration5665 behaves like job type5666 #type5667 is expected to eq :job5668 without artifacts key5669 #valid?5670 is expected to be valid5671 #value5672 returns job needs configuration5673 behaves like job type5674 #type5675 is expected to eq :job5676 with job name and optional true5677 is expected to be valid5678 behaves like job type5679 #type5680 is expected to eq :job5681 #value5682 returns job needs configuration5683 with job name and optional false5684 is expected to be valid5685 behaves like job type5686 #type5687 is expected to eq :job5688 #value5689 returns job needs configuration5690 with job name and optional nil5691 is expected to be valid5692 behaves like job type5693 #type5694 is expected to eq :job5695 #value5696 returns job needs configuration5697 without optional key5698 is expected to be valid5699 behaves like job type5700 #type5701 is expected to eq :job5702 #value5703 returns job needs configuration5704 when job name is empty5705 #valid?5706 is expected not to be valid5707 #errors5708 is returns an error about an empty config5709 behaves like job type5710 #type5711 is expected to eq :job5712 when job name is not a string5713 #valid?5714 is expected not to be valid5715 #errors5716 is returns an error about job type5717 behaves like job type5718 #type5719 is expected to eq :job5720 when job has unknown keys5721 #valid?5722 is expected not to be valid5723 #errors5724 is returns an error about job type5725 behaves like job type5726 #type5727 is expected to eq :job5728 with cross pipeline artifacts needs5729 when pipeline is provided5730 when job is provided5731 is expected to be valid5732 sets artifacts:true by default5733 sets the type as cross_dependency5734 when artifacts is provided5735 is expected to be valid5736 returns the correct value5737 when config contains not allowed keys5738 is expected not to be valid5739 returns an error5740 when need config is not a string or a hash5741 #valid?5742 is expected not to be valid5743 #errors5744 is returns an error about job type5745Users::ApproveService5746 #execute5747 failures5748 when the executor user is not allowed to approve users5749 returns error result5750 when the executor user is an admin not in admin mode5751 returns error result5752 when the executor user is an admin in admin mode5753 when user is not in pending approval state5754 returns error result5755 when user cannot be activated5756 returns error result5757 does not change the state of the user5758 success5759 when the executor user is an admin in admin mode5760 activates the user5761 logs approval in application logs5762 emails the user on approval5763 when the user was created via sign up5764 does not send a password reset email5765 when the user was created by an admin5766 sends a password reset email5767 email confirmation status5768 user is unconfirmed5769 sends confirmation instructions5770 user is confirmed5771 does not send a confirmation email5772 audit events5773 when not licensed5774 does not log any audit event5775 pending invitations5776 user is unconfirmed5777 does not accept pending invites of the user5778 user is confirmed5779 accepts pending invites of the user5780Gitlab::ExclusiveLease5781 #try_obtain5782 cannot obtain twice before the lease has expired5783 can obtain after the lease has expired5784 .redis_shared_state_key5785 provides a namespaced key5786 .ensure_prefixed_key5787 does not double prefix a key5788 raises errors when there is no key5789 #renew5790 returns true when we have the existing lease5791 returns false when we dont have a lease5792 #exists?5793 returns true for an existing lease5794 returns false for a lease that does not exist5795 .get_uuid5796 gets the uuid if lease with the key associated exists5797 returns false if the lease does not exist5798 cancellation5799 .cancel5800 does not raise errors when given a nil key5801 when called with the unprefixed key5802 behaves like cancelling a lease5803 releases the held lease5804 when called with the prefixed key5805 behaves like cancelling a lease5806 releases the held lease5807 #cancel5808 is safe to call even if the lease was never obtained5809 behaves like cancelling a lease5810 releases the held lease5811 #ttl5812 returns the TTL of the Redis key5813 returns nil when the lease does not exist5814 .reset_all!5815 removes all existing lease keys from redis5816 .throttle5817 prevents repeated execution of the block5818 is distinct by block5819 is distinct by key5820 allows a group to be passed5821 defaults to a 60min timeout5822 allows count to be specified5823 allows period to be specified5824 allows period and count to be specified5825Banzai::Filter::GollumTagsFilter5826 validation5827 ensure that a :wiki key exists in context5828 linking internal images5829 creates img tag if image exists5830 does not creates img tag if image does not exist5831 linking external images5832 creates img tag for valid URL5833 does not creates img tag for invalid URL5834 linking external resources5835 the created link's text will be equal to the resource's text5836 the created link's text will be link-text5837 linking internal resources5838 the created link's text includes the resource's text and wiki base path5839 the created link's text will be link-text5840 inside back ticks will be exempt from linkification5841DesignManagement::DesignCollection5842 .find_or_create_design!5843 finds an existing design5844 creates a new design if one didn't exist5845 only queries the designs once5846 inserts the design after any existing designs5847 #copy_state5848 defaults to ready5849 persists its state changes between initializations5850 state: "ready", can_start: true, can_end: false, can_error: true, can_reset: true5851 maintains state machine transition rules5852 state: "in_progress", can_start: false, can_end: true, can_error: true, can_reset: true5853 maintains state machine transition rules5854 state: "error", can_start: false, can_end: false, can_error: false, can_reset: true5855 maintains state machine transition rules5856 clearing the redis cached state when state changes back to ready5857 clears the cached state on end_copy!5858 clears the cached state on reset_copy!5859 #empty?5860 is true when the design collection has no designs5861 is false when the design collection has designs5862 #versions5863 includes versions for all designs5864 #repository5865 builds a design repository5866 #designs_by_filename5867 finds all the designs with those filenames on this issue5868 only makes a single query5869 some are deleted5870 takes deletion into account5871Gitlab::SafeRequestStore5872 .store5873 when RequestStore is active5874 uses RequestStore5875 when RequestStore is NOT active5876 does not use RequestStore5877 .begin!5878 when RequestStore is active5879 uses RequestStore5880 when RequestStore is NOT active5881 uses RequestStore5882 .clear!5883 when RequestStore is active5884 uses RequestStore5885 when RequestStore is NOT active5886 uses RequestStore5887 .end!5888 when RequestStore is active5889 uses RequestStore5890 when RequestStore is NOT active5891 uses RequestStore5892 .write5893 when RequestStore is active5894 uses RequestStore5895 does not pass the options hash to the underlying store implementation5896 when RequestStore is NOT active5897 does not use RequestStore5898 does not pass the options hash to the underlying store implementation5899 .[]=5900 when RequestStore is active5901 uses RequestStore5902 when RequestStore is NOT active5903 does not use RequestStore5904 .read5905 when RequestStore is active5906 uses RequestStore5907 when RequestStore is NOT active5908 does not use RequestStore5909 .[]5910 when RequestStore is active5911 uses RequestStore5912 when RequestStore is NOT active5913 does not use RequestStore5914 .exist?5915 when RequestStore is active5916 uses RequestStore5917 when RequestStore is NOT active5918 does not use RequestStore5919 .fetch5920 when RequestStore is active5921 uses RequestStore5922 when RequestStore is NOT active5923 does not use RequestStore5924 .delete5925 when RequestStore is active5926 uses RequestStore5927 when given a block and the key exists5928 does not execute the block5929 when given a block and the key does not exist5930 yields the key and returns the block result5931 when RequestStore is NOT active5932 does not use RequestStore5933 when given a block5934 yields the key and returns the block result5935Crm::OrganizationsFinder5936 #execute5937 when customer relations feature is enabled for the group5938 when user does not have permissions to see organizations in the group5939 returns an empty array5940 when user is member of the root group5941 when feature flag is enabled5942 returns all group organizations5943 when user is member of the sub group5944 returns an empty array5945 when customer relations feature is disabled for the group5946 returns an empty array5947 with search informations5948 when search term is empty5949 returns all group organizations alphabetically ordered5950 when search term is not empty5951 searches for name5952 searches for description5953 searches for name and description5954 when searching for organizations state5955 returns only inactive organizations5956 returns only active organizations5957 when searching for organizations ids5958 returns the expected organizations5959 when sorting5960 returns the organiztions sorted by name in ascending order5961 returns the organizations sorted by description in descending order5962 returns the contacts sorted by default_rate in ascending order5963 .counts_by_state5964 returns correct counts5965Users::RefreshAuthorizedProjectsService5966 #execute5967 refreshes the authorizations using a lease5968 callbacks5969 incorrect_auth_found_callback callback5970 is called5971 missing_auth_found_callback callback5972 is called5973 #execute_without_lease5974 updates the authorized projects of the user5975 sets the access level of a project to the highest available level5976 returns a User5977 #update_authorizations5978 removes authorizations that should be removed5979 inserts authorizations that should be added5980 logs the details of the refresh5981 when there are no rows to add and remove5982 does not change authorizations5983BoardGroupRecentVisit5984 relationships5985 is expected to belong to user required: false5986 is expected to belong to group required: false5987 is expected to belong to board required: false5988 validations5989 is expected to validate that :user cannot be empty/falsy5990 is expected to validate that :group cannot be empty/falsy5991 is expected to validate that :board cannot be empty/falsy5992 behaves like boards recent visit5993 #visited5994 creates a visit if one does not exists5995 behaves like was visited previously5996 updates the timestamp5997 when we try to create a visit that is not unique5998 behaves like was visited previously5999 updates the timestamp6000 #latest6001 returns the most recent visited6002 returns last 3 visited boards6003Gitlab::Ci::Config::Yaml::Interpolator6004 # order random6005 when multiple interpolation blocks are invalid6006 correctly interpolates the config6007 #interpolate?6008 when interpolation can be performed6009 will perform interpolation6010 when interpolation is disabled6011 will not perform interpolation6012 when an interpolation header is missing6013 will not perform interpolation6014 when interpolator has preliminary errors6015 will not perform interpolation6016 #ready?6017 returns false if interpolation has not been done yet6018 returns true if interpolation has been performed6019 when interpolation can not be performed6020 returns true if interpolator has preliminary errors6021 returns true if interpolation has been attempted6022 when spec header is invalid6023 surfaces an error about invalid header6024 #to_hash6025 when interpolation is disabled6026 returns an empty hash6027 when interpolation is not used6028 returns original content6029 when interpolation is available6030 correctly interpolates content6031 when config has a syntax error6032 surfaces an error about invalid config6033 when input data is valid6034 correctly interpolates the config6035 tracks the event6036 when interpolation block is invalid6037 correctly interpolates the config6038 when provided interpolation argument is invalid6039 correctly interpolates the config6040 #has_header?6041 when header is an empty hash6042 does not have a header available6043 when header is not specified6044 does not have a header available6045Banzai::Filter::CommitTrailersFilter6046 detects6047 trailers prefixed with whitespaces6048 does not detect GitLab users via a secondary email6049 multiple trailers in the same message6050 trailers in the form of *-by6051 commit_trailer: "quidem-by:"6052 replaces users with links6053 commit_trailer: "at-BY:"6054 replaces users with links6055 commit_trailer: "occaecati-By:"6056 replaces users with links6057 non GitLab users6058 when Gravatar is disabled6059 behaves like mailto links6060 replaces them with mailto links6061 when Gravatar is enabled6062 behaves like mailto links6063 replaces them with mailto links6064 special names6065 name: "John S. Doe"6066 is expected to match "asperiores\\-by:\\ John\\ S\\.\\ Doe\\ <grazyna\\.bergstrom@olsonbalistreri\\.info>"6067 name: "L33t H@x0r"6068 is expected to match "autem\\-by:\\ L33t\\ H@x0r\\ <sylvie_weissnat@walker\\.us>"6069 ignores6070 commit messages without trailers6071 trailers without emails6072 trailers that are inline the commit message body6073 structure6074 starts with two newlines to separate with actual commit message6075 preserves the commit trailer structure6076 preserves the original name used in the commit message6077 preserves the original email used in the commit message6078 only replaces trailer lines not the full commit message6079 with Gitlab-hosted avatars in commit trailers6080 returns a full path for avatar urls6081Gitlab::Database::Reindexing::GrafanaNotifier6082 #notify_start6083 when Grafana is configured using application settings6084 behaves like interacting with Grafana annotations API6085 POSTs a JSON payload6086 on error6087 does not raise the error and returns false6088 when request was not successful6089 returns false6090 without api_key6091 does not post anything6092 without api_url6093 does not post anything6094 when there is no additional tag6095 behaves like interacting with Grafana annotations API6096 POSTs a JSON payload6097 on error6098 does not raise the error and returns false6099 when request was not successful6100 returns false6101 without api_key6102 does not post anything6103 without api_url6104 does not post anything6105 additional tag is provided6106 behaves like interacting with Grafana annotations API6107 POSTs a JSON payload6108 on error6109 does not raise the error and returns false6110 when request was not successful6111 returns false6112 without api_key6113 does not post anything6114 without api_url6115 does not post anything6116 #notify_end6117 when Grafana is configured using application settings6118 behaves like interacting with Grafana annotations API6119 POSTs a JSON payload6120 on error6121 does not raise the error and returns false6122 when request was not successful6123 returns false6124 without api_key6125 does not post anything6126 without api_url6127 does not post anything6128 when there is no additional tag6129 behaves like interacting with Grafana annotations API6130 POSTs a JSON payload6131 on error6132 does not raise the error and returns false6133 when request was not successful6134 returns false6135 without api_key6136 does not post anything6137 without api_url6138 does not post anything6139 additional tag is provided6140 behaves like interacting with Grafana annotations API6141 POSTs a JSON payload6142 on error6143 does not raise the error and returns false6144 when request was not successful6145 returns false6146 without api_key6147 does not post anything6148 without api_url6149 does not post anything6150Gitlab::SidekiqMigrateJobs6151 #migrate_set6152 scheduled jobs6153 behaves like processing a set6154 when the set is empty6155 returns the number of scanned and migrated jobs6156 when the set is not empty6157 returns the number of scanned and migrated jobs6158 when there are no matching jobs6159 does not change any queue names6160 when there are matching jobs6161 migrates only the workers matching the given worker from the set6162 allows migrating multiple workers at once6163 allows migrating multiple workers to the same queue6164 does not try to migrate jobs that are removed from the set during the migration6165 does not try to migrate unmatched jobs that are added to the set during the migration6166 iterates through the entire set of jobs6167 logs output at the start, finish, and every LOG_FREQUENCY jobs6168 retried jobs6169 behaves like processing a set6170 when the set is empty6171 returns the number of scanned and migrated jobs6172 when the set is not empty6173 returns the number of scanned and migrated jobs6174 when there are no matching jobs6175 does not change any queue names6176 when there are matching jobs6177 migrates only the workers matching the given worker from the set6178 allows migrating multiple workers at once6179 allows migrating multiple workers to the same queue6180 does not try to migrate jobs that are removed from the set during the migration6181 does not try to migrate unmatched jobs that are added to the set during the migration6182 iterates through the entire set of jobs6183 logs output at the start, finish, and every LOG_FREQUENCY jobs6184 #migrate_queues6185 with all workers mapped to default queue6186 behaves like migrating queues6187 migrates the jobs to the correct destination queue6188 with custom mapping to different queues6189 behaves like migrating queues6190 migrates the jobs to the correct destination queue6191 with illegal JSON payload6192 behaves like migrating queues6193 migrates the jobs to the correct destination queue6194 when multiple workers are in the same queue6195 when the queue exists in mappings6196 behaves like migrating queues6197 migrates the jobs to the correct destination queue6198 when the queue doesnt exist in mappings6199 behaves like migrating queues6200 migrates the jobs to the correct destination queue6201Gitlab::Diff::SuggestionsParser6202 .parse6203 single-line suggestions6204 returns a list of Gitlab::Diff::Suggestion6205 parsed suggestion has correct data6206 multi-line suggestions6207 returns a list of Gitlab::Diff::Suggestion6208 suggestion with above and below param has correct data6209 suggestion with above param has correct data6210 suggestion with below param has correct data6211Packages::Nuget::Metadatum6212 relationships6213 is expected to belong to package required: false inverse_of => nuget_metadatum6214 validations6215 is expected to validate that :package cannot be empty/falsy6216 is expected to validate that :authors cannot be empty/falsy6217 is expected to validate that the length of :authors is at most 2556218 is expected to validate that :description cannot be empty/falsy6219 is expected to validate that the length of :description is at most 40006220 #license_url6221 is expected to allow :license_url to be ‹"http://sandbox.com"›6222 is expected to allow :license_url to be ‹"https://sandbox.com"›6223 is expected not to allow :license_url to be ‹"123"›6224 is expected not to allow :license_url to be ‹"sandbox.com"›6225 #ensure_nuget_package_type6226 rejects if not linked to a nuget package6227 #project_url6228 is expected to allow :project_url to be ‹"http://sandbox.com"›6229 is expected to allow :project_url to be ‹"https://sandbox.com"›6230 is expected not to allow :project_url to be ‹"123"›6231 is expected not to allow :project_url to be ‹"sandbox.com"›6232 #ensure_nuget_package_type6233 rejects if not linked to a nuget package6234 #icon_url6235 is expected to allow :icon_url to be ‹"http://sandbox.com"›6236 is expected to allow :icon_url to be ‹"https://sandbox.com"›6237 is expected not to allow :icon_url to be ‹"123"›6238 is expected not to allow :icon_url to be ‹"sandbox.com"›6239 #ensure_nuget_package_type6240 rejects if not linked to a nuget package6241Database::CiProjectMirrorsConsistencyCheckWorker6242 #perform6243 executes the consistency check on projects6244 logs should contain the detailed mismatches6245 reports the differences to the logs6246 calls the consistency_fix_service to fix the inconsistencies6247Packages::BuildInfo6248 relationships6249 is expected to belong to package required: false6250 is expected to belong to pipeline required: false6251 with some build infos6252 .pluck_pipeline_ids6253 is expected to eq [122, 123, 124]6254 .without_empty_pipelines6255 is expected to contain exactly #<Packages::BuildInfo id: 1, package_id: 76, pipeline_id: 122>, #<Packages::BuildInfo id: 2, package_id: 76, pipeline_id: 123>, and #<Packages::BuildInfo id: 3, package_id: 76, pipeline_id: 124>6256 .order_by_pipeline_id asc6257 is expected to eq [#<Packages::BuildInfo id: 1, package_id: 76, pipeline_id: 122>, #<Packages::BuildInfo id: 2, package_id: 76, pipeline_id: 123>, #<Packages::BuildInfo id: 3, package_id: 76, pipeline_id: 124>]6258 .order_by_pipeline_id desc6259 is expected to eq [#<Packages::BuildInfo id: 3, package_id: 76, pipeline_id: 124>, #<Packages::BuildInfo id: 2, package_id: 76, pipeline_id: 123>, #<Packages::BuildInfo id: 1, package_id: 76, pipeline_id: 122>]6260 .with_pipeline_id_less_than6261 is expected to contain exactly #<Packages::BuildInfo id: 1, package_id: 76, pipeline_id: 122>6262 .with_pipeline_id_greater_than6263 is expected to contain exactly #<Packages::BuildInfo id: 3, package_id: 76, pipeline_id: 124>6264Banzai::Filter::SyntaxHighlightFilter6265 when no language is specified6266 highlights as plaintext6267 escapes HTML tags6268 when contains mermaid diagrams6269 ignores mermaid blocks6270 when <pre> contains multiple <code> tags6271 ignores the block6272 when <pre><code> is a child of <pre><code> which is a child of a div6273 captures all text and doesn't fail trying to replace a node with no parent6274 when a valid language is specified6275 highlights as that language6276 escapes HTML tags6277 when an invalid language is specified6278 highlights as plaintext6279 escapes HTML tags6280 languages that should be passed through6281 when math is specified6282 highlights as plaintext but with the correct language attribute and class6283 escapes HTML tags6284 when mermaid is specified6285 highlights as plaintext but with the correct language attribute and class6286 escapes HTML tags6287 when plantuml is specified6288 highlights as plaintext but with the correct language attribute and class6289 escapes HTML tags6290 when suggestion is specified6291 highlights as plaintext but with the correct language attribute and class6292 escapes HTML tags6293 when sourcepos metadata is available6294 includes it in the highlighted code block6295 escape sourcepos metadata to prevent XSS6296 when Rouge lexing fails6297 highlights as plaintext6298 escapes HTML tags6299 when Rouge lexing fails after a retry6300 does not add highlighting classes6301 escapes HTML tags6302 behaves like html filter timeout6303 when rendering takes too long6304 times out6305Gitlab::RobotsTxt::Parser6306 #disallowed?6307 a simple robots.txt file6308 path: "/autocomplete/users", result: true6309 is expected to eq true6310 path: "/autocomplete/users/a.html", result: true6311 is expected to eq true6312 path: "/search", result: true6313 is expected to eq true6314 path: "/search.html", result: true6315 is expected to eq true6316 path: "/api", result: true6317 is expected to eq true6318 path: "/api/grapql", result: true6319 is expected to eq true6320 path: "/api/index.html", result: true6321 is expected to eq true6322 path: "/projects", result: false6323 is expected to eq false6324 path: "/users", result: false6325 is expected to eq false6326 path: "/help", result: false6327 is expected to eq false6328 path: "/test", result: true6329 is expected to eq true6330 path: "/testfoo", result: false6331 is expected to eq false6332 path: "/ex$mple", result: true6333 is expected to eq true6334 path: "/ex$mplefoo", result: false6335 is expected to eq false6336 robots.txt file with wildcard6337 path: "/search", result: true6338 is expected to eq true6339 path: "/namespace/project.git", result: true6340 is expected to eq true6341 path: "/project/archive/", result: true6342 is expected to eq true6343 path: "/project/archive/file.gz", result: true6344 is expected to eq true6345 path: "/project/repository/archive", result: true6346 is expected to eq true6347 path: "/project/repository/archive.gz", result: true6348 is expected to eq true6349 path: "/project/repository/archive/file.gz", result: true6350 is expected to eq true6351 path: "/projects", result: false6352 is expected to eq false6353 path: "/git", result: false6354 is expected to eq false6355 path: "/projects/git", result: false6356 is expected to eq false6357 path: "/project/repository/archive/foo", result: false6358 is expected to eq false6359BoardPolicy6360 group board6361 user has access6362 is expected to be allowed :read_issue6363 user does not have access6364 is expected not to be allowed :read_issue6365 project board6366 user has access6367 is expected to be allowed :read_issue6368 user does not have access6369 is expected not to be allowed :read_issue6370 create_non_backlog_issues6371 for project boards6372 when user can admin project issues6373 allows to add non backlog issues from issue board6374 when user cannot admin project issues6375 does not allow to add non backlog issues from issue board6376 for group boards6377 when user is at least reporter in one of the child projects6378 allows to add non backlog issues from issue board6379 when user is not a reporter from any child projects6380 does not allow to add non backlog issues from issue board6381gitlab:external_diffs rake tasks6382 force_object_storage task6383 forces externally stored merge request diffs to object storage6384 limits batches according to BATCH_SIZE, START_ID, and END_ID6385Gitlab::Middleware::SameSiteCookies6386 #call6387 without SSL enabled6388 with cookie6389 does not add headers to cookies6390 with SSL enabled6391 with no cookies6392 does not add headers6393 with different browsers6394 description: "iOS 12", user_agent: "Mozilla/5.0 (iPhone; CPU iPhone OS 12_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1", expected: false6395 returns expected SameSite status6396 description: "macOS 10.14 + Safari", user_agent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Safari/605.1.15", expected: false6397 returns expected SameSite status6398 description: "macOS 10.14 + Opera", user_agent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.78 Safari/537.36 OPR/47.0.2631.55", expected: false6399 returns expected SameSite status6400 description: "macOS 10.14 + Chrome v80", user_agent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36", expected: true6401 returns expected SameSite status6402 description: "Chrome v41", user_agent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.1 Safari/537.36", expected: true6403 returns expected SameSite status6404 description: "Chrome v50", user_agent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2348.1 Safari/537.36", expected: true6405 returns expected SameSite status6406 description: "Chrome v51", user_agent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2718.15 Safari/537.36", expected: false6407 returns expected SameSite status6408 description: "Chrome v62", user_agent: "Mozilla/5.0 (Macintosh; Intel NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.62 Safari/537.36", expected: false6409 returns expected SameSite status6410 description: "Chrome v66", user_agent: "Mozilla/5.0 (Linux; Android 4.4.2; Avvio_793 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.126 Mobile Safari/537.36", expected: false6411 returns expected SameSite status6412 description: "Chrome v67", user_agent: "Mozilla/5.0 (Linux; Android 7.1.1; SM-J510F Build/NMF26X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3371.0 Mobile Safari/537.36", expected: true6413 returns expected SameSite status6414 description: "Chrome v85", user_agent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36", expected: true6415 returns expected SameSite status6416 description: "Chromium v66", user_agent: "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/66.0.3359.181 HeadlessChrome/66.0.3359.181 Safari/537.36", expected: false6417 returns expected SameSite status6418 description: "Chromium v85", user_agent: "Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/85.0.4183.59 Chrome/85.0.4183.59 Safari/537.36", expected: true6419 returns expected SameSite status6420 description: "UC Browser 12.0.4", user_agent: "Mozilla/5.0 (Linux; U; Android 4.4.4; zh-CN; A31 Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.0.4.986 Mobile Safari/537.36", expected: false6421 returns expected SameSite status6422 description: "UC Browser 12.13.0", user_agent: "Mozilla/5.0 (Linux; U; Android 7.1.1; en-US; SM-C9000 Build/NMF26X) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.13.0.1207 Mobile Safari/537.36", expected: false6423 returns expected SameSite status6424 description: "UC Browser 12.13.2", user_agent: "Mozilla/5.0 (Linux; U; Android 9; en-US; Redmi Note 7 Build/PQ3B.190801.002) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.13.2.1208 Mobile Safari/537.36", expected: true6425 returns expected SameSite status6426 description: "UC Browser 12.13.5", user_agent: "Mozilla/5.0 (Linux; U; Android 5.1.1; en-US; PHICOMM C630 (CLUE L) Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.13.5.1209 Mobile Safari/537.36", expected: true6427 returns expected SameSite status6428 description: "Playstation", user_agent: "Mozilla/5.0 (PlayStation 4 2.51) AppleWebKit/537.73 (KHTML, like Gecko)", expected: true6429 returns expected SameSite status6430 with single cookie6431 adds required headers6432 multiple cookies6433 adds required headers6434 multiple cookies with some missing headers6435 adds missing headers6436 multiple cookies with all headers present6437 does not add new headers6438Clusters::Management::ValidateManagementProjectPermissionsService6439 #execute6440 when management_project_id is nil6441 is expected to equal true6442 when management_project_id is not nil6443 when management_project does not exist6444 adds errors to the cluster and returns false6445 project cluster6446 when user is authorized to administer manangement_project6447 adds no error and returns true6448 when user is not authorized to adminster manangement_project6449 adds an error and returns false6450 when manangement_project is outside of the namespace scope6451 adds an error and returns false6452 group cluster6453 when user is authorized to administer manangement_project6454 adds no error and returns true6455 when user is not authorized to adminster manangement_project6456 adds an error and returns false6457 when manangement_project is outside of the namespace scope6458 adds an error and returns false6459 instance cluster6460 when user is authorized to administer manangement_project6461 adds no error and returns true6462 when user is not authorized to adminster manangement_project6463 adds an error and returns false6464Releases::Links::DestroyService6465 # order random6466 #execute6467 successfully deletes a release link6468 when user does not have access to delete release link6469 returns an error6470 when release link does not exist6471 returns an error6472 when release link deletion failed6473 returns an error6474BulkImports::Tracker6475 associations6476 is expected to belong to entity class_name => BulkImports::Entity required: true inverse_of => trackers6477 validations6478 is expected to validate that :relation cannot be empty/falsy6479 is expected to validate that :relation is case-sensitively unique within the scope of :bulk_import_entity_id6480 is expected to validate that :stage cannot be empty/falsy6481 when has_next_page is true6482 validates presence of `next_page`6483 .stage_running?6484 returns true if there is any unfinished pipeline in the given stage6485 returns false if there are no unfinished pipeline in the given stage6486 .next_pipeline_trackers_for6487 returns empty when all the stages pipelines are finished6488 returns the not started pipeline trackers from the minimum stage number6489 #pipeline_class6490 returns the pipeline class6491 raises an error when the pipeline is not valid6492Gitlab::HookData::BaseBuilder6493 #absolute_image_urls6494 with an upload prefix specified6495 relative image URL6496 is expected to eq ""6497 absolute upload URL6498 is expected to eq ""6499 absolute non-upload URL6500 is expected to eq ""6501 without an upload prefix specified6502 relative image URL6503 is expected to eq ""6504 absolute upload URL6505 is expected to eq ""6506 absolute non-upload URL6507 is expected to eq ""6508 HTTP URL6509 is expected to eq ""6510 HTTPS URL6511 is expected to eq ""6512 protocol-relative URL6513 is expected to eq ""6514 URL reference by title6515 is expected to eq "![foo]\n\n[foo]: foo.png"6516 URL reference by label6517 is expected to eq "![][foo]\n\n[foo]: foo.png"6518 in Markdown inline code block6519 is expected to eq "``"6520 in HTML tag on the same line6521 is expected to eq "<p></p>"6522 in Markdown multi-line code block6523 is expected to eq "```\n\n```"6524 in HTML tag on different lines6525 is expected to eq "<p>\n\n</p>"6526Gitlab::Git::Blame6527 blaming a file6528 has the right number of lines6529 blaming a range6530 only returns the range6531 ISO-8859 encoding6532 converts to UTF-86533 unknown encoding6534 converts to UTF-86535 renamed file6536 includes the previous path6537Gitlab::Ci::Config::Entry::Reports::CoverageReport6538 validations6539 when it is valid6540 is expected to be valid6541 is expected to eq {:coverage_format=>"cobertura", :path=>"cobertura-coverage.xml"}6542 when it is not a hash6543 config: "string"6544 is expected not to be valid6545 is expected to include /should be a hash/6546 config: true6547 is expected not to be valid6548 is expected to include /should be a hash/6549 config: []6550 is expected not to be valid6551 is expected to include /should be a hash/6552 with unsupported coverage format6553 is expected not to be valid6554 is expected to include /format must be one of supported formats/6555 without coverage format6556 is expected not to be valid6557 is expected to include /format can't be blank/6558 without path6559 is expected not to be valid6560 is expected to include /path can't be blank/6561 with invalid path6562 is expected not to be valid6563 is expected to include /path should be a string/6564 with unknown keys6565 is expected not to be valid6566 is expected to include /contains unknown keys/6567Gitlab::Database::AsyncConstraints::PostgresAsyncConstraintValidation6568 # order random6569 is expected to be a kind of Gitlab::Database::SharedModel(abstract)6570 validations6571 is expected to validate that :name cannot be empty/falsy6572 is expected to validate that :name is case-sensitively unique within the scope of :table_name6573 is expected to validate that the length of :name is at most 636574 is expected to validate that :table_name cannot be empty/falsy6575 is expected to validate that the length of :table_name is at most 636576 is expected to validate that the length of :last_error is at most 100006577 .constraint_type_exists?6578 is expected to be truthy6579 always asks the database6580 scopes6581 .ordered6582 is expected to eq [#<Gitlab::Database::AsyncConstraints::PostgresAsyncConstraintValidation id: 3, created_at: "2023-06-..."fk_users_id_2", table_name: "users", last_error: nil, attempts: 1, constraint_type: "foreign_key">]6583 .foreign_key_type6584 is expected to eq [#<Gitlab::Database::AsyncConstraints::PostgresAsyncConstraintValidation id: 4, created_at: "2023-06-..."fk_users_id_4", table_name: "users", last_error: nil, attempts: 1, constraint_type: "foreign_key">]6585 does not apply the filter if the column is not present6586 .check_constraint_type6587 is expected to eq [#<Gitlab::Database::AsyncConstraints::PostgresAsyncConstraintValidation id: 9, created_at: "2023-06-...sers_id_9", table_name: "users", last_error: nil, attempts: 0, constraint_type: "check_constraint">]6588 .table_available?6589 is expected to be truthy6590 when the table does not exist6591 is expected to be falsy6592 #handle_exception!6593 increases the attempts number6594 saves error details6595SuggestionEntity6596 exposes correct attributes6597 exposes current user abilities6598 inapplicable_reason6599 when user can apply suggestion6600 returns the inapplicable reason6601 when user cannot apply suggestion6602 returns appropriate message6603gitlab:artifacts rake tasks6604 check6605 outputs the integrity check for each batch6606 errors out about missing files on the file system6607 errors out about invalid checksum6608 errors out about missing checksum6609Metrics::Dashboard::TransientEmbedService6610 .valid_params?6611 is expected to be truthy6612 missing embedded6613 is expected to be falsey6614 not embedded6615 is expected to be falsey6616 missing embed_json6617 is expected to be falsey6618 #get_dashboard6619 caches the unprocessed dashboard for subsequent calls6620 caches unique requests separately6621 behaves like valid embedded dashboard service response6622 behaves like valid dashboard service response for schema6623 returns a json representation of the dashboard6624 behaves like raises error for users with insufficient permissions6625 when the user does not have sufficient access6626 behaves like misconfigured dashboard service response6627 returns an appropriate message and status code6628 when the user is anonymous6629 behaves like misconfigured dashboard service response6630 returns an appropriate message and status code6631 when embed_json cannot be parsed as json6632 behaves like misconfigured dashboard service response6633 returns an appropriate message and status code6634ShaAttribute6635 .sha_attribute6636 defines a SHA attribute with Gitlab::Database::ShaAttribute type6637 .sha256_attribute6638 defines a SHA256 attribute with Gitlab::Database::ShaAttribute type6639 .load_schema!6640 column_name: binary_column, environment: "development", expected_error: :no_error6641 with sha_attribute6642 validates column type6643 with sha256_attribute6644 validates column type6645 column_name: binary_column, environment: "production", expected_error: :no_error6646 with sha_attribute6647 validates column type6648 with sha256_attribute6649 validates column type6650 column_name: text_column, environment: "development", expected_error: :sha_mismatch_error6651 with sha_attribute6652 validates column type6653 with sha256_attribute6654 validates column type6655 column_name: text_column, environment: "production", expected_error: :no_error6656 with sha_attribute6657 validates column type6658 with sha256_attribute6659 validates column type6660 column_name: :__non_existent_column, environment: "development", expected_error: :no_error6661 with sha_attribute6662 validates column type6663 with sha256_attribute6664 validates column type6665 column_name: :__non_existent_column, environment: "production", expected_error: :no_error6666 with sha_attribute6667 validates column type6668 with sha256_attribute6669 validates column type6670Gitlab::Metrics::Dashboard::Validator::Errors6671 Gitlab::Metrics::Dashboard::Validator::Errors::SchemaValidationError6672 empty error hash6673 uses default error message6674 formatted message6675 for root object6676 when required keys are missing6677 is expected to eq "root is missing required keys: one"6678 when there is type mismatch6679 on type: null6680 is expected to eq "'property_name' at root is not of type: null"6681 on type: string6682 is expected to eq "'property_name' at root is not of type: string"6683 on type: boolean6684 is expected to eq "'property_name' at root is not of type: boolean"6685 on type: integer6686 is expected to eq "'property_name' at root is not of type: integer"6687 on type: number6688 is expected to eq "'property_name' at root is not of type: number"6689 on type: array6690 is expected to eq "'property_name' at root is not of type: array"6691 on type: object6692 is expected to eq "'property_name' at root is not of type: object"6693 for nested object6694 when required keys are missing6695 is expected to eq "/nested_objects/0 is missing required keys: two"6696 when there is type mismatch6697 on type: null6698 is expected to eq "'property_name' at /nested_objects/0 is not of type: null"6699 on type: string6700 is expected to eq "'property_name' at /nested_objects/0 is not of type: string"6701 on type: boolean6702 is expected to eq "'property_name' at /nested_objects/0 is not of type: boolean"6703 on type: integer6704 is expected to eq "'property_name' at /nested_objects/0 is not of type: integer"6705 on type: number6706 is expected to eq "'property_name' at /nested_objects/0 is not of type: number"6707 on type: array6708 is expected to eq "'property_name' at /nested_objects/0 is not of type: array"6709 on type: object6710 is expected to eq "'property_name' at /nested_objects/0 is not of type: object"6711 when data does not match pattern6712 is expected to eq "'property_name' at /nested_objects/0 does not match pattern: aa.*"6713 when data does not match format6714 is expected to eq "'property_name' at /nested_objects/0 does not match format: date-time"6715 when data is not const6716 is expected to eq "'property_name' at /nested_objects/0 is not: \"one\""6717 when data is not included in enum6718 is expected to eq "'property_name' at /nested_objects/0 is not one of: [\"one\", \"two\"]"6719 when data is not included in enum6720 is expected to eq "'property_name' at /nested_objects/0 is invalid: error_type=unknown"6721 Gitlab::Metrics::Dashboard::Validator::Errors::DuplicateMetricIds6722 has custom error message6723Integrations::Harbor6724 behaves like Integrations::ResetSecretFields6725 #exposing_secrets_fields6726 returns an array of strings6727 #reset_secret_fields?6728 returns false if no exposing field has changed6729 returns true if any exposing field has changed6730 validation callback6731 when an exposing field has changed6732 clears all secret fields6733 when a secret field has been updated6734 does not clear this secret field6735 when a secret field has been updated with the same value6736 does not clear this secret field6737 when no exposing field has changed6738 does not clear any secret fields6739 masked password6740 is expected not to allow :password to be ‹"hello"›6741 is expected not to allow :password to be ‹"hello world"›6742 is expected not to allow :password to be ‹"hello$VARIABLEworld"›6743 is expected not to allow :password to be ‹"hello\\rworld"›6744 is expected to allow :password to be ‹"helloworld"›6745 url6746 is expected not to allow :url to be ‹"https://192.168.1.1"›6747 is expected not to allow :url to be ‹"https://127.0.0.1"›6748 is expected to allow :url to be ‹"https://demo.goharbor.io"›6749 hostname6750 returns the host of the integration url6751 #fields6752 returns custom fields6753 #test6754 gets response from Gitlab::Harbor::Client#ping6755 #help6756 renders prompt information6757 .to_param6758 returns the name of the integration6759 ci variables6760 returns vars when harbor_integration is activated6761 when harbor_integration is inactive6762 returns []6763 with robot username6764 returns username variable with $$6765Gitlab::Usage::Metrics::Instrumentations::InProductMarketingEmailCtaClickedMetric6766 # order random6767 behaves like a correct instrumented metric value and query6768 behaves like a correct instrumented metric value6769 has correct value6770 behaves like a correct instrumented metric query6771 has correct generate query6772 options_key: :track, valid_value: "admin_verify", invalid_value: "invite_team"6773 raises an exception if option is not present6774 raises an exception if option has invalid value6775 doesn't raise exceptions if option has valid value6776 options_key: :series, valid_value: 1, invalid_value: 56777 raises an exception if option is not present6778 raises an exception if option has invalid value6779 doesn't raise exceptions if option has valid value6780WorkItems::Widgets::DescriptionService::UpdateService6781 #update6782 when user has permission to update description6783 when user is work item author6784 behaves like sets work item description6785 correctly sets work item description value6786 when user is a project reporter6787 behaves like sets work item description6788 correctly sets work item description value6789 when description is nil6790 behaves like sets work item description6791 correctly sets work item description value6792 when description is empty6793 behaves like sets work item description6794 correctly sets work item description value6795 when description param is not present6796 behaves like does not set work item description6797 does not change work item description value6798 when widget does not exist in new type6799 resets the work item's description6800 when user does not have permission to update description6801 when user is a project guest6802 behaves like does not set work item description6803 does not change work item description value6804 with private project6805 when user is work item author6806 behaves like does not set work item description6807 does not change work item description value6808API::Entities::Ci::JobRequest::Dependency6809 returns the dependency id6810 returns the dependency name6811 returns the token belonging to the running job6812 returns the dependency artifacts_file6813Users::EmailVerification::ValidateTokenService6814 #execute6815 with a valid attribute6816 attr: :unlock_token6817 when successful6818 returns a success status6819 when rate limited6820 returns a failure status6821 when expired6822 returns a failure status6823 when invalid6824 returns a failure status6825 when encrypted token was not set and a blank token is provided6826 returns a failure status6827 attr: :confirmation_token6828 when successful6829 returns a success status6830 when rate limited6831 returns a failure status6832 when expired6833 returns a failure status6834 when invalid6835 returns a failure status6836 when encrypted token was not set and a blank token is provided6837 returns a failure status6838 with an invalid attribute6839 raises an error6840RuboCop::Cop::RSpec::FactoryBot::LocalStaticAssignment6841 # order random6842 does not flag local assignments in unrelated blocks6843 behaves like local static assignment6844 flags static local assignment in `factory :project`6845 does not flag correct use6846 behaves like local static assignment6847 flags static local assignment in `transient`6848 does not flag correct use6849 behaves like local static assignment6850 flags static local assignment in `trait :closed`6851 does not flag correct use6852Gitlab::Diff::Line6853 .init_from_hash6854 behaves like line object initialized by hash6855 round-trips correctly with to_hash6856 .safe_init_from_hash6857 ensures rich_text is HTML-safe6858 behaves like line object initialized by hash6859 round-trips correctly with to_hash6860 when given hash has no rich_text6861 behaves like line object initialized by hash6862 round-trips correctly with to_hash6863 #text6864 returns raw diff text6865 when prefix is disabled6866 returns raw diff text without prefix6867 when diff is empty6868 returns an empty raw diff6869 when setting rich text6870 escapes any HTML special characters in the diff chunk header6871 #set_marker_ranges6872 stores MarkerRanges in Diff::Line object6873Projects::BranchesByModeService6874 #execute6875 page is passed6876 uses offset pagination6877 but the page does not contain any branches6878 uses offset pagination6879 search is passed6880 uses offset pagination6881 branch_list_keyset_pagination is disabled6882 uses offset pagination6883 uses gitaly pagination6884 returns branches for the first page6885 when second page is requested6886 returns branches for the first page6887 when last page is requested6888 returns branches after the specified branch6889 filter by mode6890 stale6891 returns stale branches6892 active6893 returns active branches6894Gitlab::Daemon6895 .instance6896 provides instance of Daemon6897 subsequent invocations provide the same instance6898 creates at_exit hook when instance is created6899 .initialize_instance6900 provides instance of Daemon6901 when instance has already been created6902 and recreate flag is false6903 raises an error6904 and recreate flag is true6905 calls stop on existing instance and returns new instance6906 when Daemon is enabled6907 when Daemon is stopped6908 #start6909 starts the Daemon6910 @synchronous6911 when @synchronous is set to true6912 calls join on the thread6913 when @synchronous is not set to a truthy value6914 does not call join on the thread6915 #stop6916 doesn't shutdown stopped Daemon6917 #start_working6918 when start_working fails6919 does not start thread6920 when Daemon is running6921 #start6922 doesn't start running Daemon6923 #stop6924 shutdowns Daemon6925 when stop_working raises exception6926#<Thread:0x00007fa8f09aae20 /builds/gitlab-org/gitlab/lib/gitlab/daemon.rb:56 run> terminated with exception (report_on_exception is true):6927Interrupt (Interrupt)6928 shutdowns Daemon6929 when Daemon is disabled6930 #start6931 doesn't start working6932 #stop6933 doesn't stop working6934Gitlab::Auth::TwoFactorAuthVerifier6935 #two_factor_authentication_enforced?6936 instance_level_enabled: false, group_level_enabled: false, grace_period_expired: true, should_be_enforced: false6937 is expected to eq false6938 instance_level_enabled: true, group_level_enabled: false, grace_period_expired: false, should_be_enforced: false6939 is expected to eq false6940 instance_level_enabled: true, group_level_enabled: false, grace_period_expired: true, should_be_enforced: true6941 is expected to eq true6942 instance_level_enabled: false, group_level_enabled: true, grace_period_expired: false, should_be_enforced: false6943 is expected to eq false6944 instance_level_enabled: false, group_level_enabled: true, grace_period_expired: true, should_be_enforced: true6945 is expected to eq true6946 #two_factor_authentication_required?6947 instance_level_enabled: true, group_level_enabled: false, should_be_required: true6948 is expected to eq true6949 instance_level_enabled: false, group_level_enabled: true, should_be_required: true6950 is expected to eq true6951 instance_level_enabled: false, group_level_enabled: false, should_be_required: false6952 is expected to eq false6953 #current_user_needs_to_setup_two_factor?6954 returns false when current_user is nil6955 returns false when current_user does not have temp email6956 returns false when current_user has 2fa disabled6957 returns true when user requires 2fa authentication6958 #two_factor_grace_period6959 returns grace period from settings if there is no period from groups6960 returns grace period from groups if there is no period from settings6961 returns minimal grace period if there is grace period from settings and from group6962 #two_factor_grace_period_expired?6963 returns true if the grace period has expired6964 returns false if the grace period has not expired6965 when otp_grace_period_started_at is nil6966 returns false6967Preloaders::UserMaxAccessLevelInProjectsPreloader6968 without preloader6969 runs some queries6970 #execute6971 when user is present6972 avoids N+1 queries6973 when projects is an array of IDs6974 avoids N+1 queries6975 when projects is a relation including project_authorizations6976 avoids N+1 queries6977 when user is not present6978 does not avoid N+1 queries6979GpgKeys::CreateService6980 creates a gpg key6981 notification6982 sends a notification6983 when the public key contains subkeys6984 generates the gpg subkeys6985Sidebars::Projects::Menus::IssuesMenu6986 behaves like serializable as super_sidebar_menu_args6987 returns hash with provided attributes6988 returns hash with an item_id6989 #render?6990 when user can read issues6991 returns true6992 when user cannot read issues6993 returns false6994 #has_pill?6995 when issues feature is enabled6996 returns true6997 when issue feature is disabled6998 returns false6999 #pill_count7000 returns zero when there are no open issues7001 memoizes the query7002 when there are open issues7003 returns the number of open issues7004 formatting7005 returns truncated digits for count value over 10007006Mutations::Todos::MarkAllDone7007 is expected to require graphql authorizations :update_user7008 #resolve7009 marks all pending todos as done7010 behaves as expected if there are no todos for the requesting user7011 when user is not logged in7012 fails with the expected error7013WorkItems::DeleteTaskService7014 #execute7015 when work item params are valid7016 is expected to be success7017 deletes the work item and the related issue link7018 removes the task list item with the work item reference7019 when first operation fails7020 behaves like failing WorkItems::DeleteTaskService7021 is expected to be error7022 does not remove work item or issue links7023 returns an error message7024 when last operation fails7025 behaves like failing WorkItems::DeleteTaskService7026 is expected to be error7027 does not remove work item or issue links7028 returns an error message7029Gitlab::AlertManagement::Fingerprint7030 .generate7031 when data is an array7032 returns the hashed fingerprint7033 with a variety of data7034 data: 1117035 performs like a hashed fingerprint7036 data: "fingerprint"7037 performs like a hashed fingerprint7038 data: :fingerprint7039 performs like a hashed fingerprint7040 data: true7041 performs like a hashed fingerprint7042 when data is a hash7043 behaves like fingerprinted Hash7044 performs like a hashed fingerprint7045 hashes with different order7046 calculates the same result7047 hash is too large7048 raises an error7049JiraConnectSubscription7050 associations7051 is expected to belong to installation class_name => JiraConnectInstallation required: false7052 is expected to belong to namespace class_name => Namespace required: false7053 validations7054 is expected to validate that :installation cannot be empty/falsy7055 is expected to validate that :namespace cannot be empty/falsy7056events/event/_push.html.haml7057 with a branch7058 links to the branch7059 that has been deleted7060 does not link to the branch7061 ref_count is more than 17062 includes the count in the text7063 with a tag7064 links to the tag7065 that has been deleted7066 does not link to the tag7067 ref_count is more than 17068 includes the count in the text7069Gitlab::Auth::Ldap::AuthHash7070 without overridden attributes7071 has the correct username7072 has the correct name7073 with overridden attributes7074 has the correct username7075 has the correct name7076 #uid7077 when there is extraneous (but valid) whitespace7078 removes the extraneous whitespace7079 when there are upper case characters7080 downcases7081 #username7082 if lowercase_usernames setting is7083 enabled the username attribute is lower cased7084 disabled the username attribute is not lower cased7085Gitlab::Usage::Metrics::Instrumentations::WorkItemsActivityAggregatedMetric7086 # order random7087 time_frame: "28d"7088 #available?7089 returns false without track_work_items_activity feature7090 returns true with track_work_items_activity feature7091 #value7092 has correct value after events are tracked7093 time_frame: "7d"7094 #available?7095 returns false without track_work_items_activity feature7096 returns true with track_work_items_activity feature7097 #value7098 has correct value after events are tracked7099Gitlab::Ci::Config::Entry::Hidden7100 .matching?7101 when name starts with dot7102 is expected to be truthy7103 when name does not start with dot7104 is expected to be falsey7105 .new7106 validations7107 when entry config value is correct7108 #value7109 returns key value7110 #valid?7111 is valid7112 when entry value is not correct7113 when config is empty7114 #valid7115 is invalid7116 #leaf?7117 is a leaf7118 #relevant?7119 is not a relevant entry7120DependencyProxy::RequestTokenService7121 remote request is successful7122 is expected to eq :success7123 is expected to eq "a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3"7124 remote request is not found7125 is expected to eq :error7126 is expected to eq 4047127 is expected to eq "Expected 200 response code for an access token"7128 failed to parse response body7129 is expected to eq :error7130 is expected to eq 5007131 is expected to eq "Failed to parse a response body for an access token"7132 net timeout exception7133 is expected to eq :error7134 is expected to eq 5997135 is expected to eq "execution expired"7136Tooling::Danger::AnalyticsInstrumentation7137 #check!7138 with growth experiment label7139 doesn't add new labels7140 doesn't add new warnings7141 without growth experiment label7142 with approved label7143 doesn't add new labels7144 doesn't add new warnings7145 without approved label7146For the following files, a review from the [Data team and Analytics Instrumentation team](https://gitlab.com/groups/gitlab-org/analytics-section/analytics-instrumentation/engineers/-/group_members?with_inherited_permissions=exclude) is recommended7147Please check the ~"analytics instrumentation" [Service Ping guide](https://docs.gitlab.com/ee/development/service_ping/) or the [Snowplow guide](https://docs.gitlab.com/ee/development/snowplow/).7148For MR review guidelines, see the [Service Ping review guidelines](https://docs.gitlab.com/ee/development/service_ping/review_guidelines.html) or the [Snowplow review guidelines](https://docs.gitlab.com/ee/development/snowplow/review_guidelines.html).7149markdown formatted list7150 adds new labels7151For the following files, a review from the [Data team and Analytics Instrumentation team](https://gitlab.com/groups/gitlab-org/analytics-section/analytics-instrumentation/engineers/-/group_members?with_inherited_permissions=exclude) is recommended7152Please check the ~"analytics instrumentation" [Service Ping guide](https://docs.gitlab.com/ee/development/service_ping/) or the [Snowplow guide](https://docs.gitlab.com/ee/development/snowplow/).7153For MR review guidelines, see the [Service Ping review guidelines](https://docs.gitlab.com/ee/development/service_ping/review_guidelines.html) or the [Snowplow review guidelines](https://docs.gitlab.com/ee/development/snowplow/review_guidelines.html).7154markdown formatted list7155 receives all the changed files by calling the correct helper method7156 warns with proper message7157 with analytics instrumentation::review pending label7158For the following files, a review from the [Data team and Analytics Instrumentation team](https://gitlab.com/groups/gitlab-org/analytics-section/analytics-instrumentation/engineers/-/group_members?with_inherited_permissions=exclude) is recommended7159Please check the ~"analytics instrumentation" [Service Ping guide](https://docs.gitlab.com/ee/development/service_ping/) or the [Snowplow guide](https://docs.gitlab.com/ee/development/snowplow/).7160For MR review guidelines, see the [Service Ping review guidelines](https://docs.gitlab.com/ee/development/service_ping/review_guidelines.html) or the [Snowplow review guidelines](https://docs.gitlab.com/ee/development/snowplow/review_guidelines.html).7161markdown formatted list7162 doesn't add new labels7163 with analytics instrumentation::approved label7164 doesn't add new labels7165 with the analytics instrumentation label7166 with ci? false7167For the following files, a review from the [Data team and Analytics Instrumentation team](https://gitlab.com/groups/gitlab-org/analytics-section/analytics-instrumentation/engineers/-/group_members?with_inherited_permissions=exclude) is recommended7168Please check the ~"analytics instrumentation" [Service Ping guide](https://docs.gitlab.com/ee/development/service_ping/) or the [Snowplow guide](https://docs.gitlab.com/ee/development/snowplow/).7169For MR review guidelines, see the [Service Ping review guidelines](https://docs.gitlab.com/ee/development/service_ping/review_guidelines.html) or the [Snowplow review guidelines](https://docs.gitlab.com/ee/development/snowplow/review_guidelines.html).7170markdown formatted list7171 doesn't add new labels7172 with ci? true7173For the following files, a review from the [Data team and Analytics Instrumentation team](https://gitlab.com/groups/gitlab-org/analytics-section/analytics-instrumentation/engineers/-/group_members?with_inherited_permissions=exclude) is recommended7174Please check the ~"analytics instrumentation" [Service Ping guide](https://docs.gitlab.com/ee/development/service_ping/) or the [Snowplow guide](https://docs.gitlab.com/ee/development/snowplow/).7175For MR review guidelines, see the [Service Ping review guidelines](https://docs.gitlab.com/ee/development/service_ping/review_guidelines.html) or the [Snowplow review guidelines](https://docs.gitlab.com/ee/development/snowplow/review_guidelines.html).7176markdown formatted list7177 adds new labels7178For the following files, a review from the [Data team and Analytics Instrumentation team](https://gitlab.com/groups/gitlab-org/analytics-section/analytics-instrumentation/engineers/-/group_members?with_inherited_permissions=exclude) is recommended7179Please check the ~"analytics instrumentation" [Service Ping guide](https://docs.gitlab.com/ee/development/service_ping/) or the [Snowplow guide](https://docs.gitlab.com/ee/development/snowplow/).7180For MR review guidelines, see the [Service Ping review guidelines](https://docs.gitlab.com/ee/development/service_ping/review_guidelines.html) or the [Snowplow review guidelines](https://docs.gitlab.com/ee/development/snowplow/review_guidelines.html).7181markdown formatted list7182 receives all the changed files by calling the correct helper method7183 #check_affected_scopes!7184 when a model was modified7185 when a scope is changed7186 and a metrics uses the affected scope7187 producing warning7188 when no metrics using the affected scope7189 doesnt do anything7190 when an unrelated model with matching scope was modified7191 doesnt do anything7192 when models arent modified7193 doesnt do anything7194 #check_usage_data_insertions!7195 when usage_data.rb is modified7196 and has insertions7197 produces warning7198 and changes are not insertions7199 doesnt do anything7200 when usage_data.rb is not modified7201 and another file has insertions7202 doesnt do anything7203Ci::FreezePeriodsFinder7204 # order random7205 when user is a maintainer7206 behaves like returns freeze_periods ordered by created_at asc7207 returns freeze_periods ordered by created_at7208 when user is a guest7209 behaves like returns nothing7210 is expected to be empty7211 when user is not a project member7212 behaves like returns nothing7213 is expected to be empty7214 when project is public7215 behaves like returns nothing7216 is expected to be empty7217 when user is a developer7218 behaves like returns freeze_periods ordered by created_at asc7219 returns freeze_periods ordered by created_at7220Projects::GroupLinks::DestroyService#execute7221 removes group from project7222 returns false if group_link is blank7223 project authorizations refresh7224 calls AuthorizedProjectUpdate::ProjectRecalculateWorker to update project authorizations7225 calls AuthorizedProjectUpdate::UserRefreshFromReplicaWorker with a delay to update project authorizations7226 updates project authorizations of users who had access to the project via the group share7227 todos cleanup7228 when project is private7229 triggers todos cleanup7230 when project is public or internal7231 when project is public7232 behaves like removes confidential todos7233 does not trigger todos cleanup7234 when project is internal7235 behaves like removes confidential todos7236 does not trigger todos cleanup7237Milestones::CloseService7238 #execute7239 is expected to be valid7240 is expected to be closed7241 event7242 is expected to be truthy7243 is expected to eq #<Milestone id:65 namespace757/project-826%"Milestone v1.2">7244 is expected to eq "closed"7245Releases::Links::UpdateService7246 # order random7247 #execute7248 successfully updates a release link7249 when user does not have access to update release link7250 returns an error7251 when url is invalid7252 returns an error7253 when both direct_asset_path and filepath are provided7254 prefers direct_asset_path7255 when only filepath is set7256 uses filepath7257projects/pages_domains/show7258 when auto_ssl is enabled7259 when domain is disabled7260 shows verification warning7261 when certificate is absent7262 shows alert about time of obtaining certificate7263Gitlab::UsageDataCounters::IpynbDiffActivityCounter7264 #track_note_created_in_ipynb_diff7265 note is for commit7266 behaves like an action that tracks events7267 is expected to change `event_count(action)` by 2 and change `event_count(per_user_action)` by 17268 behaves like an action that tracks events7269 is expected to change `event_count(action)` by 2 and change `event_count(per_user_action)` by 17270 behaves like an action that does not track events7271 is expected to change `event_count(action)` by 0 and change `event_count(per_user_action)` by 07272 note is for MR7273 behaves like an action that tracks events7274 is expected to change `event_count(action)` by 2 and change `event_count(per_user_action)` by 17275 behaves like an action that tracks events7276 is expected to change `event_count(action)` by 2 and change `event_count(per_user_action)` by 17277 behaves like an action that does not track events7278 is expected to change `event_count(action)` by 0 and change `event_count(per_user_action)` by 07279 note is for neither MR nor Commit7280 behaves like an action that does not track events7281 is expected to change `event_count(action)` by 0 and change `event_count(per_user_action)` by 07282 behaves like an action that does not track events7283 is expected to change `event_count(action)` by 0 and change `event_count(per_user_action)` by 07284 behaves like an action that does not track events7285 is expected to change `event_count(action)` by 0 and change `event_count(per_user_action)` by 07286Gitlab::Ci::Interpolation::Access7287 # order random7288 properly evaluates the access pattern7289 when there are not enough objects in the access path7290 returns an error when there are no objects found7291 when access expression size is too large7292 returns an error7293 when there are too many objects in the access path7294 only support MAX_ACCESS_OBJECTS steps7295LabelSerializer7296 #represent7297 when a single object is being serialized7298 serializes the label object7299 when multiple objects are being serialized7300 serializes the array of labels7301 #represent_appearance7302 when represents only appearance7303 serializes only attributes used for appearance7304Resolvers::Ci::ProjectPipelineCountsResolver7305 #resolve7306 counts pipelines7307 counts by ref7308 counts by sha7309 counts by source7310Gitlab::Ci::Status::Scheduled7311 #text7312 is expected to eq "delayed"7313 #label7314 is expected to eq "delayed"7315 #icon7316 is expected to eq "status_scheduled"7317 #favicon7318 is expected to eq "favicon_status_scheduled"7319 #group7320 is expected to eq "scheduled"7321 #details_path7322 is expected to be nil7323Projects::PipelineHelper7324 #js_pipeline_tabs_data7325 returns pipeline tabs data7326 #js_pipeline_details_header_data7327 returns pipeline details header data7328TokenWithIv7329 validations7330 is expected to validate that :hashed_token cannot be empty/falsy7331 is expected to validate that :iv cannot be empty/falsy7332 is expected to validate that :hashed_plaintext_token cannot be empty/falsy7333 .find_by_hashed_token7334 only includes matching record7335 .find_by_plaintext_token7336 only includes matching record7337Integrations::BaseIssueTracker7338 default values7339 is expected to eq :issue_tracker7340 Validations7341 only one issue tracker per project7342 when integration is changed manually by user7343 executes the validation7344 when integration is changed internally7345 does not execute the validation7346 #activate_disabled_reason7347 when there is an existing issue tracker integration7348 is expected to eq {:trackers=>[#<Integrations::CustomIssueTracker id: 68, project_id: 744, created_at: "2023-06-02 06:4...ncrypted_properties_iv: "4\x87\x81;E\xDD<w\xAE\x15q\x03", incident_events: false, properties: nil>]}7349 when there is no existing issue tracker integration7350 is expected to equal nil7351MergeRequest::ApprovalRemovalSettings7352 validations7353 when enabling selective_code_owner_removals and reset_approvals_on_push is disabled7354 is expected to be valid7355 when enabling selective_code_owner_removals and reset_approvals_on_push is enabled7356 is expected not to be valid7357 when enabling reset_approvals_on_push and selective_code_owner_removals is disabled7358 is expected to be valid7359 when enabling reset_approvals_on_push and selective_code_owner_removals is enabled7360 is expected not to be valid7361 when enabling reset_approvals_on_push and selective_code_owner_removals7362 is expected not to be valid7363SystemHookUrlValidator7364 #validate7365 with no options7366 allows http,https schemes by default7367 checks that the url structure is valid7368 with schemes7369 allows urls with the defined schemes7370 add error if the url scheme does not match the selected ones7371 by default7372 blocks urls pointing to localhost7373 blocks urls pointing to the local network7374 when local requests are allowed7375 does not block urls pointing to localhost7376 does not block urls pointing to the local network7377AnyFieldValidator7378 when validation is instantiated correctly7379 raises an error if no fields are defined7380 validates if only one field is present7381 when validation is missing the fields parameter7382 raises an error7383Gitlab::QueryLimiting::Transaction7384 .current7385 returns nil when there is no transaction7386 returns the transaction when present7387 .run7388 runs a transaction and returns it and its return value7389 removes the transaction from the current thread upon completion7390 #act_upon_results7391 when the query threshold is not exceeded7392 does nothing7393 when the query threshold is exceeded7394 raises an error when this is enabled7395 #increment7396 increments the number of executed queries7397 does not increment the number of executed queries when query limiting is disabled7398 does not increment the number of executed queries when the query is known to be ignorable7399 #raise_error?7400 returns true in a test environment7401 returns false in a production environment7402 #threshold_exceeded?7403 returns false when the threshold is not exceeded7404 returns true when the threshold is exceeded7405 #error_message7406 returns the error message to display when the threshold is exceeded7407 includes a list of executed queries7408 indicates if the log is truncated7409 includes the action name in the error message when present7410Gitlab::SampleDataTemplate7411 .all7412 returns all templates7413 .find7414 when there is a match7415 is expected to be a kind of Gitlab::SampleDataTemplate7416 when there is no match7417 is expected to equal nil7418 .archive_directory7419 is expected to be a kind of Pathname7420 validate all templates7421 sample has a valid archive7422 with valid parameters7423 can be imported7424Gitlab::UrlBlockers::IpAllowlistEntry7425 #initialize7426 initializes without port7427 initializes with port7428 #match?7429 matches with equivalent IP and port7430 matches any port when port is nil7431 does not match when port is present but requested_port is nil7432 matches when port and requested_port are nil7433 works with ipv67434 matches ipv4 within IPv4 range7435 matches IPv6 within IPv6 range7436 matches IPv4 to IPv6 mapped addresses in allow list7437 matches IPv4 to IPv6 mapped addresses in requested IP7438FailedTests7439 # order random7440 missing report file7441[FailedTests] Creating output directory...7442 does not fail for output files7443 returns empty results for suite failures7444 #output_failed_tests7445 with a valid report file7446[FailedTests] Detected 1 failed tests in suite rspec...7447[FailedTests] Detected 1 failed tests in suite rspec_ee...7448 writes the file for the suite7449 when given a valid format7450[FailedTests] Detected 1 failed tests in suite rspec...7451[FailedTests] Detected 1 failed tests in suite rspec_ee...7452 writes the file for the suite7453 when given an invalid format7454[FailedTests] Detected 1 failed tests in suite rspec...7455 raises an exception7456 empty report7457 does not fail for output files7458 returns empty results for suite failures7459Gitlab::JobWaiter7460 .notify7461 pushes the jid to the named queue7462 .generate_key7463 generates and return a new key7464 #wait7465 returns when all jobs have been completed7466 times out if not all jobs complete7467 when a label is provided7468 increments just job_waiter_started_total when all jobs complete7469 increments job_waiter_started_total and job_waiter_timeouts_total when it times out7470NumbersHelper7471 #limited_counter_with_delimiter7472 count: 9, options: {:limit=>10}, expected_result: "9"7473 is expected to eq "9"7474 count: 10, options: {:limit=>10}, expected_result: "10"7475 is expected to eq "10"7476 count: 11, options: {:limit=>10}, expected_result: "10+"7477 is expected to eq "10+"7478 count: 12, options: {:limit=>10}, expected_result: "10+"7479 is expected to eq "10+"7480 count: 999, options: {}, expected_result: "999"7481 is expected to eq "999"7482 count: 1000, options: {}, expected_result: "1,000"7483 is expected to eq "1,000"7484 count: 1001, options: {}, expected_result: "1,000+"7485 is expected to eq "1,000+"7486 count: 1002, options: {}, expected_result: "1,000+"7487 is expected to eq "1,000+"7488Banzai::Filter::AttributesFilter7489 # order random7490 attribute syntax7491 when attribute syntax is valid7492 text: "<img src=\"example.jpg\">{width=100}", result: "<img src=\"example.jpg\" width=\"100\">"7493 adds them to the img7494 text: "<img src=\"example.jpg\">{ width=100 }", result: "<img src=\"example.jpg\" width=\"100\">"7495 adds them to the img7496 text: "<img src=\"example.jpg\">{width=\"100\"}", result: "<img src=\"example.jpg\" width=\"100\">"7497 adds them to the img7498 text: "<img src=\"example.jpg\">{width=100 width=200}", result: "<img src=\"example.jpg\" width=\"200\">"7499 adds them to the img7500 text: "<img src=\"example.jpg\">{.test_class width=100 style=\"width:400\"}", result: "<img src=\"example.jpg\" width=\"100\">"7501 adds them to the img7502 text: "<img src=\"example.jpg\" class=\"lazy\" />{width=100}", result: "<img src=\"example.jpg\" class=\"lazy\" width=\"100\">"7503 adds them to the img7504 when attribute syntax is invalid7505 text: "<img src=\"example.jpg\"> {width=100}", result: "<img src=\"example.jpg\"> {width=100}"7506 does not recognize as attributes7507 text: "<img src=\"example.jpg\">{width=100\nheight=100}", result: "<img src=\"example.jpg\">{width=100\nheight=100}"7508 does not recognize as attributes7509 text: "{width=100 height=100}\n<img src=\"example.jpg\">", result: "{width=100 height=100}\n<img src=\"example.jpg\">"7510 does not recognize as attributes7511 text: "<h1>header</h1>{width=100}", result: "<h1>header</h1>{width=100}"7512 does not recognize as attributes7513 height and width7514 when size attributes are valid7515 text: "<img src=\"example.jpg\">{width=100 height=200px}", result: "<img src=\"example.jpg\" width=\"100\" height=\"200px\">"7516 adds them to the img7517 text: "<img src=\"example.jpg\">{width=100}", result: "<img src=\"example.jpg\" width=\"100\">"7518 adds them to the img7519 text: "<img src=\"example.jpg\">{width=100px}", result: "<img src=\"example.jpg\" width=\"100px\">"7520 adds them to the img7521 text: "<img src=\"example.jpg\">{height=100%}", result: "<img src=\"example.jpg\" height=\"100%\">"7522 adds them to the img7523 text: "<img src=\"example.jpg\">{width=\"100%\"}", result: "<img src=\"example.jpg\" width=\"100%\">"7524 adds them to the img7525 when size attributes are invalid7526 text: "<img src=\"example.jpg\">{width=100cs}", result: "<img src=\"example.jpg\">"7527 ignores them7528 text: "<img src=\"example.jpg\">{width=auto height=200}", result: "<img src=\"example.jpg\" height=\"200\">"7529 ignores them7530 text: "<img src=\"example.jpg\">{width=10000}", result: "<img src=\"example.jpg\">"7531 ignores them7532 text: "<img src=\"example.jpg\">{width=-200}", result: "<img src=\"example.jpg\">"7533 ignores them7534Gitlab::Database::PostgresPartition7535 associations7536 is expected to belong to postgres_partitioned_table required: false7537 behaves like a postgres model7538 .by_identifier7539 finds the Gitlab::Database::PostgresPartition7540 raises an error if not found7541 raises ArgumentError if given a non-fully qualified identifier7542 #to_s7543 returns the name7544 #schema7545 returns the schema7546 #name7547 returns the name7548 .for_parent_table7549 returns partitions for the parent table in the current schema7550 returns the partitions if the parent table schema is included in the table name7551 does not return partitions for tables not in the current schema7552 does not return partitions for tables if the schema is not the current7553 #parent_identifier7554 returns the parent table identifier7555 #condition7556 returns the condition for the partitioned values7557 .partition_exists?7558 when the partition exists7559 is expected to be truthy7560 when the partition does not exist7561 is expected to be falsey7562 .legacy_partition_exists?7563 when the partition exists7564 is expected to be truthy7565 when the partition does not exist7566 is expected to be falsey7567RuboCop::Cop::Search::NamespacedClass7568 # order random7569 when Search root namespace is used7570 does not flag a class definition with Search as root namespace module7571 does not a flag a class definition with Search as root namespace inline7572 does not a flag a class definition with Search as root namespace in EE7573 when Search root namespace is not used7574 flags a class definition without Search namespace7575 flags a class definition with Zoekt in root namespace module7576 flags a module in EE module7577 when Search root namespace is used7578 does not flag a class definition with Search as root namespace module7579 does not a flag a class definition with Search as root namespace inline7580 does not a flag a class definition with Search as root namespace in EE7581 when Search root namespace is not used7582 flags a class definition without Search namespace7583 flags a class definition with Elastic in root namespace module7584 flags a module in EE module7585 when Search root namespace is used7586 does not flag a class definition with Search as root namespace module7587 does not a flag a class definition with Search as root namespace inline7588 does not a flag a class definition with Search as root namespace in EE7589 when Search root namespace is not used7590 flags a class definition without Search namespace7591 flags a class definition with Search in root namespace module7592 flags a module in EE module7593RuboCop::Cop::SidekiqApiUsage7594 # order random7595 registers offence when assigning Sidekiq API classes7596 does not registers offence when calling Sidekiq::Testing7597 registers offence when calling Sidekiq API7598 when calling Sidekiq::Worker7599 registers no offences for calling skipping_transaction_check7600 registers no offences for calling raise_inside_transaction_exception7601 registers no offences for calling raise_exception_for_being_inside_a_transaction?7602 registers offence for calling other Sidekiq::Worker methods7603Integrations::Asana7604 Validations7605 active7606 is expected to validate that :api_key cannot be empty/falsy7607 Execute7608 with restrict_to_branch7609 when ref is in scope of restriced branches7610 calls the Asana integration7611 when ref is not in scope of restricted branches7612 does not call the Asana integration7613 when creating a story7614 calls Asana integration to create a story7615 when creating a story and closing a task7616 calls Asana integration to create a story and close a task7617 when closing via url7618 calls Asana integration to close via url7619 with multiple matches per line7620 allows multiple matches per line7621Ci::PipelineArtifacts::ExpireArtifactsWorker7622 #perform7623 executes a service7624 is labeled as idempotent7625 performs multiple times sequentially without raising an exception7626 removes the artifact only once7627JiraConnectInstallations::DestroyService7628 .execute7629 creates an instance and calls execute7630 #execute7631 is expected to be truthy7632 deletes the installation7633 and the installation has an instance_url set7634 is expected to be truthy7635 schedules a ForwardEventWorker background job and keeps the installation7636Releases::Evidence7637 filters out issues from summary json7638 associations7639 is expected to belong to release required: false7640GoogleCloud::CreateCloudsqlInstanceWorker7641 when triggered7642 calls GoogleCloud::SetupCloudsqlInstanceService7643 when GoogleCloud::SetupCloudsqlInstanceService fails7644 raises error7645Keys::LastUsedService7646 #execute7647 when it has not been used recently7648 updates the key7649 when it has been used recently7650 does not update the key7651 #execute_async7652 when it has not been used recently7653 schedules a job to update last_used_at7654 when it has been used recently7655 does not schedule a job to update last_used_at7656 #update?7657 returns true when no last used timestamp is present7658 returns true when the key needs to be updated7659 returns false when the key does not yet need to be updated7660Backup::Dump::Postgres7661 # order random7662 #dump7663 creates gzipped dump using supplied arguments7664Gitlab::ImportExport::Saver7665 saves the repo using object storage7666 logs metrics after saving7667 removes archive path and keeps base path untouched7668 when save throws an exception7669 logs a saver error7670Resolvers::Ci::TestSuiteResolver7671 #resolve7672 when pipeline has builds with test reports7673 renders test suite data7674 when pipeline has no builds that matches the given build_ids7675 returns nil7676Types::TimeType7677 is expected to eq "Time"7678 coerces Time object into ISO 86017679 coerces an ISO-time into Time object7680 rejects invalid input7681 allows nil7682AwardEmojisFinder7683 param validation7684 raises an error if `name` is invalid7685 does not raise an error if `name` is numeric7686 raises an error if `awarded_by` is invalid7687 #execute7688 scopes to the awardable7689 filters by emoji name7690 filters by user7691Gitlab::GithubImport::IssuableFinder7692 #database_id7693 returns nil when no cache is in place7694 returns the ID of an issuable when the cache is in place7695 raises TypeError when the object is not supported7696 when group is present7697 when settings single_endpoint_notes_import is enabled7698 reads cache value with longer timeout7699 when settings single_endpoint_notes_import is disabled7700 reads cache value with default timeout7701 #cache_database_id7702 caches the ID of a database row7703 when settings single_endpoint_notes_import is enabled7704 caches value with longer timeout7705 when settings single_endpoint_notes_import is disabled7706 caches value with default timeout7707Resolvers::Projects::JiraProjectsResolver7708 is expected to have nullable GraphQL type JiraProjectConnection7709 #resolve7710 when project has no Jira service7711 when user is a maintainer7712 behaves like no project service access7713 generates an error7714 when project has Jira service7715 when user is a developer7716 behaves like no project service access7717 generates an error7718 when user is a maintainer7719 when Jira connection is valid7720 returns Jira projects7721 when filtering projects by name7722 returns Jira projects7723 when Jira connection is not valid7724 generates a failure error7725Types::Ci::StatusActionType7726 is expected to eq "StatusAction"7727 exposes the expected fields7728 id field7729 correctly renders the field7730PostgreSQL registered types7731 includes custom and standard OIDs7732 includes custom and standard types7733API::Base7734 declare feature categories at handler level for all routes7735 sets feature category for a particular route7736 sets request urgency for a particular route7737 declare feature categories at route level7738 sets feature category for a particular route7739 sets request urgency for a particular route7740 declare feature categories at both handler level and route level7741 sets feature category for a particular route7742 sets target duration for a particular route7743Gitlab::GithubImport::Stage::ImportProtectedBranchesWorker7744 # order random7745 #import7746 imports all the pull requests7747 when an error raised7748 raises an error7749Gitlab::Database::AsyncConstraints::Validators::ForeignKey7750 # order random7751 behaves like async constraints validation7752 validates the constraint while controlling statement timeout7753 removes the constraint validation record from table7754 skips logic if not able to acquire exclusive lease7755 logs messages around execution7756 when the constraint does not exist7757 skips validation and removes the record7758 logs an appropriate message7759 with error handling7760 on production7761 increases execution attempts7762 logs an error message including the constraint_name7763 on development7764 also raises errors7765 with fully qualified table names7766 validates the constraint7767Gitlab::Memory::Reports::JemallocStats7768 .run7769 when :report_jemalloc_stats ops FF is enabled7770 dumps jemalloc stats to the given writer7771 when :report_jemalloc_stats ops FF is disabled7772 does not run the report7773 .active?7774 when :report_jemalloc_stats ops FF is enabled7775 is expected to equal true7776 when :report_jemalloc_stats ops FF is disabled7777 is expected to equal false7778Atlassian::JiraConnect::Serializers::BranchEntity7779 sets the hash of the branch name as the id7780 #issue_keys7781 calls Atlassian::JiraIssueKeyExtractors::Branch#issue_keys7782 avoids N+1 queries when fetching merge requests for multiple branches7783RuboCop::Cop::QA::ElementWithPattern7784 # order random7785 outside of a migration spec file7786 does not register an offense7787 in a QA file7788 registers an offense for elements with a pattern7789 does not register an offense for element without a pattern7790Gitlab::SidekiqMiddleware::DuplicateJobs::Strategies::UntilExecuting7791 behaves like deduplicating jobs when scheduling7792 #schedule7793 checks for duplicates before yielding7794 checks worker options for scheduled jobs7795 job marking7796 adds the jid of the existing job to the job hash7797 scheduled jobs7798 scheduled in the past7799 adds the jid of the existing job to the job hash7800 scheduled in the future7801 adds the jid of the existing job to the job hash7802 when the job is not duplicate7803 does not return false nor drop the job7804 when the job is droppable7805 updates latest wal location7806 returns false to drop the job7807 logs that the job was dropped7808 logs the deduplication options of the worker7809 #perform7810 updates job hash with dedup_wal_locations7811 when latest_wal_location is empty7812 does not update job hash with dedup_wal_locations7813 #perform7814 deletes the lock before executing7815Gitlab::BitbucketServerImport::Stage::ImportRepositoryWorker7816 # order random7817 #perform7818 when the import succeeds7819 schedules the next stage7820 logs stage start and finish7821 when project does not exists7822 does not call importer7823 when project import state is not `started`7824 does not call importer7825 when the importer fails7826 does not schedule the next stage and raises error7827 behaves like Gitlab::BitbucketServerImport::StageMethods7828 .sidekiq_retries_exhausted7829 tracks the import failure7830Banzai::Filter::TruncateVisibleFilter7831 # order random7832 truncates HTML properly7833 does not truncate if truncate_visible_max_chars not specified7834 truncates HTML with emoji properly7835 preserves a link href when link text is truncated7836 truncates the text with multiple paragraphs7837 behaves like truncates text7838 is expected to match "Paragraph 1..."7839 displays inline code7840 behaves like truncates text7841 is expected to match "Text with <code>inline code</code>"7842 truncates the first line of a code block7843 behaves like truncates text7844 is expected to match "Code block...</span>\n</code>"7845 preserves code color scheme7846 behaves like truncates text7847 is expected to match "<code><span id=\"LC1\" class=\"line\" lang=\"ruby\"><span class=\"k\">def</span> <span class=\"nf\">test</span>...</span>"7848 truncates a single long line of text7849 behaves like truncates text7850 is expected to match "... quick brown fox jumped over the lazy dog twiceThe quick brown fox jumped over the lazy dog twice"7851Gitlab::Database::Reindexing::ReindexConcurrently#perform7852 recreates the index using REINDEX with a long statement timeout7853 when the index serves an exclusion constraint7854 raises an error7855 when attempting to reindex an expression index7856 raises an error7857 when the index is a dangling temporary index from a previous reindexing run7858 with the temporary index prefix7859 raises an error7860 with the temporary index prefix with a counter7861 raises an error7862 with dangling indexes matching TEMPORARY_INDEX_PATTERN, i.e. /some\_index\_ccnew(\d)*/7863 with normal index names7864 behaves like dropping the dangling index7865 drops the dangling indexes while controlling lock_timeout7866 with index name at 63 character limit7867 behaves like dropping the dangling index7868 drops the dangling indexes while controlling lock_timeout7869Gitlab::LegacyGithubImport::UserFormatter7870 #gitlab_id7871 returns nil when GitHub user is not a GitLab user7872 when GitHub user is a GitLab user7873 return GitLab user id when user associated their account with GitHub7874 returns GitLab user id when user confirmed primary email matches GitHub email7875 returns GitLab user id when user unconfirmed primary email matches GitHub email7876 returns GitLab user id when user confirmed secondary email matches GitHub email7877 returns nil when user unconfirmed secondary email matches GitHub email7878 .email7879 assigns a dummy email address when user is a Ghost gitea user7880Subscription7881 relationships7882 is expected to belong to project required: false7883 is expected to belong to subscribable required: false7884 is expected to belong to user required: false7885 validations7886 is expected to validate that :subscribable cannot be empty/falsy7887 is expected to validate that :user cannot be empty/falsy7888 validates uniqueness of project_id scoped to subscribable_id, subscribable_type, and user_id7889LicenseTemplate7890 #content7891 calls a proc exactly once if provided7892 returns a string if provided7893 #resolve!7894 updates placeholders in a copy of the template content7895Gitlab::Memory::Watchdog::Monitor::RssMemoryLimit7896 # order random7897 #call7898 when process exceeds threshold7899 returns if threshold is violated and payload7900 when process does not exceed threshold7901 returns if threshold is violated and payload7902 #initialize7903 sets the max rss limit gauge7904MergeRequest::DiffLlmSummary7905 # order random7906 associations7907 is expected to belong to merge_request_diff required: false7908 is expected to belong to user optional: true7909 is expected to validate that :content cannot be empty/falsy7910 is expected to validate that the length of :content is at most 20567911 is expected to validate that :provider cannot be empty/falsy7912Types::WorkItems::Widgets::AwardEmojiType7913 # order random7914 exposes the expected fields7915AccessibilityReportsComparerEntity7916 #as_json7917 when base report has error and head has a different error7918 contains correct compared accessibility report details7919 when base report has error and head has the same error7920 contains correct compared accessibility report details7921 when base report has no error and head has errors7922 contains correct compared accessibility report details7923Ci::CreatePipelineService7924 # order random7925 when job has script and nested before_script and after_script7926 creates a job with script data7927 when job has hooks and default hooks7928 creates jobs with hook data7929Resolvers::Users::GroupCountResolver7930 #resolve7931 resolves group count for users7932 permissions7933 when current_user is an admin7934 is expected to eq [2, 1]7935 when current_user does not have access to the requested resource7936 is expected to equal nil7937 when current_user does not exist7938 is expected to equal nil7939QualifiedDomainArrayValidator7940 validations7941 returns error when attribute is nil7942 allows when domain is valid7943 returns error when domain contains unicode7944 returns error when entry is larger than 255 chars7945 returns error when entry contains HTML tags7946 behaves like can be blank7947 allows when attribute is blank7948 when allow_nil is set to true7949 behaves like can be nil7950 allows when attribute is nil7951 behaves like can be blank7952 allows when attribute is blank7953 when allow_blank is set to true7954 behaves like can be nil7955 allows when attribute is nil7956 behaves like can be blank7957 allows when attribute is blank7958Gitlab::Diff::Formatters::ImageFormatter7959 behaves like position formatter7960 #key7961 is expected to eq [123, 456, 789, "8b5f87754bd090b9e0837feef68f1737103de62b", "5b972068ce0905d88056d0c4b788554d34949d27", 1, 2]7962 #complete?7963 when there are missing key attributes7964 is expected to be truthy7965 when old_line and new_line are nil7966 is expected to be falsy7967 #to_h7968 is expected to eq {:base_sha=>123, :head_sha=>789, :height=>100, :new_path=>"new_image.png", :old_path=>"old_image.png", :position_type=>"image", :start_sha=>456, :width=>100, :x=>1, :y=>2}7969 #==7970 is expected to eq #<Gitlab::Diff::Formatters::ImageFormatter:0x00007fa8f24ec148 @x=1, @y=2, @width=100, @height=100, @i... @old_path="old_image.png", @new_path="new_image.png", @base_sha=123, @start_sha=456, @head_sha=789>7971 #==7972 is expected to eq #<Gitlab::Diff::Formatters::ImageFormatter:0x00007fa8d16e80f8 @x=1, @y=2, @width=100, @height=100, @i... @old_path="old_image.png", @new_path="new_image.png", @base_sha=123, @start_sha=456, @head_sha=789>7973 with attribute:width7974 is expected not to eq #<Gitlab::Diff::Formatters::ImageFormatter:0x00007fa8d19827f0 @x=1, @y=2, @width=9, @height=100, @ign... @old_path="old_image.png", @new_path="new_image.png", @base_sha=123, @start_sha=456, @head_sha=789>7975 with attribute:height7976 is expected not to eq #<Gitlab::Diff::Formatters::ImageFormatter:0x00007fa8d1d8e650 @x=1, @y=2, @width=100, @height=9, @ign... @old_path="old_image.png", @new_path="new_image.png", @base_sha=123, @start_sha=456, @head_sha=789>7977 with attribute:x7978 is expected not to eq #<Gitlab::Diff::Formatters::ImageFormatter:0x00007fa8d231e200 @x=9, @y=2, @width=100, @height=100, @i... @old_path="old_image.png", @new_path="new_image.png", @base_sha=123, @start_sha=456, @head_sha=789>7979 with attribute:y7980 is expected not to eq #<Gitlab::Diff::Formatters::ImageFormatter:0x00007fa8d27e2d68 @x=1, @y=9, @width=100, @height=100, @i... @old_path="old_image.png", @new_path="new_image.png", @base_sha=123, @start_sha=456, @head_sha=789>7981Gitlab::Ci::Config::Extendable7982 #each7983 when there is extendable entry in the hash7984 yields control7985 #to_hash7986 when hash does not contain extensions7987 does not modify the hash7988 when hash has a single simple extension7989 extends a hash with a deep reverse merge7990 when the job tries to delete an extension key7991 deletes the key if assigned to null7992 when a hash uses recursive extensions7993 extends a hash with a deep reverse merge7994 when nested circular dependecy has been detected7995 raises an error about circular dependency7996 when circular dependecy to self has been detected7997 raises an error about circular dependency7998 when invalid extends value is specified7999 raises an error about invalid extension8000 when extensible entry has non-hash inheritance defined8001 raises an error about invalid base8002Gitlab::Template::GitlabCiYmlTemplate8003 .all8004 combines the globals and rest8005 does not include Browser-Performance template in FOSS8006 #content8007 loads the full file8008 behaves like file template shared examples8009 .all8010 strips the .gitlab-ci.yml suffix8011 ensures that the template name is used exactly once8012 .by_category8013 returns sorted results8014 .find8015 returns nil if the file does not exist8016 returns the corresponding object of a valid file8017 #<=>8018 sorts lexicographically8019CohortsService8020 #execute8021 returns a list of user cohorts8022ServiceHookPresenter8023 #logs_details_path8024 is expected to eq "/namespace826/project-895/-/settings/integrations/drone_ci/hook_logs/3"8025 #logs_retry_path8026 is expected to eq "/namespace827/project-896/-/settings/integrations/drone_ci/hook_logs/4/retry"8027BulkImports::RelationBatchExportService8028 # order random8029 #execute8030 exports relation batch8031 removes exported contents after export8032 when exception occurs8033 marks batch as failed8034DiffViewer::ServerSide8035 #render_error8036 when the diff file is stored externally8037 return :server_side_but_stored_externally8038 #render_error_reason8039 when the diff file is stored externally8040 returns error message if stored in LFS8041 returns error message if stored externally8042Gitlab::JiraImport::HandleLabelsService8043 #execute8044 when some provided jira labels are missing8045 creates the missing labels on the project level8046 returns the id of all labels matching the title8047 when no provided jira labels are missing8048 does not create any new labels8049 returns the id of all labels matching the title8050 when no labels are provided8051 does not create any new labels8052notify/user_deactivated_email.text.erb8053 # order random8054 displays the user's name8055 behaves like renders plain text email correctly8056 renders the email without HTML links8057 when additional text setting is not set8058 does not display any additional text8059 when additional text setting is set8060 when additional text feature flag is enabled8061 displays the additional text8062 when additional text feature flag is disabled8063 does not display the additional text8064Gitlab::GithubImport::Importer::IssuesImporter8065 #parallel?8066 returns true when running in parallel mode8067 returns false when running in sequential mode8068 #execute8069 when running in parallel mode8070 imports issues in parallel8071 when running in sequential mode8072 imports issues in sequence8073 #sequential_import8074 imports each issue in sequence8075 #parallel_import8076 imports each issue in parallel8077 #id_for_already_imported_cache8078 returns the issue number of the given issue8079 #increment_object_counter?8080 when issue is a pull request8081 returns false8082 when issue is a regular issue8083 returns true8084JiraConnect::SyncService8085 #execute8086 calls Atlassian::JiraConnect::Client#store_dev_info and logs the response8087 when a request returns errors8088 logs each response as an error8089Gitlab::ServiceDesk8090 enabled?8091 is expected to be truthy8092 when service desk is not supported8093 is expected to be falsy8094 when service desk is disabled for project8095 is expected to be falsy8096 supported?8097 is expected to be truthy8098 when incoming emails are disabled8099 is expected to be falsy8100 when email key is not supported8101 is expected to be falsy8102Gitlab::Sanitizers::ExceptionMessage8103 .clean8104 when error is a URI::InvalidURIError8105 is expected to eq "bad URI(is not URI?): [FILTERED]"8106 when error is an Addressable::URI::InvalidURIError8107 uri: "http://foo:bar", result: "Invalid port number: [FILTERED]"8108 is expected to eq "Invalid port number: [FILTERED]"8109 uri: "http://foo:%eb", result: "Invalid encoding in port"8110 is expected to eq "Invalid encoding in port"8111 uri: "ht%0atp://foo", result: "Invalid scheme format: [FILTERED]"8112 is expected to eq "Invalid scheme format: [FILTERED]"8113 uri: "http:", result: "Absolute URI missing hierarchical segment: [FILTERED]"8114 is expected to eq "Absolute URI missing hierarchical segment: [FILTERED]"8115 uri: "::http", result: "Cannot assemble URI string with ambiguous path: [FILTERED]"8116 is expected to eq "Cannot assemble URI string with ambiguous path: [FILTERED]"8117 uri: "http://foo bar", result: "Invalid character in host: [FILTERED]"8118 is expected to eq "Invalid character in host: [FILTERED]"8119 with any other exception8120 is not invoked and does nothing8121BulkImports::Common::Pipelines::EntityFinisher8122WARNING: An expectation of `:try` was set on `nil`. To allow expectations on `nil` and suppress this message, set `RSpec::Mocks.configuration.allow_message_expectations_on_nil` to `true`. To disallow expectations on `nil`, set `RSpec::Mocks.configuration.allow_message_expectations_on_nil` to `false`. Called from /builds/gitlab-org/gitlab/spec/lib/bulk_imports/common/pipelines/entity_finisher_spec.rb:27:in `block (2 levels) in <top (required)>'.8123 updates the entity status to finished8124 when entity is in a final finished or failed state8125 does nothing8126 does nothing8127 when all entity trackers failed8128 marks entity as failed8129ProjectPagesMetadatum8130 .only_on_legacy_storage8131 returns only deployed records without deployment8132ProtectedTags::CreateService8133 #execute8134 creates a new protected tag8135 protecting a tag with a name that contains HTML tags8136 creates a new protected tag8137FindJhBranch8138 # order random8139 #run8140 when it is not a merge request8141 returns JH_DEFAULT_BRANCH8142 when it is a merge request8143 when there is a corresponding JH branch8144 returns the corresponding JH branch name8145 when there is no corresponding JH branch8146 returns the default JH branch8147 when it is targeting a default branch8148 when there is a corresponding JH stable branch8149 returns the corresponding JH stable branch8150 when there is no corresponding JH stable branch8151 raises FindJhBranch::BranchNotFound8152 when it is not targeting the default branch8153 returns the default JH branch8154Gitlab::GitalyClient::PraefectInfoService8155 #repository_replicas8156 sends an RPC request8157BlameHelper8158 #get_age_map_start_date8159 returns the earliest date from a blame group8160 returns the earliest date from a project8161 #age_map_class8162 returns blame-commit-age-9 when oldest8163 returns blame-commit-age-0 class when newest8164 when called on the same day as project creation8165 returns blame-commit-age-0 class8166 #entire_blame_path8167 is expected to eq "/namespace840/project-909/-/blame/main/README.md/streaming"8168Gitlab::RepositorySizeErrorMessage8169 error messages8170 #commit_error8171 returns the correct message8172 #merge_error8173 returns the correct message8174 #push_error8175 with exceeded_limit value8176 returns the correct message8177 without exceeded_limit value8178 returns the correct message8179 #new_changes_error8180 when additional repo storage is available8181 returns the correct message8182 when no additional repo storage is available8183 returns the correct message8184Gitlab::Metrics::Subscribers::LoadBalancing8185 #caught_up_replica_pick8186 behaves like having payload result value8187 stores per-request caught up replica search result8188 behaves like having payload result value8189 stores per-request caught up replica search result8190 #web_transaction_completed8191 when no data in request store8192 does not change the counters8193 when request store was updated8194 increments :caught_up_replica_pick count with proper label8195 .load_balancing_payload8196 when no data in request store8197 returns empty hash8198 when request store was updated for a single counter8199 returns proper payload with only that counter8200 when both counters were updated8201 return proper payload8202Sidebars::Projects::Menus::ShimoMenu8203 #render?8204 without a valid Shimo integration8205 doesn't render the menu8206 with a valid Shimo integration8207 when integration is active8208 renders the menu8209 renders menu link8210 when integration is inactive8211 doesn't render the menu8212Gitlab::Graphql::Pagination::Connections8213-- create_table(:_test_testing_pagination_nodes, {:force=>true})8214 -> 0.0039s8215 OffsetPaginatedRelation8216 maps to Gitlab::Graphql::Pagination::OffsetActiveRecordRelationConnection8217 ActiveRecord::Relation8218 maps to Gitlab::Graphql::Pagination::Keyset::Connection8219 ExternallyPaginatedArray8220 maps to Gitlab::Graphql::Pagination::ExternallyPaginatedArrayConnection8221 Array8222 maps to Gitlab::Graphql::Pagination::ArrayConnection8223-- drop_table(:_test_testing_pagination_nodes, {:force=>true})8224 -> 0.0023s8225Gitlab::Loggable8226 # order random8227 #build_structured_payload8228 adds class and returns formatted json8229 appends additional params and returns formatted json8230 does not raise an error in loggers when passed non-symbols8231 handles anonymous classes8232 handles duplicate keys8233Integrations::FieldEntity8234 #as_json8235 with Jira integration8236 with field with type text8237 exposes correct attributes8238 with field with type password8239 exposes correct attributes but hides password8240 with EmailsOnPush integration8241 with field with type checkbox8242 exposes correct attributes and casts value to Boolean8243 with field with type select8244 exposes correct attributes8245 with chat integration8246 exposes correct attributes but masks webhook8247 when webhook was not set8248 does not show the masked webhook8249Gitlab::Config::Entry::Attributable8250 when config is a hash8251 returns the value of config8252 returns no method error for unknown attributes8253 and is provided a prefix8254 returns the value of config8255 when config is not a hash8256 returns nil8257 when method is already defined in a superclass8258 raises an error8259UrlHelper8260 # order random8261 #escaped_url8262 escapes url8263 escapes XSS injection8264 returns nil if url is nil8265 returns nil when url is invalid8266Gitlab::UsageDataCounters::VSCodeExtensionActivityUniqueCounter8267 when tracking a vs code api request8268 behaves like a request from an extension8269 tracks when the user agent is matching8270 does not track when the user agent is not matching8271 does not track if user agent is not present8272 does not track if user is not present8273JSONWebToken::RSAToken8274 token8275 for valid key to be validated8276 is expected not to raise Exception8277 is expected to include {"key" => "value"}8278 is expected to eq {"alg"=>"RS256", "kid"=>"OGXY:4TR7:FAVO:WEM2:XXEW:E4FP:TKL7:7ACK:TZAF:D54P:SUIA:P3B2", "typ"=>"JWT"}8279 for invalid key to raise an exception8280 is expected to raise JWT::DecodeError8281Gitlab::Mailgun::WebhookProcessors::FailureLogger8282 #execute8283 on permanent failure8284 when threshold is not exceeded8285 increments counter but does not log the failure8286 when threshold is exceeded8287 increments counter and logs the failure8288 on temporary failure8289 when threshold is not exceeded8290 increments counter but does not log the failure8291 when threshold is exceeded8292 increments counter and logs the failure8293 on other events8294 does nothing8295Types::MergeRequests::AssigneeType8296 behaves like a user type with merge request interaction type8297 is expected to require graphql authorizations :read_user8298 has the expected fields8299 #merge_request_interaction8300 returns the correct type8301 has the correct arguments8302Gitlab::Metrics::Dashboard::Stages::GrafanaFormatter8303 #transform!8304 when the query and resources are configured correctly8305 is expected to eq {:panel_groups=>[{:panels=>[{:metrics=>[{:id=>"In_0", :label=>"In", :prometheus_endpoint_path=>"/foo/...nstance=~\"localhost:9121\"}[1m]))"}], :title=>"Network I/O", :type=>"area-chart", :y_label=>""}]}]}8306 when a panelId is not included in the grafana_url8307 is expected to eq {:panel_groups=>[{:panels=>[{:metrics=>[{:id=>"In_0", :label=>"In", :prometheus_endpoint_path=>"/foo/...nstance=~\"localhost:9121\"}[1m]))"}], :title=>"Network I/O", :type=>"area-chart", :y_label=>""}]}]}8308 when there is also no valid panel in the dashboard8309 raises a processing error8310 when an input is invalid8311 raises a processing error8312Gitlab::Ci::Config::Entry::Stages8313 validations8314 when entry config value is correct8315 #value8316 returns array of stages8317 #valid?8318 is valid8319 when entry value is not correct8320 #errors8321 saves errors8322 #valid?8323 is not valid8324 .default8325 returns default stages8326Gitlab::GithubImport::ImportIssueWorker8327 #import8328 imports an issue8329 #increment_object_counter?8330 when github issue is a pull request8331 returns false8332Gitlab::QueryLimiting::Middleware8333 #call8334 runs the application with query limiting in place8335 #action_name8336 using a Rails request8337 returns the name of the controller and action8338 includes the content type if this is not text/html8339 using a Grape API request8340 returns the name of the request method and endpoint path8341 returns nil if the route can not be retrieved8342WorkItems::Widgets::Notifications8343 # order random8344 .type8345 is expected to eq :notifications8346 #subscribed?8347 is expected to eq true8348 #type8349 is expected to eq :notifications8350Types::ContainerRepositoryTagType8351 is expected to eq "ContainerRepositoryTag"8352 is expected to eq "A tag from a container repository"8353 is expected to require graphql authorizations :read_container_image8354 is expected to have graphql fields :name, :path, :location, :digest, :revision, :short_revision, :total_size, :created_at, and :can_delete8355ServiceDeskEmailReceiverWorker8356 #perform8357 when service_desk_email config is enabled8358 does not ignore the email8359 when service desk receiver raises an exception8360 sends a rejection email8361 when service_desk_email config is disabled8362 ignores the email8363Types::Ci::PipelineScheduleVariableType8364 # order random8365 contains attributes related to a pipeline message8366 is expected to require graphql authorizations :read_pipeline_schedule_variables8367 is expected to contain exactly Types::Ci::VariableInterface8368 is expected to eq "PipelineScheduleVariable"8369Gitlab::Ci::Pipeline::Chain::AssignPartition8370 # order random8371 #perform!8372 assigns partition_id to pipeline8373 with parent-child pipelines8374 assigns partition_id to pipeline8375Users::CreateStatisticsWorker8376 #perform8377 when successful8378 create an users statistics entry8379 when unsuccessful8380 logs an error8381Gitlab::Ci::Build::Hook8382 # order random8383 .from_hooks8384 initializes and returns hooks8385Gitlab::Ci::Config::Entry::Paths8386 validations8387 when entry config value is valid8388 #value8389 returns key value8390 #valid?8391 is valid8392 when entry value is not valid8393 #errors8394 saves errors8395Gitlab::Usage::Metrics::Instrumentations::CountBoardsMetric8396 behaves like a correct instrumented metric value and query8397 behaves like a correct instrumented metric value8398 has correct value8399 behaves like a correct instrumented metric query8400 has correct generate query8401RuboCop::Cop::RSpec::AvoidConditionalStatements8402 # order random8403 when using conditionals8404 flags if conditional8405 flags unless conditional8406 flags ternary operator8407RuboCop::Cop::GroupPublicOrVisibleToUser8408 # order random8409 does not flag the use of Group.public_or_visible_to_user with a send receiver8410 flags the use of Group.public_or_visible_to_user with a constant receiver8411 does not flag the use of public_or_visible_to_user with a constant that is not Group8412Import::Github::GistsImportService8413 # order random8414 #execute8415 when import in progress8416 returns error8417 when import was not started8418 returns success8419 when user token is invalid8420 returns 401 error8421profiles/audit_log8422 when user has successful and failure events8423 only shows successful events8424Preloaders::RunnerManagerPolicyPreloader8425 # order random8426 avoids N+1 queries when authorizing a list of runner managers8427Analytics::CycleAnalytics::StageEntity8428 exposes start and end event descriptions8429 exposes start_event and end_event objects8430Gitlab::Diff::SuggestionDiff8431 #diff_lines8432 returns diff lines with correct line numbers8433 when the suggestion is for the last line of a file8434 returns a correct value if there is no newline at the end of the file8435CodequalityDegradationEntity8436 #as_json8437 when codequality contains an error8438 when line is included in location8439 contains correct codequality degradation details8440 when line is included in positions8441 contains correct codequality degradation details8442 when severity is capitalized8443 lowercases severity8444Types::ReleaseAssetLinkType8445 is expected to require graphql authorizations :read_release8446 has the expected fields8447Types::DesignManagement::VersionType8448 is expected to require graphql authorizations :read_design8449 has the expected fields8450Gitlab::CiAccess8451 #can_do_action?8452 when action is :build_download_code8453 is expected to be truthy8454 when action is not :build_download_code8455 is expected to be falsey8456Gitlab::BacktraceCleaner8457 .clean_backtrace8458 uses the Rails backtrace cleaner8459 removes lines from IGNORE_BACKTRACES8460API::Entities::Ci::JobArtifactFile8461 returns the filename8462 returns the size8463RepositoryCheckQueue8464 disables retrying of failed jobs8465Sidebars::Projects::SuperSidebarMenus::BuildMenu8466 # order random8467 has title and sprite_icon8468 defines list of NilMenuItem placeholders8469HtmlSafetyValidator8470 adds an error when a script is included in the name8471 does not add an error when an ampersand is included in the name8472Gitlab::HashedPath8473 #to_s8474 when path contains a single value8475 returns the disk path8476 when path contains multiple values8477 returns the disk path8478ErrorTracking::Collector::SentryRequestParser8479 .parse8480 with empty body content8481 fails with exception8482 with plain text sentry request8483 behaves like valid parser8484 returns a valid hash8485API::Entities::BulkImports::ExportStatus8486 has the correct attributes8487Types::IssueStatusCountsType8488 is expected to eq "IssueStatusCountsType"8489 exposes the expected fields8490Types::Ci::JobKindEnum8491 exposes some job type values8492Gitlab::Metrics::Dashboard::Validator::CustomFormats8493 #format_handlers8494 add_to_metric_id_cache8495 adds data to metric id cache8496Docs::DeprecationHandling8497 sorts entries and milestones8498Types::Packages::PackageGroupSortEnum8499 exposes all package group sort values8500Types::Packages::PackageStatusEnum8501 exposes all package statuses8502Types::BlobViewerType8503 has the correct fields8504Gitlab::Kubernetes::PodCmd8505 .retry_command8506 constructs string properly8507ExportHelper8508 #project_export_descriptions8509 includes design management8510TrendingProjectsWorker8511 #perform8512 refreshes the trending projects8513Gitlab::Ci::Status::Core8514 #cache_key8515 uses the subject's cache key8516Knapsack report was generated. Preview:8517{8518 "spec/services/merge_requests/update_service_spec.rb": 386.43822566499875,8519 "spec/services/merge_requests/create_from_issue_service_spec.rb": 115.21437715399952,8520 "spec/lib/gitlab/database/load_balancing_spec.rb": 91.09142912300013,8521 "spec/models/integrations/jira_spec.rb": 30.23065279900038,8522 "spec/lib/gitlab/http_spec.rb": 8.497816020000755,8523 "spec/models/ci/stage_spec.rb": 30.15909158499926,8524 "spec/services/packages/debian/generate_distribution_service_spec.rb": 53.624728210001194,8525 "spec/helpers/issuables_helper_spec.rb": 37.27241827800026,8526 "spec/models/integrations/microsoft_teams_spec.rb": 17.956590590001724,8527 "spec/serializers/ci/job_entity_spec.rb": 33.243755551000504,8528 "spec/finders/ci/runners_finder_spec.rb": 22.617643695997685,8529 "spec/lib/gitlab/ci/pipeline/expression/statement_spec.rb": 6.6377826429998095,8530 "spec/helpers/application_helper_spec.rb": 10.34072021799875,8531 "spec/uploaders/avatar_uploader_spec.rb": 16.618975389999832,8532 "spec/services/system_note_service_spec.rb": 13.082700611998007,8533 "spec/lib/gitlab/ci/config_spec.rb": 19.51938022199829,8534 "spec/services/namespaces/package_settings/update_service_spec.rb": 8.799875644999702,8535 "spec/views/projects/issues/show.html.haml_spec.rb": 21.228890820999368,8536 "spec/services/members/create_service_spec.rb": 18.47355765800239,8537 "spec/services/web_hook_service_spec.rb": 11.897696239997458,8538 "spec/models/incident_management/issuable_escalation_status_spec.rb": 4.962498451001011,8539 "spec/models/projects/data_transfer_spec.rb": 4.298666034999769,8540 "spec/finders/container_repositories_finder_spec.rb": 15.108255105002172,8541 "spec/workers/concerns/application_worker_spec.rb": 2.960954125999706,8542 "spec/serializers/project_note_entity_spec.rb": 11.770749139002874,8543 "spec/helpers/avatars_helper_spec.rb": 9.241785517999233,8544 "spec/models/concerns/approvable_spec.rb": 17.104984764999244,8545 "spec/services/suggestions/create_service_spec.rb": 14.340017165999598,8546 "spec/lib/gitlab/github_import/representation/pull_request_spec.rb": 2.5356868309972924,8547 "spec/services/projects/git_deduplication_service_spec.rb": 14.108468775997608,8548 "spec/presenters/blob_presenter_spec.rb": 4.929827873998875,8549 "spec/lib/gitlab/usage/metrics/instrumentations/count_bulk_imports_entities_metric_spec.rb": 4.199216613997123,8550 "spec/workers/packages/go/sync_packages_worker_spec.rb": 9.235564859001897,8551 "spec/models/ci/job_token/scope_spec.rb": 9.014478896999208,8552 "spec/lib/service_ping/build_payload_spec.rb": 15.548785257997224,8553 "spec/lib/gitlab/lfs_token_spec.rb": 4.387064749000274,8554 "spec/lib/gitlab/checks/single_change_access_spec.rb": 11.830738494998513,8555 "spec/lib/gitlab/ci/config/entry/retry_spec.rb": 3.1763855290009815,8556 "spec/services/system_notes/design_management_service_spec.rb": 12.294336187002045,8557 "spec/workers/concerns/reenqueuer_spec.rb": 1.665854462000425,8558 "spec/services/jira/requests/projects/list_service_spec.rb": 11.68372078700122,8559 "spec/serializers/test_suite_entity_spec.rb": 7.647363940002833,8560 "spec/models/pages_deployment_spec.rb": 4.9496949819986185,8561 "spec/lib/gitlab/quick_actions/extractor_spec.rb": 2.0734229189984035,8562 "spec/services/labels/transfer_service_spec.rb": 8.235643461001018,8563 "spec/lib/gitlab/ci/config/entry/need_spec.rb": 2.4487286179974035,8564 "spec/services/users/approve_service_spec.rb": 5.204174780999892,8565 "spec/lib/gitlab/exclusive_lease_spec.rb": 3.4948010020016227,8566 "spec/lib/banzai/filter/gollum_tags_filter_spec.rb": 4.575608982999256,8567 "spec/models/design_management/design_collection_spec.rb": 5.3739117969998915,8568 "spec/lib/gitlab/safe_request_store_spec.rb": 1.3189389010003651,8569 "spec/finders/crm/organizations_finder_spec.rb": 4.159134816996811,8570 "spec/services/users/refresh_authorized_projects_service_spec.rb": 5.148124306000682,8571 "spec/models/board_group_recent_visit_spec.rb": 4.300822935001634,8572 "spec/lib/gitlab/ci/config/yaml/interpolator_spec.rb": 1.5145170059986413,8573 "spec/lib/banzai/filter/commit_trailers_filter_spec.rb": 2.819429338000191,8574 "spec/lib/gitlab/database/reindexing/grafana_notifier_spec.rb": 2.603583545998845,8575 "spec/lib/gitlab/sidekiq_migrate_jobs_spec.rb": 1.8394510289981554,8576 "spec/lib/gitlab/diff/suggestions_parser_spec.rb": 7.6526749590011605,8577 "spec/models/packages/nuget/metadatum_spec.rb": 2.3274300479970407,8578 "spec/workers/database/ci_project_mirrors_consistency_check_worker_spec.rb": 8.648393496998324,8579 "spec/models/packages/build_info_spec.rb": 2.5334463819999655,8580 "spec/lib/banzai/filter/syntax_highlight_filter_spec.rb": 1.669520671999635,8581 "spec/lib/gitlab/robots_txt/parser_spec.rb": 1.2452937080015545,8582 "spec/policies/board_policy_spec.rb": 5.9184136020012375,8583 "spec/tasks/gitlab/external_diffs_rake_spec.rb": 6.830468927000766,8584 "spec/lib/gitlab/middleware/same_site_cookies_spec.rb": 1.3604362179976306,8585 "spec/services/clusters/management/validate_management_project_permissions_service_spec.rb": 7.576971335998678,8586 "spec/services/releases/links/destroy_service_spec.rb": 2.3958385229998385,8587 "spec/models/bulk_imports/tracker_spec.rb": 2.3670114150008885,8588 "spec/lib/gitlab/hook_data/base_builder_spec.rb": 0.9076125659994432,8589 "spec/lib/gitlab/git/blame_spec.rb": 4.902796435999335,8590 "spec/lib/gitlab/ci/config/entry/reports/coverage_report_spec.rb": 1.012076505998266,8591 "spec/lib/gitlab/database/async_constraints/postgres_async_constraint_validation_spec.rb": 1.4103553140012082,8592 "spec/serializers/suggestion_entity_spec.rb": 6.050859381000919,8593 "spec/tasks/gitlab/artifacts/check_rake_spec.rb": 4.8227251730022545,8594 "spec/services/metrics/dashboard/transient_embed_service_spec.rb": 1.9006891030003317,8595 "spec/models/concerns/sha_attribute_spec.rb": 1.1668027240011725,8596 "spec/lib/gitlab/metrics/dashboard/validator/errors_spec.rb": 1.2357051379985933,8597 "spec/models/integrations/harbor_spec.rb": 2.4709358959989913,8598 "spec/lib/gitlab/usage/metrics/instrumentations/in_product_marketing_email_cta_clicked_metric_spec.rb": 5.805312751999736,8599 "spec/services/work_items/widgets/description_service/update_service_spec.rb": 3.6466741289987112,8600 "spec/lib/api/entities/ci/job_request/dependency_spec.rb": 4.718503881998913,8601 "spec/services/users/email_verification/validate_token_service_spec.rb": 1.6732437120008399,8602 "spec/rubocop/cop/rspec/factory_bot/local_static_assignment_spec.rb": 0.6644975160015747,8603 "spec/lib/gitlab/diff/line_spec.rb": 0.6621892149996711,8604 "spec/services/projects/branches_by_mode_service_spec.rb": 2.346094197000639,8605 "spec/lib/gitlab/daemon_spec.rb": 0.9507856909986003,8606 "spec/lib/gitlab/auth/two_factor_auth_verifier_spec.rb": 1.386434216001362,8607 "spec/models/preloaders/user_max_access_level_in_projects_preloader_spec.rb": 3.4978779809971456,8608 "spec/services/gpg_keys/create_service_spec.rb": 3.207716844997776,8609 "spec/lib/sidebars/projects/menus/issues_menu_spec.rb": 1.6805222720031452,8610 "spec/graphql/mutations/todos/mark_all_done_spec.rb": 3.6782161060000362,8611 "spec/services/work_items/delete_task_service_spec.rb": 4.1890995249996195,8612 "spec/lib/gitlab/alert_management/fingerprint_spec.rb": 1.0151320759978262,8613 "spec/models/jira_connect_subscription_spec.rb": 0.4743181910016574,8614 "spec/views/events/event/_push.html.haml_spec.rb": 1.1799381929995434,8615 "spec/lib/gitlab/auth/ldap/auth_hash_spec.rb": 0.6835616139978811,8616 "spec/lib/gitlab/usage/metrics/instrumentations/work_items_activity_aggregated_metric_spec.rb": 0.7259214599980623,8617 "spec/lib/gitlab/ci/config/entry/hidden_spec.rb": 0.512094937999791,8618 "spec/services/dependency_proxy/request_token_service_spec.rb": 1.369256616999337,8619 "spec/tooling/danger/analytics_instrumentation_spec.rb": 1.04858359300124,8620 "spec/finders/ci/freeze_periods_finder_spec.rb": 5.2159491009988415,8621 "spec/services/projects/group_links/destroy_service_spec.rb": 3.2285461829997075,8622 "spec/services/milestones/close_service_spec.rb": 3.735715031998552,8623 "spec/services/releases/links/update_service_spec.rb": 2.9906849330000114,8624 "spec/views/projects/pages_domains/show.html.haml_spec.rb": 2.209508536998328,8625 "spec/lib/gitlab/usage_data_counters/ipynb_diff_activity_counter_spec.rb": 1.7601290839993453,8626 "spec/lib/gitlab/ci/interpolation/access_spec.rb": 0.4235517239976616,8627 "spec/serializers/label_serializer_spec.rb": 2.48642976499832,8628 "spec/graphql/resolvers/ci/project_pipeline_counts_resolver_spec.rb": 2.218935197000974,8629 "spec/lib/gitlab/ci/status/scheduled_spec.rb": 0.49605342900031246,8630 "spec/helpers/projects/pipeline_helper_spec.rb": 1.781635613002436,8631 "spec/models/token_with_iv_spec.rb": 0.5209195070019632,8632 "spec/models/integrations/base_issue_tracker_spec.rb": 1.5886651290020382,8633 "spec/models/merge_request/approval_removal_settings_spec.rb": 2.3343069279981137,8634 "spec/validators/system_hook_url_validator_spec.rb": 1.5568248819981818,8635 "spec/validators/any_field_validator_spec.rb": 0.4527217329996347,8636 "spec/lib/gitlab/query_limiting/transaction_spec.rb": 1.0212985859980108,8637 "spec/lib/gitlab/sample_data_template_spec.rb": 1.2055849309981568,8638 "spec/lib/gitlab/url_blockers/ip_allowlist_entry_spec.rb": 0.7689864259991737,8639 "spec/scripts/failed_tests_spec.rb": 0.5770985919989471,8640 "spec/lib/gitlab/job_waiter_spec.rb": 2.6056366949997027,8641 "spec/helpers/numbers_helper_spec.rb": 0.5701362129984773,8642 "spec/lib/banzai/filter/attributes_filter_spec.rb": 0.9910526289968402,8643 "spec/lib/gitlab/database/postgres_partition_spec.rb": 1.4945183360032388,8644 "spec/rubocop/cop/search/namespaced_class_spec.rb": 1.0696136120022857,8645 "spec/rubocop/cop/sidekiq_api_usage_spec.rb": 0.54977297500227,8646 "spec/models/integrations/asana_spec.rb": 0.949837012001808,8647 "spec/workers/ci/pipeline_artifacts/expire_artifacts_worker_spec.rb": 0.9657250000018394,8648 "spec/services/jira_connect_installations/destroy_service_spec.rb": 0.8953181959986978,8649 "spec/models/releases/evidence_spec.rb": 1.0801587399982964,8650 "spec/workers/google_cloud/create_cloudsql_instance_worker_spec.rb": 1.1679762140011007,8651 "spec/services/keys/last_used_service_spec.rb": 0.6735035339988826,8652 "spec/lib/backup/dump/postgres_spec.rb": 0.4868163099999947,8653 "spec/lib/gitlab/import_export/saver_spec.rb": 2.582460166999226,8654 "spec/graphql/resolvers/ci/test_suite_resolver_spec.rb": 2.2037315890011087,8655 "spec/graphql/types/time_type_spec.rb": 0.445458583002619,8656 "spec/finders/award_emojis_finder_spec.rb": 2.176326840999536,8657 "spec/lib/gitlab/github_import/issuable_finder_spec.rb": 0.6116043799993349,8658 "spec/graphql/resolvers/projects/jira_projects_resolver_spec.rb": 1.8519980069977464,8659 "spec/graphql/types/ci/status_action_type_spec.rb": 0.7574735070011229,8660 "spec/initializers/0_postgresql_types_spec.rb": 0.5650356330006616,8661 "spec/lib/api/base_spec.rb": 0.4699298509985965,8662 "spec/workers/gitlab/github_import/stage/import_protected_branches_worker_spec.rb": 0.7491160380013753,8663 "spec/lib/gitlab/database/async_constraints/validators/foreign_key_spec.rb": 1.2123764700008905,8664 "spec/lib/gitlab/memory/reports/jemalloc_stats_spec.rb": 0.4325228950001474,8665 "spec/lib/atlassian/jira_connect/serializers/branch_entity_spec.rb": 2.071803008999268,8666 "spec/rubocop/cop/qa/element_with_pattern_spec.rb": 0.4023297570020077,8667 "spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/strategies/until_executing_spec.rb": 0.7767983159974392,8668 "spec/workers/gitlab/bitbucket_server_import/stage/import_repository_worker_spec.rb": 1.1974782510005753,8669 "spec/lib/banzai/filter/truncate_visible_filter_spec.rb": 1.1674934440015932,8670 "spec/lib/gitlab/database/reindexing/reindex_concurrently_spec.rb": 1.0456705239994335,8671 "spec/lib/gitlab/legacy_github_import/user_formatter_spec.rb": 1.1653641929988225,8672 "spec/models/subscription_spec.rb": 1.3779538469971158,8673 "spec/models/license_template_spec.rb": 0.37164237999968464,8674 "spec/lib/gitlab/memory/watchdog/monitor/rss_memory_limit_spec.rb": 0.37902800899973954,8675 "spec/models/merge_request/diff_llm_summary_spec.rb": 1.3305877099992358,8676 "spec/graphql/types/work_items/widgets/award_emoji_type_spec.rb": 0.29206063599849585,8677 "spec/serializers/accessibility_reports_comparer_entity_spec.rb": 0.38658358799875714,8678 "spec/services/ci/create_pipeline_service/scripts_spec.rb": 2.06386971000029,8679 "spec/graphql/resolvers/users/group_count_resolver_spec.rb": 1.6866960810002638,8680 "spec/validators/qualified_domain_array_validator_spec.rb": 0.6328070380004647,8681 "spec/lib/gitlab/diff/formatters/image_formatter_spec.rb": 0.6547291459974076,8682 "spec/lib/gitlab/ci/config/extendable_spec.rb": 0.6175883689975308,8683 "spec/lib/gitlab/template/gitlab_ci_yml_template_spec.rb": 0.6868753929993545,8684 "spec/services/cohorts_service_spec.rb": 1.7391889669997909,8685 "spec/presenters/service_hook_presenter_spec.rb": 1.472974009000609,8686 "spec/services/bulk_imports/relation_batch_export_service_spec.rb": 1.3034127130013076,8687 "spec/models/diff_viewer/server_side_spec.rb": 1.2574958160003007,8688 "spec/lib/gitlab/jira_import/handle_labels_service_spec.rb": 1.3247373009980947,8689 "spec/views/notify/user_deactivated_email.text.erb_spec.rb": 0.8523939799997606,8690 "spec/lib/gitlab/github_import/importer/issues_importer_spec.rb": 0.7326355999975931,8691 "spec/services/jira_connect/sync_service_spec.rb": 1.2359582079989195,8692 "spec/lib/gitlab/service_desk_spec.rb": 0.7986633949985844,8693 "spec/lib/gitlab/sanitizers/exception_message_spec.rb": 0.5286318760008726,8694 "spec/lib/bulk_imports/common/pipelines/entity_finisher_spec.rb": 1.100111169002048,8695 "spec/models/project_pages_metadatum_spec.rb": 1.3924348049986293,8696 "spec/services/protected_tags/create_service_spec.rb": 1.1334525659985957,8697 "spec/scripts/setup/find_jh_branch_spec.rb": 0.46003209199989215,8698 "spec/lib/gitlab/gitaly_client/praefect_info_service_spec.rb": 1.2645771759998752,8699 "spec/helpers/blame_helper_spec.rb": 0.6657953050016658,8700 "spec/lib/gitlab/repository_size_error_message_spec.rb": 0.5222724769992055,8701 "spec/lib/gitlab/metrics/subscribers/load_balancing_spec.rb": 0.5228201169993554,8702 "spec/lib/sidebars/projects/menus/shimo_menu_spec.rb": 0.8743803580000531,8703 "spec/lib/gitlab/graphql/pagination/connections_spec.rb": 0.5084519379997801,8704 "spec/lib/gitlab/loggable_spec.rb": 0.4497715329998755,8705 "spec/serializers/integrations/field_entity_spec.rb": 0.6302996180020273,8706 "spec/lib/gitlab/config/entry/attributable_spec.rb": 0.4534795129984559,8707 "spec/helpers/url_helper_spec.rb": 0.44329205400208593,8708 "spec/lib/gitlab/usage_data_counters/vscode_extension_activity_unique_counter_spec.rb": 0.4864183200006664,8709 "spec/lib/json_web_token/rsa_token_spec.rb": 0.6747440049985016,8710 "spec/lib/gitlab/mailgun/webhook_processors/failure_logger_spec.rb": 0.4670418610003253,8711 "spec/graphql/types/merge_requests/assignee_type_spec.rb": 0.37786424799924134,8712 "spec/lib/gitlab/metrics/dashboard/stages/grafana_formatter_spec.rb": 0.7185229409988096,8713 "spec/lib/gitlab/ci/config/entry/stages_spec.rb": 0.4510853630017664,8714 "spec/workers/gitlab/github_import/import_issue_worker_spec.rb": 0.7426436389978335,8715 "spec/lib/gitlab/query_limiting/middleware_spec.rb": 0.45180648300083703,8716 "spec/models/work_items/widgets/notifications_spec.rb": 0.7974417950026691,8717 "spec/graphql/types/container_repository_tag_type_spec.rb": 0.39906818700183067,8718 "spec/workers/service_desk_email_receiver_worker_spec.rb": 0.49806722900029854,8719 "spec/graphql/types/ci/pipeline_schedule_variable_type_spec.rb": 0.468024511999829,8720 "spec/lib/gitlab/ci/pipeline/chain/assign_partition_spec.rb": 0.9280808539988357,8721 "spec/workers/users/create_statistics_worker_spec.rb": 0.6017649310015258,8722 "spec/lib/gitlab/ci/build/hook_spec.rb": 0.6352373070003523,8723 "spec/lib/gitlab/ci/config/entry/paths_spec.rb": 0.3416193109987944,8724 "spec/lib/gitlab/usage/metrics/instrumentations/count_boards_metric_spec.rb": 0.7081017620002967,8725 "spec/rubocop/cop/rspec/avoid_conditional_statements_spec.rb": 0.40165808700112393,8726 "spec/rubocop/cop/group_public_or_visible_to_user_spec.rb": 0.4118649860029109,8727 "spec/services/import/github/gists_import_service_spec.rb": 0.47633113999836496,8728 "spec/views/profiles/audit_log.html.haml_spec.rb": 0.5085891179987811,8729 "spec/models/preloaders/runner_manager_policy_preloader_spec.rb": 0.571552512999915,8730 "spec/serializers/analytics/cycle_analytics/stage_entity_spec.rb": 0.39950623699769494,8731 "spec/lib/gitlab/diff/suggestion_diff_spec.rb": 0.3189032039990707,8732 "spec/serializers/codequality_degradation_entity_spec.rb": 0.35881320999760646,8733 "spec/graphql/types/release_asset_link_type_spec.rb": 0.3368629520009563,8734 "spec/graphql/types/design_management/version_type_spec.rb": 0.346170531000098,8735 "spec/lib/gitlab/ci_access_spec.rb": 0.3472444319995702,8736 "spec/lib/gitlab/backtrace_cleaner_spec.rb": 0.31232843500038143,8737 "spec/lib/api/entities/ci/job_artifact_file_spec.rb": 0.3416375419983524,8738 "spec/workers/concerns/repository_check_queue_spec.rb": 0.2921238769995398,8739 "spec/lib/sidebars/projects/super_sidebar_menus/build_menu_spec.rb": 0.32943156300098053,8740 "spec/validators/html_safety_validator_spec.rb": 0.3343728330000886,8741 "spec/lib/gitlab/hashed_path_spec.rb": 0.3227801229986653,8742 "spec/lib/error_tracking/collector/sentry_request_parser_spec.rb": 0.3089955750001536,8743 "spec/lib/api/entities/bulk_imports/export_status_spec.rb": 0.3752380379992246,8744 "spec/graphql/types/issue_status_count_type_spec.rb": 0.3129968450011802,8745 "spec/graphql/types/ci/job_kind_enum_spec.rb": 0.29317773500224575,8746 "spec/lib/gitlab/metrics/dashboard/validator/custom_formats_spec.rb": 0.303324345000874,8747 "spec/tooling/docs/deprecation_handling_spec.rb": 0.29553512499842327,8748 "spec/graphql/types/packages/package_group_sort_enum_spec.rb": 0.27529271700041136,8749 "spec/graphql/types/packages/package_status_enum_spec.rb": 0.28672253700278816,8750 "spec/graphql/types/blob_viewer_type_spec.rb": 0.287803626000823,8751 "spec/lib/gitlab/kubernetes/pod_cmd_spec.rb": 0.28394526700139977,8752 "spec/helpers/export_helper_spec.rb": 0.25621828899966204,8753 "spec/workers/trending_projects_worker_spec.rb": 0.30156096599966986,8754 "spec/lib/gitlab/ci/status/core_spec.rb": 0.291498427002807158755}8756Knapsack global time execution for tests: 24m 10s8757Pending: (Failures listed here are expected and do not affect your suite's status)8758 1) AvatarUploader behaves like builds correct paths #cache_dir behaves like matches the method pattern 8759 # No pattern provided, skipping.8760 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88761 2) AvatarUploader behaves like builds correct paths #work_dir behaves like matches the method pattern 8762 # No pattern provided, skipping.8763 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88764 3) AvatarUploader behaves like builds correct paths #relative_path is relative8765 # Path not set, skipping.8766 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:408767 4) AvatarUploader behaves like builds correct paths .base_dir behaves like matches the method pattern 8768 # No pattern provided, skipping.8769 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88770 5) AvatarUploader object_store is REMOTE behaves like builds correct paths #cache_dir behaves like matches the method pattern 8771 # No pattern provided, skipping.8772 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88773 6) AvatarUploader object_store is REMOTE behaves like builds correct paths #work_dir behaves like matches the method pattern 8774 # No pattern provided, skipping.8775 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88776 7) AvatarUploader object_store is REMOTE behaves like builds correct paths #relative_path is relative8777 # Path not set, skipping.8778 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:408779 8) AvatarUploader object_store is REMOTE behaves like builds correct paths .absolute_path behaves like matches the method pattern 8780 # No pattern provided, skipping.8781 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88782 9) AvatarUploader object_store is REMOTE behaves like builds correct paths .base_dir behaves like matches the method pattern 8783 # No pattern provided, skipping.8784 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88785Finished in 24 minutes 16 seconds (files took 51.8 seconds to load)87863651 examples, 0 failures, 9 pending8787Randomized with seed 370598788[TEST PROF INFO] Time spent in factories: 11:52.698 (48.67% of total time)8789RSpec exited with 0.8790No examples to retry, congrats!8792Not uploading cache ruby-gems-debian-bullseye-ruby-3.0-16 due to policy8794Uploading artifacts...8795coverage/: found 5 matching artifact files and directories 8796crystalball/: found 2 matching artifact files and directories 8797deprecations/: found 3 matching artifact files and directories 8798knapsack/: found 4 matching artifact files and directories 8799WARNING: query_recorder/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 8800rspec/: found 16 matching artifact files and directories 8801WARNING: tmp/capybara/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 8802log/*.log: found 17 matching artifact files and directories 8803WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/4400964227/artifacts?artifact_format=zip&artifact_type=archive&expire_in=31d new-url=https://gitlab.com8804WARNING: Retrying... context=artifacts-uploader error=request redirected8805Uploading artifacts as "archive" to coordinator... 201 Created id=4400964227 responseStatus=201 Created token=64_3M3RQ8806Uploading artifacts...8807rspec/rspec-*.xml: found 1 matching artifact files and directories 8808WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/4400964227/artifacts?artifact_format=gzip&artifact_type=junit&expire_in=31d new-url=https://gitlab.com8809WARNING: Retrying... context=artifacts-uploader error=request redirected8810Uploading artifacts as "junit" to coordinator... 201 Created id=4400964227 responseStatus=201 Created token=64_3M3RQ8812Job succeeded