rspec unit pg12 13/22
Passed Started
by
@mkozono
Michael Kozono
1Fetching adamantium 0.2.02Installing adamantium 0.2.03Fetching rubocop-ast 0.2.04Installing rubocop-ast 0.2.05Fetching sawyer 0.8.26Installing sawyer 0.8.27Fetching sentry-raven 3.0.48Installing sentry-raven 3.0.49Fetching gitlab-gollum-rugged_adapter 0.4.4.4.gitlab.110Installing gitlab-gollum-rugged_adapter 0.4.4.4.gitlab.111Fetching grpc 1.42.0 (x86_64-linux)12Installing grpc 1.42.0 (x86_64-linux)13Fetching loofah 2.16.014Installing loofah 2.16.015Fetching sanitize 6.0.016Installing sanitize 6.0.017Fetching reverse_markdown 1.4.018Installing reverse_markdown 1.4.019Fetching rbtrace 0.4.1420Installing rbtrace 0.4.14 with native extensions21Fetching gitlab-license_finder 6.14.2.122Installing gitlab-license_finder 6.14.2.123Fetching rspec 3.8.024Installing rspec 3.8.025Fetching rails-dom-testing 2.0.326Installing rails-dom-testing 2.0.327Fetching factory_bot 5.0.228Installing factory_bot 5.0.229Fetching concord 0.1.530Installing concord 0.1.531Fetching rubocop 0.86.032Installing rubocop 0.86.033Fetching octokit 4.20.034Installing octokit 4.20.035Fetching rails-html-sanitizer 1.4.236Installing rails-html-sanitizer 1.4.237Fetching gitlab-gollum-lib 4.2.7.10.gitlab.238Installing gitlab-gollum-lib 4.2.7.10.gitlab.239Fetching unparser 0.4.740Installing unparser 0.4.741Fetching licensee 9.14.142Fetching actionview 6.1.4.743Installing licensee 9.14.144Installing actionview 6.1.4.745Fetching proc_to_ast 0.1.046Fetching actionpack 6.1.4.747Installing proc_to_ast 0.1.048Fetching rspec-parameterized 0.4.249Installing rspec-parameterized 0.4.250Installing actionpack 6.1.4.751Fetching gitlab-labkit 0.21.252Installing gitlab-labkit 0.21.253Bundle complete! 22 Gemfile dependencies, 100 gems now installed.54Gems in the groups production and development were not installed.55Bundled gems are installed into `/builds/gitlab-org/gitlab/vendor/gitaly-ruby`56Post-install message from rubyzip:57RubyZip 3.0 is coming!58**********************59The public API of some Rubyzip classes has been modernized to use named60parameters for optional arguments. Please check your usage of the61following classes:62 * `Zip::File`63 * `Zip::Entry`64 * `Zip::InputStream`65 * `Zip::OutputStream`66Please ensure that your Gemfiles and .gemspecs are suitably restrictive67to avoid an unexpected breakage when 3.0 is released (e.g. ~> 2.3.0).68See https://github.com/rubyzip/rubyzip for details. The Changelog also69lists other enhancements and bugfixes that have been implemented since70version 2.3.0.71Checking gitaly-ruby Gemfile...72Checking gitaly-ruby bundle...73The Gemfile's dependencies are satisfied74Trying to connect to gitaly: .................................................... OK75Trying to connect to gitaly2: .................................................................. OK76Trying to connect to praefect: ......... OK77==> 'scripts/gitaly-test-spawn' succeeded in 142 seconds.78$ source ./scripts/rspec_helpers.sh79$ rspec_paralellized_job "--tag ~quarantine --tag ~geo --tag ~level:migration"80SKIP_FLAKY_TESTS_AUTOMATICALLY: true81RETRY_FAILED_TESTS_IN_NEW_PROCESS: true82KNAPSACK_GENERATE_REPORT: true83FLAKY_RSPEC_GENERATE_REPORT: true84KNAPSACK_TEST_FILE_PATTERN: spec/{bin,channels,config,db,dependencies,elastic,elastic_integration,experiments,events,factories,finders,frontend,graphql,haml_lint,helpers,initializers,javascripts,lib,metrics_server,models,policies,presenters,rack_servers,replicators,routing,rubocop,scripts,serializers,services,sidekiq,sidekiq_cluster,spam,support_specs,tasks,uploaders,validators,views,workers,tooling,component}{,/**/}*_spec.rb85KNAPSACK_LOG_LEVEL: debug86KNAPSACK_REPORT_PATH: knapsack/rspec_unit_pg12_13_22_report.json87FLAKY_RSPEC_SUITE_REPORT_PATH: rspec/flaky/report-suite.json88FLAKY_RSPEC_REPORT_PATH: rspec/flaky/all_rspec_unit_pg12_13_22_report.json89NEW_FLAKY_RSPEC_REPORT_PATH: rspec/flaky/new_rspec_unit_pg12_13_22_report.json90SKIPPED_FLAKY_TESTS_REPORT_PATH: rspec/flaky/skipped_flaky_tests_rspec_unit_pg12_13_22_report.txt91RETRIED_TESTS_REPORT_PATH: rspec/flaky/retried_tests_rspec_unit_pg12_13_22_report.txt92CRYSTALBALL: 93Knapsack node specs:94spec/models/application_setting_spec.rb95spec/services/quick_actions/interpret_service_spec.rb96spec/services/merge_requests/build_service_spec.rb97spec/lib/gitlab/usage/metrics/names_suggestions/generator_spec.rb98spec/services/snippets/update_service_spec.rb99spec/models/integrations/slack_spec.rb100spec/models/design_management/design_spec.rb101spec/tooling/danger/project_helper_spec.rb102spec/lib/object_storage/direct_upload_spec.rb103spec/models/operations/feature_flags/strategy_spec.rb104spec/services/auto_merge/base_service_spec.rb105spec/workers/packages/maven/metadata/sync_worker_spec.rb106spec/models/integrations/webex_teams_spec.rb107spec/finders/concerns/packages/finder_helper_spec.rb108spec/services/resource_access_tokens/create_service_spec.rb109spec/models/integrations/pipelines_email_spec.rb110spec/models/integrations/drone_ci_spec.rb111spec/lib/gitlab/github_import/user_finder_spec.rb112spec/finders/projects/serverless/functions_finder_spec.rb113spec/services/members/approve_access_request_service_spec.rb114spec/lib/gitlab/ci/pipeline/expression/statement_spec.rb115spec/lib/gitlab/utils/strong_memoize_spec.rb116spec/lib/backup/manager_spec.rb117spec/lib/banzai/filter/references/project_reference_filter_spec.rb118spec/services/members/update_service_spec.rb119spec/models/route_spec.rb120spec/lib/gitlab/git/tag_spec.rb121spec/graphql/mutations/merge_requests/set_assignees_spec.rb122spec/lib/gitlab/diff/file_collection/merge_request_diff_spec.rb123spec/workers/packages/go/sync_packages_worker_spec.rb124spec/presenters/blob_presenter_spec.rb125spec/services/clusters/create_service_spec.rb126spec/models/terraform/state_spec.rb127spec/models/ci/pending_build_spec.rb128spec/finders/metrics/dashboards/annotations_finder_spec.rb129spec/lib/gitlab/workhorse_spec.rb130spec/config/mail_room_spec.rb131spec/models/projects/build_artifacts_size_refresh_spec.rb132spec/models/prometheus_metric_spec.rb133spec/finders/ci/pipelines_for_merge_request_finder_spec.rb134spec/lib/gitlab/metrics/dashboard/processor_spec.rb135spec/services/suggestions/create_service_spec.rb136spec/services/groups/import_export/export_service_spec.rb137spec/lib/banzai/filter/syntax_highlight_filter_spec.rb138spec/lib/gitlab/import_export/snippet_repo_restorer_spec.rb139spec/workers/merge_request_cleanup_refs_worker_spec.rb140spec/services/jira_connect_subscriptions/create_service_spec.rb141spec/finders/projects/topics_finder_spec.rb142spec/routing/admin_routing_spec.rb143spec/lib/gitlab/verify/job_artifacts_spec.rb144spec/uploaders/terraform/state_uploader_spec.rb145spec/lib/gitlab/middleware/read_only_spec.rb146spec/lib/gitlab/slash_commands/issue_move_spec.rb147spec/lib/gitlab/database/load_balancing/session_spec.rb148spec/lib/banzai/pipeline/full_pipeline_spec.rb149spec/models/packages/debian/group_component_file_spec.rb150spec/models/commit_signatures/x509_commit_signature_spec.rb151spec/graphql/resolvers/projects_resolver_spec.rb152spec/models/integrations/confluence_spec.rb153spec/lib/gitlab/checks/changes_access_spec.rb154spec/models/project_import_state_spec.rb155spec/lib/gitlab/sidekiq_daemon/memory_killer_spec.rb156spec/services/ci/after_requeue_job_service_spec.rb157spec/lib/gitlab/profiler_spec.rb158spec/workers/concerns/project_import_options_spec.rb159spec/lib/gitlab/email/handler/unsubscribe_handler_spec.rb160spec/workers/deployments/update_environment_worker_spec.rb161spec/lib/gitlab/repo_path_spec.rb162spec/helpers/nav_helper_spec.rb163spec/finders/resource_state_event_finder_spec.rb164spec/lib/banzai/filter/table_of_contents_filter_spec.rb165spec/services/boards/lists/destroy_service_spec.rb166spec/helpers/users/callouts_helper_spec.rb167spec/models/concerns/project_features_compatibility_spec.rb168spec/lib/gitlab/database/background_migration/prometheus_metrics_spec.rb169spec/workers/new_merge_request_worker_spec.rb170spec/services/merge_requests/request_review_service_spec.rb171spec/helpers/admin/user_actions_helper_spec.rb172spec/lib/gitlab/ci/config/entry/include_spec.rb173spec/lib/gitlab/import_export/attributes_finder_spec.rb174spec/lib/gitlab/patch/prependable_spec.rb175spec/rubocop/cop/migration/safer_boolean_column_spec.rb176spec/lib/banzai/reference_parser/feature_flag_parser_spec.rb177spec/services/packages/debian/generate_distribution_key_service_spec.rb178spec/workers/users/deactivate_dormant_users_worker_spec.rb179spec/finders/security/license_compliance_jobs_finder_spec.rb180spec/lib/system_check/simple_executor_spec.rb181spec/lib/gitlab/ci/pipeline/expression/lexeme/matches_spec.rb182spec/graphql/resolvers/labels_resolver_spec.rb183spec/lib/bitbucket_server/connection_spec.rb184spec/graphql/types/base_object_spec.rb185spec/tasks/gitlab/git_rake_spec.rb186spec/lib/gitlab/checks/lfs_integrity_spec.rb187spec/services/protected_branches/create_service_spec.rb188spec/lib/gitlab/url_blockers/url_allowlist_spec.rb189spec/lib/gitlab/doctor/secrets_spec.rb190spec/models/integrations/mock_ci_spec.rb191spec/models/packages/sem_ver_spec.rb192spec/models/analytics/usage_trends/measurement_spec.rb193spec/services/incident_management/pager_duty/create_incident_issue_service_spec.rb194spec/workers/bulk_import_worker_spec.rb195spec/lib/gitlab/ci/status/build/failed_allowed_spec.rb196spec/serializers/diff_file_metadata_entity_spec.rb197spec/lib/gitlab/ci/build/rules/rule_spec.rb198spec/finders/resource_milestone_event_finder_spec.rb199spec/finders/design_management/designs_finder_spec.rb200spec/experiments/ios_specific_templates_experiment_spec.rb201spec/models/preloaders/user_max_access_level_in_groups_preloader_spec.rb202spec/lib/gitlab/import_export/uploads_restorer_spec.rb203spec/lib/gitlab/word_diff/segments/diff_hunk_spec.rb204spec/models/blob_viewer/base_spec.rb205spec/lib/sidebars/panel_spec.rb206spec/graphql/mutations/clusters/agent_tokens/create_spec.rb207spec/services/prometheus/proxy_service_spec.rb208spec/views/layouts/_flash.html.haml_spec.rb209spec/services/boards/visits/create_service_spec.rb210spec/models/preloaders/environments/deployment_preloader_spec.rb211spec/tasks/cache/clear/redis_spec.rb212spec/workers/authorized_project_update/project_recalculate_per_user_worker_spec.rb213spec/graphql/mutations/alert_management/prometheus_integration/update_spec.rb214spec/workers/packages/cleanup_package_file_worker_spec.rb215spec/workers/ci/pending_builds/update_project_worker_spec.rb216spec/views/projects/notes/_more_actions_dropdown.html.haml_spec.rb217spec/policies/ci/pipeline_schedule_policy_spec.rb218spec/finders/projects/members/effective_access_level_per_user_finder_spec.rb219spec/services/jira_import/users_importer_spec.rb220spec/lib/gitlab/issuables_count_for_state_spec.rb221spec/services/ci/append_build_trace_service_spec.rb222spec/services/notification_recipients/builder/new_note_spec.rb223spec/graphql/mutations/alert_management/prometheus_integration/create_spec.rb224spec/lib/gitlab/database/gitlab_schema_spec.rb225spec/lib/gitlab/analytics/cycle_analytics/stage_events/merge_request_created_spec.rb226spec/finders/users_star_projects_finder_spec.rb227spec/workers/concerns/worker_context_spec.rb228spec/rubocop/cop/gitlab/module_with_instance_variables_spec.rb229spec/presenters/tree_entry_presenter_spec.rb230spec/lib/gitlab/octokit/middleware_spec.rb231spec/finders/context_commits_finder_spec.rb232spec/workers/update_highest_role_worker_spec.rb233spec/lib/gitlab/external_authorization/response_spec.rb234spec/lib/bitbucket_server/representation/comment_spec.rb235spec/lib/gitlab/ci/config/entry/ports_spec.rb236spec/graphql/resolvers/projects/snippets_resolver_spec.rb237spec/lib/gitlab/sidekiq_middleware/size_limiter/client_spec.rb238spec/models/users/callout_spec.rb239spec/models/error_tracking/error_event_spec.rb240spec/lib/api/helpers/label_helpers_spec.rb241spec/lib/banzai/reference_parser/mentioned_user_parser_spec.rb242spec/graphql/types/issue_sort_enum_spec.rb243spec/lib/learn_gitlab/onboarding_spec.rb244spec/workers/jira_connect/sync_builds_worker_spec.rb245spec/models/integrations/irker_spec.rb246spec/workers/ci/daily_build_group_report_results_worker_spec.rb247spec/workers/merge_requests/resolve_todos_worker_spec.rb248spec/models/postgresql/detached_partition_spec.rb249spec/lib/gitlab/auth/o_auth/auth_hash_spec.rb250spec/lib/gitlab/search/sort_options_spec.rb251spec/services/packages/composer/composer_json_service_spec.rb252spec/services/ci/job_token_scope/remove_project_service_spec.rb253spec/lib/gitlab/usage_data_counters/editor_unique_counter_spec.rb254spec/policies/timelog_policy_spec.rb255spec/lib/gitlab/usage_data_counters/service_usage_data_counter_spec.rb256spec/initializers/cookies_serializer_spec.rb257spec/models/users/banned_user_spec.rb258spec/lib/gitlab/import_export/group/object_builder_spec.rb259spec/lib/gitlab/hook_data/issue_builder_spec.rb260spec/views/admin/application_settings/_ci_cd.html.haml_spec.rb261spec/lib/gitlab/github_import/object_counter_spec.rb262spec/serializers/ci/downloadable_artifact_entity_spec.rb263spec/models/x509_issuer_spec.rb264spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/strategies_spec.rb265spec/models/preloaders/merge_request_diff_preloader_spec.rb266spec/lib/gitlab/usage_data_counters/gitlab_cli_activity_unique_counter_spec.rb267spec/lib/gitlab/ci/pipeline/quota/deployments_spec.rb268spec/graphql/resolvers/ci/test_report_summary_resolver_spec.rb269spec/policies/group_deploy_key_policy_spec.rb270spec/graphql/mutations/boards/lists/update_spec.rb271spec/graphql/mutations/alert_management/http_integration/create_spec.rb272spec/workers/bulk_imports/relation_export_worker_spec.rb273spec/lib/gitlab/ci/templates/MATLAB_spec.rb274spec/workers/pages_domain_ssl_renewal_worker_spec.rb275spec/initializers/validate_database_config_spec.rb276spec/services/users/saved_replies/update_service_spec.rb277spec/lib/gitlab/ci/reports/security/locations/secret_detection_spec.rb278spec/rubocop/cop/migration/add_columns_to_wide_tables_spec.rb279spec/tooling/rspec_flaky/report_spec.rb280spec/lib/gitlab/sql/recursive_cte_spec.rb281spec/graphql/mutations/base_mutation_spec.rb282spec/lib/generators/gitlab/usage_metric_generator_spec.rb283spec/lib/gitlab/time_tracking_formatter_spec.rb284spec/models/bulk_imports/file_transfer/group_config_spec.rb285spec/lib/gitlab/email/message/in_product_marketing_spec.rb286spec/graphql/resolvers/clusters/agent_activity_events_resolver_spec.rb287spec/lib/bulk_imports/projects/pipelines/project_pipeline_spec.rb288spec/lib/bulk_imports/network_error_spec.rb289spec/lib/system_check/app/hashed_storage_all_projects_check_spec.rb290spec/lib/gitlab/event_store/event_spec.rb291spec/models/releases/source_spec.rb292spec/workers/concerns/cronjob_queue_spec.rb293spec/views/shared/_milestones_sort_dropdown.html.haml_spec.rb294spec/tooling/rspec_flaky/flaky_examples_collection_spec.rb295spec/lib/gitlab/sql/cte_spec.rb296spec/views/layouts/nav/sidebar/_profile.html.haml_spec.rb297spec/models/raw_usage_data_spec.rb298spec/services/bulk_push_event_payload_service_spec.rb299spec/lib/gitlab/kubernetes/kubectl_cmd_spec.rb300spec/helpers/explore_helper_spec.rb301spec/lib/gitlab/usage/metrics/instrumentations/count_users_associating_milestones_to_releases_metric_spec.rb302spec/lib/gitlab/graphql/find_argument_in_parent_spec.rb303spec/serializers/blob_entity_spec.rb304spec/lib/gitlab/usage_data_counters/search_counter_spec.rb305spec/lib/bulk_imports/groups/pipelines/group_attributes_pipeline_spec.rb306spec/models/user_mentions/commit_user_mention_spec.rb307spec/lib/product_analytics/event_params_spec.rb308spec/graphql/types/namespace/package_settings_type_spec.rb309spec/workers/issues/reschedule_stuck_issue_rebalances_worker_spec.rb310spec/lib/gitlab/patch/action_cable_redis_listener_spec.rb311spec/workers/ci/archive_trace_worker_spec.rb312spec/workers/disallow_two_factor_for_subgroups_worker_spec.rb313spec/models/blob_viewer/route_map_spec.rb314spec/lib/gitlab/config/entry/validator_spec.rb315spec/graphql/features/feature_flag_spec.rb316spec/lib/gitlab/graphql/tracers/metrics_tracer_spec.rb317spec/lib/sidebars/projects/menus/scope_menu_spec.rb318spec/rubocop/cop/group_public_or_visible_to_user_spec.rb319spec/lib/gitlab/usage_data_counters/base_counter_spec.rb320spec/rubocop/cop/database/establish_connection_spec.rb321spec/lib/gitlab/ci/config/yaml/tags/resolver_spec.rb322spec/graphql/types/kas/agent_metadata_type_spec.rb323spec/graphql/types/release_asset_link_type_spec.rb324spec/workers/schedule_migrate_external_diffs_worker_spec.rb325spec/graphql/types/query_complexity_type_spec.rb326spec/graphql/types/projects/service_type_spec.rb327spec/graphql/resolvers/packages_base_resolver_spec.rb328spec/serializers/jira_connect/subscription_entity_spec.rb329spec/lib/bulk_imports/common/transformers/prohibited_attributes_transformer_spec.rb330spec/lib/gitlab/rugged_instrumentation_spec.rb331spec/rubocop/cop/scalability/idempotent_worker_spec.rb332spec/lib/api/helpers/graphql_helpers_spec.rb333spec/workers/packages/composer/cache_cleanup_worker_spec.rb334spec/services/events/render_service_spec.rb335spec/lib/api/entities/nuget/search_result_spec.rb336spec/workers/partition_creation_worker_spec.rb337spec/graphql/types/commit_encoding_enum_spec.rb338spec/serializers/evidences/release_serializer_spec.rb339spec/lib/gitlab/language_data_spec.rb340spec/lib/gitlab/no_cache_headers_spec.rb341spec/lib/gitlab/error_tracking/log_formatter_spec.rb342spec/graphql/types/merge_request_review_state_enum_spec.rb343spec/models/blob_viewer/podspec_spec.rb344spec/graphql/types/container_repository_cleanup_status_enum_spec.rb345spec/models/discussion_note_spec.rb346Filter specs:347Running specs:348Running all node tests without filter349spec/models/application_setting_spec.rb350spec/services/quick_actions/interpret_service_spec.rb351spec/services/merge_requests/build_service_spec.rb352spec/lib/gitlab/usage/metrics/names_suggestions/generator_spec.rb353spec/services/snippets/update_service_spec.rb354spec/models/integrations/slack_spec.rb355spec/models/design_management/design_spec.rb356spec/tooling/danger/project_helper_spec.rb357spec/lib/object_storage/direct_upload_spec.rb358spec/models/operations/feature_flags/strategy_spec.rb359spec/services/auto_merge/base_service_spec.rb360spec/workers/packages/maven/metadata/sync_worker_spec.rb361spec/models/integrations/webex_teams_spec.rb362spec/finders/concerns/packages/finder_helper_spec.rb363spec/services/resource_access_tokens/create_service_spec.rb364spec/models/integrations/pipelines_email_spec.rb365spec/models/integrations/drone_ci_spec.rb366spec/lib/gitlab/github_import/user_finder_spec.rb367spec/finders/projects/serverless/functions_finder_spec.rb368spec/services/members/approve_access_request_service_spec.rb369spec/lib/gitlab/ci/pipeline/expression/statement_spec.rb370spec/lib/gitlab/utils/strong_memoize_spec.rb371spec/lib/backup/manager_spec.rb372spec/lib/banzai/filter/references/project_reference_filter_spec.rb373spec/services/members/update_service_spec.rb374spec/models/route_spec.rb375spec/lib/gitlab/git/tag_spec.rb376spec/graphql/mutations/merge_requests/set_assignees_spec.rb377spec/lib/gitlab/diff/file_collection/merge_request_diff_spec.rb378spec/workers/packages/go/sync_packages_worker_spec.rb379spec/presenters/blob_presenter_spec.rb380spec/services/clusters/create_service_spec.rb381spec/models/terraform/state_spec.rb382spec/models/ci/pending_build_spec.rb383spec/finders/metrics/dashboards/annotations_finder_spec.rb384spec/lib/gitlab/workhorse_spec.rb385spec/config/mail_room_spec.rb386spec/models/projects/build_artifacts_size_refresh_spec.rb387spec/models/prometheus_metric_spec.rb388spec/finders/ci/pipelines_for_merge_request_finder_spec.rb389spec/lib/gitlab/metrics/dashboard/processor_spec.rb390spec/services/suggestions/create_service_spec.rb391spec/services/groups/import_export/export_service_spec.rb392spec/lib/banzai/filter/syntax_highlight_filter_spec.rb393spec/lib/gitlab/import_export/snippet_repo_restorer_spec.rb394spec/workers/merge_request_cleanup_refs_worker_spec.rb395spec/services/jira_connect_subscriptions/create_service_spec.rb396spec/finders/projects/topics_finder_spec.rb397spec/routing/admin_routing_spec.rb398spec/lib/gitlab/verify/job_artifacts_spec.rb399spec/uploaders/terraform/state_uploader_spec.rb400spec/lib/gitlab/middleware/read_only_spec.rb401spec/lib/gitlab/slash_commands/issue_move_spec.rb402spec/lib/gitlab/database/load_balancing/session_spec.rb403spec/lib/banzai/pipeline/full_pipeline_spec.rb404spec/models/packages/debian/group_component_file_spec.rb405spec/models/commit_signatures/x509_commit_signature_spec.rb406spec/graphql/resolvers/projects_resolver_spec.rb407spec/models/integrations/confluence_spec.rb408spec/lib/gitlab/checks/changes_access_spec.rb409spec/models/project_import_state_spec.rb410spec/lib/gitlab/sidekiq_daemon/memory_killer_spec.rb411spec/services/ci/after_requeue_job_service_spec.rb412spec/lib/gitlab/profiler_spec.rb413spec/workers/concerns/project_import_options_spec.rb414spec/lib/gitlab/email/handler/unsubscribe_handler_spec.rb415spec/workers/deployments/update_environment_worker_spec.rb416spec/lib/gitlab/repo_path_spec.rb417spec/helpers/nav_helper_spec.rb418spec/finders/resource_state_event_finder_spec.rb419spec/lib/banzai/filter/table_of_contents_filter_spec.rb420spec/services/boards/lists/destroy_service_spec.rb421spec/helpers/users/callouts_helper_spec.rb422spec/models/concerns/project_features_compatibility_spec.rb423spec/lib/gitlab/database/background_migration/prometheus_metrics_spec.rb424spec/workers/new_merge_request_worker_spec.rb425spec/services/merge_requests/request_review_service_spec.rb426spec/helpers/admin/user_actions_helper_spec.rb427spec/lib/gitlab/ci/config/entry/include_spec.rb428spec/lib/gitlab/import_export/attributes_finder_spec.rb429spec/lib/gitlab/patch/prependable_spec.rb430spec/rubocop/cop/migration/safer_boolean_column_spec.rb431spec/lib/banzai/reference_parser/feature_flag_parser_spec.rb432spec/services/packages/debian/generate_distribution_key_service_spec.rb433spec/workers/users/deactivate_dormant_users_worker_spec.rb434spec/finders/security/license_compliance_jobs_finder_spec.rb435spec/lib/system_check/simple_executor_spec.rb436spec/lib/gitlab/ci/pipeline/expression/lexeme/matches_spec.rb437spec/graphql/resolvers/labels_resolver_spec.rb438spec/lib/bitbucket_server/connection_spec.rb439spec/graphql/types/base_object_spec.rb440spec/tasks/gitlab/git_rake_spec.rb441spec/lib/gitlab/checks/lfs_integrity_spec.rb442spec/services/protected_branches/create_service_spec.rb443spec/lib/gitlab/url_blockers/url_allowlist_spec.rb444spec/lib/gitlab/doctor/secrets_spec.rb445spec/models/integrations/mock_ci_spec.rb446spec/models/packages/sem_ver_spec.rb447spec/models/analytics/usage_trends/measurement_spec.rb448spec/services/incident_management/pager_duty/create_incident_issue_service_spec.rb449spec/workers/bulk_import_worker_spec.rb450spec/lib/gitlab/ci/status/build/failed_allowed_spec.rb451spec/serializers/diff_file_metadata_entity_spec.rb452spec/lib/gitlab/ci/build/rules/rule_spec.rb453spec/finders/resource_milestone_event_finder_spec.rb454spec/finders/design_management/designs_finder_spec.rb455spec/experiments/ios_specific_templates_experiment_spec.rb456spec/models/preloaders/user_max_access_level_in_groups_preloader_spec.rb457spec/lib/gitlab/import_export/uploads_restorer_spec.rb458spec/lib/gitlab/word_diff/segments/diff_hunk_spec.rb459spec/models/blob_viewer/base_spec.rb460spec/lib/sidebars/panel_spec.rb461spec/graphql/mutations/clusters/agent_tokens/create_spec.rb462spec/services/prometheus/proxy_service_spec.rb463spec/views/layouts/_flash.html.haml_spec.rb464spec/services/boards/visits/create_service_spec.rb465spec/models/preloaders/environments/deployment_preloader_spec.rb466spec/tasks/cache/clear/redis_spec.rb467spec/workers/authorized_project_update/project_recalculate_per_user_worker_spec.rb468spec/graphql/mutations/alert_management/prometheus_integration/update_spec.rb469spec/workers/packages/cleanup_package_file_worker_spec.rb470spec/workers/ci/pending_builds/update_project_worker_spec.rb471spec/views/projects/notes/_more_actions_dropdown.html.haml_spec.rb472spec/policies/ci/pipeline_schedule_policy_spec.rb473spec/finders/projects/members/effective_access_level_per_user_finder_spec.rb474spec/services/jira_import/users_importer_spec.rb475spec/lib/gitlab/issuables_count_for_state_spec.rb476spec/services/ci/append_build_trace_service_spec.rb477spec/services/notification_recipients/builder/new_note_spec.rb478spec/graphql/mutations/alert_management/prometheus_integration/create_spec.rb479spec/lib/gitlab/database/gitlab_schema_spec.rb480spec/lib/gitlab/analytics/cycle_analytics/stage_events/merge_request_created_spec.rb481spec/finders/users_star_projects_finder_spec.rb482spec/workers/concerns/worker_context_spec.rb483spec/rubocop/cop/gitlab/module_with_instance_variables_spec.rb484spec/presenters/tree_entry_presenter_spec.rb485spec/lib/gitlab/octokit/middleware_spec.rb486spec/finders/context_commits_finder_spec.rb487spec/workers/update_highest_role_worker_spec.rb488spec/lib/gitlab/external_authorization/response_spec.rb489spec/lib/bitbucket_server/representation/comment_spec.rb490spec/lib/gitlab/ci/config/entry/ports_spec.rb491spec/graphql/resolvers/projects/snippets_resolver_spec.rb492spec/lib/gitlab/sidekiq_middleware/size_limiter/client_spec.rb493spec/models/users/callout_spec.rb494spec/models/error_tracking/error_event_spec.rb495spec/lib/api/helpers/label_helpers_spec.rb496spec/lib/banzai/reference_parser/mentioned_user_parser_spec.rb497spec/graphql/types/issue_sort_enum_spec.rb498spec/lib/learn_gitlab/onboarding_spec.rb499spec/workers/jira_connect/sync_builds_worker_spec.rb500spec/models/integrations/irker_spec.rb501spec/workers/ci/daily_build_group_report_results_worker_spec.rb502spec/workers/merge_requests/resolve_todos_worker_spec.rb503spec/models/postgresql/detached_partition_spec.rb504spec/lib/gitlab/auth/o_auth/auth_hash_spec.rb505spec/lib/gitlab/search/sort_options_spec.rb506spec/services/packages/composer/composer_json_service_spec.rb507spec/services/ci/job_token_scope/remove_project_service_spec.rb508spec/lib/gitlab/usage_data_counters/editor_unique_counter_spec.rb509spec/policies/timelog_policy_spec.rb510spec/lib/gitlab/usage_data_counters/service_usage_data_counter_spec.rb511spec/initializers/cookies_serializer_spec.rb512spec/models/users/banned_user_spec.rb513spec/lib/gitlab/import_export/group/object_builder_spec.rb514spec/lib/gitlab/hook_data/issue_builder_spec.rb515spec/views/admin/application_settings/_ci_cd.html.haml_spec.rb516spec/lib/gitlab/github_import/object_counter_spec.rb517spec/serializers/ci/downloadable_artifact_entity_spec.rb518spec/models/x509_issuer_spec.rb519spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/strategies_spec.rb520spec/models/preloaders/merge_request_diff_preloader_spec.rb521spec/lib/gitlab/usage_data_counters/gitlab_cli_activity_unique_counter_spec.rb522spec/lib/gitlab/ci/pipeline/quota/deployments_spec.rb523spec/graphql/resolvers/ci/test_report_summary_resolver_spec.rb524spec/policies/group_deploy_key_policy_spec.rb525spec/graphql/mutations/boards/lists/update_spec.rb526spec/graphql/mutations/alert_management/http_integration/create_spec.rb527spec/workers/bulk_imports/relation_export_worker_spec.rb528spec/lib/gitlab/ci/templates/MATLAB_spec.rb529spec/workers/pages_domain_ssl_renewal_worker_spec.rb530spec/initializers/validate_database_config_spec.rb531spec/services/users/saved_replies/update_service_spec.rb532spec/lib/gitlab/ci/reports/security/locations/secret_detection_spec.rb533spec/rubocop/cop/migration/add_columns_to_wide_tables_spec.rb534spec/tooling/rspec_flaky/report_spec.rb535spec/lib/gitlab/sql/recursive_cte_spec.rb536spec/graphql/mutations/base_mutation_spec.rb537spec/lib/generators/gitlab/usage_metric_generator_spec.rb538spec/lib/gitlab/time_tracking_formatter_spec.rb539spec/models/bulk_imports/file_transfer/group_config_spec.rb540spec/lib/gitlab/email/message/in_product_marketing_spec.rb541spec/graphql/resolvers/clusters/agent_activity_events_resolver_spec.rb542spec/lib/bulk_imports/projects/pipelines/project_pipeline_spec.rb543spec/lib/bulk_imports/network_error_spec.rb544spec/lib/system_check/app/hashed_storage_all_projects_check_spec.rb545spec/lib/gitlab/event_store/event_spec.rb546spec/models/releases/source_spec.rb547spec/workers/concerns/cronjob_queue_spec.rb548spec/views/shared/_milestones_sort_dropdown.html.haml_spec.rb549spec/tooling/rspec_flaky/flaky_examples_collection_spec.rb550spec/lib/gitlab/sql/cte_spec.rb551spec/views/layouts/nav/sidebar/_profile.html.haml_spec.rb552spec/models/raw_usage_data_spec.rb553spec/services/bulk_push_event_payload_service_spec.rb554spec/lib/gitlab/kubernetes/kubectl_cmd_spec.rb555spec/helpers/explore_helper_spec.rb556spec/lib/gitlab/usage/metrics/instrumentations/count_users_associating_milestones_to_releases_metric_spec.rb557spec/lib/gitlab/graphql/find_argument_in_parent_spec.rb558spec/serializers/blob_entity_spec.rb559spec/lib/gitlab/usage_data_counters/search_counter_spec.rb560spec/lib/bulk_imports/groups/pipelines/group_attributes_pipeline_spec.rb561spec/models/user_mentions/commit_user_mention_spec.rb562spec/lib/product_analytics/event_params_spec.rb563spec/graphql/types/namespace/package_settings_type_spec.rb564spec/workers/issues/reschedule_stuck_issue_rebalances_worker_spec.rb565spec/lib/gitlab/patch/action_cable_redis_listener_spec.rb566spec/workers/ci/archive_trace_worker_spec.rb567spec/workers/disallow_two_factor_for_subgroups_worker_spec.rbKnapsack report generator started!568DEPRECATION WARNING: Database connection should not be called during initializers. Read more at https://docs.gitlab.com/ee/development/rails_initializers.html#database-connections-in-initializers (called from connected? at ee/lib/gitlab/geo.rb:79)569DEPRECATION WARNING: Database connection should not be called during initializers. Read more at https://docs.gitlab.com/ee/development/rails_initializers.html#database-connections-in-initializers (called from block in <module:HasVariable> at app/models/concerns/ci/has_variable.rb:22)570DEPRECATION WARNING: Database connection should not be called during initializers. Read more at https://docs.gitlab.com/ee/development/rails_initializers.html#database-connections-in-initializers (called from exists? at lib/gitlab/database/reflection.rb:94)571Run options: exclude {:quarantine=>true, :geo=>true, :level=>"migration"}572==> /builds/gitlab-org/gitlab/tmp/tests/gitlab-test_bare set up in 0.074157493 seconds...573Test environment set up in 0.702546324 seconds574ApplicationSetting575 example at ./spec/models/application_setting_spec.rb:12576 example at ./spec/models/application_setting_spec.rb:13577 is expected to eq nil578 is expected to be valid579 is expected to be present580 is expected to have db column named auto_devops_enabled581 behaves like sanitizable582 includes Sanitizable583 #default_branch_name584 when input includes javascript tags585 gets sanitized586 #default_branch_name validation587 when input contains pre-escaped html entities588 is not valid589 validations590 is expected to allow :home_page_url to be ‹nil›591 is expected to allow :home_page_url to be ‹"http://example.com"›592 is expected to allow :home_page_url to be ‹"https://example.com"›593 is expected not to allow :home_page_url to be ‹"ftp://example.com"›594 is expected to allow :after_sign_out_path to be ‹nil›595 is expected to allow :after_sign_out_path to be ‹"http://example.com"›596 is expected to allow :after_sign_out_path to be ‹"https://example.com"›597 is expected not to allow :after_sign_out_path to be ‹"ftp://example.com"›598 is expected to allow :commit_email_hostname to be ‹"dev.gitlab.com"›599 is expected not to allow :commit_email_hostname to be ‹"@dev.gitlab"›600 is expected to allow :container_expiration_policies_enable_historic_entries to be ‹true›601 is expected to allow :container_expiration_policies_enable_historic_entries to be ‹false›602 is expected not to allow :container_expiration_policies_enable_historic_entries to be ‹nil›603 is expected to allow :lets_encrypt_notification_email to be ‹"myemail@gitlab.com"›604 is expected to allow :lets_encrypt_notification_email to be ‹nil›605 is expected not to allow :lets_encrypt_notification_email to be ‹"notanemail"›606 is expected not to allow :lets_encrypt_notification_email to be ‹"myemail@example.com"›607 is expected to allow :lets_encrypt_notification_email to be ‹"myemail@test.example.com"›608 is expected to allow :outbound_local_requests_whitelist to be ‹["192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1"]›609 is expected not to allow :outbound_local_requests_whitelist to be ‹["192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1"]›610 is expected to allow :outbound_local_requests_whitelist to be ‹["111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"]›611 is expected not to allow :outbound_local_requests_whitelist to be ‹["1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"]›612 is expected not to allow :outbound_local_requests_whitelist to be ‹["ğitlab.com"]›613 is expected to allow :outbound_local_requests_whitelist to be ‹["xn--itlab-j1a.com"]›614 is expected not to allow :outbound_local_requests_whitelist to be ‹["<h1></h1>"]›615 is expected to allow :outbound_local_requests_whitelist to be ‹["gitlab.com"]›616 is expected not to allow :outbound_local_requests_whitelist to be ‹nil›617 is expected to allow :outbound_local_requests_whitelist to be ‹[]›618 is expected to allow :static_objects_external_storage_url to be ‹nil›619 is expected to allow :static_objects_external_storage_url to be ‹"http://example.com"›620 is expected to allow :static_objects_external_storage_url to be ‹"https://example.com"›621 is expected to allow :protected_paths to be ‹["/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example"]›622 is expected not to allow :protected_paths to be ‹["/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example", "/example"]›623 is expected not to allow :protected_paths to be ‹nil›624 is expected to allow :protected_paths to be ‹[]›625 is expected to allow :push_event_hooks_limit to be ‹3›626 is expected not to allow :push_event_hooks_limit to be ‹"three"›627 is expected not to allow :push_event_hooks_limit to be ‹nil›628 is expected to allow :push_event_activities_limit to be ‹3›629 is expected not to allow :push_event_activities_limit to be ‹"three"›630 is expected not to allow :push_event_activities_limit to be ‹nil›631 is expected to validate that :container_registry_delete_tags_service_timeout looks like an integer greater than or equal to 0632 is expected to validate that :container_registry_cleanup_tags_service_max_list_size looks like an integer greater than or equal to 0633 is expected to validate that :container_registry_expiration_policies_worker_capacity looks like an integer greater than or equal to 0634 is expected to allow :container_registry_expiration_policies_caching to be ‹true›635 is expected to allow :container_registry_expiration_policies_caching to be ‹false›636 is expected to validate that :container_registry_import_max_tags_count looks like an integer greater than or equal to 0637 is expected to validate that :container_registry_import_max_retries looks like an integer greater than or equal to 0638 is expected to validate that :container_registry_import_start_max_retries looks like an integer greater than or equal to 0639 is expected to validate that :container_registry_import_max_step_duration looks like an integer greater than or equal to 0640 is expected not to allow :container_registry_import_max_tags_count to be ‹nil›641 is expected not to allow :container_registry_import_max_retries to be ‹nil›642 is expected not to allow :container_registry_import_start_max_retries to be ‹nil›643 is expected not to allow :container_registry_import_max_step_duration to be ‹nil›644 is expected to validate that :container_registry_import_target_plan cannot be empty/falsy645 is expected to validate that :container_registry_import_created_before cannot be empty/falsy646 is expected to validate that :dependency_proxy_ttl_group_policy_worker_capacity looks like an integer greater than or equal to 0647 is expected not to allow :dependency_proxy_ttl_group_policy_worker_capacity to be ‹nil›648 is expected to validate that :packages_cleanup_package_file_worker_capacity looks like an integer greater than or equal to 0649 is expected not to allow :packages_cleanup_package_file_worker_capacity to be ‹nil›650 is expected to validate that :snippet_size_limit looks like an integer greater than 0651 is expected to validate that :wiki_page_max_content_bytes looks like an integer greater than or equal to 1024652 is expected to validate that :max_artifacts_size cannot be empty/falsy653 is expected to validate that :max_artifacts_size looks like an integer greater than 0654 is expected to validate that :max_yaml_size_bytes cannot be empty/falsy655 is expected to validate that :max_yaml_size_bytes looks like an integer greater than 0656 is expected to validate that :max_yaml_depth cannot be empty/falsy657 is expected to validate that :max_yaml_depth looks like an integer greater than 0658 is expected to validate that :max_pages_size cannot be empty/falsy659 ensures max_pages_size is an integer greater than 0 (or equal to 0 to indicate unlimited/maximum)660 is expected to validate that :jobs_per_stage_page_size cannot be empty/falsy661 is expected to validate that :jobs_per_stage_page_size looks like an integer greater than or equal to 0662 is expected not to allow :minimum_password_length to be ‹7›663 is expected not to allow :minimum_password_length to be ‹129›664 is expected not to allow :minimum_password_length to be ‹nil›665 is expected not to allow :minimum_password_length to be ‹"abc"›666 is expected to allow :minimum_password_length to be ‹10›667 is expected to allow :issues_create_limit to be ‹300›668 is expected not to allow :issues_create_limit to be ‹"three"›669 is expected not to allow :issues_create_limit to be ‹nil›670 is expected not to allow :issues_create_limit to be ‹10.5›671 is expected not to allow :issues_create_limit to be ‹-1›672 is expected to allow :raw_blob_request_limit to be ‹0›673 is expected not to allow :raw_blob_request_limit to be ‹"abc"›674 is expected not to allow :raw_blob_request_limit to be ‹nil›675 is expected not to allow :raw_blob_request_limit to be ‹10.5›676 is expected not to allow :raw_blob_request_limit to be ‹-1›677 is expected not to allow :hashed_storage_enabled to be ‹false›678 is expected to allow :repository_storages_weighted to be ‹{"default" => 0}›679 is expected to allow :repository_storages_weighted to be ‹{"default" => 50}›680 is expected to allow :repository_storages_weighted to be ‹{"default" => 100}›681 is expected to allow :repository_storages_weighted to be ‹{"default" => "90"}›682 is expected to allow :repository_storages_weighted to be ‹{"default" => nil}›683 is expected not to allow :repository_storages_weighted to be ‹{"default" => -1}›, producing a custom validation error on failure684 is expected not to allow :repository_storages_weighted to be ‹{"default" => 101}›, producing a custom validation error on failure685 is expected not to allow :repository_storages_weighted to be ‹{"default" => 100, shouldntexist: 50}›, producing a custom validation error on failure686 is expected to allow :notes_create_limit to be ‹400›687 is expected not to allow :notes_create_limit to be ‹"two"›688 is expected not to allow :notes_create_limit to be ‹nil›689 is expected not to allow :notes_create_limit to be ‹5.5›690 is expected not to allow :notes_create_limit to be ‹-2›691 is expected to allow :search_rate_limit to be ‹400›692 is expected not to allow :search_rate_limit to be ‹"two"›693 is expected not to allow :search_rate_limit to be ‹nil›694 is expected not to allow :search_rate_limit to be ‹5.5›695 is expected not to allow :search_rate_limit to be ‹-2›696 is expected to allow :search_rate_limit_unauthenticated to be ‹400›697 is expected not to allow :search_rate_limit_unauthenticated to be ‹"two"›698 is expected not to allow :search_rate_limit_unauthenticated to be ‹nil›699 is expected not to allow :search_rate_limit_unauthenticated to be ‹5.5›700 is expected not to allow :search_rate_limit_unauthenticated to be ‹-2›701 is expected to allow :users_get_by_id_limit to be ‹400›702 is expected not to allow :users_get_by_id_limit to be ‹"two"›703 is expected not to allow :users_get_by_id_limit to be ‹nil›704 is expected not to allow :users_get_by_id_limit to be ‹5.5›705 is expected not to allow :users_get_by_id_limit to be ‹-2›706 is expected to allow :notes_create_limit_allowlist to be ‹["username0", "username1", "username2", "username3", "username4", "username5", "username6", "username7", "username8", "username9", "username10", "username11", "username12", "username13", "username14", "username15", "username16", "username17", "username18", "username19", "username20", "username21", "username22", "username23", "username24", "username25", "username26", "username27", "username28", "username29", "username30", "username31", "username32", "username33", "username34", "username35", "username36", "username37", "username38", "username39", "username40", "username41", "username42", "username43", "username44", "username45", "username46", "username47", "username48", "username49", "username50", "username51", "username52", "username53", "username54", "username55", "username56", "username57", "username58", "username59", "username60", "username61", "username62", "username63", "username64", "username65", "username66", "username67", "username68", "username69", "username70", "username71", "username72", "username73", "username74", "username75", "username76", "username77", "username78", "username79", "username80", "username81", "username82", "username83", "username84", "username85", "username86", "username87", "username88", "username89", "username90", "username91", "username92", "username93", "username94", "username95", "username96", "username97", "username98", "username99"]›707 is expected not to allow :notes_create_limit_allowlist to be ‹["username0", "username1", "username2", "username3", "username4", "username5", "username6", "username7", "username8", "username9", "username10", "username11", "username12", "username13", "username14", "username15", "username16", "username17", "username18", "username19", "username20", "username21", "username22", "username23", "username24", "username25", "username26", "username27", "username28", "username29", "username30", "username31", "username32", "username33", "username34", "username35", "username36", "username37", "username38", "username39", "username40", "username41", "username42", "username43", "username44", "username45", "username46", "username47", "username48", "username49", "username50", "username51", "username52", "username53", "username54", "username55", "username56", "username57", "username58", "username59", "username60", "username61", "username62", "username63", "username64", "username65", "username66", "username67", "username68", "username69", "username70", "username71", "username72", "username73", "username74", "username75", "username76", "username77", "username78", "username79", "username80", "username81", "username82", "username83", "username84", "username85", "username86", "username87", "username88", "username89", "username90", "username91", "username92", "username93", "username94", "username95", "username96", "username97", "username98", "username99", "username100"]›708 is expected not to allow :notes_create_limit_allowlist to be ‹nil›709 is expected to allow :notes_create_limit_allowlist to be ‹[]›710 is expected to allow :users_get_by_id_limit_allowlist to be ‹["username0", "username1", "username2", "username3", "username4", "username5", "username6", "username7", "username8", "username9", "username10", "username11", "username12", "username13", "username14", "username15", "username16", "username17", "username18", "username19", "username20", "username21", "username22", "username23", "username24", "username25", "username26", "username27", "username28", "username29", "username30", "username31", "username32", "username33", "username34", "username35", "username36", "username37", "username38", "username39", "username40", "username41", "username42", "username43", "username44", "username45", "username46", "username47", "username48", "username49", "username50", "username51", "username52", "username53", "username54", "username55", "username56", "username57", "username58", "username59", "username60", "username61", "username62", "username63", "username64", "username65", "username66", "username67", "username68", "username69", "username70", "username71", "username72", "username73", "username74", "username75", "username76", "username77", "username78", "username79", "username80", "username81", "username82", "username83", "username84", "username85", "username86", "username87", "username88", "username89", "username90", "username91", "username92", "username93", "username94", "username95", "username96", "username97", "username98", "username99"]›711 is expected not to allow :users_get_by_id_limit_allowlist to be ‹["username0", "username1", "username2", "username3", "username4", "username5", "username6", "username7", "username8", "username9", "username10", "username11", "username12", "username13", "username14", "username15", "username16", "username17", "username18", "username19", "username20", "username21", "username22", "username23", "username24", "username25", "username26", "username27", "username28", "username29", "username30", "username31", "username32", "username33", "username34", "username35", "username36", "username37", "username38", "username39", "username40", "username41", "username42", "username43", "username44", "username45", "username46", "username47", "username48", "username49", "username50", "username51", "username52", "username53", "username54", "username55", "username56", "username57", "username58", "username59", "username60", "username61", "username62", "username63", "username64", "username65", "username66", "username67", "username68", "username69", "username70", "username71", "username72", "username73", "username74", "username75", "username76", "username77", "username78", "username79", "username80", "username81", "username82", "username83", "username84", "username85", "username86", "username87", "username88", "username89", "username90", "username91", "username92", "username93", "username94", "username95", "username96", "username97", "username98", "username99", "username100"]›712 is expected not to allow :users_get_by_id_limit_allowlist to be ‹nil›713 is expected to allow :users_get_by_id_limit_allowlist to be ‹[]›714 is expected to allow :whats_new_variant to be ‹"all_tiers"›715 is expected to allow :whats_new_variant to be ‹"current_tier"›716 is expected to allow :whats_new_variant to be ‹"disabled"›717 is expected not to allow :whats_new_variant to be ‹nil›718 is expected not to allow :valid_runner_registrars to be ‹[""]›719 is expected not to allow :valid_runner_registrars to be ‹["OBVIOUSLY_WRONG"]›720 is expected not to allow :valid_runner_registrars to be ‹["project", "project"]›721 is expected not to allow :valid_runner_registrars to be ‹[nil]›722 is expected not to allow :valid_runner_registrars to be ‹nil›723 is expected to allow :valid_runner_registrars to be ‹[]›724 is expected to allow :valid_runner_registrars to be ‹["project", "group"]›725 is expected to validate that :max_attachment_size cannot be empty/falsy726 is expected to validate that :max_attachment_size looks like an integer greater than 0727 is expected to validate that :max_import_size cannot be empty/falsy728 is expected to validate that :max_import_size looks like an integer greater than or equal to 0729 is expected to validate that :local_markdown_version looks like an integer greater than or equal to 0 and less than 65536730 help_page_documentation_base_url validations731 is expected to allow :help_page_documentation_base_url to be ‹nil›732 is expected to allow :help_page_documentation_base_url to be ‹"https://docs.gitlab.com"›733 is expected to allow :help_page_documentation_base_url to be ‹"http://127.0.0.1"›734 is expected not to allow :help_page_documentation_base_url to be ‹"docs.gitlab.com"›735 when url length validation736 when value string length is 255 characters737 allows the value738 when value string length exceeds 255 characters739 does not allow the value740 grafana_url validations741 is expected to allow :grafana_url to be ‹"http://example.com"›742 is expected to allow :grafana_url to be ‹"https://example.com"›743 is expected not to allow :grafana_url to be ‹"ftp://example.com"›744 is expected not to allow :grafana_url to be ‹"javascript:alert(window.opener.document.location)"›745 is expected to allow :grafana_url to be ‹"/-/grafana"›746 is expected to allow :grafana_url to be ‹"http://localhost:9000"›747 when local URLs are not allowed in system hooks748 is expected not to allow :grafana_url to be ‹"http://localhost:9000"›749 with invalid grafana URL750 adds an error751 with blocked grafana URL752 adds an error753 default_branch_name validaitions754 when javascript tags get sanitized properly755 gets sanitized properly756 spam_check_endpoint757 when spam_check_endpoint is enabled758 is expected to allow :spam_check_endpoint_url to be ‹"grpc://example.org/spam_check"›759 is expected to allow :spam_check_endpoint_url to be ‹"tls://example.org/spam_check"›760 is expected not to allow :spam_check_endpoint_url to be ‹"https://example.org/spam_check"›761 is expected not to allow :spam_check_endpoint_url to be ‹"nonsense"›762 is expected not to allow :spam_check_endpoint_url to be ‹nil›763 is expected not to allow :spam_check_endpoint_url to be ‹""›764 when spam_check_endpoint is NOT enabled765 is expected to allow :spam_check_endpoint_url to be ‹"grpc://example.org/spam_check"›766 is expected to allow :spam_check_endpoint_url to be ‹"tls://example.org/spam_check"›767 is expected not to allow :spam_check_endpoint_url to be ‹"https://example.org/spam_check"›768 is expected not to allow :spam_check_endpoint_url to be ‹"nonsense"›769 is expected to allow :spam_check_endpoint_url to be ‹nil›770 is expected to allow :spam_check_endpoint_url to be ‹""›771 when snowplow is enabled772 is expected not to allow :snowplow_collector_hostname to be ‹nil›773 is expected to allow :snowplow_collector_hostname to be ‹"snowplow.gitlab.com"›774 is expected not to allow :snowplow_collector_hostname to be ‹"/example"›775 when snowplow is not enabled776 is expected to allow :snowplow_collector_hostname to be ‹nil›777 when mailgun_events_enabled is enabled778 is expected to validate that :mailgun_signing_key cannot be empty/falsy779 is expected to validate that the length of :mailgun_signing_key is at most 255780 when mailgun_events_enabled is not enabled781 is expected not to validate that :mailgun_signing_key cannot be empty/falsy782 when user accepted let's encrypt terms of service783 is expected not to allow :lets_encrypt_notification_email to be ‹nil›784 EKS integration785 integration is disabled786 is expected to allow :eks_account_id to be ‹nil›787 is expected to allow :eks_access_key_id to be ‹nil›788 is expected to allow :eks_secret_access_key to be ‹nil›789 integration is enabled790 is expected to allow :eks_account_id to be ‹"123456789012"›791 is expected not to allow :eks_account_id to be ‹nil›792 is expected not to allow :eks_account_id to be ‹"123"›793 is expected not to allow :eks_account_id to be ‹"12345678901a"›794 is expected to allow :eks_access_key_id to be ‹"access-key-id-12"›795 is expected not to allow :eks_access_key_id to be ‹"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"›796 is expected not to allow :eks_access_key_id to be ‹"short-key"›797 is expected to allow :eks_access_key_id to be ‹nil›798 is expected to allow :eks_secret_access_key to be ‹"secret-access-key"›799 is expected to allow :eks_secret_access_key to be ‹nil›800 access key is specified801 is expected to allow :eks_secret_access_key to be ‹"secret-access-key"›802 is expected not to allow :eks_secret_access_key to be ‹nil›803 default_artifacts_expire_in804 sets an error if it cannot parse805 sets an error if it is blank806 sets the value if it is valid807 sets the value if it is 0808 usage_ping_enabled setting809 when setting is in database810 with usage_ping_enabled disabled811 behaves like usage ping disabled812 is expected to eq false813 with usage_ping_enabled enabled814 behaves like usage ping enabled815 is expected to eq true816 when setting is in GitLab config817 with usage_ping_enabled disabled818 behaves like usage ping disabled819 is expected to eq false820 with usage_ping_enabled enabled821 behaves like usage ping enabled822 is expected to eq true823 when setting in database false and setting in GitLab config true824 behaves like usage ping disabled825 is expected to eq false826 when setting database true and setting in GitLab config false827 behaves like usage ping disabled828 is expected to eq false829 when setting database true and setting in GitLab config true830 behaves like usage ping enabled831 is expected to eq true832 key restrictions833 does not allow all key types to be disabled834 type: :rsa835 behaves like key validations836 is expected to validate that :rsa_key_restriction cannot be empty/falsy837 is expected to allow :rsa_key_restriction to be ‹0›, ‹1024›, ‹2048›, ‹3072›, ‹4096›, or ‹-1›838 is expected not to allow :rsa_key_restriction to be ‹128›839 FIPS mode840 behaves like key validations841 is expected to validate that :rsa_key_restriction cannot be empty/falsy842 is expected to allow :rsa_key_restriction to be ‹3072›, ‹4096›, or ‹-1›843 is expected not to allow :rsa_key_restriction to be ‹128›844 type: :dsa845 behaves like key validations846 is expected to validate that :dsa_key_restriction cannot be empty/falsy847 is expected to allow :dsa_key_restriction to be ‹0›, ‹1024›, ‹2048›, ‹3072›, or ‹-1›848 is expected not to allow :dsa_key_restriction to be ‹128›849 FIPS mode850 behaves like key validations851 is expected to validate that :dsa_key_restriction cannot be empty/falsy852 is expected to allow :dsa_key_restriction to be ‹-1›853 is expected not to allow :dsa_key_restriction to be ‹128›854 type: :ecdsa855 behaves like key validations856 is expected to validate that :ecdsa_key_restriction cannot be empty/falsy857 is expected to allow :ecdsa_key_restriction to be ‹0›, ‹256›, ‹384›, ‹521›, or ‹-1›858 is expected not to allow :ecdsa_key_restriction to be ‹128›859 FIPS mode860 behaves like key validations861 is expected to validate that :ecdsa_key_restriction cannot be empty/falsy862 is expected to allow :ecdsa_key_restriction to be ‹256›, ‹384›, ‹521›, or ‹-1›863 is expected not to allow :ecdsa_key_restriction to be ‹128›864 type: :ed25519865 behaves like key validations866 is expected to validate that :ed25519_key_restriction cannot be empty/falsy867 is expected to allow :ed25519_key_restriction to be ‹0›, ‹256›, or ‹-1›868 is expected not to allow :ed25519_key_restriction to be ‹128›869 FIPS mode870 behaves like key validations871 is expected to validate that :ed25519_key_restriction cannot be empty/falsy872 is expected to allow :ed25519_key_restriction to be ‹256› or ‹-1›873 is expected not to allow :ed25519_key_restriction to be ‹128›874 type: :ecdsa_sk875 behaves like key validations876 is expected to validate that :ecdsa_sk_key_restriction cannot be empty/falsy877 is expected to allow :ecdsa_sk_key_restriction to be ‹0›, ‹256›, or ‹-1›878 is expected not to allow :ecdsa_sk_key_restriction to be ‹128›879 FIPS mode880 behaves like key validations881 is expected to validate that :ecdsa_sk_key_restriction cannot be empty/falsy882 is expected to allow :ecdsa_sk_key_restriction to be ‹256› or ‹-1›883 is expected not to allow :ecdsa_sk_key_restriction to be ‹128›884 type: :ed25519_sk885 behaves like key validations886 is expected to validate that :ed25519_sk_key_restriction cannot be empty/falsy887 is expected to allow :ed25519_sk_key_restriction to be ‹0›, ‹256›, or ‹-1›888 is expected not to allow :ed25519_sk_key_restriction to be ‹128›889 FIPS mode890 behaves like key validations891 is expected to validate that :ed25519_sk_key_restriction cannot be empty/falsy892 is expected to allow :ed25519_sk_key_restriction to be ‹256› or ‹-1›893 is expected not to allow :ed25519_sk_key_restriction to be ‹128›894 behaves like an object with email-formatted attributes895 specifically its :abuse_notification_email attribute896 with a value of 'info@example.com'897 is valid898 with a value of 'info+test@example.com'899 is valid900 with a value of 'o'reilly@example.com'901 is valid902 with a value of 'mailto:test@example.com'903 is valid904 with a value of 'lol!'+=?><#$%^&*()@gmail.com'905 is valid906 with a value of 'foobar'907 is invalid908 with a value of 'test@test@example.com'909 is invalid910 repository_storages is a String, not an Array911 is expected to eq ["default"]912 auto_devops_domain setting913 when auto_devops_enabled? is true914 can be blank915 with a valid value916 is valid917 with an invalid value918 is invalid919 repository storages920 inclusion921 is expected to allow :repository_storages to be ‹"custom1"›922 is expected to allow :repository_storages to be ‹["custom2", "custom3"]›923 is expected not to allow :repository_storages to be ‹"alternative"›924 is expected not to allow :repository_storages to be ‹["alternative", "custom1"]›925 presence926 is expected not to allow :repository_storages to be ‹[]›927 is expected not to allow :repository_storages to be ‹""›928 is expected not to allow :repository_storages to be ‹nil›929 housekeeping settings930 is expected not to allow :housekeeping_incremental_repack_period to be ‹0›931 wants the full repack period to be at least the incremental repack period932 wants the gc period to be at least the full repack period933 allows the same period for incremental repack and full repack, effectively skipping incremental repack934 allows the same period for full repack and gc, effectively skipping full repack935 gitaly timeouts936 validates that the default_timeout is lower than the max_request_duration937 is expected to validate that :gitaly_timeout_default looks like an integer greater than or equal to 0938 is expected to validate that :gitaly_timeout_medium looks like an integer greater than or equal to 0939 is expected to validate that :gitaly_timeout_fast looks like an integer greater than or equal to 0940 validates that gitaly_timeout_medium is lower than timeout_default941 validates that gitaly_timeout_fast is lower than timeout_default942 accepts all timeouts equal943 accepts timeouts in descending order944 rejects timeouts in ascending order945 rejects medium timeout larger than default946 rejects medium timeout smaller than fast947 does not prevent from saving when gitaly timeouts were previously invalid948 enforcing terms949 requires the terms to present when enforcing users to accept950 is valid when terms are created951 when external authorization service is enabled952 is expected not to allow :external_authorization_service_url to be ‹"not a URL"›953 is expected to allow :external_authorization_service_url to be ‹"https://example.com"›954 is expected to allow :external_authorization_service_url to be ‹""›955 is expected not to allow :external_authorization_service_default_label to be ‹nil›956 is expected not to allow :external_authorization_service_timeout to be ‹11›957 is expected not to allow :external_authorization_service_timeout to be ‹0›958 is expected not to allow :external_auth_client_cert to be ‹"not a certificate"›959 is expected to allow :external_auth_client_cert to be ‹""›960 is expected to allow :external_auth_client_key to be ‹""›961 when setting a valid client certificate for external authorization962 requires a valid client key when a certificate is set963 requires a matching certificate964 the credentials are valid when the private key can be read and matches the certificate965 asset proxy settings966 #asset_proxy_url967 is expected not to allow :asset_proxy_url to be ‹""›968 is expected to allow :asset_proxy_url to be ‹"http://example.com"›969 is expected to allow :asset_proxy_url to be ‹"https://example.com"›970 is expected not to allow :asset_proxy_url to be ‹"ftp://example.com"›971 is not required when asset proxy is disabled972 #asset_proxy_secret_key973 is expected not to allow :asset_proxy_secret_key to be ‹""›974 is expected to allow :asset_proxy_secret_key to be ‹"anything"›975 is not required when asset proxy is disabled976 is encrypted977 #asset_proxy_whitelist978 when given an Array979 sets the domains and adds current running host980 when given a String981 sets multiple domains with spaces982 sets multiple domains with newlines and a space983 sets multiple domains with commas984 #asset_proxy_allowlist985 when given an Array986 sets the domains and adds current running host987 when given a String988 sets multiple domains with spaces989 sets multiple domains with newlines and a space990 sets multiple domains with commas991 #ci_jwt_signing_key992 is expected not to allow :ci_jwt_signing_key to be ‹""›993 is expected not to allow :ci_jwt_signing_key to be ‹"invalid RSA key"›994 is expected to allow :ci_jwt_signing_key to be ‹nil›995 is expected to allow :ci_jwt_signing_key to be ‹"-----BEGIN RSA PRIVATE KEY-----\nMIICWwIBAAKBgQCwQXAi2Qa9ih1clszk71jBeitvK45cH9ytUekyEMPTm98ejiOv\nqAqREUOvoJ3wfRGyQfvQYPMI/7fp8eV8M+MoHvq6TQdqzMZkj+fuCuO3K4zSk0mV\ntpsDS4WH6sBR1bWym1V8p61wd0YzkiQGVCyaHb4gSMBn/9eoDiIjn71eOwIDAQAB\nAoGBAIn88TmXBzvkoVAXj5m7+JSgfNiwFOfy2eWnNxZHIcjNQ0S8qxueR4eDKKaa\n7IuWnwAbwHVHMX5eFTJGew9d3/v/S4IHKgnToceYAujrDJ8n35s9G7WcbAUIv7yr\neJl4uwKxA0r5Zf+j/rPPj8rVY8Qky73/cZH5tYl+7bcSMwTBAkEA5545ERvGYUHW\nWhV2BtMtc9lVZLJEPhqyjICfv5i7wdceUq/OHMruT3Nud4DdYHKL3v/wT5MVd5Iv\n/BN7nxd/4wJBAMLPRq8oNaUytkbajBBUvjlvBJKlMgQyyqpHcIFEQtOaRCcWizat\ndIOth4rnC3flHf0zpUo6bXqkfhhynYuGR8kCPyUYMguLZzosUSgcR8rQB3eGVybJ\nZiSMIgxejTciPu/MhA66GUiDN6eB1S9OdCX+MmiElPgplkaQIx87/5B7MwJASE2u\nKmx+HKZJyNpsidMqFx8BT3xIqA5B8hk5xICVXPwwt2FCojSWvhi16fP+6az8CHIW\nswokgBR1SJWhq5tXIQJAJfcFb7ageQJ7E9y07VnCNJFplNrhTvjqGzlb1CU4sz73\n6KHmim7YrDkmK2zY4pKjct+/2u8asV8ujX9b3PW7zg==\n-----END RSA PRIVATE KEY-----\n"›996 is encrypted997 #customers_dot_jwt_signing_key998 is expected not to allow :customers_dot_jwt_signing_key to be ‹""›999 is expected not to allow :customers_dot_jwt_signing_key to be ‹"invalid RSA key"›1000 is expected to allow :customers_dot_jwt_signing_key to be ‹nil›1001 is expected to allow :customers_dot_jwt_signing_key to be ‹"-----BEGIN RSA PRIVATE KEY-----\nMIICXAIBAAKBgQDM4My1ocznGhfXhaTL121tBlMgjc8bzstA0TxrCg8fb1tqORLw\njLgyDTQtKGup0YIIFnXi0GkI4cK3k1ubEis+uv2DvDwPv2mQqaf22VBicmSU2nnp\na0kBM1QVPLnqz8c/Gh9NsBIREsL4IahTktj5e4XZT/bsxpSPhNLI54XuMQIDAQAB\nAoGBAISK0iSXPlYsHUyC2zA8eEBWHSUsWNZmnDucoXemFE6D3iIENmqEvw0yWZT1\nV2GPdo4A6dcIeUsTssLMhDD4Ohy79tBF/WFyBD/qvP23AM4SfjcS8wWTouswWnHj\nFPJz0wkEH7tj6BACG5Sv1tX3ypGVs6oxJ18lFgBIlGZa+SyZAkEA9usii/AK1HlI\n4FoHIN4tCzz80+0TQLlvyqQkrx7Evxuc7z+4N1t68dOcShqDOGDgUTOui3J7sDpx\ncrn9uzUr8wJBANRp1Tj1IrBV3U5RCYbrTPew6cLjM4Wr6uWUdADzjFIEWd+QCrtp\nmik4vXTGWuXlV4lT5QLw6C2wJqc7WYFPOksCQEZHBG0p5Bs3bfuVBCRhuBZTxG4Z\nMvqgDOZzM5G4Qy1VkaQy0Z7H5cVAgmJBC4oXYKEcAZjk+7lb2QBbWZFX/+sCQAkX\nYoXmkA6GDkvM0iCRL6EmVEsAGHNvMUWUPgbQZcAY6ZPVAXCWC4AaKpm156wRTdbV\n3WZr0zQpZu4fbyxGrNMCQArHWT/wkxXxHX36cFrRm1OVnAiXe+vmb+5at9A+rYry\nKRWWrc6SJtCGdILGMcM2ngK3gl+1aThvtcmF9xY69O4=\n-----END RSA PRIVATE KEY-----\n"›1002 is encrypted1003 #cloud_license_auth_token1004 is expected to allow :cloud_license_auth_token to be ‹nil›1005 is encrypted1006 static objects external storage1007 when URL is set1008 is expected not to allow :static_objects_external_storage_auth_token to be ‹nil›1009 sourcegraph settings1010 is invalid if sourcegraph is enabled and no url is provided1011 gitpod settings1012 is invalid if gitpod is enabled and no url is provided1013 is invalid if gitpod is enabled and an empty url is provided1014 is invalid if gitpod is enabled and an invalid url is provided1015 throttle_* settings1016 throttle_setting: :throttle_unauthenticated_api_requests_per_period1017 is expected to allow :throttle_unauthenticated_api_requests_per_period to be ‹3›1018 is expected not to allow :throttle_unauthenticated_api_requests_per_period to be ‹-3›1019 is expected not to allow :throttle_unauthenticated_api_requests_per_period to be ‹0›1020 is expected not to allow :throttle_unauthenticated_api_requests_per_period to be ‹"three"›1021 is expected not to allow :throttle_unauthenticated_api_requests_per_period to be ‹nil›1022 throttle_setting: :throttle_unauthenticated_api_period_in_seconds1023 is expected to allow :throttle_unauthenticated_api_period_in_seconds to be ‹3›1024 is expected not to allow :throttle_unauthenticated_api_period_in_seconds to be ‹-3›1025 is expected not to allow :throttle_unauthenticated_api_period_in_seconds to be ‹0›1026 is expected not to allow :throttle_unauthenticated_api_period_in_seconds to be ‹"three"›1027 is expected not to allow :throttle_unauthenticated_api_period_in_seconds to be ‹nil›1028 throttle_setting: :throttle_unauthenticated_requests_per_period1029 is expected to allow :throttle_unauthenticated_requests_per_period to be ‹3›1030 is expected not to allow :throttle_unauthenticated_requests_per_period to be ‹-3›1031 is expected not to allow :throttle_unauthenticated_requests_per_period to be ‹0›1032 is expected not to allow :throttle_unauthenticated_requests_per_period to be ‹"three"›1033 is expected not to allow :throttle_unauthenticated_requests_per_period to be ‹nil›1034 throttle_setting: :throttle_unauthenticated_period_in_seconds1035 is expected to allow :throttle_unauthenticated_period_in_seconds to be ‹3›1036 is expected not to allow :throttle_unauthenticated_period_in_seconds to be ‹-3›1037 is expected not to allow :throttle_unauthenticated_period_in_seconds to be ‹0›1038 is expected not to allow :throttle_unauthenticated_period_in_seconds to be ‹"three"›1039 is expected not to allow :throttle_unauthenticated_period_in_seconds to be ‹nil›1040 throttle_setting: :throttle_authenticated_api_requests_per_period1041 is expected to allow :throttle_authenticated_api_requests_per_period to be ‹3›1042 is expected not to allow :throttle_authenticated_api_requests_per_period to be ‹-3›1043 is expected not to allow :throttle_authenticated_api_requests_per_period to be ‹0›1044 is expected not to allow :throttle_authenticated_api_requests_per_period to be ‹"three"›1045 is expected not to allow :throttle_authenticated_api_requests_per_period to be ‹nil›1046 throttle_setting: :throttle_authenticated_api_period_in_seconds1047 is expected to allow :throttle_authenticated_api_period_in_seconds to be ‹3›1048 is expected not to allow :throttle_authenticated_api_period_in_seconds to be ‹-3›1049 is expected not to allow :throttle_authenticated_api_period_in_seconds to be ‹0›1050 is expected not to allow :throttle_authenticated_api_period_in_seconds to be ‹"three"›1051 is expected not to allow :throttle_authenticated_api_period_in_seconds to be ‹nil›1052 throttle_setting: :throttle_authenticated_web_requests_per_period1053 is expected to allow :throttle_authenticated_web_requests_per_period to be ‹3›1054 is expected not to allow :throttle_authenticated_web_requests_per_period to be ‹-3›1055 is expected not to allow :throttle_authenticated_web_requests_per_period to be ‹0›1056 is expected not to allow :throttle_authenticated_web_requests_per_period to be ‹"three"›1057 is expected not to allow :throttle_authenticated_web_requests_per_period to be ‹nil›1058 throttle_setting: :throttle_authenticated_web_period_in_seconds1059 is expected to allow :throttle_authenticated_web_period_in_seconds to be ‹3›1060 is expected not to allow :throttle_authenticated_web_period_in_seconds to be ‹-3›1061 is expected not to allow :throttle_authenticated_web_period_in_seconds to be ‹0›1062 is expected not to allow :throttle_authenticated_web_period_in_seconds to be ‹"three"›1063 is expected not to allow :throttle_authenticated_web_period_in_seconds to be ‹nil›1064 throttle_setting: :throttle_unauthenticated_packages_api_requests_per_period1065 is expected to allow :throttle_unauthenticated_packages_api_requests_per_period to be ‹3›1066 is expected not to allow :throttle_unauthenticated_packages_api_requests_per_period to be ‹-3›1067 is expected not to allow :throttle_unauthenticated_packages_api_requests_per_period to be ‹0›1068 is expected not to allow :throttle_unauthenticated_packages_api_requests_per_period to be ‹"three"›1069 is expected not to allow :throttle_unauthenticated_packages_api_requests_per_period to be ‹nil›1070 throttle_setting: :throttle_unauthenticated_packages_api_period_in_seconds1071 is expected to allow :throttle_unauthenticated_packages_api_period_in_seconds to be ‹3›1072 is expected not to allow :throttle_unauthenticated_packages_api_period_in_seconds to be ‹-3›1073 is expected not to allow :throttle_unauthenticated_packages_api_period_in_seconds to be ‹0›1074 is expected not to allow :throttle_unauthenticated_packages_api_period_in_seconds to be ‹"three"›1075 is expected not to allow :throttle_unauthenticated_packages_api_period_in_seconds to be ‹nil›1076 throttle_setting: :throttle_authenticated_packages_api_requests_per_period1077 is expected to allow :throttle_authenticated_packages_api_requests_per_period to be ‹3›1078 is expected not to allow :throttle_authenticated_packages_api_requests_per_period to be ‹-3›1079 is expected not to allow :throttle_authenticated_packages_api_requests_per_period to be ‹0›1080 is expected not to allow :throttle_authenticated_packages_api_requests_per_period to be ‹"three"›1081 is expected not to allow :throttle_authenticated_packages_api_requests_per_period to be ‹nil›1082 throttle_setting: :throttle_authenticated_packages_api_period_in_seconds1083 is expected to allow :throttle_authenticated_packages_api_period_in_seconds to be ‹3›1084 is expected not to allow :throttle_authenticated_packages_api_period_in_seconds to be ‹-3›1085 is expected not to allow :throttle_authenticated_packages_api_period_in_seconds to be ‹0›1086 is expected not to allow :throttle_authenticated_packages_api_period_in_seconds to be ‹"three"›1087 is expected not to allow :throttle_authenticated_packages_api_period_in_seconds to be ‹nil›1088 throttle_setting: :throttle_unauthenticated_files_api_requests_per_period1089 is expected to allow :throttle_unauthenticated_files_api_requests_per_period to be ‹3›1090 is expected not to allow :throttle_unauthenticated_files_api_requests_per_period to be ‹-3›1091 is expected not to allow :throttle_unauthenticated_files_api_requests_per_period to be ‹0›1092 is expected not to allow :throttle_unauthenticated_files_api_requests_per_period to be ‹"three"›1093 is expected not to allow :throttle_unauthenticated_files_api_requests_per_period to be ‹nil›1094 throttle_setting: :throttle_unauthenticated_files_api_period_in_seconds1095 is expected to allow :throttle_unauthenticated_files_api_period_in_seconds to be ‹3›1096 is expected not to allow :throttle_unauthenticated_files_api_period_in_seconds to be ‹-3›1097 is expected not to allow :throttle_unauthenticated_files_api_period_in_seconds to be ‹0›1098 is expected not to allow :throttle_unauthenticated_files_api_period_in_seconds to be ‹"three"›1099 is expected not to allow :throttle_unauthenticated_files_api_period_in_seconds to be ‹nil›1100 throttle_setting: :throttle_authenticated_files_api_requests_per_period1101 is expected to allow :throttle_authenticated_files_api_requests_per_period to be ‹3›1102 is expected not to allow :throttle_authenticated_files_api_requests_per_period to be ‹-3›1103 is expected not to allow :throttle_authenticated_files_api_requests_per_period to be ‹0›1104 is expected not to allow :throttle_authenticated_files_api_requests_per_period to be ‹"three"›1105 is expected not to allow :throttle_authenticated_files_api_requests_per_period to be ‹nil›1106 throttle_setting: :throttle_authenticated_files_api_period_in_seconds1107 is expected to allow :throttle_authenticated_files_api_period_in_seconds to be ‹3›1108 is expected not to allow :throttle_authenticated_files_api_period_in_seconds to be ‹-3›1109 is expected not to allow :throttle_authenticated_files_api_period_in_seconds to be ‹0›1110 is expected not to allow :throttle_authenticated_files_api_period_in_seconds to be ‹"three"›1111 is expected not to allow :throttle_authenticated_files_api_period_in_seconds to be ‹nil›1112 throttle_setting: :throttle_unauthenticated_deprecated_api_requests_per_period1113 is expected to allow :throttle_unauthenticated_deprecated_api_requests_per_period to be ‹3›1114 is expected not to allow :throttle_unauthenticated_deprecated_api_requests_per_period to be ‹-3›1115 is expected not to allow :throttle_unauthenticated_deprecated_api_requests_per_period to be ‹0›1116 is expected not to allow :throttle_unauthenticated_deprecated_api_requests_per_period to be ‹"three"›1117 is expected not to allow :throttle_unauthenticated_deprecated_api_requests_per_period to be ‹nil›1118 throttle_setting: :throttle_unauthenticated_deprecated_api_period_in_seconds1119 is expected to allow :throttle_unauthenticated_deprecated_api_period_in_seconds to be ‹3›1120 is expected not to allow :throttle_unauthenticated_deprecated_api_period_in_seconds to be ‹-3›1121 is expected not to allow :throttle_unauthenticated_deprecated_api_period_in_seconds to be ‹0›1122 is expected not to allow :throttle_unauthenticated_deprecated_api_period_in_seconds to be ‹"three"›1123 is expected not to allow :throttle_unauthenticated_deprecated_api_period_in_seconds to be ‹nil›1124 throttle_setting: :throttle_authenticated_deprecated_api_requests_per_period1125 is expected to allow :throttle_authenticated_deprecated_api_requests_per_period to be ‹3›1126 is expected not to allow :throttle_authenticated_deprecated_api_requests_per_period to be ‹-3›1127 is expected not to allow :throttle_authenticated_deprecated_api_requests_per_period to be ‹0›1128 is expected not to allow :throttle_authenticated_deprecated_api_requests_per_period to be ‹"three"›1129 is expected not to allow :throttle_authenticated_deprecated_api_requests_per_period to be ‹nil›1130 throttle_setting: :throttle_authenticated_deprecated_api_period_in_seconds1131 is expected to allow :throttle_authenticated_deprecated_api_period_in_seconds to be ‹3›1132 is expected not to allow :throttle_authenticated_deprecated_api_period_in_seconds to be ‹-3›1133 is expected not to allow :throttle_authenticated_deprecated_api_period_in_seconds to be ‹0›1134 is expected not to allow :throttle_authenticated_deprecated_api_period_in_seconds to be ‹"three"›1135 is expected not to allow :throttle_authenticated_deprecated_api_period_in_seconds to be ‹nil›1136 throttle_setting: :throttle_authenticated_git_lfs_requests_per_period1137 is expected to allow :throttle_authenticated_git_lfs_requests_per_period to be ‹3›1138 is expected not to allow :throttle_authenticated_git_lfs_requests_per_period to be ‹-3›1139 is expected not to allow :throttle_authenticated_git_lfs_requests_per_period to be ‹0›1140 is expected not to allow :throttle_authenticated_git_lfs_requests_per_period to be ‹"three"›1141 is expected not to allow :throttle_authenticated_git_lfs_requests_per_period to be ‹nil›1142 throttle_setting: :throttle_authenticated_git_lfs_period_in_seconds1143 is expected to allow :throttle_authenticated_git_lfs_period_in_seconds to be ‹3›1144 is expected not to allow :throttle_authenticated_git_lfs_period_in_seconds to be ‹-3›1145 is expected not to allow :throttle_authenticated_git_lfs_period_in_seconds to be ‹0›1146 is expected not to allow :throttle_authenticated_git_lfs_period_in_seconds to be ‹"three"›1147 is expected not to allow :throttle_authenticated_git_lfs_period_in_seconds to be ‹nil›1148 sidekiq job limiter settings1149 has the right defaults1150 is expected to allow :sidekiq_job_limiter_mode to be ‹"track"›1151 is expected to validate that :sidekiq_job_limiter_compression_threshold_bytes looks like an integer greater than or equal to 01152 is expected to validate that :sidekiq_job_limiter_limit_bytes looks like an integer greater than or equal to 01153 restrict creating duplicates1154 returns the current settings1155 when ApplicationSettings does not have a primary key1156 raises an exception1157 #disabled_oauth_sign_in_sources=1158 removes unknown sources (as strings) from the array1159 removes unknown sources (as symbols) from the array1160 ignores nil1161 performance bar settings1162 performance_bar_allowed_group1163 with no performance_bar_allowed_group_id saved1164 returns nil1165 with a performance_bar_allowed_group_id saved1166 returns the group1167 performance_bar_enabled1168 with the Performance Bar is enabled1169 returns true1170 diff limit settings1171 #diff_max_patch_bytes1172 validations1173 is expected to validate that :diff_max_patch_bytes cannot be empty/falsy1174 is expected to validate that :diff_max_patch_bytes looks like an integer greater than or equal to 204800 and less than or equal to 5120001175 #diff_max_files1176 validations1177 is expected to validate that :diff_max_files cannot be empty/falsy1178 is expected to validate that :diff_max_files looks like an integer greater than or equal to 1000 and less than or equal to 30001179 #diff_max_lines1180 validations1181 is expected to validate that :diff_max_lines cannot be empty/falsy1182 is expected to validate that :diff_max_lines looks like an integer greater than or equal to 50000 and less than or equal to 1000001183 #sourcegraph_url_is_com?1184 url: "https://sourcegraph.com", is_com: true1185 matches the url with sourcegraph.com1186 url: "https://sourcegraph.com/", is_com: true1187 matches the url with sourcegraph.com1188 url: "https://www.sourcegraph.com", is_com: true1189 matches the url with sourcegraph.com1190 url: "shttps://www.sourcegraph.com", is_com: false1191 matches the url with sourcegraph.com1192 url: "https://sourcegraph.example.com/", is_com: false1193 matches the url with sourcegraph.com1194 url: "https://sourcegraph.org/", is_com: false1195 matches the url with sourcegraph.com1196 #instance_review_permitted?1197 users_over_minimum: -11198 is expected to equal false1199 users_over_minimum: 01200 is expected to equal true1201 users_over_minimum: 11202 is expected to equal true1203 email_restrictions1204 when email restrictions are enabled1205 allows empty email restrictions1206 accepts valid email restrictions regex1207 does not accept invalid email restrictions regex1208 sets an error when regex is not valid1209 when email restrictions are disabled1210 allows empty email restrictions1211 invalid regex is not valid1212 behaves like application settings examples1213 predicate method changes when value is updated1214 restricted signup domains1215 behaves like string of domains1216 sets single domain1217 sets multiple domains with spaces1218 sets multiple domains with newlines and a space1219 sets multiple domains with commas1220 sets multiple domains with semicolon1221 sets multiple domains with mixture of everything1222 removes duplicates1223 does not fail with garbage values1224 does not raise error with nil1225 denied signup domains1226 sets multiple domain with file1227 behaves like string of domains1228 sets single domain1229 sets multiple domains with spaces1230 sets multiple domains with newlines and a space1231 sets multiple domains with commas1232 sets multiple domains with semicolon1233 sets multiple domains with mixture of everything1234 removes duplicates1235 does not fail with garbage values1236 does not raise error with nil1237 outbound_local_requests_whitelist1238 clears outbound_local_requests_allowlist_arrays memoization1239 behaves like string of domains1240 sets single domain1241 sets multiple domains with spaces1242 sets multiple domains with newlines and a space1243 sets multiple domains with commas1244 sets multiple domains with semicolon1245 sets multiple domains with mixture of everything1246 removes duplicates1247 does not fail with garbage values1248 does not raise error with nil1249 outbound_local_requests_allowlist_arrays1250 separates the IPs and domains1251 add_to_outbound_local_requests_whitelist1252 adds entry to outbound_local_requests_whitelist1253 clears outbound_local_requests_allowlist_arrays memoization1254 does not raise error with nil1255 does not raise error with nil1256 usage ping settings1257 when the usage ping is disabled in gitlab.yml1258 does not allow the usage ping to be configured1259 when the usage ping is disabled in the DB1260 returns false for usage_ping_enabled1261 when the usage ping is enabled in the DB1262 returns false for usage_ping_enabled1263 when the usage ping is enabled in gitlab.yml1264 allows the usage ping to be configured1265 when the usage ping is disabled in the DB1266 returns false for usage_ping_enabled1267 when the usage ping is enabled in the DB1268 returns true for usage_ping_enabled1269 #allowed_key_types1270 includes all key types by default1271 excludes disabled key types1272 #key_restriction_for1273 returns the restriction value for recognised types1274 allows types to be passed as a string1275 returns forbidden for unrecognised type1276 #allow_signup?1277 returns true1278 returns false if signup is disabled1279 returns false if password authentication is disabled for the web interface1280 #pick_repository_storage1281 chooses repository based on weight1282 #normalized_repository_storage_weights1283 config_storages: ["default", "backup"], storages: {"default"=>0, "backup"=>100}, normalized: {"default"=>0.0, "backup"=>1.0}1284 normalizes storage weights1285 config_storages: ["default", "backup"], storages: {"default"=>100, "backup"=>100}, normalized: {"default"=>0.5, "backup"=>0.5}1286 normalizes storage weights1287 config_storages: ["default", "backup"], storages: {"default"=>20, "backup"=>80}, normalized: {"default"=>0.2, "backup"=>0.8}1288 normalizes storage weights1289 config_storages: ["default", "backup"], storages: {"default"=>0, "backup"=>0}, normalized: {"default"=>0.0, "backup"=>0.0}1290 normalizes storage weights1291 config_storages: ["default"], storages: {"default"=>0, "backup"=>100}, normalized: {"default"=>0.0}1292 normalizes storage weights1293 config_storages: ["default"], storages: {"default"=>100, "backup"=>100}, normalized: {"default"=>1.0}1294 normalizes storage weights1295 config_storages: ["default"], storages: {"default"=>20, "backup"=>80}, normalized: {"default"=>1.0}1296 normalizes storage weights1297 #user_default_internal_regex_enabled?1298 user_default_external: false, user_default_internal_regex: nil, result: false1299 is expected to eq false1300 user_default_external: false, user_default_internal_regex: "", result: false1301 is expected to eq false1302 user_default_external: false, user_default_internal_regex: "^(?:(?!\\.ext@).)*$\\r?\\n?", result: false1303 is expected to eq false1304 user_default_external: true, user_default_internal_regex: "", result: false1305 is expected to eq false1306 user_default_external: true, user_default_internal_regex: nil, result: false1307 is expected to eq false1308 user_default_external: true, user_default_internal_regex: "^(?:(?!\\.ext@).)*$\\r?\\n?", result: true1309 is expected to eq true1310 #archive_builds_older_than1311 when the archive_builds_in_seconds is set1312 is expected to be within 60 of 2022-04-28 15:57:41.772033661 +00001313 when the archive_builds_in_seconds is set1314 is expected to be nil1315 #commit_email_hostname1316 when the value is provided1317 returns the provided value1318 when the value is not provided1319 returns the default from the class1320 kroki_format_supported?1321 returns true when Excalidraw is enabled1322 returns true when BlockDiag is enabled1323 returns false when BlockDiag is disabled1324 returns false when the diagram type is optional and not enabled1325 returns true when the diagram type is enabled by default1326 returns false when the diagram type is unknown1327 kroki_formats1328 returns the value for kroki_formats1329 #static_objects_external_storage_auth_token=1330 stores an encrypted version of the token1331 when token is empty1332 removes an encrypted version of the token1333 with plaintext token only1334 ignores the plaintext token1335 #database_grafana_api_key1336 is encrypted1337 inactive project deletion1338 validates that inactive_projects_send_warning_email_after_months is less than inactive_projects_delete_after_months1339 is expected to validate that :inactive_projects_send_warning_email_after_months looks like a number greater than 01340 is expected to validate that :inactive_projects_delete_after_months looks like a number greater than 01341 is expected to validate that :inactive_projects_min_size_mb looks like a number greater than or equal to 01342QuickActions::InterpretService1343 #execute1344 limits to commands passed1345 preserves leading whitespace1346 tracks MAU for commands1347 move issue command1348 returns the move issue message1349 returns move issue failure message when the referenced issue is not found1350 behaves like reopen command1351 returns state_event: "reopen" if content contains /reopen1352 returns the reopen message1353 behaves like reopen command1354 returns state_event: "reopen" if content contains /reopen1355 returns the reopen message1356 behaves like close command1357 returns state_event: "close" if content contains /close1358 returns the close message1359 behaves like close command1360 returns state_event: "close" if content contains /close1361 returns the close message1362 merge command1363 behaves like merge immediately command1364 runs merge command if content contains /merge1365 returns them merge message1366 when the head pipeline of merge request is running1367 behaves like merge automatically command1368 runs merge command if content contains /merge and returns merge message1369 can not be merged when logged user does not have permissions1370 behaves like failed command1371 populates {} if content contains an unsupported command1372 returns Could not apply merge command. message1373 can not be merged when sha does not match1374 behaves like failed command1375 populates {} if content contains an unsupported command1376 returns Branch has been updated since the merge was requested. message1377 when sha is missing1378 behaves like failed command1379 populates {} if content contains an unsupported command1380 returns The `/merge` quick action requires the SHA of the head of the branch. message1381 issue can not be merged1382 behaves like failed command1383 populates {} if content contains an unsupported command1384 returns Could not apply merge command. message1385 non persisted merge request cant be merged1386 behaves like failed command1387 populates {} if content contains an unsupported command1388 returns Could not apply merge command. message1389 not persisted merge request can not be merged1390 behaves like failed command1391 populates {} if content contains an unsupported command1392 returns Could not apply merge command. message1393 behaves like title command1394 populates title: "A brand new title" if content contains /title A brand new title1395 returns the title message1396 behaves like title command1397 populates title: "A brand new title" if content contains /title A brand new title1398 returns the title message1399 behaves like failed command1400 populates {} if content contains an unsupported command1401 returns an empty message1402 assign command with one user1403 behaves like assign command1404 assigns to users with escaped underscores1405 assigns to a single user1406 returns the assign message1407 when the reference does not match the exact case1408 assigns to the user1409 when the user has a private profile1410 assigns to the user1411 behaves like assign command1412 assigns to users with escaped underscores1413 assigns to a single user1414 returns the assign message1415 when the reference does not match the exact case1416 assigns to the user1417 when the user has a private profile1418 assigns to the user1419 behaves like assign command1420 assigns to users with escaped underscores1421 assigns to a single user1422 returns the assign message1423 when the reference does not match the exact case1424 assigns to the user1425 when the user has a private profile1426 assigns to the user1427 assign command with multiple assignees1428 behaves like assigns to one of the two users1429 assigns to a single user1430 behaves like assigns to one of the two users1431 assigns to a single user1432 assign command with me alias1433 behaves like assign command1434 assigns to users with escaped underscores1435 assigns to a single user1436 returns the assign message1437 when the reference does not match the exact case1438 assigns to the user1439 when the user has a private profile1440 assigns to the user1441 behaves like assign command1442 assigns to users with escaped underscores1443 assigns to a single user1444 returns the assign message1445 when the reference does not match the exact case1446 assigns to the user1447 when the user has a private profile1448 assigns to the user1449 assign command with me alias and whitespace1450 behaves like assign command1451 assigns to users with escaped underscores1452 assigns to a single user1453 returns the assign message1454 when the reference does not match the exact case1455 assigns to the user1456 when the user has a private profile1457 assigns to the user1458 behaves like assign command1459 assigns to users with escaped underscores1460 assigns to a single user1461 returns the assign message1462 when the reference does not match the exact case1463 assigns to the user1464 when the user has a private profile1465 assigns to the user1466 behaves like failed command1467 populates {} if content contains an unsupported command1468 returns a parse error message1469 behaves like failed command1470 populates {} if content contains an unsupported command1471 returns Failed to assign a user because no user was found. message1472 assign_reviewer command1473 with one user1474 behaves like assign_reviewer command1475 assigns a reviewer to a single user1476 with an issue instead of a merge request1477 behaves like failed command1478 populates {} if content contains an unsupported command1479 returns Could not apply assign_reviewer command. message1480 assign command with multiple assignees1481 assigns to one of the two users1482 assigns to a single reviewer1483 with "me" alias1484 behaves like assign_reviewer command1485 assigns a reviewer to a single user1486 with an alias and whitespace1487 behaves like assign_reviewer command1488 assigns a reviewer to a single user1489 with @all1490 behaves like failed command1491 populates {} if content contains an unsupported command1492 returns a parse error message1493 with an incorrect user1494 behaves like failed command1495 populates {} if content contains an unsupported command1496 returns a parse error message1497 with the "reviewer" alias1498 behaves like assign_reviewer command1499 assigns a reviewer to a single user1500 with the "request_review" alias1501 behaves like assign_reviewer command1502 assigns a reviewer to a single user1503 with no user1504 behaves like failed command1505 populates {} if content contains an unsupported command1506 returns Failed to assign a reviewer because no user was specified. message1507 with extra text1508 behaves like failed command1509 populates {} if content contains an unsupported command1510 returns a parse error message1511 unassign_reviewer command1512 with one user1513 behaves like unassign_reviewer command1514 removes a single reviewer1515 with an issue instead of a merge request1516 behaves like failed command1517 populates {} if content contains an unsupported command1518 returns Could not apply unassign_reviewer command. message1519 with anything after the command1520 behaves like unassign_reviewer command1521 removes a single reviewer1522 with the "remove_reviewer" alias1523 behaves like unassign_reviewer command1524 removes a single reviewer1525 with no user1526 behaves like unassign_reviewer command1527 removes a single reviewer1528 unassign command1529 Issue1530 populates assignee_ids: [] if content contains /unassign1531 returns the unassign message for all the assignee if content contains /unassign1532 Merge Request1533 populates assignee_ids: [] if content contains /unassign1534 returns the unassign message for all the assignee if content contains /unassign1535 project milestones1536 behaves like milestone command1537 fetches milestone and populates milestone_id if content contains /milestone1538 returns the milestone message1539 returns empty milestone message when milestone is wrong1540 behaves like milestone command1541 fetches milestone and populates milestone_id if content contains /milestone1542 returns the milestone message1543 returns empty milestone message when milestone is wrong1544 only group milestones available1545 behaves like milestone command1546 fetches milestone and populates milestone_id if content contains /milestone1547 returns the milestone message1548 returns empty milestone message when milestone is wrong1549 behaves like milestone command1550 fetches milestone and populates milestone_id if content contains /milestone1551 returns the milestone message1552 returns empty milestone message when milestone is wrong1553 behaves like remove_milestone command1554 populates milestone_id: nil if content contains /remove_milestone1555 returns removed milestone message1556 behaves like remove_milestone command1557 populates milestone_id: nil if content contains /remove_milestone1558 returns removed milestone message1559 behaves like label command1560 fetches label ids and populates add_label_ids if content contains /label1561 returns the label message1562 behaves like label command1563 fetches label ids and populates add_label_ids if content contains /label1564 returns the label message1565 behaves like multiple label command1566 fetches label ids and populates add_label_ids if content contains multiple /label1567 behaves like multiple label with same argument1568 prevents duplicate label ids and populates add_label_ids if content contains multiple /label1569 behaves like multiword label name starting without ~1570 fetches label ids and populates add_label_ids if content contains /label1571 behaves like multiword label name starting without ~1572 fetches label ids and populates add_label_ids if content contains /label1573 behaves like label name is included in the middle of another label name1574 ignores the sublabel when the content contains the includer label name1575 behaves like label name is included in the middle of another label name1576 ignores the sublabel when the content contains the includer label name1577 behaves like unlabel command1578 fetches label ids and populates remove_label_ids if content contains /unlabel1579 returns the unlabel message1580 behaves like unlabel command1581 fetches label ids and populates remove_label_ids if content contains /unlabel1582 returns the unlabel message1583 behaves like multiple unlabel command1584 fetches label ids and populates remove_label_ids if content contains mutiple /unlabel1585 behaves like unlabel command with no argument1586 populates label_ids: [] if content contains /unlabel with no arguments1587 behaves like unlabel command with no argument1588 populates label_ids: [] if content contains /unlabel with no arguments1589 behaves like relabel command1590 populates label_ids: [] if content contains /relabel1591 returns the relabel message1592 behaves like relabel command1593 populates label_ids: [] if content contains /relabel1594 returns the relabel message1595 behaves like done command1596 populates todo_event: "done" if content contains /done1597 returns the done message1598 behaves like done command1599 populates todo_event: "done" if content contains /done1600 returns the done message1601 behaves like subscribe command1602 populates subscription_event: "subscribe" if content contains /subscribe1603 returns the subscribe message1604 behaves like subscribe command1605 populates subscription_event: "subscribe" if content contains /subscribe1606 returns the subscribe message1607 behaves like unsubscribe command1608 populates subscription_event: "unsubscribe" if content contains /unsubscribe1609 returns the unsubscribe message1610 behaves like unsubscribe command1611 populates subscription_event: "unsubscribe" if content contains /unsubscribe1612 returns the unsubscribe message1613 behaves like failed command1614 populates {} if content contains an unsupported command1615 returns Could not apply due command. message1616 behaves like remove_due_date command1617 populates due_date: nil if content contains /remove_due_date1618 returns Removed the due date1619 behaves like draft command1620 returns wip_event: "wip" if content contains /draft1621 returns the wip message1622 behaves like undraft command1623 returns wip_event: "unwip" if content contains /draft1624 returns the unwip message1625 behaves like failed command1626 populates {} if content contains an unsupported command1627 returns Could not apply remove_due_date command. message1628 behaves like estimate command1629 populates time_estimate: 3600 if content contains /estimate 1h1630 returns the time_estimate formatted message1631 behaves like failed command1632 populates {} if content contains an unsupported command1633 returns an empty message1634 behaves like failed command1635 populates {} if content contains an unsupported command1636 returns an empty message1637 behaves like spend command1638 populates spend_time: 3600 if content contains /spend 1h1639 behaves like spend command1640 populates spend_time: 3600 if content contains /spend 1h1641 behaves like spend command with negative time1642 populates spend_time: -7200 if content contains -120m1643 returns the spend_time message including the formatted duration and verb1644 behaves like spend command with negative time1645 populates spend_time: -7200 if content contains -120m1646 returns the spend_time message including the formatted duration and verb1647 behaves like spend command with valid date1648 populates spend time: 1800 with date in date type format1649 behaves like spend command with valid date1650 populates spend time: 1800 with date in date type format1651 behaves like spend command with invalid date1652 will not create any note and timelog1653 behaves like spend command with invalid date1654 will not create any note and timelog1655 behaves like spend command with future date1656 will not create any note and timelog1657 behaves like spend command with future date1658 will not create any note and timelog1659 behaves like failed command1660 populates {} if content contains an unsupported command1661 returns an empty message1662 behaves like failed command1663 populates {} if content contains an unsupported command1664 returns an empty message1665 behaves like failed command1666 populates {} if content contains an unsupported command1667 returns an empty message1668 behaves like failed command1669 populates {} if content contains an unsupported command1670 returns an empty message1671 behaves like remove_estimate command1672 populates time_estimate: 0 if content contains /remove_estimate1673 returns the remove_estimate message1674 behaves like remove_time_spent command1675 populates spend_time: :reset if content contains /remove_time_spent1676 returns the remove_time_spent message1677 /confidential1678 behaves like confidential command1679 marks issue as confidential if content contains /confidential1680 returns the confidential message1681 when issuable is already confidential1682 returns an error message1683 is not part of the available commands1684 behaves like confidential command1685 marks issue as confidential if content contains /confidential1686 returns the confidential message1687 when issuable is already confidential1688 returns an error message1689 is not part of the available commands1690 when non-member is creating a new issue1691 behaves like confidential command1692 marks issue as confidential if content contains /confidential1693 returns the confidential message1694 when issuable is already confidential1695 returns an error message1696 is not part of the available commands1697 behaves like lock command1698 returns discussion_locked: true if content contains /lock1699 returns the lock discussion message1700 behaves like lock command1701 returns discussion_locked: true if content contains /lock1702 returns the lock discussion message1703 behaves like unlock command1704 returns discussion_locked: true if content contains /unlock1705 returns the unlock discussion message1706 behaves like unlock command1707 returns discussion_locked: true if content contains /unlock1708 returns the unlock discussion message1709 /todo1710 if issuable is an Issue1711 behaves like todo command1712 populates todo_event: "add" if content contains /todo1713 returns the todo message1714 if issuable is a MergeRequest1715 behaves like todo command1716 populates todo_event: "add" if content contains /todo1717 returns the todo message1718 if issuable is a Commit1719 behaves like failed command1720 populates {} if content contains an unsupported command1721 returns Could not apply todo command. message1722 /due command1723 returns invalid date format message when the due date is invalid1724 behaves like due command1725 populates due_date: Date.new(2016, 8, 28) if content contains /due 2016-08-281726 returns due_date message: Date.new(2016, 8, 28) if content contains /due 2016-08-281727 behaves like due command1728 populates due_date: Date.new(2016, 8, 28) if content contains /due 2016-08-281729 returns due_date message: Date.new(2016, 8, 28) if content contains /due 2016-08-281730 behaves like due command1731 populates due_date: Date.new(2016, 8, 28) if content contains /due 2016-08-281732 returns due_date message: Date.new(2016, 8, 28) if content contains /due 2016-08-281733 behaves like due command1734 populates due_date: Date.new(2016, 8, 28) if content contains /due 2016-08-281735 returns due_date message: Date.new(2016, 8, 28) if content contains /due 2016-08-281736 /copy_metadata command1737 is available when the user is a developer1738 when the user does not have permission1739 is not available1740 behaves like failed command1741 populates {} if content contains an unsupported command1742 returns an empty message1743 behaves like copy_metadata command1744 fetches issue or merge request and copies labels and milestone if content contains /copy_metadata reference1745 returns the copy metadata message1746 behaves like copy_metadata command1747 fetches issue or merge request and copies labels and milestone if content contains /copy_metadata reference1748 returns the copy metadata message1749 when the parent issuable has a milestone1750 behaves like copy_metadata command1751 fetches issue or merge request and copies labels and milestone if content contains /copy_metadata reference1752 returns the copy metadata message1753 when more than one issuable is passed1754 behaves like copy_metadata command1755 fetches issue or merge request and copies labels and milestone if content contains /copy_metadata reference1756 returns the copy metadata message1757 cross project references1758 behaves like failed command1759 populates {} if content contains an unsupported command1760 returns an empty message1761 behaves like failed command1762 populates {} if content contains an unsupported command1763 returns an empty message1764 behaves like failed command1765 populates {} if content contains an unsupported command1766 returns an empty message1767 /duplicate command1768 behaves like duplicate command1769 fetches issue and populates canonical_issue_id if content contains /duplicate issue_reference1770 returns the duplicate message1771 behaves like failed command1772 populates {} if content contains an unsupported command1773 returns an empty message1774 cross project references1775 behaves like duplicate command1776 fetches issue and populates canonical_issue_id if content contains /duplicate issue_reference1777 returns the duplicate message1778 behaves like failed command1779 populates {} if content contains an unsupported command1780 returns Failed to mark this issue as a duplicate because referenced issue was not found. message1781 behaves like failed command1782 populates {} if content contains an unsupported command1783 returns Failed to mark this issue as a duplicate because referenced issue was not found. message1784 when current_user cannot :admin_issue1785 behaves like failed command1786 populates {} if content contains an unsupported command1787 returns Could not apply assign command. message1788 behaves like failed command1789 populates {} if content contains an unsupported command1790 returns Could not apply unassign command. message1791 behaves like failed command1792 populates {} if content contains an unsupported command1793 returns Could not apply milestone command. message1794 behaves like failed command1795 populates {} if content contains an unsupported command1796 returns Could not apply remove_milestone command. message1797 behaves like failed command1798 populates {} if content contains an unsupported command1799 returns Could not apply label command. message1800 behaves like failed command1801 populates {} if content contains an unsupported command1802 returns Could not apply unlabel command. message1803 behaves like failed command1804 populates {} if content contains an unsupported command1805 returns Could not apply relabel command. message1806 behaves like failed command1807 populates {} if content contains an unsupported command1808 returns Could not apply due command. message1809 behaves like failed command1810 populates {} if content contains an unsupported command1811 returns Could not apply remove_due_date command. message1812 behaves like failed command1813 populates {} if content contains an unsupported command1814 returns Could not apply confidential command. message1815 behaves like failed command1816 populates {} if content contains an unsupported command1817 returns Could not apply lock command. message1818 behaves like failed command1819 populates {} if content contains an unsupported command1820 returns Could not apply unlock command. message1821 /award command1822 behaves like award command1823 toggle award 100 emoji if content contains /award :100:1824 returns the award message1825 behaves like award command1826 toggle award 100 emoji if content contains /award :100:1827 returns the award message1828 ignores command with no argument1829 behaves like failed command1830 populates {} if content contains an unsupported command1831 returns an empty message1832 ignores non-existing / invalid emojis1833 behaves like failed command1834 populates {} if content contains an unsupported command1835 returns an empty message1836 behaves like failed command1837 populates {} if content contains an unsupported command1838 returns an empty message1839 if issuable is a Commit1840 behaves like failed command1841 populates {} if content contains an unsupported command1842 returns Could not apply award command. message1843 /shrug command1844 behaves like shrug command1845 appends ¯\_(ツ)_/¯ to the comment1846 behaves like shrug command1847 appends ¯\_(ツ)_/¯ to the comment1848 /tableflip command1849 behaves like tableflip command1850 appends (╯°□°)╯︵ ┻━┻ to the comment1851 behaves like tableflip command1852 appends (╯°□°)╯︵ ┻━┻ to the comment1853 /target_branch command1854 updates target_branch if /target_branch command is executed1855 handles blanks around param1856 returns the target_branch message1857 ignores command with no argument1858 behaves like failed command1859 populates {} if content contains an unsupported command1860 returns Could not apply target_branch command. message1861 ignores non-existing target branch1862 behaves like failed command1863 populates {} if content contains an unsupported command1864 returns Could not apply target_branch command. message1865 /board_move command1866 populates remove_label_ids for all current board columns1867 populates add_label_ids with the id of the given label1868 does not include the given label id in remove_label_ids1869 does not remove label ids that are not lists on the board1870 returns board_move message1871 if the project has multiple boards1872 behaves like failed command1873 populates {} if content contains an unsupported command1874 returns Could not apply board_move command. message1875 if the given label does not exist1876 behaves like failed command1877 populates {} if content contains an unsupported command1878 returns Failed to move this issue because label was not found. message1879 if multiple labels are given1880 behaves like failed command1881 populates {} if content contains an unsupported command1882 returns Failed to move this issue because only a single label can be provided. message1883 if the given label is not a list on the board1884 behaves like failed command1885 populates {} if content contains an unsupported command1886 returns Failed to move this issue because label was not found. message1887 if issuable is not an Issue1888 behaves like failed command1889 populates {} if content contains an unsupported command1890 returns Could not apply board_move command. message1891 /tag command1892 ignores command with no argument1893 behaves like failed command1894 populates {} if content contains an unsupported command1895 returns an empty message1896 tags a commit with a tag name1897 behaves like tag command1898 tags a commit1899 returns the tag message1900 tags a commit with a tag name and message1901 behaves like tag command1902 tags a commit1903 returns the tag message1904 /create_merge_request command1905 populates create_merge_request with branch_name and issue iid1906 returns the create_merge_request message1907 if issuable is not an Issue1908 behaves like failed command1909 populates {} if content contains an unsupported command1910 returns Could not apply create_merge_request command. message1911 when logged user cannot create_merge_requests in the project1912 behaves like failed command1913 populates {} if content contains an unsupported command1914 returns Could not apply create_merge_request command. message1915 when logged user cannot push code to the project1916 behaves like failed command1917 populates {} if content contains an unsupported command1918 returns Could not apply create_merge_request command. message1919 submit_review command1920 note: "I like it"1921 submits the users current review1922 note: "/submit_review"1923 submits the users current review1924 relate command1925 user is member of group1926 relate a single issue1927 behaves like relate command1928 relates issues1929 relate multiple issues at once1930 behaves like relate command1931 relates issues1932 when quick action target is unpersisted1933 relates the issues after the issue is persisted1934 empty relate command1935 behaves like relate command1936 relates issues1937 already having related issues1938 behaves like relate command1939 relates issues1940 cross project1941 relate a cross project issue1942 behaves like relate command1943 relates issues1944 relate multiple cross projects issues at once1945 behaves like relate command1946 relates issues1947 relate a non-existing issue1948 behaves like relate command1949 relates issues1950 relate a private issue1951 behaves like relate command1952 relates issues1953 invite_email command1954 behaves like failed command1955 populates {} if content contains an unsupported command1956/builds/gitlab-org/gitlab/lib/gitlab/quick_actions/issue_actions.rb:247: warning: already initialized constant Gitlab::QuickActions::IssueActions::MAX_NUMBER_OF_EMAILS1957/builds/gitlab-org/gitlab/lib/gitlab/quick_actions/issue_actions.rb:247: warning: previous definition of MAX_NUMBER_OF_EMAILS was here1958 returns No email participants were added. Either none were provided, or they already exist. message1959 with existing email participant1960 behaves like failed command1961/builds/gitlab-org/gitlab/lib/gitlab/quick_actions/issue_actions.rb:247: warning: already initialized constant Gitlab::QuickActions::IssueActions::MAX_NUMBER_OF_EMAILS1962/builds/gitlab-org/gitlab/lib/gitlab/quick_actions/issue_actions.rb:247: warning: previous definition of MAX_NUMBER_OF_EMAILS was here1963 populates {} if content contains an unsupported command1964/builds/gitlab-org/gitlab/lib/gitlab/quick_actions/issue_actions.rb:247: warning: already initialized constant Gitlab::QuickActions::IssueActions::MAX_NUMBER_OF_EMAILS1965/builds/gitlab-org/gitlab/lib/gitlab/quick_actions/issue_actions.rb:247: warning: previous definition of MAX_NUMBER_OF_EMAILS was here1966 returns No email participants were added. Either none were provided, or they already exist. message1967 with new email participants1968/builds/gitlab-org/gitlab/lib/gitlab/quick_actions/issue_actions.rb:247: warning: already initialized constant Gitlab::QuickActions::IssueActions::MAX_NUMBER_OF_EMAILS1969/builds/gitlab-org/gitlab/lib/gitlab/quick_actions/issue_actions.rb:247: warning: previous definition of MAX_NUMBER_OF_EMAILS was here1970 returns message1971/builds/gitlab-org/gitlab/lib/gitlab/quick_actions/issue_actions.rb:247: warning: already initialized constant Gitlab::QuickActions::IssueActions::MAX_NUMBER_OF_EMAILS1972/builds/gitlab-org/gitlab/lib/gitlab/quick_actions/issue_actions.rb:247: warning: previous definition of MAX_NUMBER_OF_EMAILS was here1973 adds 2 participants1974 with mixed case email1975/builds/gitlab-org/gitlab/lib/gitlab/quick_actions/issue_actions.rb:247: warning: already initialized constant Gitlab::QuickActions::IssueActions::MAX_NUMBER_OF_EMAILS1976/builds/gitlab-org/gitlab/lib/gitlab/quick_actions/issue_actions.rb:247: warning: previous definition of MAX_NUMBER_OF_EMAILS was here1977 returns correctly cased message1978 with invalid email1979/builds/gitlab-org/gitlab/lib/gitlab/quick_actions/issue_actions.rb:247: warning: already initialized constant Gitlab::QuickActions::IssueActions::MAX_NUMBER_OF_EMAILS1980/builds/gitlab-org/gitlab/lib/gitlab/quick_actions/issue_actions.rb:247: warning: previous definition of MAX_NUMBER_OF_EMAILS was here1981 only adds valid emails1982 with existing email1983/builds/gitlab-org/gitlab/lib/gitlab/quick_actions/issue_actions.rb:247: warning: already initialized constant Gitlab::QuickActions::IssueActions::MAX_NUMBER_OF_EMAILS1984/builds/gitlab-org/gitlab/lib/gitlab/quick_actions/issue_actions.rb:247: warning: previous definition of MAX_NUMBER_OF_EMAILS was here1985 only adds new emails1986/builds/gitlab-org/gitlab/lib/gitlab/quick_actions/issue_actions.rb:247: warning: already initialized constant Gitlab::QuickActions::IssueActions::MAX_NUMBER_OF_EMAILS1987/builds/gitlab-org/gitlab/lib/gitlab/quick_actions/issue_actions.rb:247: warning: previous definition of MAX_NUMBER_OF_EMAILS was here1988 only adds new (case insensitive) emails1989 with duplicate email1990/builds/gitlab-org/gitlab/lib/gitlab/quick_actions/issue_actions.rb:247: warning: already initialized constant Gitlab::QuickActions::IssueActions::MAX_NUMBER_OF_EMAILS1991/builds/gitlab-org/gitlab/lib/gitlab/quick_actions/issue_actions.rb:247: warning: previous definition of MAX_NUMBER_OF_EMAILS was here1992 only adds unique new emails1993 with more than 6 emails1994/builds/gitlab-org/gitlab/lib/gitlab/quick_actions/issue_actions.rb:247: warning: already initialized constant Gitlab::QuickActions::IssueActions::MAX_NUMBER_OF_EMAILS1995/builds/gitlab-org/gitlab/lib/gitlab/quick_actions/issue_actions.rb:247: warning: previous definition of MAX_NUMBER_OF_EMAILS was here1996 only adds 6 new emails1997 with feature flag disabled1998 does not add any participants1999 severity command2000 behaves like failed command2001 populates {} if content contains an unsupported command2002 returns No severity matches the provided parameter message2003 when quick action is used on creation2004 behaves like updates the severity2005 is expected to change `issuable.severity` from "unknown" to "medium"2006 issuable does not support severity2007 behaves like failed command2008 populates {} if content contains an unsupported command2009 returns message2010 severity given with S format2011 behaves like updates the severity2012 is expected to change `issuable.severity` from "unknown" to "medium"2013 severity given with number format2014 behaves like updates the severity2015 is expected to change `issuable.severity` from "unknown" to "medium"2016 severity given with text format2017 behaves like updates the severity2018 is expected to change `issuable.severity` from "unknown" to "medium"2019 an issuable that does not support severity2020 behaves like failed command2021 populates {} if content contains an unsupported command2022 returns Could not apply severity command. message2023 approve command2024 approves the current merge request2025 when the user can't approve2026 does not approve the MR2027 behaves like approve command unavailable2028 is not part of the available commands2029 unapprove command2030 unapproves the current merge request2031 when the user can't unapprove2032 does not unapprove the MR2033 behaves like unapprove command unavailable2034 is not part of the available commands2035 crm_contact commands2036 add_contacts command adds the contact2037 remove_contacts command removes the contact2038 with feature flag disabled2039 add_contacts command does not add the contact2040 remove_contacts command does not remove the contact2041 attention command2042 with one user2043 behaves like attention command2044 updates reviewers attention status2045 supports attn alias2046 with no user2047 behaves like failed command2048 populates {} if content contains an unsupported command2049 returns Failed to request attention because no user was found. message2050 with incorrect permissions2051 behaves like failed command2052 populates {} if content contains an unsupported command2053 returns Could not apply attention command. message2054 with feature flag disabled2055 behaves like failed command2056 populates {} if content contains an unsupported command2057 returns Could not apply attention command. message2058 with an issue instead of a merge request2059 behaves like failed command2060 populates {} if content contains an unsupported command2061 returns Could not apply attention command. message2062 remove attention command2063 with one user2064 behaves like remove attention command2065 updates reviewers attention status2066 with no user2067 behaves like failed command2068 populates {} if content contains an unsupported command2069 returns Failed to remove attention because no user was found. message2070 with incorrect permissions2071 behaves like failed command2072 populates {} if content contains an unsupported command2073 returns Could not apply remove_attention command. message2074 with feature flag disabled2075 behaves like failed command2076 populates {} if content contains an unsupported command2077 returns Could not apply remove_attention command. message2078 with an issue instead of a merge request2079 behaves like failed command2080 populates {} if content contains an unsupported command2081 returns Could not apply remove_attention command. message2082 #explain2083 close command2084 includes issuable name2085 reopen command2086 includes issuable name2087 title command2088 includes new title2089 assign command2090 when using a reference2091 tells us we will assign the developer2092 when using a bare username2093 tells us we will assign the developer2094 when using me2095 tells us we will assign the developer2096 when there are unparseable arguments2097 tells us why we cannot do that2098 unassign command2099 includes current assignee reference2100 unassign_reviewer command2101 includes current assignee reference2102 assign_reviewer command2103 includes only the user reference2104 milestone command2105 is empty when milestone reference is wrong2106 remove milestone command2107 includes current milestone name2108 label command2109 is empty when there are no correct labels2110 unlabel command2111 says all labels if no parameter provided2112 relabel command2113 includes label name2114 subscribe command2115 includes issuable name2116 unsubscribe command2117 includes issuable name2118 due command2119 includes the date2120 draft command2121 includes the new status2122 award command2123 includes the emoji2124 estimate command2125 includes the formatted duration2126 spend command2127 includes the formatted duration and proper verb when using /spend2128 includes the formatted duration and proper verb when using /spent2129 target branch command2130 includes the branch name2131 board move command2132 includes the label name2133 move issue to another project command2134 includes the project name2135 tag a commit2136 with a tag name2137 without a message2138 includes the tag name only2139 with an empty message2140 includes the tag name only2141 with a tag name and message2142 includes the tag name and message2143 create a merge request2144 with no branch name2145 uses the default branch name2146 returns the execution message using the default branch name2147 with a branch name2148 uses the given branch name2149 returns the execution message using the given branch name2150 #commands_executed_count2151 counts commands executed2152 crm commands2153 when group has no contacts2154 /add_contacts is not available2155 /remove_contacts is not available2156 when group has contacts2157 /add_contacts is available2158 /remove_contacts is available2159 #available_commands2160 when Guest is creating a new issue2161 includes commands to set metadata2162MergeRequests::BuildService2163 #execute2164 calls the compare service with the correct arguments2165 does not assign force_remove_source_branch2166 with force_remove_source_branch parameter when the user is authorized2167 assigns force_remove_source_branch2168 with project setting remove_source_branch_after_merge false2169 assigns force_remove_source_branch2170 with project setting remove_source_branch_after_merge true2171 assigns force_remove_source_branch2172 with force_remove_source_branch parameter false2173 does not assign force_remove_source_branch2174 missing source branch2175 behaves like forbids the merge request from being created2176 returns that the merge request cannot be created2177 adds an error message to the merge request2178 when target branch is missing2179 when source branch2180 is not the repository default branch2181 creates compare object with target branch as default branch2182 behaves like allows the merge request to be created2183 is expected to eq true2184 the repository default branch2185 behaves like forbids the merge request from being created2186 returns that the merge request cannot be created2187 adds an error message to the merge request2188 when source project is different from the target project2189 creates compare object with target branch as default branch2190 behaves like allows the merge request to be created2191 is expected to eq true2192 same source and target branch2193 behaves like forbids the merge request from being created2194 returns that the merge request cannot be created2195 adds an error message to the merge request2196 no commits in the diff2197 adds a Draft prefix to the merge request title2198 behaves like allows the merge request to be created2199 is expected to eq true2200 one commit in the diff2201 uses the title of the commit as the title of the merge request2202 uses the description of the commit as the description of the merge request2203 behaves like allows the merge request to be created2204 is expected to eq true2205 merge request already has a description set2206 keeps the description from the initial params2207 commit has no description2208 uses the title of the commit as the title of the merge request2209 sets the description to nil2210 when the source branch matches an issue2211 factory: :jira_integration, source_branch: "FOO-123-fix-issue", closing_message: "Closes FOO-123"2212 uses the title of the commit as the title of the merge request2213 appends the closing description2214 factory: :jira_integration, source_branch: "fix-issue", closing_message: nil2215 uses the title of the commit as the title of the merge request2216 appends the closing description2217 factory: :custom_issue_tracker_integration, source_branch: "123-fix-issue", closing_message: "Closes #123"2218 uses the title of the commit as the title of the merge request2219 appends the closing description2220 factory: :custom_issue_tracker_integration, source_branch: "fix-issue", closing_message: nil2221 uses the title of the commit as the title of the merge request2222 appends the closing description2223 factory: nil, source_branch: "123-fix-issue", closing_message: "Closes #123"2224 uses the title of the commit as the title of the merge request2225 appends the closing description2226 factory: nil, source_branch: "fix-issue", closing_message: nil2227 uses the title of the commit as the title of the merge request2228 appends the closing description2229 when the source branch matches an internal issue2230 assigns the issue label and milestone2231 when milestone_id and label_ids are shared in the params2232 assigns milestone_id and label_ids instead of issue labels and milestone2233 when a milestone is from another project2234 sets milestone to nil2235 no multi-line commit messages in the diff2236 uses the title of the branch as the merge request title2237 does not add a description2238 behaves like allows the merge request to be created2239 is expected to eq true2240 merge request already has a description set2241 keeps the description from the initial params2242 when the source branch matches an issue2243 factory: :jira_integration, source_branch: "FOO-123-fix-issue", title: "Resolve FOO-123 \"Fix issue\"", closing_message: "Closes FOO-123"2244 sets the correct title2245 sets the closing description2246 factory: :jira_integration, source_branch: "fix-issue", title: "Fix issue", closing_message: nil2247 sets the correct title2248 sets the closing description2249 factory: :custom_issue_tracker_integration, source_branch: "123-fix-issue", title: "Resolve #123 \"Fix issue\"", closing_message: "Closes #123"2250 sets the correct title2251 sets the closing description2252 factory: :custom_issue_tracker_integration, source_branch: "fix-issue", title: "Fix issue", closing_message: nil2253 sets the correct title2254 sets the closing description2255 factory: nil, source_branch: "123-fix-issue", title: "Resolve \"A bug\"", closing_message: "Closes #123"2256 sets the correct title2257 sets the closing description2258 factory: nil, source_branch: "fix-issue", title: "Fix issue", closing_message: nil2259 sets the correct title2260 sets the closing description2261 factory: nil, source_branch: "124-fix-issue", title: "124 fix issue", closing_message: nil2262 sets the correct title2263 sets the closing description2264 a multi-line commit message in the diff2265 uses the first line of the first multi-line commit message as the title2266 adds the remaining lines of the first multi-line commit message as the description2267 behaves like allows the merge request to be created2268 is expected to eq true2269 when the source branch matches an issue2270 factory: :jira_integration, source_branch: "FOO-123-fix-issue", title: "Resolve FOO-123 \"Fix issue\"", closing_message: "Closes FOO-123"2271 sets the correct title2272 sets the closing description2273 factory: :jira_integration, source_branch: "fix-issue", title: "Fix issue", closing_message: nil2274 sets the correct title2275 sets the closing description2276 factory: :custom_issue_tracker_integration, source_branch: "123-fix-issue", title: "Resolve #123 \"Fix issue\"", closing_message: "Closes #123"2277 sets the correct title2278 sets the closing description2279 factory: :custom_issue_tracker_integration, source_branch: "fix-issue", title: "Fix issue", closing_message: nil2280 sets the correct title2281 sets the closing description2282 factory: nil, source_branch: "123-fix-issue", title: "Resolve \"A bug\"", closing_message: "Closes #123"2283 sets the correct title2284 sets the closing description2285 factory: nil, source_branch: "fix-issue", title: "Fix issue", closing_message: nil2286 sets the correct title2287 sets the closing description2288 factory: nil, source_branch: "124-fix-issue", title: "124 fix issue", closing_message: nil2289 sets the correct title2290 sets the closing description2291 when the issue is not accessible to user2292 uses the first line of the first multi-line commit message as the title2293 adds the remaining lines of the first multi-line commit message as the description2294 when the issue is confidential2295 uses the first line of the first multi-line commit message as the title2296 adds the remaining lines of the first multi-line commit message as the description2297 source branch does not exist2298 behaves like forbids the merge request from being created2299 returns that the merge request cannot be created2300 adds an error message to the merge request2301 target branch does not exist2302 behaves like forbids the merge request from being created2303 returns that the merge request cannot be created2304 adds an error message to the merge request2305 both source and target branches do not exist2306 behaves like forbids the merge request from being created2307 returns that the merge request cannot be created2308 adds an error message to the merge request2309 upstream project has disabled merge requests2310 sets target project correctly2311 target_project is set and accessible by current_user2312 sets target project correctly2313 target_project is set but not accessible by current_user2314 sets target project correctly2315 target_project is set but repo is not accessible by current_user2316 sets target project correctly2317 source_project is set and accessible by current_user2318 sets source project correctly2319 source_project is set but not accessible by current_user2320 sets source project correctly2321 source_project is set but the user cannot create merge requests from the project2322 sets the source_project correctly2323 target_project is not in the fork network of source_project2324 adds an error to the merge request2325 target_project is in the fork network of source project but no longer accessible2326 sets the target_project correctly2327 when specifying target branch in the description2328 sets the attribute from the quick actions2329 when assigning labels2330 for members with less than developer access2331 is not allowed2332 for users allowed to assign labels2333 for labels in the project2334 is allowed for developers2335 for unrelated labels2336 only assigns related labels2337Gitlab::Usage::Metrics::NamesSuggestions::Generator2338 #generate2339 #add_metric2340 computes the suggested name for given metric2341 for count with default column metrics2342 behaves like name suggestion2343 return correct name2344 for count distinct with column defined metrics2345 behaves like name suggestion2346 return correct name2347 joined relations2348 counted attribute comes from source relation2349 behaves like name suggestion2350 return correct name2351 strips off time period constraint2352 behaves like name suggestion2353 return correct name2354 for sum metrics2355 behaves like name suggestion2356 return correct name2357 for add metrics2358 behaves like name suggestion2359 return correct name2360 for redis metrics2361 behaves like name suggestion2362 return correct name2363 for alt_usage_data metrics2364 behaves like name suggestion2365 return correct name2366Snippets::UpdateService2367 #execute2368 when Project Snippet2369 behaves like a service that updates a snippet2370 updates a snippet with the provided attributes2371 behaves like public visibility level restrictions apply2372 when user is not an admin2373 responds with an error2374 does not update snippet to public visibility2375 when user is an admin2376 responds with success2377 updates the snippet to public visibility2378 when visibility level is passed as a string2379 assigns the correct visibility level2380 behaves like snippet update data is tracked2381 increments count when create succeeds2382 when update fails2383 does not increment count2384 behaves like updates repository content2385 commit the files to the repository2386 returns error if snippet does not have a snippet_repository2387 when an error is raised2388 logs the error2389 returns error with generic error message2390 when the repository does not exist2391 does not try to commit file2392 behaves like commit operation fails2393 returns error2394 when repository is empty2395 destroys the created repository in disk2396 destroys the SnippetRepository object2397 expires the repository exists method cache2398 when repository is not empty2399 does not destroy the repository2400 does not destroy the snippet repository2401 expires the repository exists method cache2402 with snippet modifications2403 rolls back any snippet modifications2404 keeps any snippet modifications2405 behaves like committable attributes2406 when file_name is updated2407 commits to repository2408 when content is updated2409 commits to repository2410 when content or file_name is not updated2411 does not perform any commit2412 behaves like when snippet_actions param is present2413 updates a snippet with the provided attributes2414 commits the files to the repository2415 when content or file_name params are present2416 raises a validation error2417 when snippet_file content is not present2418 does not update snippet content2419 when snippet_actions param is invalid2420 raises a validation error2421 when an error is raised committing the file2422 keeps any snippet modifications2423 commit actions2424 update action2425 updates the file content2426 when previous_path is present2427 updates the file content2428 when content is not present2429 behaves like returns an error2430 is expected to eq "Snippet actions have invalid data"2431 when file_path does not exist2432 behaves like returns an error2433 is expected to eq "Repository Error updating the snippet"2434 move action2435 when file_path and previous_path are the same2436 behaves like returns an error2437 is expected to eq "Snippet actions have invalid data"2438 when file_path and previous_path are different2439 renames the file2440 when previous_path does not exist2441 behaves like returns an error2442 is expected to eq "Repository Error updating the snippet"2443 when user wants to rename the file and update content2444 performs both operations2445 when the file_path is not present2446 generates the name for the renamed file2447 delete action2448 behaves like deletes the file2449 is expected to be nil2450 when previous_path is present and same as file_path2451 behaves like deletes the file2452 is expected to be nil2453 when previous_path is present and is different from file_path2454 behaves like deletes the file2455 is expected to be nil2456 when content is present2457 behaves like deletes the file2458 is expected to be nil2459 when file_path does not exist2460 behaves like returns an error2461 is expected to eq "Repository Error updating the snippet"2462 create action2463 creates the file2464 when content is not present2465 behaves like returns an error2466 is expected to eq "Snippet actions have invalid data"2467 when file_path is not present or empty2468 generates the file path for the files2469 when file_path already exists in the repository2470 behaves like returns an error2471 is expected to eq "Repository Error updating the snippet"2472 when previous_path is present2473 creates the file2474 combination of actions2475 performs all operations2476 behaves like only file_name is present2477 when renaming the file_name2478 behaves like content is not updated2479 is expected to eq "/custom-highlighting/*.gitlab-custom gitlab-language=ruby\n"2480 when file_name does not change2481 behaves like content is not updated2482 is expected to eq "/custom-highlighting/*.gitlab-custom gitlab-language=ruby\n"2483 behaves like only content is present2484 updates the content2485 behaves like invalid params error response2486 responds to errors appropriately2487 behaves like checking spam2488 executes SpamActionService2489 when snippet does not have a repository2490 behaves like creates repository and creates file2491 when file_name and content params are used2492 creates repository2493 commits the files to the repository2494 when the repository creation fails2495 raise an error2496 does not try to commit file2497 when snippet_actions param is used2498 performs operation without raising errors2499 when the repository is not created2500 keeps snippet database data2501 behaves like commit operation fails2502 returns error2503 when repository is empty2504 destroys the created repository in disk2505 destroys the SnippetRepository object2506 expires the repository exists method cache2507 when repository is not empty2508 does not destroy the repository2509 does not destroy the snippet repository2510 expires the repository exists method cache2511 with snippet modifications2512 rolls back any snippet modifications2513 keeps any snippet modifications2514 when PersonalSnippet2515 behaves like a service that updates a snippet2516 updates a snippet with the provided attributes2517 behaves like public visibility level restrictions apply2518 when user is not an admin2519 responds with an error2520 does not update snippet to public visibility2521 when user is an admin2522 responds with success2523 updates the snippet to public visibility2524 when visibility level is passed as a string2525 assigns the correct visibility level2526 behaves like snippet update data is tracked2527 increments count when create succeeds2528 when update fails2529 does not increment count2530 behaves like updates repository content2531 commit the files to the repository2532 returns error if snippet does not have a snippet_repository2533 when an error is raised2534 logs the error2535 returns error with generic error message2536 when the repository does not exist2537 does not try to commit file2538 behaves like commit operation fails2539 returns error2540 when repository is empty2541 destroys the created repository in disk2542 destroys the SnippetRepository object2543 expires the repository exists method cache2544 when repository is not empty2545 does not destroy the repository2546 does not destroy the snippet repository2547 expires the repository exists method cache2548 with snippet modifications2549 rolls back any snippet modifications2550 keeps any snippet modifications2551 behaves like committable attributes2552 when file_name is updated2553 commits to repository2554 when content is updated2555 commits to repository2556 when content or file_name is not updated2557 does not perform any commit2558 behaves like when snippet_actions param is present2559 updates a snippet with the provided attributes2560 commits the files to the repository2561 when content or file_name params are present2562 raises a validation error2563 when snippet_file content is not present2564 does not update snippet content2565 when snippet_actions param is invalid2566 raises a validation error2567 when an error is raised committing the file2568 keeps any snippet modifications2569 commit actions2570 update action2571 updates the file content2572 when previous_path is present2573 updates the file content2574 when content is not present2575 behaves like returns an error2576 is expected to eq "Snippet actions have invalid data"2577 when file_path does not exist2578 behaves like returns an error2579 is expected to eq "Repository Error updating the snippet"2580 move action2581 when file_path and previous_path are the same2582 behaves like returns an error2583 is expected to eq "Snippet actions have invalid data"2584 when file_path and previous_path are different2585 renames the file2586 when previous_path does not exist2587 behaves like returns an error2588 is expected to eq "Repository Error updating the snippet"2589 when user wants to rename the file and update content2590 performs both operations2591 when the file_path is not present2592 generates the name for the renamed file2593 delete action2594 behaves like deletes the file2595 is expected to be nil2596 when previous_path is present and same as file_path2597 behaves like deletes the file2598 is expected to be nil2599 when previous_path is present and is different from file_path2600 behaves like deletes the file2601 is expected to be nil2602 when content is present2603 behaves like deletes the file2604 is expected to be nil2605 when file_path does not exist2606 behaves like returns an error2607 is expected to eq "Repository Error updating the snippet"2608 create action2609 creates the file2610 when content is not present2611 behaves like returns an error2612 is expected to eq "Snippet actions have invalid data"2613 when file_path is not present or empty2614 generates the file path for the files2615 when file_path already exists in the repository2616 behaves like returns an error2617 is expected to eq "Repository Error updating the snippet"2618 when previous_path is present2619 creates the file2620 combination of actions2621 performs all operations2622 behaves like only file_name is present2623 when renaming the file_name2624 behaves like content is not updated2625 is expected to eq "/custom-highlighting/*.gitlab-custom gitlab-language=ruby\n"2626 when file_name does not change2627 behaves like content is not updated2628 is expected to eq "/custom-highlighting/*.gitlab-custom gitlab-language=ruby\n"2629 behaves like only content is present2630 updates the content2631 behaves like invalid params error response2632 responds to errors appropriately2633 behaves like checking spam2634 executes SpamActionService2635 when snippet does not have a repository2636 behaves like creates repository and creates file2637 when file_name and content params are used2638 creates repository2639 commits the files to the repository2640 when the repository creation fails2641 raise an error2642 does not try to commit file2643 when snippet_actions param is used2644 performs operation without raising errors2645 when the repository is not created2646 keeps snippet database data2647 behaves like commit operation fails2648 returns error2649 when repository is empty2650 destroys the created repository in disk2651 destroys the SnippetRepository object2652 expires the repository exists method cache2653 when repository is not empty2654 does not destroy the repository2655 does not destroy the snippet repository2656 expires the repository exists method cache2657 with snippet modifications2658 rolls back any snippet modifications2659 keeps any snippet modifications2660Integrations::Slack2661 behaves like Integrations::SlackMattermostNotifier2662 Associations2663 is expected to belong to project required: false2664 is expected to have one service_hook2665 Validations2666 when integration is active2667 is expected to validate that :webhook cannot be empty/falsy2668 behaves like issue tracker integration URL attribute2669 is expected to allow :webhook to be ‹"https://example.com"›2670 is expected not to allow :webhook to be ‹"example.com"›2671 is expected not to allow :webhook to be ‹"ftp://example.com"›2672 is expected not to allow :webhook to be ‹"herp-and-derp"›2673 when integration is inactive2674 is expected not to validate that :webhook cannot be empty/falsy2675 #execute2676 with username for slack configured2677 uses the username as an option2678 push events2679 behaves like calls the integration API with the event message2680 is expected to request POST https://8.8.8.9/ 1 time2681 with event channel2682 uses the right channel for push event2683 tag_push events2684 behaves like calls the integration API with the event message2685 is expected to request POST https://8.8.8.9/ 1 time2686 issue events2687 behaves like calls the integration API with the event message2688 is expected to request POST https://8.8.8.9/ 1 time2689 whith event channel2690 uses the right channel for issue event2691 for confidential issues2692 falls back to issue channel2693 and confidential_issue_channel is defined2694 uses the confidential issue channel when it is defined2695 merge request events2696 behaves like calls the integration API with the event message2697 is expected to request POST https://8.8.8.9/ 1 time2698 with event channel2699 uses the right channel for merge request event2700 wiki page events2701 behaves like calls the integration API with the event message2702 is expected to request POST https://8.8.8.9/ 1 time2703 with event channel2704 uses the right channel for wiki event2705 deployment events2706 behaves like calls the integration API with the event message2707 is expected to request POST https://8.8.8.9/ 1 time2708 note event2709 behaves like calls the integration API with the event message2710 is expected to request POST https://8.8.8.9/ 1 time2711 with event channel2712 uses the right channel2713 for confidential notes2714 falls back to note channel2715 and confidential_note_channel is defined2716 uses confidential channel2717 Push events2718 on default branch2719 pushing tags2720 behaves like triggered Slack integration2721 notifies about push events2722 notification enabled only for default branch2723 behaves like triggered Slack integration2724 notifies about push events2725 notification enabled only for protected branches2726 behaves like untriggered Slack integration2727 notifies about push events2728 notification enabled only for default and protected branches2729 behaves like triggered Slack integration2730 notifies about push events2731 notification enabled for all branches2732 behaves like triggered Slack integration2733 notifies about push events2734 on a protected branch2735 pushing tags2736 behaves like triggered Slack integration2737 notifies about push events2738 notification enabled only for default branch2739 behaves like untriggered Slack integration2740 notifies about push events2741 notification enabled only for protected branches2742 behaves like triggered Slack integration2743 notifies about push events2744 notification enabled only for default and protected branches2745 behaves like triggered Slack integration2746 notifies about push events2747 notification enabled for all branches2748 behaves like triggered Slack integration2749 notifies about push events2750 on a protected branch with protected branches defined using wildcards2751 pushing tags2752 behaves like triggered Slack integration2753 notifies about push events2754 notification enabled only for default branch2755 behaves like untriggered Slack integration2756 notifies about push events2757 notification enabled only for protected branches2758 behaves like triggered Slack integration2759 notifies about push events2760 notification enabled only for default and protected branches2761 behaves like triggered Slack integration2762 notifies about push events2763 notification enabled for all branches2764 behaves like triggered Slack integration2765 notifies about push events2766 on a neither protected nor default branch2767 pushing tags2768 behaves like triggered Slack integration2769 notifies about push events2770 notification enabled only for default branch2771 behaves like untriggered Slack integration2772 notifies about push events2773 notification enabled only for protected branches2774 behaves like untriggered Slack integration2775 notifies about push events2776 notification enabled only for default and protected branches2777 behaves like untriggered Slack integration2778 notifies about push events2779 notification enabled for all branches2780 behaves like triggered Slack integration2781 notifies about push events2782 Note events2783 when commit comment event executed2784 behaves like triggered Slack integration2785 notifies about commit comment events2786 when merge request comment event executed2787 behaves like triggered Slack integration2788 notifies about merge request comment events2789 when issue comment event executed2790 behaves like triggered Slack integration2791 notifies about issue comment events2792 when snippet comment event executed2793 behaves like triggered Slack integration2794 notifies about snippet comment events2795 Pipeline events2796 with succeeded pipeline2797 with default to notify_only_broken_pipelines2798 behaves like untriggered Slack integration2799 notifies about pipeline events2800 with setting notify_only_broken_pipelines to false2801 behaves like triggered Slack integration2802 notifies about pipeline events2803 with failed pipeline2804 on default branch2805 notification enabled only for default branch2806 behaves like triggered Slack integration2807 notifies about pipeline events2808 notification enabled only for protected branches2809 behaves like untriggered Slack integration2810 notifies about pipeline events2811 notification enabled only for default and protected branches2812 behaves like triggered Slack integration2813 notifies about pipeline events2814 notification enabled for all branches2815 behaves like triggered Slack integration2816 notifies about pipeline events2817 on a protected branch2818 notification enabled only for default branch2819 behaves like untriggered Slack integration2820 notifies about pipeline events2821 notification enabled only for protected branches2822 behaves like triggered Slack integration2823 notifies about pipeline events2824 notification enabled only for default and protected branches2825 behaves like triggered Slack integration2826 notifies about pipeline events2827 notification enabled for all branches2828 behaves like triggered Slack integration2829 notifies about pipeline events2830 on a protected branch with protected branches defined usin wildcards2831 notification enabled only for default branch2832 behaves like untriggered Slack integration2833 notifies about pipeline events2834 notification enabled only for protected branches2835 behaves like triggered Slack integration2836 notifies about pipeline events2837 notification enabled only for default and protected branches2838 behaves like triggered Slack integration2839 notifies about pipeline events2840 notification enabled for all branches2841 behaves like triggered Slack integration2842 notifies about pipeline events2843 on a neither protected nor default branch2844 notification enabled only for default branch2845 behaves like untriggered Slack integration2846 notifies about pipeline events2847 notification enabled only for protected branches2848 behaves like untriggered Slack integration2849 notifies about pipeline events2850 notification enabled only for default and protected branches2851 behaves like untriggered Slack integration2852 notifies about pipeline events2853 notification enabled for all branches2854 behaves like triggered Slack integration2855 notifies about pipeline events2856 Deployment events2857 behaves like triggered Slack integration2858 notifies about deployment events2859 on a protected branch2860 notification enabled only for default branch2861 behaves like untriggered Slack integration2862 notifies about pipeline events2863 notification enabled only for protected branches2864 behaves like triggered Slack integration2865 notifies about pipeline events2866 notification enabled only for default and protected branches2867 behaves like triggered Slack integration2868 notifies about pipeline events2869 notification enabled for all branches2870 behaves like triggered Slack integration2871 notifies about pipeline events2872 #execute2873 uses only known events2874 hook data includes a user object2875 event is not supported for usage log2876 does not increase the usage data counter2877 issue notification2878 behaves like increases the usage data counter2879 increases the usage data counter2880 push notification2881 behaves like increases the usage data counter2882 increases the usage data counter2883 deployment notification2884 behaves like increases the usage data counter2885 increases the usage data counter2886 wiki_page notification2887 behaves like increases the usage data counter2888 increases the usage data counter2889 merge_request notification2890 behaves like increases the usage data counter2891 increases the usage data counter2892 note notification2893 behaves like increases the usage data counter2894 increases the usage data counter2895 tag_push notification2896 behaves like increases the usage data counter2897 increases the usage data counter2898 confidential note notification2899 behaves like increases the usage data counter2900 increases the usage data counter2901 confidential issue notification2902 behaves like increases the usage data counter2903 increases the usage data counter2904 hook data does not include a user2905 does not increase the usage data counter2906DesignManagement::Design2907 behaves like AtomicInternalId2908 .has_internal_id2909 Module inclusion2910 is expected to includes the AtomicInternalId module2911 Validation2912 when presence validation is required2913 when creating an object2914 raises an error if the internal id is blank2915 when updating an object2916 raises an error if the internal id is blank2917 when presence validation is not required2918 when creating an object2919 does not raise an error if the internal id is blank (PENDING: No reason given)2920 when updating an object2921 does not raise an error if the internal id is blank (PENDING: No reason given)2922 Creating an instance2923 saves a new instance properly2924 internal id generation2925 calls InternalId.generate_next and sets internal id attribute2926 does not overwrite an existing internal id2927 when the instance has an internal ID set2928 calls InternalId.update_last_value and sets the `last_value` to that of the instance2929 unsetting the instance internal id on rollback2930 when the internal id has been changed2931 when the internal id is automatically set2932 clears it on the instance2933 when the internal id is manually set2934 does not clear it on the instance2935 when the internal id has not been changed2936 preserves the value on the instance2937 supply of internal ids2938 provides a persistent supply of IID values, sensitive to the current state2939 #reset_scope_internal_id_attribute2940 rewinds the allocated IID2941 allocates the same IID2942 behaves like a class that supports relative positioning2943 #scoped_items2944 includes all items with the same scope2945 #relative_siblings2946 includes all items with the same scope, except self2947 .move_nulls_to_end2948 moves items with null relative_position to the end2949 preserves relative position2950 moves the item near the start position when there are no existing positions2951 does not perform any moves if all items have their relative_position set2952 manages to move nulls to the end even if there is a sequence at the end2953 manages to move nulls to the end even if there is not enough space2954 manages to move nulls to the end, stacking if we cannot create enough space2955 manages to move nulls found in the relative scope2956 can move many nulls2957 does not have an N+1 issue2958 .move_nulls_to_start2959 moves items with null relative_position to the start2960 moves the item near the start position when there are no existing positions2961 preserves relative position2962 does not perform any moves if all items have their relative_position set2963 manages to move nulls to the start even if there is not enough space2964 manages to move nulls to the end, stacking if we cannot create enough space2965 #move_before2966 moves item before2967 can move the item before an item at the start2968 can move the item before an item at MIN_POSITION2969 can move the item before an item bunched up at MIN_POSITION2970 when there is no space2971 moves items correctly2972 leap-frogging to the left2973 can leap-frog STEPS times before needing to rebalance2974 there is no space to the left after moving STEPS times2975 rebalances to the right2976 #move_after2977 moves item after2978 can move the item after an item bunched up at MAX_POSITION2979 when there is no space2980 can move the item after an item at MAX_POSITION2981 moves items correctly2982 leap-frogging2983 rebalances after STEPS jumps2984 #move_to_start2985 places items at most IDEAL_DISTANCE from the start when the range is open2986 moves item to the end2987 positions the item at MIN_POSITION when there is only one space left2988 rebalances when there is already an item at the MIN_POSITION2989 deals with a run of elements at the start2990 #move_to_end2991 places items at most IDEAL_DISTANCE from the start when the range is open2992 moves item to the end2993 positions the item at MAX_POSITION when there is only one space left2994 rebalances when there is already an item at the MAX_POSITION2995 deals with a run of elements at the end2996 #move_between2997 positions item between two other2998 positions item between on top2999 positions item between to end3000 positions items even when after and before positions are the same3001 positions item in the middle of other two if distance is big enough3002 positions item closer to the middle if we are at the very top3003 positions item closer to the middle if we are at the very bottom3004 positions item in the middle of other two3005 positions item right if we pass non-sequential parameters3006 avoids N+1 queries when rebalancing other items3007 the two items are next to each other3008 behaves like moves item between3009 moves the middle item to between left and right3010 there is no space3011 behaves like moves item between3012 moves the middle item to between left and right3013 there is a bunch of items3014 handles bunches correctly3015 behaves like moves item between3016 moves the middle item to between left and right3017 relations3018 is expected to belong to project required: false3019 is expected to belong to issue required: false3020 is expected to have many actions3021 is expected to have many versions3022 is expected to have many authors3023 is expected to have many notes dependent => delete_all3024 is expected to have many user_mentions3025 #authors3026 returns unique version authors3027 validations3028 is expected to be valid3029 is expected to validate that :project cannot be empty/falsy3030 is expected to validate that :issue cannot be empty/falsy3031 is expected to validate that :filename cannot be empty/falsy3032 is expected to validate that the length of :filename is at most 2553033 is expected to validate that :filename is case-sensitively unique within the scope of :issue_id3034 validates that the extension is an image3035 validating files with .svg extension3036 allows .svg files when feature flag is enabled3037 does not allow .svg files when feature flag is disabled3038 scopes3039 .visible_at_version3040 at oldest version3041 finds the first design only3042 at version 23043 finds the first and second designs3044 at latest version3045 finds designs3046 when the argument is nil3047 finds all undeleted designs3048 one of the designs was deleted before the given version3049 is not returned3050 a re-created history3051 is returned, though other deleted events are not3052 dead or alive3053 can establish the history at any point3054 .ordered3055 sorts by relative position and ID in ascending order3056 .in_creation_order3057 sorts by ID in ascending order3058 .with_filename3059 returns correct design when passed a single filename3060 returns correct designs when passed an Array of filenames3061 .on_issue3062 returns correct designs when passed a single issue3063 returns correct designs when passed an Array of issues3064 .current3065 returns just the undeleted designs3066 .build_full_path3067 builds the full path for a design3068 #visible_in?3069 tells us when a design is visible3070 #to_ability_name3071 is expected to eq "design"3072 #status3073 the design is new3074 is expected to have attributes {:status => :new}3075 the design is current3076 is expected to have attributes {:status => :current}3077 the design has been deleted3078 is expected to have attributes {:status => :deleted}3079 #deleted?3080 the design is new3081 is falsy3082 the design is current3083 is falsy3084 the design has been deleted3085 is truthy3086 the design has been deleted, but was then re-created3087 is falsy3088 #participants3089 is expected to be empty3090 when participants can read the project3091 is expected to contain exactly #<User id:431 @user226>, #<User id:432 @user227>, and #<User id:433 @user228>3092 #new_design?3093 is false when there are versions3094 is true when there are no versions3095 is false for deleted designs3096 does not cause extra queries when actions are loaded3097 implicitly caches values3098 queries again when the clear_version_cache trigger has been called3099 causes a single query when there versions are not loaded3100 #full_path3101 builds the full path for a design3102 #diff_refs3103 has no diff ref if new3104 there are several versions3105 builds diff refs based on the first commit and it's for the design3106 there is just one version3107 builds diff refs based on the empty tree if there was only one version3108 #repository3109 is a design repository3110 #note_etag_key3111 returns a correct etag key3112 #user_notes_count3113 returns a count of user-generated notes3114 #after_note_changed3115 calls #delete_cache on DesignUserNotesCountService for non-system notes3116 .for_reference3117 avoids extra queries when calling to_reference3118 #to_reference3119 when nil argument3120 uses the simple format3121 when full is true3122 returns complete path to the issue3123 when full is false3124 returns complete path to the issue3125 when same project argument3126 returns bare reference3127 reference_pattern3128 is nil3129 link_reference_pattern3130 is not nil3131 does not match the designs tab3132 intentionally ignores filenames with any special character3133 ext: "png"3134 matches the URL3135 the file is all upper case3136 extracts the encoded filename3137 ext: "PNG"3138 matches the URL3139 the file is all upper case3140 extracts the encoded filename3141 ext: "jpg"3142 matches the URL3143 the file is all upper case3144 extracts the encoded filename3145 ext: "JPG"3146 matches the URL3147 the file is all upper case3148 extracts the encoded filename3149 ext: "jpeg"3150 matches the URL3151 the file is all upper case3152 extracts the encoded filename3153 ext: "JPEG"3154 matches the URL3155 the file is all upper case3156 extracts the encoded filename3157 ext: "gif"3158 matches the URL3159 the file is all upper case3160 extracts the encoded filename3161 ext: "GIF"3162 matches the URL3163 the file is all upper case3164 extracts the encoded filename3165 ext: "bmp"3166 matches the URL3167 the file is all upper case3168 extracts the encoded filename3169 ext: "BMP"3170 matches the URL3171 the file is all upper case3172 extracts the encoded filename3173 ext: "tiff"3174 matches the URL3175 the file is all upper case3176 extracts the encoded filename3177 ext: "TIFF"3178 matches the URL3179 the file is all upper case3180 extracts the encoded filename3181 ext: "ico"3182 matches the URL3183 the file is all upper case3184 extracts the encoded filename3185 ext: "ICO"3186 matches the URL3187 the file is all upper case3188 extracts the encoded filename3189 ext: "webp"3190 matches the URL3191 the file is all upper case3192 extracts the encoded filename3193 ext: "WEBP"3194 matches the URL3195 the file is all upper case3196 extracts the encoded filename3197 ext: "svg"3198 matches the URL3199 the file is all upper case3200 extracts the encoded filename3201 ext: "SVG"3202 matches the URL3203 the file is all upper case3204 extracts the encoded filename3205 .by_issue_id_and_filename3206 behaves like a where_composite scope3207 we pass an empty array3208 returns a null relation3209 we pass nil3210 returns a null relation3211 we pass a singleton composite id3212 finds the first result3213 we pass group of ids3214 finds all the results3215 performance3216 is not O(N)3217Tooling::Danger::ProjectHelper3218 #categories_for_file3219 path: "usage_data.rb", expected_categories: [:database, :backend, :product_intelligence]3220 is expected to eq [:database, :backend, :product_intelligence]3221 path: "doc/foo.md", expected_categories: [:docs]3222 is expected to eq [:docs]3223 path: "CONTRIBUTING.md", expected_categories: [:docs]3224 is expected to eq [:docs]3225 path: "LICENSE", expected_categories: [:docs]3226 is expected to eq [:docs]3227 path: "MAINTENANCE.md", expected_categories: [:docs]3228 is expected to eq [:docs]3229 path: "PHILOSOPHY.md", expected_categories: [:docs]3230 is expected to eq [:docs]3231 path: "PROCESS.md", expected_categories: [:docs]3232 is expected to eq [:docs]3233 path: "README.md", expected_categories: [:docs]3234 is expected to eq [:docs]3235 path: "ee/doc/foo", expected_categories: [:unknown]3236 is expected to eq [:unknown]3237 path: "ee/README", expected_categories: [:unknown]3238 is expected to eq [:unknown]3239 path: "app/assets/foo", expected_categories: [:frontend]3240 is expected to eq [:frontend]3241 path: "app/views/foo", expected_categories: [:frontend, :backend]3242 is expected to eq [:frontend, :backend]3243 path: "public/foo", expected_categories: [:frontend]3244 is expected to eq [:frontend]3245 path: "scripts/frontend/foo", expected_categories: [:frontend]3246 is expected to eq [:frontend]3247 path: "spec/frontend/bar", expected_categories: [:frontend]3248 is expected to eq [:frontend]3249 path: "spec/frontend_integration/bar", expected_categories: [:frontend]3250 is expected to eq [:frontend]3251 path: "vendor/assets/foo", expected_categories: [:frontend]3252 is expected to eq [:frontend]3253 path: "babel.config.js", expected_categories: [:frontend]3254 is expected to eq [:frontend]3255 path: "jest.config.js", expected_categories: [:frontend]3256 is expected to eq [:frontend]3257 path: "package.json", expected_categories: [:frontend]3258 is expected to eq [:frontend]3259 path: "yarn.lock", expected_categories: [:frontend]3260 is expected to eq [:frontend]3261 path: "config/foo.js", expected_categories: [:frontend]3262 is expected to eq [:frontend]3263 path: "config/deep/foo.js", expected_categories: [:frontend]3264 is expected to eq [:frontend]3265 path: "ee/app/assets/foo", expected_categories: [:frontend]3266 is expected to eq [:frontend]3267 path: "ee/app/views/foo", expected_categories: [:frontend, :backend]3268 is expected to eq [:frontend, :backend]3269 path: "ee/spec/frontend/bar", expected_categories: [:frontend]3270 is expected to eq [:frontend]3271 path: "ee/spec/frontend_integration/bar", expected_categories: [:frontend]3272 is expected to eq [:frontend]3273 path: ".gitlab/ci/frontend.gitlab-ci.yml", expected_categories: [:frontend, :tooling]3274 is expected to eq [:frontend, :tooling]3275 path: "app/models/foo", expected_categories: [:backend]3276 is expected to eq [:backend]3277 path: "bin/foo", expected_categories: [:backend]3278 is expected to eq [:backend]3279 path: "config/foo", expected_categories: [:backend]3280 is expected to eq [:backend]3281 path: "lib/foo", expected_categories: [:backend]3282 is expected to eq [:backend]3283 path: "rubocop/foo", expected_categories: [:backend]3284 is expected to eq [:backend]3285 path: ".rubocop.yml", expected_categories: [:backend]3286 is expected to eq [:backend]3287 path: ".rubocop_todo.yml", expected_categories: [:backend]3288 is expected to eq [:backend]3289 path: ".rubocop_todo/cop/name.yml", expected_categories: [:backend]3290 is expected to eq [:backend]3291 path: "spec/foo", expected_categories: [:backend]3292 is expected to eq [:backend]3293 path: "spec/foo/bar", expected_categories: [:backend]3294 is expected to eq [:backend]3295 path: "ee/app/foo", expected_categories: [:backend]3296 is expected to eq [:backend]3297 path: "ee/bin/foo", expected_categories: [:backend]3298 is expected to eq [:backend]3299 path: "ee/spec/foo", expected_categories: [:backend]3300 is expected to eq [:backend]3301 path: "ee/spec/foo/bar", expected_categories: [:backend]3302 is expected to eq [:backend]3303 path: "spec/migrations/foo", expected_categories: [:database]3304 is expected to eq [:database]3305 path: "ee/spec/migrations/foo", expected_categories: [:database]3306 is expected to eq [:database]3307 path: "spec/features/foo", expected_categories: [:test]3308 is expected to eq [:test]3309 path: "ee/spec/features/foo", expected_categories: [:test]3310 is expected to eq [:test]3311 path: "spec/support/shared_examples/features/foo", expected_categories: [:test]3312 is expected to eq [:test]3313 path: "ee/spec/support/shared_examples/features/foo", expected_categories: [:test]3314 is expected to eq [:test]3315 path: "spec/support/shared_contexts/features/foo", expected_categories: [:test]3316 is expected to eq [:test]3317 path: "ee/spec/support/shared_contexts/features/foo", expected_categories: [:test]3318 is expected to eq [:test]3319 path: "spec/support/helpers/features/foo", expected_categories: [:test]3320 is expected to eq [:test]3321 path: "ee/spec/support/helpers/features/foo", expected_categories: [:test]3322 is expected to eq [:test]3323 path: "generator_templates/foo", expected_categories: [:backend]3324 is expected to eq [:backend]3325 path: "vendor/languages.yml", expected_categories: [:backend]3326 is expected to eq [:backend]3327 path: "file_hooks/examples/", expected_categories: [:backend]3328 is expected to eq [:backend]3329 path: "Gemfile", expected_categories: [:backend]3330 is expected to eq [:backend]3331 path: "Gemfile.lock", expected_categories: [:backend]3332 is expected to eq [:backend]3333 path: "Rakefile", expected_categories: [:backend]3334 is expected to eq [:backend]3335 path: "FOO_VERSION", expected_categories: [:backend]3336 is expected to eq [:backend]3337 path: "Dangerfile", expected_categories: [:tooling]3338 is expected to eq [:tooling]3339 path: "danger/bundle_size/Dangerfile", expected_categories: [:tooling]3340 is expected to eq [:tooling]3341 path: "ee/danger/bundle_size/Dangerfile", expected_categories: [:tooling]3342 is expected to eq [:tooling]3343 path: "danger/bundle_size/", expected_categories: [:tooling]3344 is expected to eq [:tooling]3345 path: "ee/danger/bundle_size/", expected_categories: [:tooling]3346 is expected to eq [:tooling]3347 path: ".gitlab-ci.yml", expected_categories: [:tooling]3348 is expected to eq [:tooling]3349 path: ".gitlab/ci/cng.gitlab-ci.yml", expected_categories: [:tooling]3350 is expected to eq [:tooling]3351 path: ".gitlab/ci/ee-specific-checks.gitlab-ci.yml", expected_categories: [:tooling]3352 is expected to eq [:tooling]3353 path: "scripts/foo", expected_categories: [:tooling]3354 is expected to eq [:tooling]3355 path: "tooling/danger/foo", expected_categories: [:tooling]3356 is expected to eq [:tooling]3357 path: "ee/tooling/danger/foo", expected_categories: [:tooling]3358 is expected to eq [:tooling]3359 path: "lefthook.yml", expected_categories: [:tooling]3360 is expected to eq [:tooling]3361 path: ".editorconfig", expected_categories: [:tooling]3362 is expected to eq [:tooling]3363 path: "tooling/bin/find_foss_tests", expected_categories: [:tooling]3364 is expected to eq [:tooling]3365 path: ".codeclimate.yml", expected_categories: [:tooling]3366 is expected to eq [:tooling]3367 path: ".gitlab/CODEOWNERS", expected_categories: [:tooling]3368 is expected to eq [:tooling]3369 path: "lib/gitlab/ci/templates/Security/SAST.gitlab-ci.yml", expected_categories: [:ci_template]3370 is expected to eq [:ci_template]3371 path: "lib/gitlab/ci/templates/dotNET-Core.yml", expected_categories: [:ci_template]3372 is expected to eq [:ci_template]3373 path: "ee/FOO_VERSION", expected_categories: [:unknown]3374 is expected to eq [:unknown]3375 path: "db/schema.rb", expected_categories: [:database]3376 is expected to eq [:database]3377 path: "db/structure.sql", expected_categories: [:database]3378 is expected to eq [:database]3379 path: "db/migrate/foo", expected_categories: [:database, :migration]3380 is expected to eq [:database, :migration]3381 path: "db/post_migrate/foo", expected_categories: [:database, :migration]3382 is expected to eq [:database, :migration]3383 path: "ee/db/geo/migrate/foo", expected_categories: [:database, :migration]3384 is expected to eq [:database, :migration]3385 path: "ee/db/geo/post_migrate/foo", expected_categories: [:database, :migration]3386 is expected to eq [:database, :migration]3387 path: "app/models/project_authorization.rb", expected_categories: [:database, :backend]3388 is expected to eq [:database, :backend]3389 path: "app/services/users/refresh_authorized_projects_service.rb", expected_categories: [:database, :backend]3390 is expected to eq [:database, :backend]3391 path: "app/services/authorized_project_update/find_records_due_for_refresh_service.rb", expected_categories: [:database, :backend]3392 is expected to eq [:database, :backend]3393 path: "lib/gitlab/background_migration.rb", expected_categories: [:database, :backend]3394 is expected to eq [:database, :backend]3395 path: "lib/gitlab/background_migration/foo", expected_categories: [:database, :backend]3396 is expected to eq [:database, :backend]3397 path: "ee/lib/gitlab/background_migration/foo", expected_categories: [:database, :backend]3398 is expected to eq [:database, :backend]3399 path: "lib/gitlab/database.rb", expected_categories: [:database, :backend]3400 is expected to eq [:database, :backend]3401 path: "lib/gitlab/database/foo", expected_categories: [:database, :backend]3402 is expected to eq [:database, :backend]3403 path: "ee/lib/gitlab/database/foo", expected_categories: [:database, :backend]3404 is expected to eq [:database, :backend]3405 path: "lib/gitlab/github_import.rb", expected_categories: [:database, :backend]3406 is expected to eq [:database, :backend]3407 path: "lib/gitlab/github_import/foo", expected_categories: [:database, :backend]3408 is expected to eq [:database, :backend]3409 path: "lib/gitlab/sql/foo", expected_categories: [:database, :backend]3410 is expected to eq [:database, :backend]3411 path: "rubocop/cop/migration/foo", expected_categories: [:database]3412 is expected to eq [:database]3413 path: "db/fixtures/foo.rb", expected_categories: [:backend]3414 is expected to eq [:backend]3415 path: "ee/db/fixtures/foo.rb", expected_categories: [:backend]3416 is expected to eq [:backend]3417 path: "qa/foo", expected_categories: [:qa]3418 is expected to eq [:qa]3419 path: "ee/qa/foo", expected_categories: [:qa]3420 is expected to eq [:qa]3421 path: "workhorse/main.go", expected_categories: [:workhorse]3422 is expected to eq [:workhorse]3423 path: "workhorse/internal/upload/upload.go", expected_categories: [:workhorse]3424 is expected to eq [:workhorse]3425 path: "locale/gitlab.pot", expected_categories: [:none]3426 is expected to eq [:none]3427 path: "FOO", expected_categories: [:unknown]3428 is expected to eq [:unknown]3429 path: "foo", expected_categories: [:unknown]3430 is expected to eq [:unknown]3431 path: "foo/bar.rb", expected_categories: [:backend]3432 is expected to eq [:backend]3433 path: "foo/bar.js", expected_categories: [:frontend]3434 is expected to eq [:frontend]3435 path: "foo/bar.txt", expected_categories: [:none]3436 is expected to eq [:none]3437 path: "foo/bar.md", expected_categories: [:none]3438 is expected to eq [:none]3439 path: "ee/config/metrics/counts_7d/20210216174919_g_analytics_issues_weekly.yml", expected_categories: [:product_intelligence]3440 is expected to eq [:product_intelligence]3441 path: "lib/gitlab/usage_data_counters/aggregated_metrics/common.yml", expected_categories: [:product_intelligence]3442 is expected to eq [:product_intelligence]3443 path: "lib/gitlab/usage_data_counters/hll_redis_counter.rb", expected_categories: [:backend, :product_intelligence]3444 is expected to eq [:backend, :product_intelligence]3445 path: "lib/gitlab/tracking.rb", expected_categories: [:backend, :product_intelligence]3446 is expected to eq [:backend, :product_intelligence]3447 path: "lib/gitlab/usage/service_ping_report.rb", expected_categories: [:backend, :product_intelligence]3448 is expected to eq [:backend, :product_intelligence]3449 path: "lib/gitlab/usage/metrics/key_path_processor.rb", expected_categories: [:backend, :product_intelligence]3450 is expected to eq [:backend, :product_intelligence]3451 path: "spec/lib/gitlab/tracking_spec.rb", expected_categories: [:backend, :product_intelligence]3452 is expected to eq [:backend, :product_intelligence]3453 path: "app/helpers/tracking_helper.rb", expected_categories: [:backend, :product_intelligence]3454 is expected to eq [:backend, :product_intelligence]3455 path: "spec/helpers/tracking_helper_spec.rb", expected_categories: [:backend, :product_intelligence]3456 is expected to eq [:backend, :product_intelligence]3457 path: "lib/generators/rails/usage_metric_definition_generator.rb", expected_categories: [:backend, :product_intelligence]3458 is expected to eq [:backend, :product_intelligence]3459 path: "spec/lib/generators/usage_metric_definition_generator_spec.rb", expected_categories: [:backend, :product_intelligence]3460 is expected to eq [:backend, :product_intelligence]3461 path: "config/metrics/schema.json", expected_categories: [:product_intelligence]3462 is expected to eq [:product_intelligence]3463 path: "app/assets/javascripts/tracking/foo.js", expected_categories: [:frontend, :product_intelligence]3464 is expected to eq [:frontend, :product_intelligence]3465 path: "spec/frontend/tracking/foo.js", expected_categories: [:frontend, :product_intelligence]3466 is expected to eq [:frontend, :product_intelligence]3467 path: "spec/frontend/tracking_spec.js", expected_categories: [:frontend, :product_intelligence]3468 is expected to eq [:frontend, :product_intelligence]3469 path: "lib/gitlab/usage_database/foo.rb", expected_categories: [:backend]3470 is expected to eq [:backend]3471 path: "config/metrics/counts_7d/test_metric.yml", expected_categories: [:product_intelligence]3472 is expected to eq [:product_intelligence]3473 path: "config/events/snowplow_event.yml", expected_categories: [:product_intelligence]3474 is expected to eq [:product_intelligence]3475 path: "config/metrics/schema.json", expected_categories: [:product_intelligence]3476 is expected to eq [:product_intelligence]3477 path: "doc/api/usage_data.md", expected_categories: [:product_intelligence]3478 is expected to eq [:product_intelligence]3479 path: "spec/lib/gitlab/usage_data_spec.rb", expected_categories: [:product_intelligence]3480 is expected to eq [:product_intelligence]3481 path: "spec/lib/gitlab/usage/service_ping_report.rb", expected_categories: [:backend, :product_intelligence]3482 is expected to eq [:backend, :product_intelligence]3483 path: "spec/lib/gitlab/usage/metrics/key_path_processor.rb", expected_categories: [:backend, :product_intelligence]3484 is expected to eq [:backend, :product_intelligence]3485 path: "app/models/integration.rb", expected_categories: [:integrations_be, :backend]3486 is expected to eq [:integrations_be, :backend]3487 path: "ee/app/models/integrations/github.rb", expected_categories: [:integrations_be, :backend]3488 is expected to eq [:integrations_be, :backend]3489 path: "ee/app/models/ee/integrations/jira.rb", expected_categories: [:integrations_be, :backend]3490 is expected to eq [:integrations_be, :backend]3491 path: "app/models/integrations/chat_message/pipeline_message.rb", expected_categories: [:integrations_be, :backend]3492 is expected to eq [:integrations_be, :backend]3493 path: "app/models/jira_connect_subscription.rb", expected_categories: [:integrations_be, :backend]3494 is expected to eq [:integrations_be, :backend]3495 path: "app/models/hooks/service_hook.rb", expected_categories: [:integrations_be, :backend]3496 is expected to eq [:integrations_be, :backend]3497 path: "ee/app/models/ee/hooks/system_hook.rb", expected_categories: [:integrations_be, :backend]3498 is expected to eq [:integrations_be, :backend]3499 path: "app/services/concerns/integrations/project_test_data.rb", expected_categories: [:integrations_be, :backend]3500 is expected to eq [:integrations_be, :backend]3501 path: "ee/app/services/ee/integrations/test/project_service.rb", expected_categories: [:integrations_be, :backend]3502 is expected to eq [:integrations_be, :backend]3503 path: "app/controllers/concerns/integrations/actions.rb", expected_categories: [:integrations_be, :backend]3504 is expected to eq [:integrations_be, :backend]3505 path: "ee/app/controllers/concerns/ee/integrations/params.rb", expected_categories: [:integrations_be, :backend]3506 is expected to eq [:integrations_be, :backend]3507 path: "ee/app/controllers/projects/integrations/jira/issues_controller.rb", expected_categories: [:integrations_be, :backend]3508 is expected to eq [:integrations_be, :backend]3509 path: "app/controllers/projects/hooks_controller.rb", expected_categories: [:integrations_be, :backend]3510 is expected to eq [:integrations_be, :backend]3511 path: "app/controllers/admin/hook_logs_controller.rb", expected_categories: [:integrations_be, :backend]3512 is expected to eq [:integrations_be, :backend]3513 path: "app/controllers/groups/settings/integrations_controller.rb", expected_categories: [:integrations_be, :backend]3514 is expected to eq [:integrations_be, :backend]3515 path: "app/controllers/jira_connect/branches_controller.rb", expected_categories: [:integrations_be, :backend]3516 is expected to eq [:integrations_be, :backend]3517 path: "app/controllers/oauth/jira/authorizations_controller.rb", expected_categories: [:integrations_be, :backend]3518 is expected to eq [:integrations_be, :backend]3519 path: "ee/app/finders/projects/integrations/jira/by_ids_finder.rb", expected_categories: [:integrations_be, :database, :backend]3520 is expected to eq [:integrations_be, :database, :backend]3521 path: "app/workers/jira_connect/sync_merge_request_worker.rb", expected_categories: [:integrations_be, :backend]3522 is expected to eq [:integrations_be, :backend]3523 path: "app/workers/propagate_integration_inherit_worker.rb", expected_categories: [:integrations_be, :backend]3524 is expected to eq [:integrations_be, :backend]3525 path: "app/workers/web_hooks/log_execution_worker.rb", expected_categories: [:integrations_be, :backend]3526 is expected to eq [:integrations_be, :backend]3527 path: "app/workers/web_hook_worker.rb", expected_categories: [:integrations_be, :backend]3528 is expected to eq [:integrations_be, :backend]3529 path: "app/workers/project_service_worker.rb", expected_categories: [:integrations_be, :backend]3530 is expected to eq [:integrations_be, :backend]3531 path: "lib/atlassian/jira_connect/serializers/commit_entity.rb", expected_categories: [:integrations_be, :backend]3532 is expected to eq [:integrations_be, :backend]3533 path: "lib/api/entities/project_integration.rb", expected_categories: [:integrations_be, :backend]3534 is expected to eq [:integrations_be, :backend]3535 path: "lib/gitlab/hook_data/note_builder.rb", expected_categories: [:integrations_be, :backend]3536 is expected to eq [:integrations_be, :backend]3537 path: "lib/gitlab/data_builder/note.rb", expected_categories: [:integrations_be, :backend]3538 is expected to eq [:integrations_be, :backend]3539 path: "lib/gitlab/web_hooks/recursion_detection.rb", expected_categories: [:integrations_be, :backend]3540 is expected to eq [:integrations_be, :backend]3541 path: "ee/lib/ee/gitlab/integrations/sti_type.rb", expected_categories: [:integrations_be, :backend]3542 is expected to eq [:integrations_be, :backend]3543 path: "ee/lib/ee/api/helpers/integrations_helpers.rb", expected_categories: [:integrations_be, :backend]3544 is expected to eq [:integrations_be, :backend]3545 path: "ee/app/serializers/integrations/jira_serializers/issue_entity.rb", expected_categories: [:integrations_be, :backend]3546 is expected to eq [:integrations_be, :backend]3547 path: "app/serializers/jira_connect/app_data_serializer.rb", expected_categories: [:integrations_be, :backend]3548 is expected to eq [:integrations_be, :backend]3549 path: "lib/api/github/entities.rb", expected_categories: [:integrations_be, :backend]3550 is expected to eq [:integrations_be, :backend]3551 path: "lib/api/v3/github.rb", expected_categories: [:integrations_be, :backend]3552 is expected to eq [:integrations_be, :backend]3553 path: "app/models/clusters/integrations/elastic_stack.rb", expected_categories: [:backend]3554 is expected to eq [:backend]3555 path: "app/controllers/clusters/integrations_controller.rb", expected_categories: [:backend]3556 is expected to eq [:backend]3557 path: "app/services/clusters/integrations/prometheus_health_check_service.rb", expected_categories: [:backend]3558 is expected to eq [:backend]3559 path: "app/graphql/types/alert_management/integration_type.rb", expected_categories: [:backend]3560 is expected to eq [:backend]3561 path: "app/views/jira_connect/branches/new.html.haml", expected_categories: [:integrations_fe, :frontend]3562 is expected to eq [:integrations_fe, :frontend]3563 path: "app/views/layouts/jira_connect.html.haml", expected_categories: [:integrations_fe, :frontend]3564 is expected to eq [:integrations_fe, :frontend]3565 path: "app/assets/javascripts/jira_connect/branches/pages/index.vue", expected_categories: [:integrations_fe, :frontend]3566 is expected to eq [:integrations_fe, :frontend]3567 path: "ee/app/views/projects/integrations/jira/issues/show.html.haml", expected_categories: [:integrations_fe, :frontend]3568 is expected to eq [:integrations_fe, :frontend]3569 path: "ee/app/assets/javascripts/integrations/zentao/issues_list/graphql/queries/get_zentao_issues.query.graphql", expected_categories: [:integrations_fe, :frontend]3570 is expected to eq [:integrations_fe, :frontend]3571 path: "app/assets/javascripts/pages/projects/settings/integrations/show/index.js", expected_categories: [:integrations_fe, :frontend]3572 is expected to eq [:integrations_fe, :frontend]3573 path: "ee/app/assets/javascripts/pages/groups/hooks/index.js", expected_categories: [:integrations_fe, :frontend]3574 is expected to eq [:integrations_fe, :frontend]3575 path: "app/views/clusters/clusters/_integrations_tab.html.haml", expected_categories: [:frontend, :backend]3576 is expected to eq [:frontend, :backend]3577 path: "app/assets/javascripts/alerts_settings/graphql/fragments/integration_item.fragment.graphql", expected_categories: [:frontend]3578 is expected to eq [:frontend]3579 path: "app/assets/javascripts/filtered_search/droplab/hook_input.js", expected_categories: [:frontend]3580 is expected to eq [:frontend]3581 path: "app/views/layouts/header/_default.html.haml", expected_categories: [:frontend, :backend]3582 is expected to eq [:frontend, :backend]3583 path: "app/views/layouts/header/_default.html.erb", expected_categories: [:frontend, :backend]3584 is expected to eq [:frontend, :backend]3585 having specific changes3586 expected_categories: [:product_intelligence], patch: "+data-track-action", changed_files: ["components/welcome.vue"]3587 has the correct categories3588 expected_categories: [:product_intelligence], patch: "+ data: { track_label:", changed_files: ["admin/groups/_form.html.haml"]3589 has the correct categories3590 expected_categories: [:product_intelligence], patch: "+ Gitlab::Tracking.event", changed_files: ["dashboard/todos_controller.rb", "admin/groups/_form.html.haml"]3591 has the correct categories3592 expected_categories: [:database, :backend, :product_intelligence], patch: "+ count(User.active)", changed_files: ["usage_data.rb", "lib/gitlab/usage_data.rb", "ee/lib/ee/gitlab/usage_data.rb"]3593 has the correct categories3594 expected_categories: [:database, :backend, :product_intelligence], patch: "+ estimate_batch_distinct_count(User.active)", changed_files: ["usage_data.rb"]3595 has the correct categories3596 expected_categories: [:backend, :product_intelligence], patch: "+ alt_usage_data(User.active)", changed_files: ["lib/gitlab/usage_data.rb"]3597 has the correct categories3598 expected_categories: [:backend, :product_intelligence], patch: "+ count(User.active)", changed_files: ["lib/gitlab/usage_data/topology.rb"]3599 has the correct categories3600 expected_categories: [:backend, :product_intelligence], patch: "+ foo_count(User.active)", changed_files: ["lib/gitlab/usage_data.rb"]3601 has the correct categories3602 expected_categories: [:backend], patch: "+ count(User.active)", changed_files: ["user.rb"]3603 has the correct categories3604 expected_categories: [:integrations_be, :database, :migration], patch: "+ add_column :integrations, :foo, :text", changed_files: ["db/migrate/foo.rb"]3605 has the correct categories3606 expected_categories: [:integrations_be, :database, :migration], patch: "+ create_table :zentao_tracker_data do |t|", changed_files: ["ee/db/post_migrate/foo.rb"]3607 has the correct categories3608 expected_categories: [:integrations_be, :backend], patch: "+ Integrations::Foo", changed_files: ["app/foo/bar.rb"]3609 has the correct categories3610 expected_categories: [:integrations_be, :backend], patch: "+ project.execute_hooks(foo, :bar)", changed_files: ["ee/lib/ee/foo.rb"]3611 has the correct categories3612 expected_categories: [:integrations_be, :backend], patch: "+ project.execute_integrations(foo, :bar)", changed_files: ["app/foo.rb"]3613 has the correct categories3614 #file_lines3615 returns the chomped file lines3616ObjectStorage::DirectUpload3617 #has_length3618 is known3619 maximum size is not required3620 is unknown3621 and maximum size is specified3622 does not raise an error3623 and maximum size is not specified3624 raises an error3625 #get_url3626 when AWS is used3627 calls the proper method3628 when Google is used3629 calls the proper method3630 #to_hash3631 when AWS is used3632 when length is known3633 behaves like a valid S3 upload without multipart data3634 behaves like a valid S3 upload3635 sets Workhorse client data3636 behaves like a valid upload3637 returns valid structure3638 with an object with UTF-8 characters3639 returns an escaped path3640 when no region is specified3641 defaults to us-east-13642 when V2 signatures are used3643 does not enable Workhorse client3644 when V4 signatures are used3645 enables the Workhorse client for instance profiles3646 when consolidated settings are used3647 enables the Workhorse client3648 when only server side encryption is used3649 sends server side encryption settings3650 when SSE-KMS is used3651 sends server side encryption settings3652 behaves like a valid upload without multipart data3653 returns valid structure3654 behaves like a valid upload3655 returns valid structure3656 with an object with UTF-8 characters3657 returns an escaped path3658 when path style is true3659 behaves like a valid S3 upload without multipart data3660 behaves like a valid S3 upload3661 sets Workhorse client data3662 behaves like a valid upload3663 returns valid structure3664 with an object with UTF-8 characters3665 returns an escaped path3666 when no region is specified3667 defaults to us-east-13668 when V2 signatures are used3669 does not enable Workhorse client3670 when V4 signatures are used3671 enables the Workhorse client for instance profiles3672 when consolidated settings are used3673 enables the Workhorse client3674 when only server side encryption is used3675 sends server side encryption settings3676 when SSE-KMS is used3677 sends server side encryption settings3678 behaves like a valid upload without multipart data3679 returns valid structure3680 behaves like a valid upload3681 returns valid structure3682 with an object with UTF-8 characters3683 returns an escaped path3684 when IAM profile is true3685 behaves like a valid S3 upload without multipart data3686 behaves like a valid S3 upload3687 sets Workhorse client data3688 behaves like a valid upload3689 returns valid structure3690 with an object with UTF-8 characters3691 returns an escaped path3692 when no region is specified3693 defaults to us-east-13694 when V2 signatures are used3695 does not enable Workhorse client3696 when V4 signatures are used3697 enables the Workhorse client for instance profiles3698 when consolidated settings are used3699 enables the Workhorse client3700 when only server side encryption is used3701 sends server side encryption settings3702 when SSE-KMS is used3703 sends server side encryption settings3704 behaves like a valid upload without multipart data3705 returns valid structure3706 behaves like a valid upload3707 returns valid structure3708 with an object with UTF-8 characters3709 returns an escaped path3710 when IMSDv2 is available3711 behaves like a valid S3 upload without multipart data3712 behaves like a valid S3 upload3713 sets Workhorse client data3714 behaves like a valid upload3715 returns valid structure3716 with an object with UTF-8 characters3717 returns an escaped path3718 when no region is specified3719 defaults to us-east-13720 when V2 signatures are used3721 does not enable Workhorse client3722 when V4 signatures are used3723 enables the Workhorse client for instance profiles3724 when consolidated settings are used3725 enables the Workhorse client3726 when only server side encryption is used3727 sends server side encryption settings3728 when SSE-KMS is used3729 sends server side encryption settings3730 behaves like a valid upload without multipart data3731 returns valid structure3732 behaves like a valid upload3733 returns valid structure3734 with an object with UTF-8 characters3735 returns an escaped path3736 when length is unknown3737 behaves like a valid S3 upload with multipart data3738 behaves like a valid S3 upload3739 sets Workhorse client data3740 behaves like a valid upload3741 returns valid structure3742 with an object with UTF-8 characters3743 returns an escaped path3744 when no region is specified3745 defaults to us-east-13746 when V2 signatures are used3747 does not enable Workhorse client3748 when V4 signatures are used3749 enables the Workhorse client for instance profiles3750 when consolidated settings are used3751 enables the Workhorse client3752 when only server side encryption is used3753 sends server side encryption settings3754 when SSE-KMS is used3755 sends server side encryption settings3756 behaves like a valid upload with multipart data3757 returns valid structure3758 uses only strings in query parameters3759 behaves like a valid upload3760 returns valid structure3761 with an object with UTF-8 characters3762 returns an escaped path3763 when maximum upload size is 03764 returns maximum number of parts3765 part size is minimum, 5MB3766 when maximum upload size is < 5 MB3767 returns only 1 part3768 part size is minimum, 5MB3769 when maximum upload size is 10MB3770 returns only 2 parts3771 part size is minimum, 5MB3772 when maximum upload size is 12MB3773 returns only 3 parts3774 part size is rounded-up to 5MB3775 when maximum upload size is 49GB3776 returns maximum, 100 parts3777 part size is rounded-up to 5MB3778 when Google is used3779 when length is known3780 behaves like a valid Google upload3781 does not set Workhorse client data3782 behaves like a valid upload3783 returns valid structure3784 with an object with UTF-8 characters3785 returns an escaped path3786 behaves like a valid upload without multipart data3787 returns valid structure3788 behaves like a valid upload3789 returns valid structure3790 with an object with UTF-8 characters3791 returns an escaped path3792 when length is unknown3793 behaves like a valid Google upload3794 does not set Workhorse client data3795 behaves like a valid upload3796 returns valid structure3797 with an object with UTF-8 characters3798 returns an escaped path3799 behaves like a valid upload without multipart data3800 returns valid structure3801 behaves like a valid upload3802 returns valid structure3803 with an object with UTF-8 characters3804 returns an escaped path3805 when AzureRM is used3806 behaves like a valid AzureRM upload3807 enables the Workhorse client3808 behaves like a valid upload3809 returns valid structure3810 with an object with UTF-8 characters3811 returns an escaped path3812 behaves like a valid upload without multipart data3813 returns valid structure3814 behaves like a valid upload3815 returns valid structure3816 with an object with UTF-8 characters3817 returns an escaped path3818 when a custom storage domain is used3819 behaves like a valid AzureRM upload3820 enables the Workhorse client3821 behaves like a valid upload3822 returns valid structure3823 with an object with UTF-8 characters3824 returns an escaped path3825Operations::FeatureFlags::Strategy3826 validations3827 is expected to validate that :name is either ‹"default"›, ‹"gradualRolloutUserId"›, ‹"flexibleRollout"›, ‹"userWithId"›, or ‹"gitlabUserList"›, producing a custom validation error on failure3828 parameters3829 when the strategy name is invalid3830 invalid_name: nil3831 skips parameters validation3832 invalid_name: {}3833 skips parameters validation3834 invalid_name: []3835 skips parameters validation3836 invalid_name: "nothing"3837 skips parameters validation3838 invalid_name: 33839 skips parameters validation3840 when the strategy name is gradualRolloutUserId3841 allows the parameters in any order3842 invalid_parameters: nil3843 must have valid parameters for the strategy3844 invalid_parameters: {}3845 must have valid parameters for the strategy3846 invalid_parameters: {:percentage=>"40", :groupId=>"mygroup", :userIds=>"4"}3847 must have valid parameters for the strategy3848 invalid_parameters: {:percentage=>"40"}3849 must have valid parameters for the strategy3850 invalid_parameters: {:percentage=>"40", :groupId=>"mygroup", :extra=>nil}3851 must have valid parameters for the strategy3852 invalid_parameters: {:groupId=>"mygroup"}3853 must have valid parameters for the strategy3854 percentage3855 invalid_value: 503856 must be a string value between 0 and 100 inclusive and without a percentage sign3857 invalid_value: 40.03858 must be a string value between 0 and 100 inclusive and without a percentage sign3859 invalid_value: {:key=>"value"}3860 must be a string value between 0 and 100 inclusive and without a percentage sign3861 invalid_value: "garbage"3862 must be a string value between 0 and 100 inclusive and without a percentage sign3863 invalid_value: "101"3864 must be a string value between 0 and 100 inclusive and without a percentage sign3865 invalid_value: "-1"3866 must be a string value between 0 and 100 inclusive and without a percentage sign3867 invalid_value: "-10"3868 must be a string value between 0 and 100 inclusive and without a percentage sign3869 invalid_value: "1000"3870 must be a string value between 0 and 100 inclusive and without a percentage sign3871 invalid_value: "10.0"3872 must be a string value between 0 and 100 inclusive and without a percentage sign3873 invalid_value: "5%"3874 must be a string value between 0 and 100 inclusive and without a percentage sign3875 invalid_value: "25%"3876 must be a string value between 0 and 100 inclusive and without a percentage sign3877 invalid_value: "100hi"3878 must be a string value between 0 and 100 inclusive and without a percentage sign3879 invalid_value: "e100"3880 must be a string value between 0 and 100 inclusive and without a percentage sign3881 invalid_value: "30m"3882 must be a string value between 0 and 100 inclusive and without a percentage sign3883 invalid_value: " "3884 must be a string value between 0 and 100 inclusive and without a percentage sign3885 invalid_value: "\r\n"3886 must be a string value between 0 and 100 inclusive and without a percentage sign3887 invalid_value: "\n"3888 must be a string value between 0 and 100 inclusive and without a percentage sign3889 invalid_value: "\t"3890 must be a string value between 0 and 100 inclusive and without a percentage sign3891 invalid_value: "\n10"3892 must be a string value between 0 and 100 inclusive and without a percentage sign3893 invalid_value: "20\n"3894 must be a string value between 0 and 100 inclusive and without a percentage sign3895 invalid_value: "\n100"3896 must be a string value between 0 and 100 inclusive and without a percentage sign3897 invalid_value: "100\n"3898 must be a string value between 0 and 100 inclusive and without a percentage sign3899 invalid_value: "\n "3900 must be a string value between 0 and 100 inclusive and without a percentage sign3901 invalid_value: nil3902 must be a string value between 0 and 100 inclusive and without a percentage sign3903 valid_value: "0"3904 must be a string value between 0 and 100 inclusive and without a percentage sign3905 valid_value: "1"3906 must be a string value between 0 and 100 inclusive and without a percentage sign3907 valid_value: "10"3908 must be a string value between 0 and 100 inclusive and without a percentage sign3909 valid_value: "38"3910 must be a string value between 0 and 100 inclusive and without a percentage sign3911 valid_value: "100"3912 must be a string value between 0 and 100 inclusive and without a percentage sign3913 valid_value: "93"3914 must be a string value between 0 and 100 inclusive and without a percentage sign3915 groupId3916 invalid_value: nil3917 must be a string value of up to 32 lowercase characters3918 invalid_value: 43919 must be a string value of up to 32 lowercase characters3920 invalid_value: 50.03921 must be a string value of up to 32 lowercase characters3922 invalid_value: {}3923 must be a string value of up to 32 lowercase characters3924 invalid_value: "spaces bad"3925 must be a string value of up to 32 lowercase characters3926 invalid_value: "bad$"3927 must be a string value of up to 32 lowercase characters3928 invalid_value: "%bad"3929 must be a string value of up to 32 lowercase characters3930 invalid_value: "<bad"3931 must be a string value of up to 32 lowercase characters3932 invalid_value: "bad>"3933 must be a string value of up to 32 lowercase characters3934 invalid_value: "!bad"3935 must be a string value of up to 32 lowercase characters3936 invalid_value: ".bad"3937 must be a string value of up to 32 lowercase characters3938 invalid_value: "Bad"3939 must be a string value of up to 32 lowercase characters3940 invalid_value: "bad1"3941 must be a string value of up to 32 lowercase characters3942 invalid_value: ""3943 must be a string value of up to 32 lowercase characters3944 invalid_value: " "3945 must be a string value of up to 32 lowercase characters3946 invalid_value: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"3947 must be a string value of up to 32 lowercase characters3948 invalid_value: "ba_d"3949 must be a string value of up to 32 lowercase characters3950 invalid_value: "ba\nd"3951 must be a string value of up to 32 lowercase characters3952 valid_value: "somegroup"3953 must be a string value of up to 32 lowercase characters3954 valid_value: "anothergroup"3955 must be a string value of up to 32 lowercase characters3956 valid_value: "okay"3957 must be a string value of up to 32 lowercase characters3958 valid_value: "g"3959 must be a string value of up to 32 lowercase characters3960 valid_value: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"3961 must be a string value of up to 32 lowercase characters3962 when the strategy name is flexibleRollout3963 allows the parameters in the order rollout, stickiness, groupId3964 allows the parameters in the order rollout, groupId, stickiness3965 allows the parameters in the order stickiness, rollout, groupId3966 allows the parameters in the order stickiness, groupId, rollout3967 allows the parameters in the order groupId, rollout, stickiness3968 allows the parameters in the order groupId, stickiness, rollout3969 invalid_parameters: nil3970 must have valid parameters for the strategy3971 invalid_parameters: {}3972 must have valid parameters for the strategy3973 invalid_parameters: {:rollout=>"40"}3974 must have valid parameters for the strategy3975 invalid_parameters: {:groupId=>"mygroup"}3976 must have valid parameters for the strategy3977 invalid_parameters: {:stickiness=>"default"}3978 must have valid parameters for the strategy3979 invalid_parameters: {:rollout=>"40", :groupId=>"mygroup"}3980 must have valid parameters for the strategy3981 invalid_parameters: {:rollout=>"40", :stickiness=>"default"}3982 must have valid parameters for the strategy3983 invalid_parameters: {:groupId=>"mygroup", :stickiness=>"default"}3984 must have valid parameters for the strategy3985 invalid_parameters: {:rollout=>"40", :groupId=>"mygroup", :stickiness=>"default", :userIds=>"4"}3986 must have valid parameters for the strategy3987 invalid_parameters: {:rollout=>"40", :groupId=>"mygroup", :stickiness=>"default", :extra=>nil}3988 must have valid parameters for the strategy3989 rollout3990 invalid_value: 503991 must be a string value between 0 and 100 inclusive and without a percentage sign3992 invalid_value: 40.03993 must be a string value between 0 and 100 inclusive and without a percentage sign3994 invalid_value: {:key=>"value"}3995 must be a string value between 0 and 100 inclusive and without a percentage sign3996 invalid_value: "garbage"3997 must be a string value between 0 and 100 inclusive and without a percentage sign3998 invalid_value: "101"3999 must be a string value between 0 and 100 inclusive and without a percentage sign4000 invalid_value: "-1"4001 must be a string value between 0 and 100 inclusive and without a percentage sign4002 invalid_value: " "4003 must be a string value between 0 and 100 inclusive and without a percentage sign4004 invalid_value: "-10"4005 must be a string value between 0 and 100 inclusive and without a percentage sign4006 invalid_value: "1000"4007 must be a string value between 0 and 100 inclusive and without a percentage sign4008 invalid_value: "10.0"4009 must be a string value between 0 and 100 inclusive and without a percentage sign4010 invalid_value: "5%"4011 must be a string value between 0 and 100 inclusive and without a percentage sign4012 invalid_value: "25%"4013 must be a string value between 0 and 100 inclusive and without a percentage sign4014 invalid_value: "100hi"4015 must be a string value between 0 and 100 inclusive and without a percentage sign4016 invalid_value: "e100"4017 must be a string value between 0 and 100 inclusive and without a percentage sign4018 invalid_value: "30m"4019 must be a string value between 0 and 100 inclusive and without a percentage sign4020 invalid_value: "\r\n"4021 must be a string value between 0 and 100 inclusive and without a percentage sign4022 invalid_value: "\n"4023 must be a string value between 0 and 100 inclusive and without a percentage sign4024 invalid_value: "\t"4025 must be a string value between 0 and 100 inclusive and without a percentage sign4026 invalid_value: "\n10"4027 must be a string value between 0 and 100 inclusive and without a percentage sign4028 invalid_value: "20\n"4029 must be a string value between 0 and 100 inclusive and without a percentage sign4030 invalid_value: "\n100"4031 must be a string value between 0 and 100 inclusive and without a percentage sign4032 invalid_value: "100\n"4033 must be a string value between 0 and 100 inclusive and without a percentage sign4034 invalid_value: "\n "4035 must be a string value between 0 and 100 inclusive and without a percentage sign4036 invalid_value: nil4037 must be a string value between 0 and 100 inclusive and without a percentage sign4038 valid_value: "0"4039 must be a string value between 0 and 100 inclusive and without a percentage sign4040 valid_value: "1"4041 must be a string value between 0 and 100 inclusive and without a percentage sign4042 valid_value: "10"4043 must be a string value between 0 and 100 inclusive and without a percentage sign4044 valid_value: "38"4045 must be a string value between 0 and 100 inclusive and without a percentage sign4046 valid_value: "100"4047 must be a string value between 0 and 100 inclusive and without a percentage sign4048 valid_value: "93"4049 must be a string value between 0 and 100 inclusive and without a percentage sign4050 groupId4051 invalid_value: nil4052 must be a string value of up to 32 lowercase characters4053 invalid_value: 44054 must be a string value of up to 32 lowercase characters4055 invalid_value: 50.04056 must be a string value of up to 32 lowercase characters4057 invalid_value: {}4058 must be a string value of up to 32 lowercase characters4059 invalid_value: "spaces bad"4060 must be a string value of up to 32 lowercase characters4061 invalid_value: "bad$"4062 must be a string value of up to 32 lowercase characters4063 invalid_value: "%bad"4064 must be a string value of up to 32 lowercase characters4065 invalid_value: "<bad"4066 must be a string value of up to 32 lowercase characters4067 invalid_value: "bad>"4068 must be a string value of up to 32 lowercase characters4069 invalid_value: "!bad"4070 must be a string value of up to 32 lowercase characters4071 invalid_value: ".bad"4072 must be a string value of up to 32 lowercase characters4073 invalid_value: "Bad"4074 must be a string value of up to 32 lowercase characters4075 invalid_value: "bad1"4076 must be a string value of up to 32 lowercase characters4077 invalid_value: ""4078 must be a string value of up to 32 lowercase characters4079 invalid_value: " "4080 must be a string value of up to 32 lowercase characters4081 invalid_value: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"4082 must be a string value of up to 32 lowercase characters4083 invalid_value: "ba_d"4084 must be a string value of up to 32 lowercase characters4085 invalid_value: "ba\nd"4086 must be a string value of up to 32 lowercase characters4087 valid_value: "somegroup"4088 must be a string value of up to 32 lowercase characters4089 valid_value: "anothergroup"4090 must be a string value of up to 32 lowercase characters4091 valid_value: "okay"4092 must be a string value of up to 32 lowercase characters4093 valid_value: "g"4094 must be a string value of up to 32 lowercase characters4095 valid_value: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"4096 must be a string value of up to 32 lowercase characters4097 stickiness4098 invalid_value: nil4099 must be a string representing a supported stickiness setting4100 invalid_value: " "4101 must be a string representing a supported stickiness setting4102 invalid_value: "DEFAULT"4103 must be a string representing a supported stickiness setting4104 invalid_value: "DEFAULT\n"4105 must be a string representing a supported stickiness setting4106 invalid_value: "UserId"4107 must be a string representing a supported stickiness setting4108 invalid_value: "USER"4109 must be a string representing a supported stickiness setting4110 invalid_value: "USERID "4111 must be a string representing a supported stickiness setting4112 valid_value: "default"4113 must be a string representing a supported stickiness setting4114 valid_value: "userId"4115 must be a string representing a supported stickiness setting4116 valid_value: "sessionId"4117 must be a string representing a supported stickiness setting4118 valid_value: "random"4119 must be a string representing a supported stickiness setting4120 when the strategy name is userWithId4121 invalid_parameters: nil4122 must have valid parameters for the strategy4123 invalid_parameters: {:userIds=>"sam", :percentage=>"40"}4124 must have valid parameters for the strategy4125 invalid_parameters: {:userIds=>"sam", :some=>"param"}4126 must have valid parameters for the strategy4127 invalid_parameters: {:percentage=>"40"}4128 must have valid parameters for the strategy4129 invalid_parameters: {}4130 must have valid parameters for the strategy4131 userIds4132 valid_value: ""4133 is valid with a string of comma separated values4134 valid_value: "sam"4135 is valid with a string of comma separated values4136 valid_value: "1"4137 is valid with a string of comma separated values4138 valid_value: "a"4139 is valid with a string of comma separated values4140 valid_value: "uuid-of-some-kind"4141 is valid with a string of comma separated values4142 valid_value: "sam,fred,tom,jane,joe,mike"4143 is valid with a string of comma separated values4144 valid_value: "gitlab@example.com"4145 is valid with a string of comma separated values4146 valid_value: "123,4"4147 is valid with a string of comma separated values4148 valid_value: "UPPER,Case,charActeRS"4149 is valid with a string of comma separated values4150 valid_value: "0"4151 is valid with a string of comma separated values4152 valid_value: "$valid$email#2345\#$%..{}+=-)?\\/@example.com"4153 is valid with a string of comma separated values4154 valid_value: "spaces allowed"4155 is valid with a string of comma separated values4156 valid_value: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"4157 is valid with a string of comma separated values4158 valid_value: "a,bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb,ccc"4159 is valid with a string of comma separated values4160 valid_value: "many spaces"4161 is valid with a string of comma separated values4162 invalid_value: 14163 is invalid4164 invalid_value: 2.54165 is invalid4166 invalid_value: {}4167 is invalid4168 invalid_value: []4169 is invalid4170 invalid_value: nil4171 is invalid4172 invalid_value: "123\n456"4173 is invalid4174 invalid_value: "1,2,3,12\t3"4175 is invalid4176 invalid_value: "\n"4177 is invalid4178 invalid_value: "\n\r"4179 is invalid4180 invalid_value: "joe\r,sam"4181 is invalid4182 invalid_value: "1,2,2"4183 is invalid4184 invalid_value: "1,,2"4185 is invalid4186 invalid_value: "1,2,,,,"4187 is invalid4188 invalid_value: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"4189 is invalid4190 invalid_value: "1, ,2"4191 is invalid4192 invalid_value: "tim, ,7"4193 is invalid4194 invalid_value: " "4195 is invalid4196 invalid_value: " "4197 is invalid4198 invalid_value: " ,1"4199 is invalid4200 invalid_value: "1, "4201 is invalid4202 invalid_value: " leading,1"4203 is invalid4204 invalid_value: "1,trailing "4205 is invalid4206 invalid_value: "1, both ,2"4207 is invalid4208 when the strategy name is default4209 must be empty4210 invalid_value: {:groupId=>"hi", :percentage=>"7"}4211 must be empty4212 invalid_value: ""4213 must be empty4214 invalid_value: "nothing"4215 must be empty4216 invalid_value: 74217 must be empty4218 invalid_value: nil4219 must be empty4220 invalid_value: []4221 must be empty4222 invalid_value: 2.54223 must be empty4224 when the strategy name is gitlabUserList4225 is valid4226 invalid_value: {:groupId=>"default", :percentage=>"7"}4227 is invalid4228 invalid_value: ""4229 is invalid4230 invalid_value: "nothing"4231 is invalid4232 invalid_value: 74233 is invalid4234 invalid_value: nil4235 is invalid4236 invalid_value: []4237 is invalid4238 invalid_value: 2.54239 is invalid4240 invalid_value: {:userIds=>"user1"}4241 is invalid4242 associations4243 when name is gitlabUserList4244 is valid when associated with a user list4245 is invalid without a user list4246 is invalid when associated with a user list from another project4247 when name is default4248 is invalid when associated with a user list4249 is valid without a user list4250 when name is userWithId4251 is invalid when associated with a user list4252 is valid without a user list4253 when name is gradualRolloutUserId4254 is invalid when associated with a user list4255 is valid without a user list4256 when name is flexibleRollout4257 is invalid when associated with a user list4258 is valid without a user list4259AutoMerge::BaseService4260 #execute4261 sets properies to the merge request4262 yields block4263 returns activated strategy name4264 when merge parameters are given4265 sets merge parameters4266 when strategy is merge when pipeline succeeds4267 sets the auto merge strategy4268 returns activated strategy name4269 calls AutoMergeProcessWorker4270 when failed to save merge request4271 does not yield block4272 returns failed4273 tracks the exception4274 when exception happens in yield block4275 returns failed status4276 rollback the transaction4277 tracks the exception4278 #update4279 when merge params are specified4280 updates merge params4281 #cancel4282 behaves like Canceled or Dropped4283 removes properies from the merge request4284 yields block4285 returns success status4286 when merge params are set4287 removes merge parameters4288 when failed to save4289 does not yield block4290 when failed to save merge request4291 returns error status4292 when exception happens in yield block4293 returns error4294 rollback the transaction4295 tracks the exception4296 #abort4297 behaves like Canceled or Dropped4298 removes properies from the merge request4299 yields block4300 returns success status4301 when merge params are set4302 removes merge parameters4303 when failed to save4304 does not yield block4305 when failed to save4306 returns error status4307 when exception happens in yield block4308 returns error4309 rollback the transaction4310 tracks the exception4311Packages::Maven::Metadata::SyncWorker4312 #perform4313 with a jar4314 with a valid package name4315 logs the message from the service4316 behaves like an idempotent worker4317 is labeled as idempotent4318 performs multiple times sequentially without raising an exception4319 creates the updated metadata files4320 not in the passed project4321 does not create the updated metadata files4322 with a user with not enough permissions4323 does not create the updated metadata files4324 with a maven plugin4325 with a valid package name4326 logs the message from the service4327 behaves like an idempotent worker4328 is labeled as idempotent4329 performs multiple times sequentially without raising an exception4330 creates the updated metadata files4331 not in the passed project4332 does not create the updated metadata files4333 with a user with not enough permissions4334 does not create the updated metadata files4335 with no package name4336 does not run4337 with no user id4338 does not run4339 with no project id4340 does not run4341Integrations::WebexTeams4342 behaves like chat integration4343 Associations4344 is expected to belong to project required: false4345 is expected to have one service_hook4346 Validations4347 when integration is active4348 is expected to validate that :webhook cannot be empty/falsy4349 behaves like issue tracker integration URL attribute4350 is expected to allow :webhook to be ‹"https://example.com"›4351 is expected not to allow :webhook to be ‹"example.com"›4352 is expected not to allow :webhook to be ‹"ftp://example.com"›4353 is expected not to allow :webhook to be ‹"herp-and-derp"›4354 when integration is inactive4355 is expected not to validate that :webhook cannot be empty/falsy4356 .supported_events4357 does not support deployment_events4358 #execute4359 with push events4360 behaves like triggered Webex Teams integration4361 calls Webex Teams API4362 with default branch4363 when only default branch are to be notified4364 behaves like triggered Webex Teams integration4365 calls Webex Teams API4366 when only protected branches are to be notified4367 behaves like untriggered Webex Teams integration4368 does not call Webex Teams API4369 when default and protected branches are to be notified4370 behaves like triggered Webex Teams integration4371 calls Webex Teams API4372 when all branches are to be notified4373 behaves like triggered Webex Teams integration4374 calls Webex Teams API4375 with protected branch4376 when only default branch are to be notified4377 behaves like untriggered Webex Teams integration4378 does not call Webex Teams API4379 when only protected branches are to be notified4380 behaves like triggered Webex Teams integration4381 calls Webex Teams API4382 when default and protected branches are to be notified4383 behaves like triggered Webex Teams integration4384 calls Webex Teams API4385 when all branches are to be notified4386 behaves like triggered Webex Teams integration4387 calls Webex Teams API4388 with neither default nor protected branch4389 when only default branch are to be notified4390 behaves like untriggered Webex Teams integration4391 does not call Webex Teams API4392 when only protected branches are to be notified4393 behaves like untriggered Webex Teams integration4394 does not call Webex Teams API4395 when default and protected branches are to be notified4396 behaves like untriggered Webex Teams integration4397 does not call Webex Teams API4398 when all branches are to be notified4399 behaves like triggered Webex Teams integration4400 calls Webex Teams API4401 with issue events4402 behaves like triggered Webex Teams integration4403 calls Webex Teams API4404 with merge events4405 behaves like triggered Webex Teams integration4406 calls Webex Teams API4407 with wiki page events4408 behaves like triggered Webex Teams integration4409 calls Webex Teams API4410 with note events4411 with commit comment4412 behaves like triggered Webex Teams integration4413 calls Webex Teams API4414 with merge request comment4415 behaves like triggered Webex Teams integration4416 calls Webex Teams API4417 with issue comment4418 behaves like triggered Webex Teams integration4419 calls Webex Teams API4420 with snippet comment4421 behaves like triggered Webex Teams integration4422 calls Webex Teams API4423 with pipeline events4424 with failed pipeline4425 behaves like triggered Webex Teams integration4426 calls Webex Teams API4427 with succeeded pipeline4428 with default notify_only_broken_pipelines4429 does not call Webex Teams API4430 when notify_only_broken_pipelines is false4431 behaves like triggered Webex Teams integration4432 calls Webex Teams API4433 with default branch4434 when only default branch are to be notified4435 behaves like triggered Webex Teams integration4436 calls Webex Teams API4437 when only protected branches are to be notified4438 behaves like untriggered Webex Teams integration4439 does not call Webex Teams API4440 when default and protected branches are to be notified4441 behaves like triggered Webex Teams integration4442 calls Webex Teams API4443 when all branches are to be notified4444 behaves like triggered Webex Teams integration4445 calls Webex Teams API4446 with protected branch4447 when only default branch are to be notified4448 behaves like untriggered Webex Teams integration4449 does not call Webex Teams API4450 when only protected branches are to be notified4451 behaves like triggered Webex Teams integration4452 calls Webex Teams API4453 when default and protected branches are to be notified4454 behaves like triggered Webex Teams integration4455 calls Webex Teams API4456 when all branches are to be notified4457 behaves like triggered Webex Teams integration4458 calls Webex Teams API4459 with neither default nor protected branch4460 when only default branch are to be notified4461 behaves like untriggered Webex Teams integration4462 does not call Webex Teams API4463 when only protected branches are to be notified4464 behaves like untriggered Webex Teams integration4465 does not call Webex Teams API4466 when default and protected branches are to be notified4467 behaves like untriggered Webex Teams integration4468 does not call Webex Teams API4469 when all branches are to be notified4470 behaves like triggered Webex Teams integration4471 calls Webex Teams API4472 deployment events4473 behaves like untriggered Webex Teams integration4474 does not call Webex Teams API4475Packages::FinderHelper4476 #packages_for_project4477 is expected to eq [#<Packages::Package id: 153, project_id: 401, created_at: "2022-04-28 17:07:16.891821785 +0000", upd...y/app/my-app", version: "1.78-SNAPSHOT", package_type: "maven", creator_id: 705, status: "default">]4478 #packages_visible_to_user4479 with a user4480 group_visibility: "PUBLIC", subgroup_visibility: "PUBLIC", project2_visibility: "PUBLIC", user_role: :maintainer, shared_example_name: "returning both packages"4481 behaves like returning both packages4482 is expected to contain exactly #<Packages::Package id: 156, project_id: 403, created_at: "2022-04-28 17:07:17.631024086 +0000", upda...ny/app/my-app", version: "1.81-SNAPSHOT", package_type: "maven", creator_id: 707, status: "default"> and #<Packages::Package id: 157, project_id: 404, created_at: "2022-04-28 17:07:17.972792954 +0000", upda...ny/app/my-app", version: "1.82-SNAPSHOT", package_type: "maven", creator_id: 708, status: "default">4483 group_visibility: "PUBLIC", subgroup_visibility: "PUBLIC", project2_visibility: "PUBLIC", user_role: :developer, shared_example_name: "returning both packages"4484 behaves like returning both packages4485 is expected to contain exactly #<Packages::Package id: 156, project_id: 403, created_at: "2022-04-28 17:07:17.631024086 +0000", upda...ny/app/my-app", version: "1.81-SNAPSHOT", package_type: "maven", creator_id: 707, status: "default"> and #<Packages::Package id: 157, project_id: 404, created_at: "2022-04-28 17:07:17.972792954 +0000", upda...ny/app/my-app", version: "1.82-SNAPSHOT", package_type: "maven", creator_id: 708, status: "default">4486 group_visibility: "PUBLIC", subgroup_visibility: "PUBLIC", project2_visibility: "PUBLIC", user_role: :guest, shared_example_name: "returning both packages"4487 behaves like returning both packages4488 is expected to contain exactly #<Packages::Package id: 156, project_id: 403, created_at: "2022-04-28 17:07:17.631024086 +0000", upda...ny/app/my-app", version: "1.81-SNAPSHOT", package_type: "maven", creator_id: 707, status: "default"> and #<Packages::Package id: 157, project_id: 404, created_at: "2022-04-28 17:07:17.972792954 +0000", upda...ny/app/my-app", version: "1.82-SNAPSHOT", package_type: "maven", creator_id: 708, status: "default">4489 group_visibility: "PUBLIC", subgroup_visibility: "PUBLIC", project2_visibility: "PUBLIC", user_role: :anonymous, shared_example_name: "returning both packages"4490 behaves like returning both packages4491 is expected to contain exactly #<Packages::Package id: 156, project_id: 403, created_at: "2022-04-28 17:07:17.631024086 +0000", upda...ny/app/my-app", version: "1.81-SNAPSHOT", package_type: "maven", creator_id: 707, status: "default"> and #<Packages::Package id: 157, project_id: 404, created_at: "2022-04-28 17:07:17.972792954 +0000", upda...ny/app/my-app", version: "1.82-SNAPSHOT", package_type: "maven", creator_id: 708, status: "default">4492 group_visibility: "PUBLIC", subgroup_visibility: "PUBLIC", project2_visibility: "PRIVATE", user_role: :maintainer, shared_example_name: "returning both packages"4493 behaves like returning both packages4494 is expected to contain exactly #<Packages::Package id: 156, project_id: 403, created_at: "2022-04-28 17:07:17.631024086 +0000", upda...ny/app/my-app", version: "1.81-SNAPSHOT", package_type: "maven", creator_id: 707, status: "default"> and #<Packages::Package id: 157, project_id: 404, created_at: "2022-04-28 17:07:17.972792954 +0000", upda...ny/app/my-app", version: "1.82-SNAPSHOT", package_type: "maven", creator_id: 708, status: "default">4495 group_visibility: "PUBLIC", subgroup_visibility: "PUBLIC", project2_visibility: "PRIVATE", user_role: :developer, shared_example_name: "returning both packages"4496 behaves like returning both packages4497 is expected to contain exactly #<Packages::Package id: 156, project_id: 403, created_at: "2022-04-28 17:07:17.631024086 +0000", upda...ny/app/my-app", version: "1.81-SNAPSHOT", package_type: "maven", creator_id: 707, status: "default"> and #<Packages::Package id: 157, project_id: 404, created_at: "2022-04-28 17:07:17.972792954 +0000", upda...ny/app/my-app", version: "1.82-SNAPSHOT", package_type: "maven", creator_id: 708, status: "default">4498 group_visibility: "PUBLIC", subgroup_visibility: "PUBLIC", project2_visibility: "PRIVATE", user_role: :guest, shared_example_name: "returning package1"4499 behaves like returning package14500 is expected to eq [#<Packages::Package id: 156, project_id: 403, created_at: "2022-04-28 17:07:17.631024086 +0000", upd...y/app/my-app", version: "1.81-SNAPSHOT", package_type: "maven", creator_id: 707, status: "default">]4501 group_visibility: "PUBLIC", subgroup_visibility: "PUBLIC", project2_visibility: "PRIVATE", user_role: :anonymous, shared_example_name: "returning package1"4502 behaves like returning package14503 is expected to eq [#<Packages::Package id: 156, project_id: 403, created_at: "2022-04-28 17:07:17.631024086 +0000", upd...y/app/my-app", version: "1.81-SNAPSHOT", package_type: "maven", creator_id: 707, status: "default">]4504 group_visibility: "PUBLIC", subgroup_visibility: "PRIVATE", project2_visibility: "PRIVATE", user_role: :maintainer, shared_example_name: "returning both packages"4505 behaves like returning both packages4506 is expected to contain exactly #<Packages::Package id: 156, project_id: 403, created_at: "2022-04-28 17:07:17.631024086 +0000", upda...ny/app/my-app", version: "1.81-SNAPSHOT", package_type: "maven", creator_id: 707, status: "default"> and #<Packages::Package id: 157, project_id: 404, created_at: "2022-04-28 17:07:17.972792954 +0000", upda...ny/app/my-app", version: "1.82-SNAPSHOT", package_type: "maven", creator_id: 708, status: "default">4507 group_visibility: "PUBLIC", subgroup_visibility: "PRIVATE", project2_visibility: "PRIVATE", user_role: :developer, shared_example_name: "returning both packages"4508 behaves like returning both packages4509 is expected to contain exactly #<Packages::Package id: 156, project_id: 403, created_at: "2022-04-28 17:07:17.631024086 +0000", upda...ny/app/my-app", version: "1.81-SNAPSHOT", package_type: "maven", creator_id: 707, status: "default"> and #<Packages::Package id: 157, project_id: 404, created_at: "2022-04-28 17:07:17.972792954 +0000", upda...ny/app/my-app", version: "1.82-SNAPSHOT", package_type: "maven", creator_id: 708, status: "default">4510 group_visibility: "PUBLIC", subgroup_visibility: "PRIVATE", project2_visibility: "PRIVATE", user_role: :guest, shared_example_name: "returning package1"4511 behaves like returning package14512 is expected to eq [#<Packages::Package id: 156, project_id: 403, created_at: "2022-04-28 17:07:17.631024086 +0000", upd...y/app/my-app", version: "1.81-SNAPSHOT", package_type: "maven", creator_id: 707, status: "default">]4513 group_visibility: "PUBLIC", subgroup_visibility: "PRIVATE", project2_visibility: "PRIVATE", user_role: :anonymous, shared_example_name: "returning package1"4514 behaves like returning package14515 is expected to eq [#<Packages::Package id: 156, project_id: 403, created_at: "2022-04-28 17:07:17.631024086 +0000", upd...y/app/my-app", version: "1.81-SNAPSHOT", package_type: "maven", creator_id: 707, status: "default">]4516 group_visibility: "PRIVATE", subgroup_visibility: "PRIVATE", project2_visibility: "PRIVATE", user_role: :maintainer, shared_example_name: "returning both packages"4517 behaves like returning both packages4518 is expected to contain exactly #<Packages::Package id: 156, project_id: 403, created_at: "2022-04-28 17:07:17.631024086 +0000", upda...ny/app/my-app", version: "1.81-SNAPSHOT", package_type: "maven", creator_id: 707, status: "default"> and #<Packages::Package id: 157, project_id: 404, created_at: "2022-04-28 17:07:17.972792954 +0000", upda...ny/app/my-app", version: "1.82-SNAPSHOT", package_type: "maven", creator_id: 708, status: "default">4519 group_visibility: "PRIVATE", subgroup_visibility: "PRIVATE", project2_visibility: "PRIVATE", user_role: :developer, shared_example_name: "returning both packages"4520 behaves like returning both packages4521 is expected to contain exactly #<Packages::Package id: 156, project_id: 403, created_at: "2022-04-28 17:07:17.631024086 +0000", upda...ny/app/my-app", version: "1.81-SNAPSHOT", package_type: "maven", creator_id: 707, status: "default"> and #<Packages::Package id: 157, project_id: 404, created_at: "2022-04-28 17:07:17.972792954 +0000", upda...ny/app/my-app", version: "1.82-SNAPSHOT", package_type: "maven", creator_id: 708, status: "default">4522 group_visibility: "PRIVATE", subgroup_visibility: "PRIVATE", project2_visibility: "PRIVATE", user_role: :guest, shared_example_name: "returning no packages"4523 behaves like returning no packages4524 is expected to be empty4525 group_visibility: "PRIVATE", subgroup_visibility: "PRIVATE", project2_visibility: "PRIVATE", user_role: :anonymous, shared_example_name: "returning no packages"4526 behaves like returning no packages4527 is expected to be empty4528 with a group deploy token4529 group_visibility: "PUBLIC", subgroup_visibility: "PUBLIC", project2_visibility: "PUBLIC", shared_example_name: "returning both packages"4530 behaves like returning both packages4531 is expected to contain exactly #<Packages::Package id: 156, project_id: 403, created_at: "2022-04-28 17:07:17.631024086 +0000", upda...ny/app/my-app", version: "1.81-SNAPSHOT", package_type: "maven", creator_id: 707, status: "default"> and #<Packages::Package id: 157, project_id: 404, created_at: "2022-04-28 17:07:17.972792954 +0000", upda...ny/app/my-app", version: "1.82-SNAPSHOT", package_type: "maven", creator_id: 708, status: "default">4532 group_visibility: "PUBLIC", subgroup_visibility: "PUBLIC", project2_visibility: "PRIVATE", shared_example_name: "returning both packages"4533 behaves like returning both packages4534 is expected to contain exactly #<Packages::Package id: 156, project_id: 403, created_at: "2022-04-28 17:07:17.631024086 +0000", upda...ny/app/my-app", version: "1.81-SNAPSHOT", package_type: "maven", creator_id: 707, status: "default"> and #<Packages::Package id: 157, project_id: 404, created_at: "2022-04-28 17:07:17.972792954 +0000", upda...ny/app/my-app", version: "1.82-SNAPSHOT", package_type: "maven", creator_id: 708, status: "default">4535 group_visibility: "PUBLIC", subgroup_visibility: "PRIVATE", project2_visibility: "PRIVATE", shared_example_name: "returning both packages"4536 behaves like returning both packages4537 is expected to contain exactly #<Packages::Package id: 156, project_id: 403, created_at: "2022-04-28 17:07:17.631024086 +0000", upda...ny/app/my-app", version: "1.81-SNAPSHOT", package_type: "maven", creator_id: 707, status: "default"> and #<Packages::Package id: 157, project_id: 404, created_at: "2022-04-28 17:07:17.972792954 +0000", upda...ny/app/my-app", version: "1.82-SNAPSHOT", package_type: "maven", creator_id: 708, status: "default">4538 group_visibility: "PRIVATE", subgroup_visibility: "PRIVATE", project2_visibility: "PRIVATE", shared_example_name: "returning both packages"4539 behaves like returning both packages4540 is expected to contain exactly #<Packages::Package id: 156, project_id: 403, created_at: "2022-04-28 17:07:17.631024086 +0000", upda...ny/app/my-app", version: "1.81-SNAPSHOT", package_type: "maven", creator_id: 707, status: "default"> and #<Packages::Package id: 157, project_id: 404, created_at: "2022-04-28 17:07:17.972792954 +0000", upda...ny/app/my-app", version: "1.82-SNAPSHOT", package_type: "maven", creator_id: 708, status: "default">4541 #projects_visible_to_user4542 with a user4543 group_visibility: "PUBLIC", subgroup_visibility: "PUBLIC", project2_visibility: "PUBLIC", user_role: :maintainer, shared_example_name: "returning both projects"4544 behaves like returning both projects4545 is expected to contain exactly #<Project id:405 group15/project408>> and #<Project id:406 group15/group16/project409>>4546 group_visibility: "PUBLIC", subgroup_visibility: "PUBLIC", project2_visibility: "PUBLIC", user_role: :developer, shared_example_name: "returning both projects"4547 behaves like returning both projects4548 is expected to contain exactly #<Project id:405 group15/project408>> and #<Project id:406 group15/group16/project409>>4549 group_visibility: "PUBLIC", subgroup_visibility: "PUBLIC", project2_visibility: "PUBLIC", user_role: :guest, shared_example_name: "returning both projects"4550 behaves like returning both projects4551 is expected to contain exactly #<Project id:405 group15/project408>> and #<Project id:406 group15/group16/project409>>4552 group_visibility: "PUBLIC", subgroup_visibility: "PUBLIC", project2_visibility: "PUBLIC", user_role: :anonymous, shared_example_name: "returning both projects"4553 behaves like returning both projects4554 is expected to contain exactly #<Project id:405 group15/project408>> and #<Project id:406 group15/group16/project409>>4555 group_visibility: "PUBLIC", subgroup_visibility: "PUBLIC", project2_visibility: "PRIVATE", user_role: :maintainer, shared_example_name: "returning both projects"4556 behaves like returning both projects4557 is expected to contain exactly #<Project id:405 group15/project408>> and #<Project id:406 group15/group16/project409>>4558 group_visibility: "PUBLIC", subgroup_visibility: "PUBLIC", project2_visibility: "PRIVATE", user_role: :developer, shared_example_name: "returning both projects"4559 behaves like returning both projects4560 is expected to contain exactly #<Project id:405 group15/project408>> and #<Project id:406 group15/group16/project409>>4561 group_visibility: "PUBLIC", subgroup_visibility: "PUBLIC", project2_visibility: "PRIVATE", user_role: :guest, shared_example_name: "returning project1"4562 behaves like returning project14563 is expected to eq [#<Project id:405 group15/project408>>]4564 group_visibility: "PUBLIC", subgroup_visibility: "PUBLIC", project2_visibility: "PRIVATE", user_role: :anonymous, shared_example_name: "returning project1"4565 behaves like returning project14566 is expected to eq [#<Project id:405 group15/project408>>]4567 group_visibility: "PUBLIC", subgroup_visibility: "PRIVATE", project2_visibility: "PRIVATE", user_role: :maintainer, shared_example_name: "returning both projects"4568 behaves like returning both projects4569 is expected to contain exactly #<Project id:405 group15/project408>> and #<Project id:406 group15/group16/project409>>4570 group_visibility: "PUBLIC", subgroup_visibility: "PRIVATE", project2_visibility: "PRIVATE", user_role: :developer, shared_example_name: "returning both projects"4571 behaves like returning both projects4572 is expected to contain exactly #<Project id:405 group15/project408>> and #<Project id:406 group15/group16/project409>>4573 group_visibility: "PUBLIC", subgroup_visibility: "PRIVATE", project2_visibility: "PRIVATE", user_role: :guest, shared_example_name: "returning project1"4574 behaves like returning project14575 is expected to eq [#<Project id:405 group15/project408>>]4576 group_visibility: "PUBLIC", subgroup_visibility: "PRIVATE", project2_visibility: "PRIVATE", user_role: :anonymous, shared_example_name: "returning project1"4577 behaves like returning project14578 is expected to eq [#<Project id:405 group15/project408>>]4579 group_visibility: "PRIVATE", subgroup_visibility: "PRIVATE", project2_visibility: "PRIVATE", user_role: :maintainer, shared_example_name: "returning both projects"4580 behaves like returning both projects4581 is expected to contain exactly #<Project id:405 group15/project408>> and #<Project id:406 group15/group16/project409>>4582 group_visibility: "PRIVATE", subgroup_visibility: "PRIVATE", project2_visibility: "PRIVATE", user_role: :developer, shared_example_name: "returning both projects"4583 behaves like returning both projects4584 is expected to contain exactly #<Project id:405 group15/project408>> and #<Project id:406 group15/group16/project409>>4585 group_visibility: "PRIVATE", subgroup_visibility: "PRIVATE", project2_visibility: "PRIVATE", user_role: :guest, shared_example_name: "returning no project"4586 behaves like returning no project4587 is expected to be empty4588 group_visibility: "PRIVATE", subgroup_visibility: "PRIVATE", project2_visibility: "PRIVATE", user_role: :anonymous, shared_example_name: "returning no project"4589 behaves like returning no project4590 is expected to be empty4591 with a group deploy token4592 group_visibility: "PUBLIC", subgroup_visibility: "PUBLIC", project2_visibility: "PUBLIC", shared_example_name: "returning both projects"4593 behaves like returning both projects4594 is expected to contain exactly #<Project id:405 group15/project408>> and #<Project id:406 group15/group16/project409>>4595 group_visibility: "PUBLIC", subgroup_visibility: "PUBLIC", project2_visibility: "PRIVATE", shared_example_name: "returning both projects"4596 behaves like returning both projects4597 is expected to contain exactly #<Project id:405 group15/project408>> and #<Project id:406 group15/group16/project409>>4598 group_visibility: "PUBLIC", subgroup_visibility: "PRIVATE", project2_visibility: "PRIVATE", shared_example_name: "returning both projects"4599 behaves like returning both projects4600 is expected to contain exactly #<Project id:405 group15/project408>> and #<Project id:406 group15/group16/project409>>4601 group_visibility: "PRIVATE", subgroup_visibility: "PRIVATE", project2_visibility: "PRIVATE", shared_example_name: "returning both projects"4602 behaves like returning both projects4603 is expected to contain exactly #<Project id:405 group15/project408>> and #<Project id:406 group15/group16/project409>>4604ResourceAccessTokens::CreateService4605 #execute4606 when resource is a project4607 behaves like when user does not have permission to create a resource bot4608 returns the permission error message4609 behaves like token creation fails4610 does not add the project bot as a member4611 immediately destroys the bot user if one was created4612 user with valid permission4613 behaves like allows creation of bot with valid params4614 is expected to change `User.count` by 14615 creates resource bot user4616 logs the event4617 email confirmation status4618 when created by an admin4619 when admin mode is enabled4620 behaves like creates a user that has their email confirmed4621 creates a user that has their email confirmed4622 when admin mode is disabled4623 returns error4624 when created by a non-admin4625 behaves like creates a user that has their email confirmed4626 creates a user that has their email confirmed4627 bot name4628 when no name is passed4629 uses default name4630 when user provides name4631 overrides the default name value4632 bot email4633 check email domain4634 access level4635 when user does not specify an access level4636 adds the bot user as a maintainer in the resource4637 when user specifies an access level4638 adds the bot user with the specified access level in the resource4639 when user is external4640 creates resource bot user with external status4641 personal access token4642 is expected to change `PersonalAccessToken.count` by 14643 when user does not provide scope4644 has default scopes4645 when user provides scope explicitly4646 overrides the default scope value4647 expires_at4648 when no expiration value is passed4649 uses nil expiration value4650 expiry of the project bot member4651 project bot membership does not expire4652 when user provides expiration value4653 overrides the default expiration value4654 expiry of the project bot member4655 sets the project bot to expire on the same day as the token4656 when invalid scope is passed4657 returns the scope error message4658 behaves like token creation fails4659 does not add the project bot as a member4660 immediately destroys the bot user if one was created4661 when access provisioning fails4662 returns the provisioning error message4663 behaves like token creation fails4664 does not add the project bot as a member4665 immediately destroys the bot user if one was created4666 when resource is a project4667 behaves like when user does not have permission to create a resource bot4668 returns the permission error message4669 behaves like token creation fails4670 does not add the project bot as a member4671 immediately destroys the bot user if one was created4672 user with valid permission4673 behaves like allows creation of bot with valid params4674 is expected to change `User.count` by 14675 creates resource bot user4676 logs the event4677 email confirmation status4678 when created by an admin4679 when admin mode is enabled4680 behaves like creates a user that has their email confirmed4681 creates a user that has their email confirmed4682 when admin mode is disabled4683 returns error4684 when created by a non-admin4685 behaves like creates a user that has their email confirmed4686 creates a user that has their email confirmed4687 bot name4688 when no name is passed4689 uses default name4690 when user provides name4691 overrides the default name value4692 bot email4693 check email domain4694 access level4695 when user does not specify an access level4696 adds the bot user as a maintainer in the resource4697 when user specifies an access level4698 adds the bot user with the specified access level in the resource4699 when user is external4700 creates resource bot user with external status4701 personal access token4702 is expected to change `PersonalAccessToken.count` by 14703 when user does not provide scope4704 has default scopes4705 when user provides scope explicitly4706 overrides the default scope value4707 expires_at4708 when no expiration value is passed4709 uses nil expiration value4710 expiry of the project bot member4711 project bot membership does not expire4712 when user provides expiration value4713 overrides the default expiration value4714 expiry of the project bot member4715 sets the project bot to expire on the same day as the token4716 when invalid scope is passed4717 returns the scope error message4718 behaves like token creation fails4719 does not add the project bot as a member4720 immediately destroys the bot user if one was created4721 when access provisioning fails4722 returns the provisioning error message4723 behaves like token creation fails4724 does not add the project bot as a member4725 immediately destroys the bot user if one was created4726Integrations::PipelinesEmail4727 Validations4728 when integration is active4729 is expected to validate that :recipients cannot be empty/falsy4730 when integration is inactive4731 is expected not to validate that :recipients cannot be empty/falsy4732 validates number of recipients4733 valid number of recipients4734 does not count empty emails4735 invalid number of recipients4736 is expected not to be valid4737 adds an error message4738 when integration is not active4739 is expected to be valid4740 #test4741 when pipeline is failed and on default branch4742 behaves like sending email4743 sends email4744 when pipeline is succeeded4745 behaves like sending email4746 sends email4747 when the pipeline failed4748 on default branch4749 notifications are enabled only for default branch4750 behaves like sending email4751 sends email4752 notifications are enabled only for protected branch4753 behaves like sending email4754 sends email4755 notifications are enabled only for default and protected branches4756 behaves like sending email4757 sends email4758 notifications are enabled only for all branches4759 behaves like sending email4760 sends email4761 on a protected branch4762 notifications are enabled only for default branch4763 behaves like sending email4764 sends email4765 notifications are enabled only for protected branch4766 behaves like sending email4767 sends email4768 notifications are enabled only for default and protected branches4769 behaves like sending email4770 sends email4771 notifications are enabled only for all branches4772 behaves like sending email4773 sends email4774 on a neither protected nor default branch4775 notifications are enabled only for default branch4776 behaves like sending email4777 sends email4778 notifications are enabled only for protected branch4779 behaves like sending email4780 sends email4781 notifications are enabled only for default and protected branches4782 behaves like sending email4783 sends email4784 notifications are enabled only for all branches4785 behaves like sending email4786 sends email4787 #execute4788 with recipients4789 with failed pipeline4790 behaves like sending email4791 sends email4792 with succeeded pipeline4793 behaves like not sending email4794 does not send email4795 with notify_only_broken_pipelines on4796 with failed pipeline4797 behaves like sending email4798 sends email4799 with succeeded pipeline4800 behaves like not sending email4801 does not send email4802 when the pipeline failed4803 on default branch4804 notifications are enabled only for default branch4805 behaves like sending email4806 sends email4807 notifications are enabled only for protected branch4808 behaves like not sending email4809 does not send email4810 notifications are enabled only for default and protected branches4811 behaves like sending email4812 sends email4813 notifications are enabled only for all branches4814 behaves like sending email4815 sends email4816 on a protected branch4817 notifications are enabled only for default branch4818 behaves like not sending email4819 does not send email4820 notifications are enabled only for protected branch4821 behaves like sending email4822 sends email4823 notifications are enabled only for default and protected branches4824 behaves like sending email4825 sends email4826 notifications are enabled only for all branches4827 behaves like sending email4828 sends email4829 on a neither protected nor default branch4830 notifications are enabled only for default branch4831 behaves like not sending email4832 does not send email4833 notifications are enabled only for protected branch4834 behaves like not sending email4835 does not send email4836 notifications are enabled only for default and protected branches4837 behaves like not sending email4838 does not send email4839 notifications are enabled only for all branches4840 behaves like sending email4841 sends email4842 with empty recipients list4843 with failed pipeline4844 behaves like not sending email4845 does not send email4846 with recipients list separating with newlines4847 with failed pipeline4848 behaves like sending email4849 sends email4850Integrations::DroneCi4851 validations4852 active4853 is expected to validate that :token cannot be empty/falsy4854 is expected to validate that :drone_url cannot be empty/falsy4855 behaves like issue tracker integration URL attribute4856 is expected to allow :drone_url to be ‹"https://example.com"›4857 is expected not to allow :drone_url to be ‹"example.com"›4858 is expected not to allow :drone_url to be ‹"ftp://example.com"›4859 is expected not to allow :drone_url to be ‹"herp-and-derp"›4860 inactive4861 is expected not to validate that :token cannot be empty/falsy4862 is expected not to validate that :drone_url cannot be empty/falsy4863 accessors4864 is expected to respond to #enable_ssl_verification4865 is expected to respond to #enable_ssl_verification?4866 #initialize_properties4867 enables the setting by default4868 does not enable the setting if the record is already persisted4869 does not enable the setting if a custom value was set4870 #fields4871 inserts the checkbox field after the first URL field, or at the end4872 #enable_ssl_verification4873 returns true for a known hostname4874 returns true for new records4875 returns false for an unknown hostname4876 returns false for a HTTP URL4877 returns false for an invalid URL4878 returns the persisted value if present4879 behaves like Integrations::HasWebHook4880 does not create a hook if project is not present4881 callbacks4882 calls #update_web_hook! when enabled4883 does not call #update_web_hook! when disabled4884 does not call #update_web_hook! when validation fails4885 #hook_url4886 returns a string4887 #hook_ssl_verification4888 returns a boolean4889 delegates to #enable_ssl_verification if the concern is included4890 #update_web_hook!4891 creates or updates a service hook4892 raises an error if the service hook could not be saved4893 does not attempt to save the service hook if there are no changes4894 #execute_web_hook!4895 creates the webhook if necessary and executes it4896 raises an error if the service hook could not be saved4897 integration page/path methods4898 is expected to eq "http://drone.example.com/gitlab/namespace465/project/redirect/commits/2ab7834c?branch=dev"4899 is expected to eq "http://drone.example.com/gitlab/namespace466/project/commits/2ab7834c?branch=dev&access_token=secret"4900 #commit_status4901 returns the contents of the reactive cache4902 #calculate_reactive_cache4903 #commit_status4904 sets commit status to :error when status is 5004905 sets commit status to :error when status is 4044906 sets commit status to :error with a Net::OpenTimeout error4907 sets commit status to :error with a Net::ReadTimeout error4908 sets commit status to :error with a Net::WriteTimeout error4909 sets commit status to :error with a Gitlab::HTTP::ReadTotalTimeout error4910 sets commit status to :error with a EOFError error4911 sets commit status to :error with a SocketError error4912 sets commit status to :error with a OpenSSL::SSL::SSLError error4913 sets commit status to :error with a OpenSSL::OpenSSLError error4914 sets commit status to :error with a Errno::ECONNRESET error4915 sets commit status to :error with a Errno::ECONNREFUSED error4916 sets commit status to :error with a Errno::EHOSTUNREACH error4917 sets commit status to :error with a Errno::ENETUNREACH error4918 sets commit status to :error with a Gitlab::HTTP::BlockedUrlError error4919 sets commit status to :error with a Gitlab::HTTP::RedirectionTooDeep error4920 sets commit status to :canceled when returned status is "killed"4921 sets commit status to :failed when returned status is "failure"4922 sets commit status to :failed when returned status is "error"4923 sets commit status to "success" when returned status is "success"4924 execute4925 executes the webhook4926 does not try to execute the webhook if the integration is not in a project4927Gitlab::GithubImport::UserFinder4928 #author_id_for4929 returns the user ID for the author of an object4930 returns the ID of the project creator if no user ID could be found4931 returns the ID of the ghost user when the object has no user4932 returns the ID of the ghost user when the given object is nil4933 #assignee_id_for4934 returns the user ID for the assignee of an issuable4935 returns nil if the issuable does not have an assignee4936 #user_id_for4937 returns the user ID for the given user4938 does not fail with empty input4939 #find4940 without a cache4941 finds a GitLab user for a GitHub user ID4942 finds a GitLab user for a GitHub Email address4943 with a cache4944 returns the cached user ID4945 does not query the database if the cache key exists but is empty4946 #find_from_cache4947 retrieves a GitLab user ID for a GitHub user ID4948 retrieves a GitLab user ID for a GitHub Email address4949 does not query the cache for an Email address when none is given4950 #find_id_from_database4951 returns the GitLab user ID for a GitHub user ID4952 returns the GitLab user ID for a GitHub Email address4953 #email_for_github_username4954 when an Email address is cached4955 reads the Email address from the cache4956 when an Email address is not cached4957 retrieves the Email address from the GitHub API4958 caches the Email address when an Email address is available4959 returns nil if the user does not exist4960 shortens the timeout for Email address in cache when an Email address is private/nil from GitHub4961 #cached_id_for_github_id4962 reads a user ID from the cache4963 reads a non existing cache key4964 #cached_id_for_github_email4965 reads a user ID from the cache4966 reads a non existing cache key4967 #id_for_github_id4968 queries and caches the user ID for a given GitHub ID4969 caches a nil value if no ID could be found4970 when importing from github enterprise4971 does not look up the user by external id4972 #id_for_github_email4973 queries and caches the user ID for a given Email address4974 caches a nil value if no ID could be found4975 #query_id_for_github_id4976 returns the ID of the user for the given GitHub user ID4977 returns nil when no user ID could be found4978 #query_id_for_github_email4979 returns the ID of the user for the given Email address4980 returns nil if no user ID could be found4981 #read_id_from_cache4982 reads an ID from the cache4983 reads a cache key with an empty value4984 reads a cache key that does not exist4985Projects::Serverless::FunctionsFinder4986 #knative_installed4987 when environment does not exist yet4988 when project level cluster is present and enabled4989 behaves like before first deployment4990 returns true if Knative is installed on cluster4991 returns false if Knative is not installed on cluster4992 when group level cluster is present and enabled4993 behaves like before first deployment4994 returns true if Knative is installed on cluster4995 returns false if Knative is not installed on cluster4996 when instance level cluster is present and enabled4997 behaves like before first deployment4998 returns true if Knative is installed on cluster4999 returns false if Knative is not installed on cluster5000 when project level cluster is present, but disabled5001 returns false even if Knative is installed on cluster5002 when reactive_caching is still fetching data5003 returns "checking"5004 when reactive_caching has finished5005 when knative is not installed5006 returns false5007 reactive_caching is finished and knative is installed5008 returns true5009 retrieve data from knative5010 does not have knative installed5011 is expected to be empty5012 has knative installed5013 there are no functions5014 there are functions5015 has a function5016 has metrics5017 has prometheus5018 is available5019 has query data5020Members::ApproveAccessRequestService5021 when an access requester is found5022 when current user is nil5023 and :ldap option is not given5024 behaves like a service raising Gitlab::Access::AccessDeniedError5025 raises Gitlab::Access::AccessDeniedError5026 behaves like a service raising Gitlab::Access::AccessDeniedError5027 raises Gitlab::Access::AccessDeniedError5028 and :skip_authorization option is false5029 behaves like a service raising Gitlab::Access::AccessDeniedError5030 raises Gitlab::Access::AccessDeniedError5031 behaves like a service raising Gitlab::Access::AccessDeniedError5032 raises Gitlab::Access::AccessDeniedError5033 and :skip_authorization option is true5034 behaves like a service approving an access request5035 succeeds5036 returns a <Source>Member5037 with a custom access level5038 returns a ProjectMember with the custom access level5039 behaves like a service approving an access request5040 succeeds5041 returns a <Source>Member5042 with a custom access level5043 returns a ProjectMember with the custom access level5044 when current user cannot approve access request to the project5045 behaves like a service raising Gitlab::Access::AccessDeniedError5046 raises Gitlab::Access::AccessDeniedError5047 behaves like a service raising Gitlab::Access::AccessDeniedError5048 raises Gitlab::Access::AccessDeniedError5049 when current user can approve access request to the project5050 behaves like a service approving an access request5051 succeeds5052 returns a <Source>Member5053 with a custom access level5054 returns a ProjectMember with the custom access level5055 behaves like a service approving an access request5056 succeeds5057 returns a <Source>Member5058 with a custom access level5059 returns a ProjectMember with the custom access level5060Gitlab::Ci::Pipeline::Expression::Statement5061 .new5062 when variables are not provided5063 allows to properly initializes the statement5064 #evaluate5065 expression: "$PRESENT_VARIABLE == \"my variable\"", value: true5066 evaluates to `true`5067 expression: "\"my variable\" == $PRESENT_VARIABLE", value: true5068 evaluates to `true`5069 expression: "$PRESENT_VARIABLE == null", value: false5070 evaluates to `false`5071 expression: "$EMPTY_VARIABLE == null", value: false5072 evaluates to `false`5073 expression: "\"\" == $EMPTY_VARIABLE", value: true5074 evaluates to `true`5075 expression: "$EMPTY_VARIABLE", value: ""5076 evaluates to `""`5077 expression: "$UNDEFINED_VARIABLE == null", value: true5078 evaluates to `true`5079 expression: "null == $UNDEFINED_VARIABLE", value: true5080 evaluates to `true`5081 expression: "$PRESENT_VARIABLE", value: "my variable"5082 evaluates to `"my variable"`5083 expression: "$UNDEFINED_VARIABLE", value: nil5084 evaluates to `nil`5085 expression: "$PRESENT_VARIABLE =~ /var.*e$/", value: true5086 evaluates to `true`5087 expression: "$PRESENT_VARIABLE =~ /va\\r.*e$/", value: false5088 evaluates to `false`5089 expression: "$PRESENT_VARIABLE =~ /va\\/r.*e$/", value: false5090 evaluates to `false`5091 expression: "$PRESENT_VARIABLE =~ /var.*e$/", value: true5092 evaluates to `true`5093 expression: "$PRESENT_VARIABLE =~ /^var.*/", value: false5094 evaluates to `false`5095 expression: "$EMPTY_VARIABLE =~ /var.*/", value: false5096 evaluates to `false`5097 expression: "$UNDEFINED_VARIABLE =~ /var.*/", value: false5098 evaluates to `false`5099 expression: "$PRESENT_VARIABLE =~ /VAR.*/i", value: true5100 evaluates to `true`5101 expression: "$PATH_VARIABLE =~ /path\\/variable/", value: true5102 evaluates to `true`5103 expression: "$FULL_PATH_VARIABLE =~ /^\\/a\\/full\\/path\\/variable\\/value$/", value: true5104 evaluates to `true`5105 expression: "$FULL_PATH_VARIABLE =~ /\\/path\\/variable\\/value$/", value: true5106 evaluates to `true`5107 expression: "$PRESENT_VARIABLE != \"my variable\"", value: false5108 evaluates to `false`5109 expression: "\"my variable\" != $PRESENT_VARIABLE", value: false5110 evaluates to `false`5111 expression: "$PRESENT_VARIABLE != null", value: true5112 evaluates to `true`5113 expression: "$EMPTY_VARIABLE != null", value: true5114 evaluates to `true`5115 expression: "\"\" != $EMPTY_VARIABLE", value: false5116 evaluates to `false`5117 expression: "$UNDEFINED_VARIABLE != null", value: false5118 evaluates to `false`5119 expression: "null != $UNDEFINED_VARIABLE", value: false5120 evaluates to `false`5121 expression: "$PRESENT_VARIABLE !~ /var.*e$/", value: false5122 evaluates to `false`5123 expression: "$PRESENT_VARIABLE !~ /^var.*/", value: true5124 evaluates to `true`5125 expression: "$PRESENT_VARIABLE !~ /^v\\ar.*/", value: true5126 evaluates to `true`5127 expression: "$PRESENT_VARIABLE !~ /^v\\/ar.*/", value: true5128 evaluates to `true`5129 expression: "$EMPTY_VARIABLE !~ /var.*/", value: true5130 evaluates to `true`5131 expression: "$UNDEFINED_VARIABLE !~ /var.*/", value: true5132 evaluates to `true`5133 expression: "$PRESENT_VARIABLE !~ /VAR.*/i", value: false5134 evaluates to `false`5135 expression: "$PRESENT_VARIABLE && \"string\"", value: "string"5136 evaluates to `"string"`5137 expression: "$PRESENT_VARIABLE && $PRESENT_VARIABLE", value: "my variable"5138 evaluates to `"my variable"`5139 expression: "$PRESENT_VARIABLE && $EMPTY_VARIABLE", value: ""5140 evaluates to `""`5141 expression: "$PRESENT_VARIABLE && null", value: nil5142 evaluates to `nil`5143 expression: "\"string\" && $PRESENT_VARIABLE", value: "my variable"5144 evaluates to `"my variable"`5145 expression: "$EMPTY_VARIABLE && $PRESENT_VARIABLE", value: "my variable"5146 evaluates to `"my variable"`5147 expression: "null && $PRESENT_VARIABLE", value: nil5148 evaluates to `nil`5149 expression: "$EMPTY_VARIABLE && \"string\"", value: "string"5150 evaluates to `"string"`5151 expression: "$EMPTY_VARIABLE && $EMPTY_VARIABLE", value: ""5152 evaluates to `""`5153 expression: "\"string\" && $EMPTY_VARIABLE", value: ""5154 evaluates to `""`5155 expression: "\"string\" && null", value: nil5156 evaluates to `nil`5157 expression: "null && \"string\"", value: nil5158 evaluates to `nil`5159 expression: "\"string\" && \"string\"", value: "string"5160 evaluates to `"string"`5161 expression: "null && null", value: nil5162 evaluates to `nil`5163 expression: "$PRESENT_VARIABLE =~ /my var/ && $EMPTY_VARIABLE =~ /nope/", value: false5164 evaluates to `false`5165 expression: "$EMPTY_VARIABLE == \"\" && $PRESENT_VARIABLE", value: "my variable"5166 evaluates to `"my variable"`5167 expression: "$EMPTY_VARIABLE == \"\" && $PRESENT_VARIABLE != \"nope\"", value: true5168 evaluates to `true`5169 expression: "$PRESENT_VARIABLE && $EMPTY_VARIABLE", value: ""5170 evaluates to `""`5171 expression: "$PRESENT_VARIABLE && $UNDEFINED_VARIABLE", value: nil5172 evaluates to `nil`5173 expression: "$UNDEFINED_VARIABLE && $EMPTY_VARIABLE", value: nil5174 evaluates to `nil`5175 expression: "$UNDEFINED_VARIABLE && $PRESENT_VARIABLE", value: nil5176 evaluates to `nil`5177 expression: "$FULL_PATH_VARIABLE =~ /^\\/a\\/full\\/path\\/variable\\/value$/ && $PATH_VARIABLE =~ /path\\/variable/", value: true5178 evaluates to `true`5179 expression: "$FULL_PATH_VARIABLE =~ /^\\/a\\/bad\\/path\\/variable\\/value$/ && $PATH_VARIABLE =~ /path\\/variable/", value: false5180 evaluates to `false`5181 expression: "$FULL_PATH_VARIABLE =~ /^\\/a\\/full\\/path\\/variable\\/value$/ && $PATH_VARIABLE =~ /bad\\/path\\/variable/", value: false5182 evaluates to `false`5183 expression: "$FULL_PATH_VARIABLE =~ /^\\/a\\/bad\\/path\\/variable\\/value$/ && $PATH_VARIABLE =~ /bad\\/path\\/variable/", value: false5184 evaluates to `false`5185 expression: "$FULL_PATH_VARIABLE =~ /^\\/a\\/full\\/path\\/variable\\/value$/ || $PATH_VARIABLE =~ /path\\/variable/", value: true5186 evaluates to `true`5187 expression: "$FULL_PATH_VARIABLE =~ /^\\/a\\/bad\\/path\\/variable\\/value$/ || $PATH_VARIABLE =~ /path\\/variable/", value: true5188 evaluates to `true`5189 expression: "$FULL_PATH_VARIABLE =~ /^\\/a\\/full\\/path\\/variable\\/value$/ || $PATH_VARIABLE =~ /bad\\/path\\/variable/", value: true5190 evaluates to `true`5191 expression: "$FULL_PATH_VARIABLE =~ /^\\/a\\/bad\\/path\\/variable\\/value$/ || $PATH_VARIABLE =~ /bad\\/path\\/variable/", value: false5192 evaluates to `false`5193 expression: "$PRESENT_VARIABLE =~ /my var/ || $EMPTY_VARIABLE =~ /nope/", value: true5194 evaluates to `true`5195 expression: "$EMPTY_VARIABLE == \"\" || $PRESENT_VARIABLE", value: true5196 evaluates to `true`5197 expression: "$PRESENT_VARIABLE != \"nope\" || $EMPTY_VARIABLE == \"\"", value: true5198 evaluates to `true`5199 expression: "$PRESENT_VARIABLE && null || $EMPTY_VARIABLE == \"\"", value: true5200 evaluates to `true`5201 expression: "$PRESENT_VARIABLE || $UNDEFINED_VARIABLE", value: "my variable"5202 evaluates to `"my variable"`5203 expression: "$UNDEFINED_VARIABLE || $PRESENT_VARIABLE", value: "my variable"5204 evaluates to `"my variable"`5205 expression: "$UNDEFINED_VARIABLE == null || $PRESENT_VARIABLE", value: true5206 evaluates to `true`5207 expression: "$PRESENT_VARIABLE || $UNDEFINED_VARIABLE == null", value: "my variable"5208 evaluates to `"my variable"`5209 expression: "($PRESENT_VARIABLE)", value: "my variable"5210 evaluates to `"my variable"`5211 expression: "(($PRESENT_VARIABLE))", value: "my variable"5212 evaluates to `"my variable"`5213 expression: "(($PRESENT_VARIABLE && null) || $EMPTY_VARIABLE == \"\")", value: true5214 evaluates to `true`5215 expression: "($PRESENT_VARIABLE) && (null || $EMPTY_VARIABLE == \"\")", value: true5216 evaluates to `true`5217 expression: "(\"string\" || \"test\") == \"string\"", value: true5218 evaluates to `true`5219 expression: "(null || (\"test\" == \"string\"))", value: false5220 evaluates to `false`5221 expression: "(\"string\" == (\"test\" && \"string\"))", value: true5222 evaluates to `true`5223 expression: "(\"string\" == (\"test\" || \"string\"))", value: false5224 evaluates to `false`5225 expression: "(\"string\" == \"test\" || \"string\")", value: "string"5226 evaluates to `"string"`5227 expression: "(\"string\" == (\"string\" || ((\"1\" == \"1\") && (\"2\" == \"3\"))))", value: true5228 evaluates to `true`5229 #truthful?5230 expression: "$PRESENT_VARIABLE == \"my variable\"", value: true5231 returns `true`5232 expression: "$PRESENT_VARIABLE == 'no match'", value: false5233 returns `false`5234 expression: "$UNDEFINED_VARIABLE == null", value: true5235 returns `true`5236 expression: "$PRESENT_VARIABLE", value: true5237 returns `true`5238 expression: "$UNDEFINED_VARIABLE", value: false5239 returns `false`5240 expression: "$EMPTY_VARIABLE", value: false5241 returns `false`5242 expression: "$INVALID = 1", value: false5243 returns `false`5244 expression: "$PRESENT_VARIABLE =~ /var.*/", value: true5245 returns `true`5246 expression: "$UNDEFINED_VARIABLE =~ /var.*/", value: false5247 returns `false`5248 expression: "$PRESENT_VARIABLE !~ /var.*/", value: false5249 returns `false`5250 expression: "$UNDEFINED_VARIABLE !~ /var.*/", value: true5251 returns `true`5252 when evaluating expression raises an error5253 returns false5254Gitlab::Utils::StrongMemoize5255 #strong_memoize5256 with value5257 raises exception for invalid key5258 behaves like caching the value5259 only calls the block once5260 returns and defines the instance variable for the exact value5261 with value false5262 raises exception for invalid key5263 behaves like caching the value5264 only calls the block once5265 returns and defines the instance variable for the exact value5266 with value true5267 raises exception for invalid key5268 behaves like caching the value5269 only calls the block once5270 returns and defines the instance variable for the exact value5271 with value value5272 raises exception for invalid key5273 behaves like caching the value5274 only calls the block once5275 returns and defines the instance variable for the exact value5276 with value 05277 raises exception for invalid key5278 behaves like caching the value5279 only calls the block once5280 returns and defines the instance variable for the exact value5281 with value [0]5282 raises exception for invalid key5283 behaves like caching the value5284 only calls the block once5285 returns and defines the instance variable for the exact value5286 memory allocation5287 for Symbol5288 does allocate exactly one string when fetching value5289 does allocate exactly one string when storing value5290 for String5291 does allocate exactly one string when fetching value5292 does allocate exactly one string when storing value5293 #strong_memoized?5294 returns false if the value is uncached5295 returns true if the value is cached5296 #clear_memoization5297 removes the instance variable5298Backup::Manager5299 #run_create_task5300 calls the named task5301 disabled5302 informs the user5303 skipped5304 informs the user5305 #run_restore_task5306 calls the named task5307 disabled5308 informs the user5309 pre_restore_warning5310 displays and waits for the user5311 does not continue when the user quits5312 post_restore_warning5313 displays and waits for the user5314 does not continue when the user quits5315 #create5316 executes tar5317 tar fails5318 logs a failure5319 when BACKUP is set5320 uses the given value as tar file name5321 when skipped is set in backup_information.yml5322 executes tar5323 when SKIP env is set5324 executes tar5325 when the destination is optional5326 executes tar5327 many backup files5328 when keep_time is zero5329 removes no files5330 prints a skipped message5331 when no valid file is found5332 removes no files5333 prints a done message5334 when there are no files older than keep_time5335 removes no files5336 prints a done message5337 when keep_time is set to remove files5338 removes matching files with a human-readable versioned timestamp5339 removes matching files with a human-readable versioned timestamp with tagged EE5340 removes matching files with a human-readable non-versioned timestamp5341 removes matching files without a human-readable timestamp5342 does not remove files that are not old enough5343 does not remove non-matching files5344 prints a done message5345 when removing a file fails5346 removes the remaining expected files5347 sets the correct removed count5348 prints the error from file that could not be removed5349 cloud storage5350 skipped upload5351 informs the user5352 target path5353 uses the tar filename by default5354 adds the DIRECTORY environment variable if present5355 with AWS with server side encryption5356 with SSE-S3 without using storage_options5357 sets encryption attributes5358 with SSE-C (customer-provided keys) options5359 sets encryption attributes5360 with SSE-KMS options5361 sets encryption attributes5362 with Google provider5363 does not attempt to set ACL5364 with AzureRM provider5365 loads the provider5366 incremental5367 when there are no backup files in the directory5368 fails the operation and prints an error5369 when there are two backup files in the directory and BACKUP variable is not set5370 prints the list of available backups5371 fails the operation and prints an error5372 when BACKUP variable is set to a non-existing file5373 fails the operation and prints an error5374 when BACKUP variable is set to a correct file5375 unpacks and packs the backup5376 untar fails5377 logs a failure5378 tar fails5379 logs a failure5380 on version mismatch5381 stops the process5382 when there is a non-tarred backup in the directory5383 selects the non-tarred backup to restore from5384 on version mismatch5385 stops the process5386 #restore5387 when there are no backup files in the directory5388 fails the operation and prints an error5389 when there are two backup files in the directory and BACKUP variable is not set5390 prints the list of available backups5391 fails the operation and prints an error5392 when BACKUP variable is set to a non-existing file5393 fails the operation and prints an error5394 when BACKUP variable is set to a correct file5395 unpacks the file5396 tar fails5397 logs a failure5398 on version mismatch5399 stops the process5400 tmp files5401 removes backups/tmp dir5402 when there is a non-tarred backup in the directory5403 selects the non-tarred backup to restore from5404 on version mismatch5405 stops the process5406 tmp files5407 removes backups/tmp dir5408Banzai::Filter::References::ProjectReferenceFilter5409 ignores invalid projects5410 allows references with text after the > character5411 ignores valid references contained inside 'pre' element5412 ignores valid references contained inside 'code' element5413 ignores valid references contained inside 'a' element5414 ignores valid references contained inside 'style' element5415 includes default classes5416 behaves like user reference or project reference5417 supports an :only_path context5418 mentioning a resource5419 links to a resource5420 links to a resource with a period5421 links to a resource with an underscore5422 links to a resource with different case-sensitivity5423 behaves like a reference containing an element node5424 does not escape inner html5425 behaves like it contains a data- attribute5426 includes a data- attribute5427 referencing a resource in a link href5428 links to the resource5429 links with adjacent text5430 behaves like it contains a data- attribute5431 includes a data- attribute5432 when invalid reference strings are very long5433 behaves like fails fast5434 fails fast for long strings5435 behaves like fails fast5436 fails fast for long strings5437 in group context5438 supports mentioning a project5439 supports mentioning a project in a nested group5440 #projects_hash5441 returns a Hash containing all Projects5442 #projects5443 returns the projects mentioned in a document5444 checking N+15445 does not have N+1 per multiple project references5446Members::UpdateService5447 when current user cannot update the given member5448 behaves like a service raising Gitlab::Access::AccessDeniedError5449 raises Gitlab::Access::AccessDeniedError5450 behaves like a service raising Gitlab::Access::AccessDeniedError5451 raises Gitlab::Access::AccessDeniedError5452 when current user can update the given member5453 behaves like a service updating a member5454 updates the member5455 returns success status5456 when member is downgraded to guest5457 with Gitlab::Access::GUEST level as a string5458 behaves like schedules to delete confidential todos5459 is expected to eq 105460 with Gitlab::Access::GUEST level as an integer5461 behaves like schedules to delete confidential todos5462 is expected to eq 105463 when access_level is invalid5464 raises an error5465 when member is not valid5466 returns error status5467 behaves like a service updating a member5468 updates the member5469 returns success status5470 when member is downgraded to guest5471 with Gitlab::Access::GUEST level as a string5472 behaves like schedules to delete confidential todos5473 is expected to eq 105474 with Gitlab::Access::GUEST level as an integer5475 behaves like schedules to delete confidential todos5476 is expected to eq 105477 when access_level is invalid5478 raises an error5479 when member is not valid5480 returns error status5481Route5482 relationships5483 is expected to belong to source required: false5484 is expected to belong to namespace required: false5485 validations5486 is expected to validate that :source cannot be empty/falsy5487 is expected to validate that :path cannot be empty/falsy5488 is expected to validate that :path is case-insensitively unique5489 callbacks5490 before validation5491 calls #delete_conflicting_orphaned_routes5492 after update5493 calls #create_redirect_for_old_path5494 calls #delete_conflicting_redirects5495 after create5496 calls #delete_conflicting_redirects5497 .inside_path5498 returns correct routes5499 .for_routable_type5500 returns correct routes5501 #rename_descendants5502 path update5503 when route name is set5504 updates children routes with new path5505 when route name is nil5506 does not fail5507 when conflicting redirects exist5508 deletes the conflicting redirects5509 name update5510 updates children routes with new path5511 handles a rename from nil5512 #create_redirect_for_old_path5513 if the path changed5514 creates a RedirectRoute for the old path5515 #create_redirect5516 creates a RedirectRoute with the same source5517 when the source is a Project5518 creates a RedirectRoute5519 when the source is not a project5520 creates a RedirectRoute5521 #delete_conflicting_redirects5522 deletes the redirect5523 when a redirect route with the same path exists5524 when the redirect route has matching case5525 deletes the redirect5526 when redirect routes with paths descending from the route path exists5527 deletes all redirects with paths that descend from the route path5528 when the redirect route is differently cased5529 deletes the redirect5530 #conflicting_redirects5531 returns an ActiveRecord::Relation5532 returns the redirect routes5533 when a redirect route with the same path exists5534 when the redirect route has matching case5535 returns the redirect route5536 when redirect routes with paths descending from the route path exists5537 returns the redirect routes5538 when the redirect route is differently cased5539 returns the redirect route5540 #delete_conflicting_orphaned_routes5541 when there is a conflicting route5542 when the route is orphaned5543 deletes the orphaned route5544 passes validation, as usual5545 when the route is not orphaned5546 does not delete the conflicting route5547 fails validation, as usual5548 when there are no conflicting routes5549 does not delete any routes5550 passes validation, as usual5551Gitlab::Git::Tag5552 #tags5553 is expected to eq 45554 first tag5555 is expected to eq "v1.0.0"5556 is expected to eq "f4e6814c3e4e7a0de82a9e7cd20c626cc963a2f8"5557 is expected to eq "6f6d7e7ed97bb5f0054f2b1df789b39ca89b6ff9"5558 is expected to eq "Release"5559 is expected to be falsey5560 is expected to eq :NONE5561 is expected to be nil5562 is expected to eq "Dmitriy Zaporozhets"5563 is expected to eq "dmitriy.zaporozhets@gmail.com"5564 is expected to eq <Google::Protobuf::Timestamp: seconds: 1393491299, nanos: 0>5565 is expected to eq "+0200"5566 last tag5567 is expected to eq "v1.2.1"5568 is expected to eq "2ac1f24e253e08135507d0830508febaaccf02ee"5569 is expected to eq "fa1b1e6c004a68b7d8763b86455da9e6b23e36d6"5570 is expected to eq "Version 1.2.1"5571 is expected to be falsey5572 is expected to eq :NONE5573 is expected to be nil5574 is expected to eq "Douwe Maan"5575 is expected to eq "douwe@selenight.nl"5576 is expected to eq <Google::Protobuf::Timestamp: seconds: 1427789449, nanos: 0>5577 is expected to eq "+0200"5578 signed tag5579 is expected to eq "8f03acbcd11c53d9c9468078f32a2622005a4841"5580 is expected to eq "189a6c924013fc3fe40d6f1ec1dc20214183bc97"5581 is expected to eq "x509 signed tag\n-----BEGIN SIGNED MESSAGE-----\nMIISfwYJKoZIhvcNAQcCoIIScDCCEmwCAQExDTALBglghkgBZQM...dZmMbJ7jNk1FbewSwWO\nSDH1i0K32NyFbnh0BSos7njq7ELqKlYBsoB/sZfaH2vKy5U=\n-----END SIGNED MESSAGE-----"5582 is expected to be truthy5583 is expected to eq :X5095584 is expected not to be nil5585 is expected to eq "Roger Meier"5586 is expected to eq "r.meier@siemens.com"5587 is expected to eq <Google::Protobuf::Timestamp: seconds: 1574261780, nanos: 0>5588 is expected to eq "+0100"5589 .get_message5590 gets tag messages5591 gets messages in one batch5592 .extract_signature_lazily5593 when the tag is signed5594 returns signature and signed text5595 when the tag has no signature5596 returns empty signature and message as signed text5597 when the tag cannot be found5598 raises GRPC::Internal5599 when the tag ID is invalid5600 raises GRPC::Internal5601 when loading signatures in batch once5602 fetches signatures in batch once5603 tag into from Gitaly tag5604 message_size != message.size5605 message_size less than threshold5606 fetches tag message separately5607 message_size greater than threshold5608 returns a notice about message size5609 #cache_key5610 returns a cache key that changes based on changeable values5611Mutations::MergeRequests::SetAssignees5612 when the user does not have permissions5613 #resolve5614 behaves like permission level for merge request mutation is correctly verified5615 when the user is not a project member5616 behaves like when the user does not have access to the resource5617 raises an error5618 even if assigned to the merge request5619 does not modify merge request5620 even if reviewer of the merge request5621 raises an error5622 even if author of the merge request5623 raises an error5624 when the user is a project member5625 with guest role5626 behaves like when the user does not have access to the resource5627 raises an error5628 even if assigned to the merge request5629 does not modify merge request5630 even if reviewer of the merge request5631 raises an error5632 even if author of the merge request5633 raises an error5634 with reporter role5635 behaves like when the user does not have access to the resource5636 raises an error5637 even if assigned to the merge request5638 does not modify merge request5639 even if reviewer of the merge request5640 raises an error5641 even if author of the merge request5642 raises an error5643 behaves like an assignable resource5644 #resolve5645 raises an error if the resource is not accessible to the user5646 does not change assignees if the resource is not accessible to the assignees5647 returns an operational error if the resource is not accessible to the assignees5648 when the user can update the resource5649 replaces the assignee5650 returns errors when resource could not be updated5651 when passing an empty assignee list5652 removes all assignees5653 when passing "append" as true5654 is a NO-OP in FOSS5655 when passing "remove" as true5656 removes named assignee5657 does not remove unnamed assignee5658Gitlab::Diff::FileCollection::MergeRequestDiff5659 returns a valid instance of a DiffCollection5660 #diff_files5661 does not highlight binary files5662 does not highlight files marked as undiffable in .gitattributes5663 behaves like unfoldable diff5664 calls Gitlab::Diff::File#unfold_diff_lines with correct position5665 behaves like diff statistics5666 when include_stats is true5667 Repository#diff_stats is called5668 Gitlab::Diff::File is initialized with diff stats5669 when should not request diff stats5670 Repository#diff_stats is not called5671 behaves like cacheable diff collection5672 #write_cache5673 calls Gitlab::Diff::HighlightCache#write_if_empty5674 calls Gitlab::Diff::StatsCache#write_if_empty with diff stats5675 #clear_cache5676 calls Gitlab::Diff::HighlightCache#clear5677 calls Gitlab::Diff::StatsCache#clear5678 #diff_files5679 calls Gitlab::Diff::HighlightCache#decorate5680 when there are stats cached5681 does not make a diff stats rpc call5682 when there are no stats cached5683 makes a diff stats rpc call5684 behaves like unsortable diff files5685 #raw_diff_files5686 does not call Gitlab::Diff::FileCollectionSorter even when sorted is true5687Packages::Go::SyncPackagesWorker5688 #perform5689 with no existing packages5690 behaves like it creates a package5691 returns a package for example.com/project@v1.0.15692 behaves like it creates a package5693 returns a package for example.com/project@v1.0.25694 behaves like it creates a package5695 returns a package for example.com/project@v1.0.35696 behaves like it creates a package5697 returns a package for example.com/project/mod@v1.0.35698 behaves like it creates a package5699 returns a package for example.com/project/v2@v2.0.05700 with existing packages5701 behaves like it creates a package5702 returns a package for example.com/project@v1.0.15703 behaves like it creates a package5704 returns a package for example.com/project@v1.0.25705 behaves like it creates a package5706 returns a package for example.com/project@v1.0.35707 behaves like it creates a package5708 returns a package for example.com/project/mod@v1.0.35709 behaves like it creates a package5710 returns a package for example.com/project/v2@v2.0.05711 marked as pending_destruction5712 behaves like it creates a package5713 returns a package for example.com/project@v1.0.15714 behaves like it creates a package5715 returns a package for example.com/project@v1.0.25716 behaves like it creates a package5717 returns a package for example.com/project@v1.0.35718 behaves like it creates a package5719 returns a package for example.com/project/mod@v1.0.35720 behaves like it creates a package5721 returns a package for example.com/project/v2@v2.0.05722 with a package that exceeds project limits5723 logs an exception5724 path: "", version: "v1.0.1"5725 behaves like an idempotent worker5726 is labeled as idempotent5727 performs multiple times sequentially without raising an exception5728 creates a package5729 path: "", version: "v1.0.2"5730 behaves like an idempotent worker5731 is labeled as idempotent5732 performs multiple times sequentially without raising an exception5733 creates a package5734 path: "", version: "v1.0.3"5735 behaves like an idempotent worker5736 is labeled as idempotent5737 performs multiple times sequentially without raising an exception5738 creates a package5739 path: "mod", version: "v1.0.3"5740 behaves like an idempotent worker5741 is labeled as idempotent5742 performs multiple times sequentially without raising an exception5743 creates a package5744 path: "v2", version: "v2.0.0"5745 behaves like an idempotent worker5746 is labeled as idempotent5747 performs multiple times sequentially without raising an exception5748 creates a package5749BlobPresenter5750 #web_url5751 is expected to eq "http://localhost/namespace653/project619/-/blob/HEAD/files/ruby/regex.rb"5752 #web_path5753 is expected to eq "/namespace653/project619/-/blob/HEAD/files/ruby/regex.rb"5754 #edit_blob_path5755 is expected to eq "/namespace653/project619/-/edit/HEAD/files/ruby/regex.rb"5756 #raw_path5757 is expected to eq "/namespace653/project619/-/raw/HEAD/files/ruby/regex.rb"5758 #replace_path5759 is expected to eq "/namespace653/project619/-/update/HEAD/files/ruby/regex.rb"5760 #can_current_user_push_to_branch5761 is expected to eq true5762 current_user is nil5763 is expected to eq false5764 branch does not exist5765 is expected to eq false5766 #archived?5767 is expected to eq false5768 #pipeline_editor_path5769 when blob is .gitlab-ci.yml5770 is expected to eq "/namespace653/project619/-/ci/editor?branch_name=main"5771 Gitpod5772 Gitpod enabled for application and user5773 #gitpod_blob_url5774 is expected to eq "https://gitpod.io#http://localhost/namespace653/project619/-/tree/HEAD/files/ruby/regex.rb"5775 Gitpod disabled at application level5776 #gitpod_blob_url5777 is expected to eq nil5778 Gitpod disabled at user level5779 #gitpod_blob_url5780 is expected to eq nil5781 #find_file_path5782 is expected to eq "/namespace653/project619/-/find_file/HEAD/files/ruby/regex.rb"5783 #blame_path5784 is expected to eq "/namespace653/project619/-/blame/HEAD/files/ruby/regex.rb"5785 #history_path5786 is expected to eq "/namespace653/project619/-/commits/HEAD/files/ruby/regex.rb"5787 #permalink_path5788 is expected to eq "/namespace653/project619/-/blob/b83d6e391c22777fca1ed3012fce84f633d7fed0/files/ruby/regex.rb"5789 environment has been deployed5790 #environment_formatted_external_url5791 is expected to eq "some.environment"5792 #environment_external_url_for_route_map5793 is expected to eq "https://some.environment/files/ruby/regex.rb"5794 chooses the latest deployed environment for #environment_formatted_external_url and #environment_external_url_for_route_map5795 is expected to eq "another.environment"5796 is expected to eq "https://another.environment/files/ruby/regex.rb"5797 #code_owners5798 is expected to contain exactly5799 #ide_edit_path5800 is expected to eq "/-/ide/project/namespace653/project619/edit/HEAD/-/files/ruby/regex.rb"5801 #fork_and_edit_path5802 generates expected URI + query5803 current_user is nil5804 is expected to be nil5805 #ide_fork_and_edit_path5806 generates expected URI + query5807 current_user is nil5808 is expected to be nil5809 #code_navigation_path5810 is expected to eq nil5811 #project_blob_path_root5812 is expected to eq "/namespace653/project619/-/blob/HEAD"5813 given a Gitlab::Graphql::Representation::TreeEntry5814 #web_url5815 is expected to eq "http://localhost/namespace653/project619/-/blob/HEAD/files/ruby/regex.rb"5816 #web_path5817 is expected to eq "/namespace653/project619/-/blob/HEAD/files/ruby/regex.rb"5818 #highlight5819 returns highlighted content5820 returns plain content when :plain is true5821 "to" param is present5822 returns limited highlighted content5823 gitlab-language contains a match5824 passes language to inner call5825 when blob is ipynb5826 uses md as the transformed language5827 transforms the blob5828 when blob is other file type5829 does not transform the file5830 #blob_language5831 is expected to eq "ruby"5832 gitlab-language contains a match5833 is expected to eq "cpp"5834 when blob is ipynb5835 is expected to eq "md"5836 when blob is binary5837 is expected to be nil5838 #raw_plain_data5839 when blob is text5840 does not include html in the content5841 #plain_data5842 when blob is binary5843 returns nil5844 when blob is markup5845 returns plain content5846 when blob has syntax5847 returns highlighted syntax content5848 when blob has plain data5849 returns plain text highlighted content5850Clusters::CreateService5851 when provider is gcp5852 when project has no clusters5853 when correct params5854 creates a cluster object and performs a worker5855 when invalid params5856 returns an error5857 when project has a cluster5858 creates another cluster5859 when another cluster exists5860 when correct params5861 creates a cluster object and performs a worker5862 when invalid params5863 returns an error5864 when params includes :management_project_id5865 management_project is non-existent5866 does not persist the cluster and adds errors5867 project cluster5868 when user is authorized to adminster manangement_project5869 persists the cluster5870 when user is not authorized to adminster manangement_project5871 does not persist the cluster and adds errors5872 when manangement_project is outside of the namespace scope5873 does not persist the cluster5874 group cluster5875 when user is authorized to adminster manangement_project5876 persists the cluster5877 when user is not authorized to adminster manangement_project5878 does not persist the cluster and adds errors5879 when manangement_project is outside of the namespace scope5880 does not persist the cluster5881 instance cluster5882 when user is authorized to adminster manangement_project5883 persists the cluster5884 when user is not authorized to adminster manangement_project5885 does not persist the cluster and adds errors5886Terraform::State5887 is expected to belong to project required: false5888 is expected to belong to locked_by_user class_name => User required: false5889 is expected to validate that :name cannot be empty/falsy5890 is expected to validate that :project_id cannot be empty/falsy5891 is expected to validate that :name is case-sensitively unique within the scope of :project_id5892 scopes5893 .ordered_by_name5894 is expected to eq ["state_a", "state_b", "state_c", "state_d"]5895 .with_name5896 is expected to contain exactly #<Terraform::State id: 10, project_id: 687, created_at: "2022-04-28 17:12:04.672785229 +0000", update..._id: nil, uuid: "31120483f8114123bcac57b5e55ed349", name: "matching-name", versioning_enabled: true>5897 #destroy5898 deletes when the state is unlocked5899 fails to delete when the state is locked5900 #latest_file5901 is expected to eq #<Terraform::StateUploader:0x00007f031c785a98 @model=#<Terraform::StateVersion id: 6, terraform_state...0x00007f031c785890 @uploader=#<Terraform::StateUploader:0x00007f031c785a98 ...>, @cache_called=nil>>5902 but no version exists yet5903 is expected to be nil5904 #update_file!5905 versioning is enabled5906 creates a new version5907 versioning is disabled (migration to versioned in progress)5908 creates a new version, corrects the migrated version number, and marks the state as versioned5909 the current version cannot be determined5910 uses version - 1 to correct the migrated version number5911Ci::PendingBuild5912 associations5913 is expected to belong to project required: false5914 is expected to belong to build required: false5915 is expected to belong to namespace required: false5916 scopes5917 .with_instance_runners5918 when pending builds cannot be picked up by runner5919 returns an empty collection of pending builds5920 when pending builds can be picked up by runner5921 returns matching pending builds5922 .for_tags5923 when tag_ids match pending builds5924 returns matching pending builds5925 when tag_ids does not match pending builds5926 returns matching pending builds without tags5927 when tag_ids is not provided5928 with a nil value5929 returns matching pending builds without tags5930 with an empty array5931 returns matching pending builds without tags5932 .upsert_from_build!5933 another pending entry does not exist5934 creates a new pending entry5935 when another queuing entry exists for given build5936 returns a build id as a result5937 when project does not have shared runners enabled5938 sets instance_runners_enabled to false5939 when project has shared runner5940 when ci_pending_builds_maintain_denormalized_data is enabled5941 sets instance_runners_enabled to true5942 when project is about to be deleted5943 sets instance_runners_enabled to false5944 when builds are disabled5945 sets instance_runners_enabled to false5946 when ci_pending_builds_maintain_denormalized_data is disabled5947 sets instance_runners_enabled to false5948 when build has tags5949 when ci_pending_builds_maintain_denormalized_data is enabled5950 sets tag_ids5951 when ci_pending_builds_maintain_denormalized_data is disabled5952 does not set tag_ids5953 when a build project is nested in a subgroup5954 when build can be picked by a group runner5955 denormalizes namespace traversal ids5956 when build can not be picked by a group runner5957 creates an empty namespace traversal ids array5958 behaves like cleanup by a loose foreign key5959 cleans up (delete or nullify) the model5960 behaves like cleanup by a loose foreign key5961 cleans up (delete or nullify) the model5962Metrics::Dashboards::AnnotationsFinder5963 #execute5964 there are no annotations records5965 returns empty array5966 with annotation records5967 loads annotations5968 when the from filter is present5969 loads only younger annotations5970 when the to filter is present5971 loads only older annotations5972 when from and to filters are present5973 and to is bigger than from5974 loads only annotations assigned to this interval5975 and from is bigger than to5976 ignores to parameter and returns annotations starting at from filter5977 when from or to filters are empty strings5978 ignores this parameters5979 dashboard environment is missing5980 returns empty relation5981Gitlab::Workhorse5982 .send_git_archive5983 sets the header correctly5984 when archive caching is disabled5985 tells workhorse not to use the cache5986 when the repository doesn't have an archive file path5987 raises an error5988 .send_git_patch5989 sets the header correctly5990 .channel_websocket5991 without ca_pem5992 is expected to eq {"Channel"=>{"Header"=>{"Authorization"=>["Token x"]}, "MaxSessionTime"=>600, "Subprotocols"=>["foo"], "Url"=>"wss://example.com/terminal.ws"}}5993 with ca_pem5994 is expected to eq {"Channel"=>{"CAPem"=>"foo", "Header"=>{"Authorization"=>["Token x"]}, "MaxSessionTime"=>600, "Subprotocols"=>["foo"], "Url"=>"wss://example.com/terminal.ws"}}5995 .send_git_diff5996 sets the header correctly5997 #verify_api_request!5998 accepts a correct header5999 raises an error when the header is not set6000 raises an error when the header is not signed6001 raises an error when the header is signed with the wrong key6002 raises an error when the issuer is incorrect6003 .git_http_ok6004 is expected to include {:GL_ID => "user-1292", :GL_USERNAME => "user525", :GL_REPOSITORY => "project-741", :ShowAllRefs => false}6005 when the repo_type is a wiki6006 is expected to include {:GL_ID => "user-1293", :GL_USERNAME => "user526", :GL_REPOSITORY => "wiki-741", :ShowAllRefs => false}6007 when Gitaly is enabled6008 includes a Repository param6009 when git_upload_pack action is passed6010 includes Gitaly params in the returned value6011 show_all_refs enabled6012 is expected to include {:ShowAllRefs => true}6013 when a feature flag is set for a single project6014 sets the flag to true for that project6015 sets the flag to false for other projects6016 sets the flag to false when there is no project6017 when git_receive_pack action is passed6018 is expected to include {:GitalyServer => {:features => {"gitaly-feature-enforce-requests-limits" => "true"}, :address => "unix:tmp/tests/gitaly/praefect.socket", :token => "secret", :sidechannel => false}}6019 when info_refs action is passed6020 is expected to include {:GitalyServer => {:features => {"gitaly-feature-enforce-requests-limits" => "true"}, :address => "unix:tmp/tests/gitaly/praefect.socket", :token => "secret", :sidechannel => false}}6021 show_all_refs enabled6022 is expected to include {:ShowAllRefs => true}6023 when action passed is not supported by Gitaly6024 is expected to raise Exception with "Unsupported action: download"6025 when workhorse_use_sidechannel flag is set6026 when a feature flag is set globally6027 sets the flag to true6028 when a feature flag is set for a single project6029 sets the flag to true for that project6030 sets the flag to false for other projects6031 sets the flag to false when there is no project6032 when receive_max_input_size has been updated6033 returns custom git config6034 when receive_max_input_size is empty6035 returns an empty git config6036 .set_key_and_notify6037 when we set a new key6038 behaves like set and notify6039 set and return the same value6040 set and notify6041 when we set an existing key6042 and overwrite6043 behaves like set and notify6044 set and return the same value6045 set and notify6046 and do not overwrite6047 try to set but return the previous value6048 does not notify6049 .detect_content_type6050 returns array setting detect content type in workhorse6051 .send_git_blob6052 sets the header correctly6053 .send_url6054 sets the header correctly6055 .send_scaled_image6056 sets the header correctly6057 .send_dependency6058 sets the header correctly6059 .send_git_snapshot6060 sets the header correctly6061mail_room.yml6062 when incoming email is disabled6063 contains no configuration6064 when both incoming email and service desk email are enabled6065 contains the intended configuration6066 when both incoming email and service desk email are enabled for Microsoft Graph6067 contains the intended configuration6068Projects::BuildArtifactsSizeRefresh6069 associations6070 is expected to belong to project required: false6071 validations6072 is expected to validate that :project cannot be empty/falsy6073 scopes6074 stale6075 returns records in running state and has not been updated for more than 2 hours6076 remaining6077 returns stale, created, and pending records6078 state machine6079 initial state6080 defaults to created6081 #process!6082 when refresh state is created6083 transitions the state to running6084 sets the refresh_started_at6085 bumps the updated_at6086 resets the build artifacts size stats6087 resets the counter attribute to zero6088 when refresh state is pending6089 transitions the state to running6090 bumps the updated_at6091 when refresh state is running6092 keeps the state at running6093 bumps the updated_at6094 #requeue!6095 transitions refresh state from running to pending6096 bumps updated_at6097 updates last_job_artifact_id6098 .process_next_refresh!6099 picks the first record from the remaining work6100 .enqueue_refresh6101 creates refresh records for each given project, skipping duplicates6102 #next_batch6103 returns the job artifact records that were created not later than the refresh_started_at and IDs greater than the last_job_artifact_id6104PrometheusMetric6105 is expected to belong to project required: false6106 is expected to validate that :title cannot be empty/falsy6107 is expected to validate that :query cannot be empty/falsy6108 is expected to validate that :group cannot be empty/falsy6109 is expected to validate that :identifier is case-sensitively unique within the scope of :project_id as long as it is not nil6110 behaves like having unique enum values6111 has unique values in "group"6112 common metrics6113 common: false, with_project: true, result: true6114 is expected to eq true6115 common: false, with_project: false, result: false6116 is expected to eq false6117 common: true, with_project: true, result: false6118 is expected to eq false6119 common: true, with_project: false, result: true6120 is expected to eq true6121 #query_series6122 legend: "Some other legend", type: NilClass6123 is expected to be a kind of NilClass6124 legend: "Status Code", type: Array6125 is expected to be a kind of Array6126 #group_title6127 behaves like group_title6128 returns text Response metrics (NGINX Ingress VTS) for group nginx_ingress_vts6129 behaves like group_title6130 returns text Response metrics (NGINX Ingress) for group nginx_ingress6131 behaves like group_title6132 returns text Response metrics (HA Proxy) for group ha_proxy6133 behaves like group_title6134 returns text Response metrics (AWS ELB) for group aws_elb6135 behaves like group_title6136 returns text Response metrics (NGINX) for group nginx6137 behaves like group_title6138 returns text System metrics (Kubernetes) for group kubernetes6139 behaves like group_title6140 returns text Business metrics (Custom) for group business6141 behaves like group_title6142 returns text Response metrics (Custom) for group response6143 behaves like group_title6144 returns text System metrics (Custom) for group system6145 behaves like group_title6146 returns text Cluster Health for group cluster_health6147 #priority6148 group: :nginx_ingress_vts, priority: 106149 is expected to eq 106150 group: :nginx_ingress, priority: 106151 is expected to eq 106152 group: :ha_proxy, priority: 106153 is expected to eq 106154 group: :aws_elb, priority: 106155 is expected to eq 106156 group: :nginx, priority: 106157 is expected to eq 106158 group: :kubernetes, priority: 56159 is expected to eq 56160 group: :business, priority: 06161 is expected to eq 06162 group: :response, priority: -56163 is expected to eq -56164 group: :system, priority: -106165 is expected to eq -106166 group: :cluster_health, priority: 106167 is expected to eq 106168 #required_metrics6169 group: :nginx_ingress_vts, required_metrics: ["nginx_upstream_responses_total", "nginx_upstream_response_msecs_avg"]6170 is expected to eq ["nginx_upstream_responses_total", "nginx_upstream_response_msecs_avg"]6171 group: :nginx_ingress, required_metrics: ["nginx_ingress_controller_requests", "nginx_ingress_controller_ingress_upstream_latency_seconds_sum"]6172 is expected to eq ["nginx_ingress_controller_requests", "nginx_ingress_controller_ingress_upstream_latency_seconds_sum"]6173 group: :ha_proxy, required_metrics: ["haproxy_frontend_http_requests_total", "haproxy_frontend_http_responses_total"]6174 is expected to eq ["haproxy_frontend_http_requests_total", "haproxy_frontend_http_responses_total"]6175 group: :aws_elb, required_metrics: ["aws_elb_request_count_sum", "aws_elb_latency_average", "aws_elb_httpcode_backend_5_xx_sum"]6176 is expected to eq ["aws_elb_request_count_sum", "aws_elb_latency_average", "aws_elb_httpcode_backend_5_xx_sum"]6177 group: :nginx, required_metrics: ["nginx_server_requests", "nginx_server_requestMsec"]6178 is expected to eq ["nginx_server_requests", "nginx_server_requestMsec"]6179 group: :kubernetes, required_metrics: ["container_memory_usage_bytes", "container_cpu_usage_seconds_total"]6180 is expected to eq ["container_memory_usage_bytes", "container_cpu_usage_seconds_total"]6181 group: :business, required_metrics: []6182 is expected to eq []6183 group: :response, required_metrics: []6184 is expected to eq []6185 group: :system, required_metrics: []6186 is expected to eq []6187 group: :cluster_health, required_metrics: ["container_memory_usage_bytes", "container_cpu_usage_seconds_total"]6188 is expected to eq ["container_memory_usage_bytes", "container_cpu_usage_seconds_total"]6189 #to_query_metric6190 converts to queryable metric object6191 queryable metric object has title6192 queryable metric object has y_label6193 queryable metric has no required_metric6194 queryable metrics has query description6195 #to_metric_hash6196 returns a hash suitable for inclusion on a metrics dashboard6197Ci::PipelinesForMergeRequestFinder6198 #execute6199 when actor has permission to read pipelines in both parent and forked projects6200 returns all pipelines6201 when actor has permission to read pipelines in both parent and forked projects6202 returns all pipelines6203 when actor has permission to read pipelines in the parent project only6204 returns pipelines in parent6205 when actor has permission to read pipelines in the forked project only6206 returns pipelines in fork6207 when actor does not have permission to read pipelines6208 returns nothing6209 when actor is nil6210 returns nothing6211 #all6212 with single merge_request_diffs6213 behaves like returning pipelines with proper ordering6214 returns all pipelines6215 with multiple irrelevant merge_request_diffs6216 behaves like returning pipelines with proper ordering6217 returns all pipelines6218 with unsaved merge request6219 returns pipelines from diff_head_sha6220 when pipelines exist for the branch and merge request6221 returns merge request pipeline first6222 when there are a branch pipeline and a merge request pipeline6223 returns merge request pipelines first6224 when there are multiple merge request pipelines from the same branch6225 returns only related merge request pipelines6226 when detached merge request pipeline is run on head ref of the merge request6227 sets the head ref of the merge request to the pipeline ref6228 includes the detached merge request pipeline even though the ref is custom path6229Gitlab::Metrics::Dashboard::Processor6230 process6231 includes an id for each dashboard panel6232 includes boolean to indicate if panel group has custom metrics6233 when the dashboard is not present6234 returns nil6235 when dashboard config corresponds to common metrics6236 inserts metric ids into the config6237 when the project has associated metrics6238 includes project-specific metrics6239 display groups and panels in the order they are defined6240 when the project has multiple metrics in the same group6241 includes multiple metrics6242 when the dashboard should not include project metrics6243 includes only dashboard metrics6244 when sample_metrics are requested6245 includes a sample metrics path for the prometheus endpoint with each metric6246 when the dashboard references persisted metrics with alerts6247 that are shared across projects6248 behaves like has saved alerts6249 includes an alert path6250 when the project has associated metrics6251 behaves like has saved alerts6252 includes an alert path6253 when there are no alerts6254 does not insert an alert_path6255 when the dashboard is missing panel_groups6256 behaves like errors with message6257 raises a DashboardLayoutError6258 when the dashboard contains a panel_group which is missing panels6259 behaves like errors with message6260 raises a DashboardLayoutError6261 when the dashboard contains a panel which is missing metrics6262 behaves like errors with message6263 raises a DashboardLayoutError6264 when the dashboard contains a metric which is missing a query6265 behaves like errors with message6266 raises a DashboardLayoutError6267Suggestions::CreateService6268 #execute6269 should not try to parse suggestions6270 when not a diff note for merge requests6271 does not try to parse suggestions6272 behaves like service not tracking add suggestion event6273 does not track add suggestion event6274 when diff note is not for text6275 does not try to parse suggestions6276 behaves like service not tracking add suggestion event6277 does not track add suggestion event6278 when diff file is not found6279 creates no suggestion6280 behaves like service not tracking add suggestion event6281 does not track add suggestion event6282 should create suggestions6283 persists suggestion records6284 persists suggestions data correctly6285 tracks add suggestion event6286 outdated position note6287 uses the correct position when creating the suggestion6288 when a patch removes an empty line6289 creates an appliable suggestion6290Groups::ImportExport::ExportService6291 #async_execute6292 when the job can be successfully scheduled6293 enqueues an export job6294 returns truthy6295 when the job cannot be scheduled6296 returns falsey6297 #execute6298 saves the version6299 saves the models using ndjson tree saver6300 saves the models using legacy tree saver6301 compresses and removes tmp files6302 notifies the user6303 when saver succeeds6304 saves the group in the file system6305 when user does not have admin_group permission6306 fails6307 logs the error6308 tracks the error6309 when export fails6310 when file saver fails6311 removes the remaining exported data6312 notifies the user about failed group export6313 when file compression fails6314 removes the remaining exported data6315 notifies logger6316 when there is an existing export file6317/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/carrierwave-1.3.2/lib/carrierwave/mounter.rb:113: warning: deprecated Object#=~ is called on TrueClass; it always returns nil6318 removes it6319Banzai::Filter::SyntaxHighlightFilter6320 when no language is specified6321 highlights as plaintext6322 escapes HTML tags6323 when contains mermaid diagrams6324 ignores mermaid blocks6325 when <pre> contains multiple <code> tags6326 ignores the block6327 when a valid language is specified6328 highlights as that language6329 escapes HTML tags6330 when an invalid language is specified6331 highlights as plaintext6332 escapes HTML tags6333 languages that should be passed through6334 when math is specified6335 highlights as plaintext but with the correct language attribute and class6336 escapes HTML tags6337 when math has extra params6338 includes data-lang-params tag with extra information6339 escapes HTML tags6340 escapes HTML tags6341 escapes HTML tags6342 when mermaid is specified6343 highlights as plaintext but with the correct language attribute and class6344 escapes HTML tags6345 when mermaid has extra params6346 includes data-lang-params tag with extra information6347 escapes HTML tags6348 escapes HTML tags6349 escapes HTML tags6350 when plantuml is specified6351 highlights as plaintext but with the correct language attribute and class6352 escapes HTML tags6353 when plantuml has extra params6354 includes data-lang-params tag with extra information6355 escapes HTML tags6356 escapes HTML tags6357 escapes HTML tags6358 when suggestion is specified6359 highlights as plaintext but with the correct language attribute and class6360 escapes HTML tags6361 when suggestion has extra params6362 includes data-lang-params tag with extra information6363 escapes HTML tags6364 escapes HTML tags6365 escapes HTML tags6366 when multiple param delimiters are used6367 when delimiter is space6368 delimits on the first appearance6369 when delimiter is colon6370 delimits on the first appearance6371 when sourcepos metadata is available6372 includes it in the highlighted code block6373 escape sourcepos metadata to prevent XSS6374 when Rouge lexing fails6375 highlights as plaintext6376 escapes HTML tags6377 when Rouge lexing fails after a retry6378 does not add highlighting classes6379 escapes HTML tags6380Gitlab::ImportExport::SnippetRepoRestorer6381 when the snippet does not have a bundle file path6382 behaves like no bundle file present6383 creates the repository from the database content6384 does not call snippet update statistics service6385 when the repository creation fails6386 returns false6387 when the snippet bundle path is not present6388 behaves like no bundle file present6389 creates the repository from the database content6390 does not call snippet update statistics service6391 when the repository creation fails6392 returns false6393 when the snippet repository bundle exists6394 refreshes snippet statistics6395 when it is valid6396 creates the repository from the bundle6397 sets same shard in snippet repository as in the repository storage6398 when it is invalid6399 returns false and deletes the repository from disk and the database6400MergeRequestCleanupRefsWorker6401 #perform_work6402 when next cleanup schedule is found6403 marks the cleanup schedule as completed on success6404 when service fails6405 marks the cleanup schedule as unstarted and track the failure6406 and cleanup schedule has already failed 3 times6407 marks the cleanup schedule as failed and track the failure6408 when merge_request_refs_cleanup flag is disabled6409 does nothing6410 when there is no next cleanup schedule found6411 does nothing6412 #remaining_work_count6413 returns number of scheduled and unstarted cleanup schedule records6414 when count exceeds max_running_jobs6415 gets capped at max_running_jobs6416 #max_running_jobs6417 returns the value of MAX_RUNNING_JOBS6418JiraConnectSubscriptions::CreateService6419 remote user does not have access6420 does not create a subscription6421 returns error6422 remote user cannot be retrieved6423 does not create a subscription6424 returns error6425 when user does have access6426 creates a subscription6427 returns success6428 namespace has projects6429 starts workers to sync projects in batches with delay6430 when path is invalid6431 behaves like a failed execution6432 does not create a subscription6433 returns an error status6434 when user does not have access6435 behaves like a failed execution6436 does not create a subscription6437 returns an error status6438Projects::TopicsFinder6439 #execute6440 returns topics6441 filter by name6442 search: "topic", result: ["topicC", "topicA", "topicB"]6443 returns filtered topics6444 search: "pic", result: ["topicC", "topicA", "topicB"]6445 returns filtered topics6446 search: "B", result: []6447 returns filtered topics6448 search: "cB", result: []6449 returns filtered topics6450 search: "icB", result: ["topicB"]6451 returns filtered topics6452 search: "topicA", result: ["topicA"]6453 returns filtered topics6454 search: "topica", result: ["topicA"]6455 returns filtered topics6456Admin::UsersController routing6457 to #block6458 to #unblock6459 to #index6460 to #show6461 to #create6462 to #new6463 to #edit6464 to #update6465 to #destroy6466Admin::ProjectsController routing6467 to #index6468 to #show6469Admin::HooksController routing6470 to #test6471 to #index6472 to #create6473 to #edit6474 to #update6475 to #destroy6476Admin::HookLogsController routing6477 to #retry6478 to #show6479Admin::BackgroundJobsController routing6480 to #show6481Admin::DashboardController routing6482 to #index6483Admin::HealthCheckController routing6484 to #show6485Admin::DevOpsReportController routing6486 to #show6487 admin devops reports6488 redirects from /admin/dev_ops_report to /admin/dev_ops_reports6489Admin::GroupsController routing6490 to #index6491 to #show6492 to #edit6493Admin::SessionsController routing6494 to #new6495 to #create6496 to #destroy6497Admin::PlanLimitsController routing6498 to #create6499Admin::RunnersController routing6500 to #runner_setup_scripts6501Gitlab::Verify::JobArtifacts6502 behaves like Gitlab::Verify::BatchVerifier subclass6503 batching6504 iterates through objects in batches6505 allows the starting ID to be specified6506 allows the finishing ID to be specified6507 #run_batches6508 passes artifacts with the correct file6509 fails artifacts with a missing file6510 fails artifacts with a mismatched checksum6511 with remote files6512 passes artifacts in object storage that exist6513 fails artifacts in object storage that do not exist6514Terraform::StateUploader6515 #filename6516 contains the version of the terraform state record6517 legacy state with versioning disabled6518 contains the UUID of the terraform state record6519 #store_dir6520 hashes the project ID and UUID6521 legacy state with versioning disabled6522 contains the ID of the project6523 #key6524 creates a digest with a secret key and the project id6525 encryption6526 encrypts the stored file6527 decrypts the file when reading6528 .direct_upload_enabled?6529 returns false6530 .background_upload_enabled?6531 returns false6532 .proxy_download_enabled?6533 returns true6534 .default_store6535 when object storage is enabled6536 returns REMOTE6537 when object storage is disabled6538 returns LOCAL6539Gitlab::Middleware::ReadOnly6540 when database is read-only6541 behaves like write access for a read-only GitLab instance6542 normal requests to a read-only GitLab instance6543 expects PATCH requests to be disallowed6544 expects PUT requests to be disallowed6545 expects POST requests to be disallowed6546 expects a internal POST request to be allowed after a disallowed request6547 expects DELETE requests to be disallowed6548 expects POST of new file that looks like an LFS batch url to be disallowed6549 returns last_vistited_url for disallowed request6550 allowlisted requests6551 expects a POST internal request to be allowed6552 expects a POST internal request with trailing slash to be allowed6553 expects a graphql request to be allowed6554 expects a graphql request with trailing slash to be allowed6555 relative URL is configured6556 expects a graphql request to be allowed6557 expects a graphql request with trailing slash to be allowed6558 sidekiq admin requests6559 mounted_at: ""6560 allows requests6561 allows requests with trailing slash6562 mounted_at: "/"6563 allows requests6564 allows requests with trailing slash6565 mounted_at: "/gitlab"6566 allows requests6567 allows requests with trailing slash6568 mounted_at: "/gitlab/"6569 allows requests6570 allows requests with trailing slash6571 mounted_at: "/gitlab/gitlab"6572 allows requests6573 allows requests with trailing slash6574 mounted_at: "/gitlab/gitlab/"6575 allows requests6576 allows requests with trailing slash6577 description: "LFS request to batch", path: "/root/rouge.git/info/lfs/objects/batch"6578 expects a POST description: "LFS request to batch", path: "/root/rouge.git/info/lfs/objects/batch" URL to be allowed6579 expects a POST description: "LFS request to batch", path: "/root/rouge.git/info/lfs/objects/batch" URL with trailing slash to be allowed6580 description: "request to git-upload-pack", path: "/root/rouge.git/git-upload-pack"6581 expects a POST description: "request to git-upload-pack", path: "/root/rouge.git/git-upload-pack" URL to be allowed6582 expects a POST description: "request to git-upload-pack", path: "/root/rouge.git/git-upload-pack" URL with trailing slash to be allowed6583 description: "user sign out", path: "/users/sign_out"6584 expects a POST description: "user sign out", path: "/users/sign_out" URL to be allowed6585 expects a POST description: "user sign out", path: "/users/sign_out" URL with trailing slash to be allowed6586 description: "admin session", path: "/admin/session"6587 expects a POST description: "admin session", path: "/admin/session" URL to be allowed6588 expects a POST description: "admin session", path: "/admin/session" URL with trailing slash to be allowed6589 description: "admin session destroy", path: "/admin/session/destroy"6590 expects a POST description: "admin session destroy", path: "/admin/session/destroy" URL to be allowed6591 expects a POST description: "admin session destroy", path: "/admin/session/destroy" URL with trailing slash to be allowed6592 description: "LFS request to locks verify", path: "/root/rouge.git/info/lfs/locks/verify"6593 expects a POST description: "LFS request to locks verify", path: "/root/rouge.git/info/lfs/locks/verify" URL not to be allowed6594 expects a POST description: "LFS request to locks verify", path: "/root/rouge.git/info/lfs/locks/verify" URL with trailing slash not to be allowed6595 description: "LFS request to locks create", path: "/root/rouge.git/info/lfs/locks"6596 expects a POST description: "LFS request to locks create", path: "/root/rouge.git/info/lfs/locks" URL not to be allowed6597 expects a POST description: "LFS request to locks create", path: "/root/rouge.git/info/lfs/locks" URL with trailing slash not to be allowed6598 description: "LFS request to locks unlock", path: "/root/rouge.git/info/lfs/locks/1/unlock"6599 expects a POST description: "LFS request to locks unlock", path: "/root/rouge.git/info/lfs/locks/1/unlock" URL not to be allowed6600 expects a POST description: "LFS request to locks unlock", path: "/root/rouge.git/info/lfs/locks/1/unlock" URL with trailing slash not to be allowed6601 JSON requests to a read-only GitLab instance6602 expects PATCH requests to be disallowed6603 expects PUT requests to be disallowed6604 expects POST requests to be disallowed6605 expects DELETE requests to be disallowed6606Gitlab::SlashCommands::IssueMove6607 #match6608 behaves like move command6609 can be parsed to extract the needed fields6610 behaves like move command6611 can be parsed to extract the needed fields6612 behaves like move command6613 can be parsed to extract the needed fields6614 behaves like move command6615 can be parsed to extract the needed fields6616 behaves like move command6617 can be parsed to extract the needed fields6618 behaves like move command6619 can be parsed to extract the needed fields6620 #execute6621 when the user can move the issue6622 when the move fails6623 returns the error message6624 when the move succeeds6625 moves the issue to the new destination6626 returns the new issue6627 mentions the old issue6628 when the issue does not exist6629 returns not found6630 when the target project does not exist6631 returns not found6632 when the user cannot see the target project6633 returns not found6634 when the user does not have the required permissions on the target project6635 returns the error message6636Gitlab::Database::LoadBalancing::Session6637 .current6638 returns the current session6639 .clear_session6640 clears the current session6641 .without_sticky_writes6642 ignores sticky write events sent by a connection proxy6643 still is aware of write that happened6644 #use_primary?6645 returns true when the primary should be used6646 returns false when a secondary should be used6647 returns true when a write was performed6648 #use_primary6649 uses primary during block6650 continues using primary when write was performed6651 when primary was used before6652 restores state after use6653 when primary was not used6654 restores state after use6655 #performed_write?6656 returns true if a write was performed6657 #ignore_writes6658 ignores write events6659 does not prevent using primary if an exception is raised6660 #use_replicas_for_read_queries6661 sets the flag inside the block6662 restores state after use6663 when primary was used before6664 sets the flag inside the block6665 when a write query is performed before6666 sets the flag inside the block6667 #fallback_to_replicas_for_ambiguous_queries6668 sets the flag inside the block6669 restores state after use6670 when primary was used before6671 uses primary during block6672 when a write was performed before6673 uses primary during block6674 when primary was used inside the block6675 uses primary aterward6676 restores state after use6677 when a write was performed inside the block6678 uses primary aterward6679 restores state after use6680Banzai::Pipeline::FullPipeline6681 References6682 handles markdown inside a reference6683 sanitizes reference HTML6684 escapes the data-original attribute on a reference6685 footnotes6686 properly adds the necessary ids and classes6687 links are detected as malicious6688 has tooltips for malicious links6689 has no tooltips for safe links6690 table of contents6691 with [[_TOC_]] as tag6692 behaves like table of contents tag6693 inserts a table of contents6694 does not insert a table of contents6695 with [toc] as tag6696 behaves like table of contents tag6697 inserts a table of contents6698 does not insert a table of contents6699 behaves like table of contents tag6700 inserts a table of contents6701 does not insert a table of contents6702 backslash escapes6703 does not convert an escaped reference6704 converts user reference with escaped underscore because of italics6705Packages::Debian::GroupComponentFile6706 behaves like Debian Component File6707 relationships6708 with stubbed uploader6709 is expected to belong to component class_name => Packages::Debian::GroupComponent required: false inverse_of => files6710 with packages file_type6711 is expected to belong to architecture class_name => Packages::Debian::GroupArchitecture required: false inverse_of => files6712 with :sources file_type6713 is expected to belong to architecture class_name => Packages::Debian::GroupArchitecture inverse_of => files optional: true6714 validations6715 #component6716 is expected to validate that :component cannot be empty/falsy6717 #architecture6718 with packages file_type6719 is expected to validate that :architecture cannot be empty/falsy6720 with :sources file_type6721 is expected to validate that :architecture is empty/falsy6722 #file_type6723 is expected to validate that :file_type cannot be empty/falsy6724 is expected to allow :file_type to be ‹:packages›6725 #compression_type6726 is expected not to validate that :compression_type cannot be empty/falsy6727 is expected to allow :compression_type to be ‹nil›6728 is expected to allow :compression_type to be ‹:gz›6729 #file6730 the uploader api6731 is expected to respond to #store_dir6732 is expected to respond to #cache_dir6733 is expected to respond to #work_dir6734 #file_store6735 is expected to validate that :file_store cannot be empty/falsy6736 #file_md56737 is expected to validate that :file_md5 cannot be empty/falsy6738 #file_sha2566739 is expected to validate that :file_sha256 cannot be empty/falsy6740 scopes6741 .with_container6742 is expected to contain exactly #<Packages::Debian::GroupComponentFile id: 7, created_at: "2022-04-28 17:14:46.541884580 +0000", upda..., file: "Packages", file_md5: "12345abcde", file_sha256: "be93151dc23ac34a82752444556fe79b32c7a1ad">6743 .with_codename_or_suite6744 is expected to contain exactly #<Packages::Debian::GroupComponentFile id: 7, created_at: "2022-04-28 17:14:46.541884580 +0000", upda..., file: "Packages", file_md5: "12345abcde", file_sha256: "be93151dc23ac34a82752444556fe79b32c7a1ad">6745 .with_component_name6746 is expected to contain exactly #<Packages::Debian::GroupComponentFile id: 3, created_at: "2022-04-28 17:14:46.506283143 +0000", upda..., file: "Packages", file_md5: "12345abcde", file_sha256: "be93151dc23ac34a82752444556fe79b32c7a1ad">6747 .with_file_type6748 is expected to contain exactly #<Packages::Debian::GroupComponentFile id: 8, created_at: "2022-04-28 17:14:46.552281000 +0000", upda...1, file: "Sources", file_md5: "12345abcde", file_sha256: "be93151dc23ac34a82752444556fe79b32c7a1ad">6749 .with_architecture6750 is expected to contain exactly #<Packages::Debian::GroupComponentFile id: 2, created_at: "2022-04-28 17:14:46.496808804 +0000", upda..., file: "Packages", file_md5: "12345abcde", file_sha256: "be93151dc23ac34a82752444556fe79b32c7a1ad">6751 .with_architecture_name6752 is expected to contain exactly #<Packages::Debian::GroupComponentFile id: 2, created_at: "2022-04-28 17:14:46.496808804 +0000", upda..., file: "Packages", file_md5: "12345abcde", file_sha256: "be93151dc23ac34a82752444556fe79b32c7a1ad">6753 .with_compression_type6754 is expected to contain exactly #<Packages::Debian::GroupComponentFile id: 4, created_at: "2022-04-28 17:14:46.515746172 +0000", upda..., file: "Packages", file_md5: "12345abcde", file_sha256: "be93151dc23ac34a82752444556fe79b32c7a1ad">6755 .with_file_sha2566756 is expected to contain exactly #<Packages::Debian::GroupComponentFile id: 6, created_at: "2022-04-28 17:14:46.533325980 +0000", upda...ion_type: nil, file_store: 1, file: "Packages", file_md5: "12345abcde", file_sha256: "other_sha256">6757 .updated_before6758 is expected to contain exactly #<Packages::Debian::GroupComponentFile id: 10, created_at: "2022-04-28 17:14:47.870188665 +0000", upd..., file: "Packages", file_md5: "12345abcde", file_sha256: "be93151dc23ac34a82752444556fe79b32c7a1ad"> and #<Packages::Debian::GroupComponentFile id: 11, created_at: "2022-04-28 17:14:47.882037155 +0000", upd..., file: "Packages", file_md5: "12345abcde", file_sha256: "be93151dc23ac34a82752444556fe79b32c7a1ad">6759 callbacks6760 updates metadata columns6761 #relative_path6762 with a Packages file_type6763 is expected to eq "group-component-1/binary-group-arch-1/Packages"6764 with a Source file_type6765 is expected to eq "group-component-1/source/Sources"6766 with a DI Packages file_type6767 is expected to eq "group-component-1/debian-installer/binary-group-arch-1/Packages"6768 with an xz compression_type6769 is expected to eq "group-component-1/binary-group-arch-1/Packages.xz"6770CommitSignatures::X509CommitSignature6771 behaves like having unique enum values6772 has unique values in "verification_status"6773 validation6774 is expected to validate that :commit_sha cannot be empty/falsy6775 is expected to validate that :project_id cannot be empty/falsy6776 is expected to validate that :x509_certificate_id cannot be empty/falsy6777 associations6778 is expected to belong to project required: true6779 is expected to belong to x509_certificate required: true6780 .safe_create!6781 finds a signature by commit sha if it existed6782 creates a new signature if it was not found6783 assigns the correct attributes when creating6784 #user6785 if email is not assigned to a user, return nil6786 if email is assigned to a user6787 returns user6788Resolvers::ProjectsResolver6789 #resolve6790 when user is not logged in6791 when no filters are applied6792 returns all public projects6793 when search filter is provided6794 returns matching project6795 when membership filter is provided6796 returns empty list6797 when searchNamespaces filter is provided6798 returns projects in a matching namespace6799 when searchNamespaces filter false6800 returns ignores namespace matches6801 when topics filter is provided6802 returns matching project6803 when user is logged in6804 when no filters are applied6805 returns all visible projects for the user6806 when search filter is provided6807 returns matching project6808 when membership filter is provided6809 returns projects that user is member of6810 when searchNamespaces filter is provided6811 returns projects from matching group6812 when searchNamespaces filter false6813 returns ignores namespace matches6814 when ids filter is provided6815 returns matching project6816 when sorting6817 when sorting by similarity6818 returns projects in order of similarity to search6819 when no sort is provided6820 returns projects in descending order by id6821 when topics filter is provided6822 returns matching project6823Integrations::Confluence6824 Validations6825 when integration is active6826 is expected not to allow :confluence_url to be ‹"https://example.com"›6827 is expected not to allow :confluence_url to be ‹"example.com"›6828 is expected not to allow :confluence_url to be ‹"foo"›6829 is expected not to allow :confluence_url to be ‹"ftp://example.atlassian.net/wiki"›6830 is expected not to allow :confluence_url to be ‹"https://example.atlassian.net"›6831 is expected not to allow :confluence_url to be ‹"https://.atlassian.net/wiki"›6832 is expected not to allow :confluence_url to be ‹"https://example.atlassian.net/wikifoo"›6833 is expected not to allow :confluence_url to be ‹""›6834 is expected not to allow :confluence_url to be ‹nil›6835 is expected not to allow :confluence_url to be ‹"😊"›6836 is expected to allow :confluence_url to be ‹"https://example.atlassian.net/wiki"›6837 is expected to allow :confluence_url to be ‹"http://example.atlassian.net/wiki"›6838 is expected to allow :confluence_url to be ‹"https://example.atlassian.net/wiki/"›6839 is expected to allow :confluence_url to be ‹"http://example.atlassian.net/wiki/"›6840 is expected to allow :confluence_url to be ‹"https://example.atlassian.net/wiki/foo"›6841 is expected to validate that :confluence_url cannot be empty/falsy6842 when integration is inactive6843 is expected not to validate that :confluence_url cannot be empty/falsy6844 is expected to allow :confluence_url to be ‹"foo"›6845 #help6846 can correctly return a link to the project wiki when active6847 when the project wiki is not enabled6848 returns nil when both active or inactive6849 Caching has_confluence on project_settings6850 sets the property to true when integration is active6851 sets the property to false when integration is not active6852 creates a project_setting record if one was not already created6853Gitlab::Checks::ChangesAccess6854 #validate!6855 without failed checks6856 doesn't raise an error6857 calls lfs checks6858 when time limit was reached6859 raises a TimeoutError6860 #commits6861 calls #new_commits6862 when changes contain empty revisions6863 behaves like returns only commits with non empty revisions6864 is expected to contain exactly #<InstanceDouble(Commit) (anonymous)>6865 without oldrev6866 behaves like returns only commits with non empty revisions6867 is expected to contain exactly #<InstanceDouble(Commit) (anonymous)>6868 #commits_for6869 with no commits6870 behaves like a listing of new commits6871 returns expected commits6872 with unrelated commits6873 behaves like a listing of new commits6874 returns expected commits6875 with single related commit6876 behaves like a listing of new commits6877 returns expected commits6878 with single related and unrelated commit6879 behaves like a listing of new commits6880 returns expected commits6881 with multiple related commits6882 behaves like a listing of new commits6883 returns expected commits6884 with merge commits6885 behaves like a listing of new commits6886 returns expected commits6887 with criss-cross merges6888 behaves like a listing of new commits6889 returns expected commits6890 with over-push6891 behaves like a listing of new commits6892 returns expected commits6893 #single_change_accesses6894 with no changes6895 behaves like #single_change_access6896 returns an array of SingleChangeAccess6897 with a single change and no new commits6898 behaves like #single_change_access6899 returns an array of SingleChangeAccess6900 with a single change and new commits6901 behaves like #single_change_access6902 returns an array of SingleChangeAccess6903 with multiple changes6904 behaves like #single_change_access6905 returns an array of SingleChangeAccess6906ProjectImportState6907 associations6908 is expected to belong to project required: false6909 validations6910 is expected to validate that :project cannot be empty/falsy6911 Project import job6912 imports a project6913 records job and correlation IDs6914 #relation_hard_failures6915 returns hard relation failures related to this import6916 limits returned collection to given maximum6917 #mark_as_failed6918 logs error when update column fails6919 updates last_error with error message6920 removes project import data6921 #human_status_name6922 when import_state exists6923 returns the humanized status name6924 #expire_etag_cache6925 when project import type has realtime changes endpoint6926 expires revelant etag cache6927 when project import type does not have realtime changes endpoint6928 does not touch etag caches6929 import state transitions6930 state transition: [:started] => [:finished]6931 resets last_error6932 enqueues housekeeping when an import of a fresh project is completed6933 does not perform housekeeping when project repository does not exist6934 does not qneueue housekeeping when project does not have a valid import type6935 clearing `jid` after finish6936 without an JID6937 does nothing6938 with an JID6939 unsets the JID6940 callbacks6941 after_commit :expire_etag_cache6942 expires etag cache6943Gitlab::SidekiqDaemon::MemoryKiller6944 #run_thread6945 not invoke restart_sidekiq when rss in range6946 invoke restart_sidekiq when rss not in range6947 when structured logging is used6948 logs start message once6949 logs StandardError message twice6950 logs exception message once and raise exception and log stop message6951 logs stop message once6952 #stop_working6953 changes enable? to false6954 #rss_within_range?6955 return true when everything is within limit6956 return false when rss exceeds hard_limit_rss6957 return false when rss exceed hard_limit_rss after a while6958 return true when rss below soft_limit_rss after a while within GRACE_BALLOON_SECONDS6959 when exceeding GRACE_BALLOON_SECONDS6960 return false when rss exceed soft_limit_rss6961 #restart_sidekiq6962 send signal6963 #signal_and_wait6964 send signal and return when all jobs finished6965 send signal and wait till deadline if any job not finished6966 #signal_pgroup6967 send signal to this proces if it is not group leader6968 send signal to whole process group as group leader6969 #log_rss_out_of_range6970 invoke sidekiq logger warn6971 #out_of_range_description6972 when rss > hard_limit6973 tells reason6974 when rss <= hard_limit6975 tells reason6976 #rss_increase_by_jobs6977 adds up individual rss_increase_by_job6978 return 0 if no job6979 #rss_increase_by_job6980 return 0 if memory_growth_kb return 06981 return time factored growth value when it does not exceed max growth limit for whilited job6982 return max growth limit when time factored growth value exceed max growth limit for whilited job6983 #get_job_options6984 return default if key is not defined6985 return default if get StandardError when retrieve sidekiq_options6986 return right value if sidekiq_options has the key6987 #refresh_state6988 calls gitlab metrics gauge set methods6989Ci::AfterRequeueJobService6990 stage-dag mixed pipeline6991 marks subsequent skipped jobs as processable6992 stage-dag mixed pipeline with some same-stage needs6993 marks subsequent skipped jobs as processable6994Gitlab::Profiler6995 .profile6996 returns a profile result6997 uses the custom logger given6998 sends a POST request when data is passed6999 uses the private_token for auth if given7000 uses the user for auth if given7001 uses the private_token for auth if both it and user are set7002 with sampling profiler7003 generates sampling data7004 saves sampling data with a randomly-generated filename7005 .create_custom_logger7006 does nothing when nil is passed7007 the new logger7008 does not affect the existing logger7009 strips out the private token7010 tracks model load times by model7011 logs the backtrace, ignoring lines as appropriate7012 .with_custom_logger7013 when the logger is set7014 uses the replacement logger for the duration of the block7015 returns the result of the block7016 when the logger is nil7017 returns the result of the block7018 does not modify the standard Rails loggers7019 .with_user7020 when the user is set7021 overrides auth in ApplicationController to use the given user7022 cleans up ApplicationController afterwards7023 when the user is nil7024 does not define methods on ApplicationController7025 .log_load_times_by_model7026 logs the model, query count, and time by slowest first7027 does nothing when called with a logger that does not have load times7028 .print_by_total_time7029 prints a profile result sorted by total time7030 accepts a max_percent option7031ProjectImportOptions7032 sets default retry limit7033 sets default status expiration7034 .sidekiq_retries_exhausted7035 marks fork as failed7036 logs the appropriate error message for forked projects7037 logs the appropriate error message for forked projects7038 when project is jira import7039 logs the appropriate error message for forked projects7040 when project does not have import_state7041 raises an error7042Gitlab::Email::Handler::UnsubscribeHandler7043 when email key7044 matches the new format7045 matches the legacy format7046 doesn't match either format7047 when notification concerns a commit7048 handler does not raise an error7049 user is unsubscribed7050 leaves user unsubscribed7051 user is subscribed7052 unsubscribes user from notable7053 when using old style unsubscribe link7054 unsubscribes user from notable7055 when the noteable could not be found7056 raises a NoteableNotFoundError7057 when no sent notification for the mail key could be found7058 raises a SentNotificationNotFoundError7059Deployments::UpdateEnvironmentWorker7060 when successful deployment7061 executes Deployments::UpdateEnvironmentService7062 when canceled deployment7063 does not execute Deployments::UpdateEnvironmentService7064 when deploy record does not exist7065 does not execute Deployments::UpdateEnvironmentService7066 idempotent7067 is labeled as idempotent7068 performs multiple times sequentially without raising an exception7069 updates merge requests metrics7070Gitlab::RepoPath7071 .parse7072 returns the default type for non existent paths7073 a repository storage path7074 parses a full project repository path7075 parses a full project wiki repository path7076 parses a personal snippet repository path7077 parses a project snippet repository path7078 a relative path7079 parses a relative repository path7080 parses a relative wiki path7081 parses a relative path starting with /7082 of a redirected project7083 parses a relative repository path7084 parses a relative wiki path7085 parses a relative path starting with /7086 parses a redirected project snippet repository path7087 .find_project7088 when finding a project by its canonical path7089 when the cases match7090 returns the project7091 when the cases do not match7092 returns the project7093 when finding a project via a redirect7094 returns the project7095 .find_snippet7096 extracts path and id from personal snippet route7097 extracts path and id from project snippet route7098 returns nil for invalid snippet paths7099 returns nil for snippets not associated with the project7100 when finding a project snippet via a redirect7101 returns the project snippet7102NavHelper7103 #header_links7104 when the user is logged in7105 has all the expected links by default7106 contains the impersonation link while impersonating7107 as admin7108 application setting :admin_mode is enabled7109 does not contain the admin mode link by default7110 with admin mode enabled7111 contains the admin mode link7112 application setting :admin_mode is disabled7113 does not contain the admin mode link7114 with admin mode enabled7115 has no effect on header links7116 when the user cannot read cross project7117 does not contain cross project elements when the user cannot read cross project7118 shows the search box when the user cannot read cross project and they are visiting a project7119 when the user is not logged in7120 returns only the sign in and search when the user is not logged in7121 .admin_monitoring_nav_links7122 is expected to all be a kind of String7123 #page_has_markdown?7124 path: "merge_requests#show"7125 is expected to eq true7126 path: "projects/merge_requests/conflicts#show"7127 is expected to eq true7128 path: "issues#show"7129 is expected to eq true7130 path: "milestones#show"7131 is expected to eq true7132 path: "issues#designs"7133 is expected to eq true7134ResourceStateEventFinder7135 #execute7136 returns events accessible by user7137 when issues are private7138 does not return any events7139 when issue is not accesible to the user7140 does not return any events7141 #can_read_eventable?7142 when eventable is an Issue7143 when issue is readable7144 is expected to be truthy7145 when issue is not readable7146 is expected to be falsey7147 when eventable is a MergeRequest7148 when merge request is readable7149 is expected to be truthy7150 when merge request is not readable7151 is expected to be falsey7152Banzai::Filter::TableOfContentsFilter7153 does nothing when :no_header_anchors is truthy7154 does nothing with empty headers7155 processes h1 elements7156 processes h2 elements7157 processes h3 elements7158 processes h4 elements7159 processes h5 elements7160 processes h6 elements7161 anchor tag7162 has an `anchor` class7163 has a namespaced id7164 links to the non-namespaced id7165 generated IDs7166 translates spaces to dashes7167 squeezes multiple spaces and dashes7168 removes punctuation7169 removes any leading or trailing spaces7170 removes a product suffix7171 appends a unique number to duplicates7172 prepends a prefix to digits-only ids7173 supports Unicode7174 limits header href length with 255 characters7175 result7176 is contained within a `ul` element7177 contains an `li` element for each header7178 table of contents nesting7179 keeps list levels regarding header levels7180 header text contains escaped content7181 outputs escaped content7182Boards::Lists::DestroyService7183 #execute7184 when board parent is a project7185 behaves like lists destroy service7186 does not remove list from board when list type is closed7187 when list type is label7188 removes list from board7189 decrements position of higher lists7190 when board parent is a group7191 behaves like lists destroy service7192 does not remove list from board when list type is closed7193 when list type is label7194 removes list from board7195 decrements position of higher lists7196Users::CalloutsHelper7197 .show_gke_cluster_integration_callout?7198 when user can create a cluster7199 when user has not dismissed7200 when active_nav_link is in the operations section7201 is expected to equal true7202 when active_nav_link is not in the operations section7203 is expected to equal false7204 when user dismissed7205 is expected to equal false7206 when user can not create a cluster7207 is expected to equal false7208 .render_flash_user_callout7209 renders the flash_user_callout partial7210 .show_feature_flags_new_version?7211 when the feature flags new version info has not been dismissed7212 is expected to be truthy7213 when the feature flags new version has been dismissed7214 is expected to be falsy7215 .show_registration_enabled_user_callout?7216 when on gitlab.com7217 is expected to equal false7218 when `current_user` is not an admin7219 is expected to equal false7220 when signup is disabled7221 is expected to equal false7222 when user has dismissed callout7223 is expected to equal false7224 when controller path is not allowed7225 is expected to equal false7226 when not gitlab.com, `current_user` is an admin, signup is enabled, user has not dismissed callout, and controller path is allowed7227 is expected to equal true7228 .show_unfinished_tag_cleanup_callout?7229 when user has not dismissed7230 is expected to equal true7231 when user dismissed7232 is expected to equal false7233 .show_security_newsletter_user_callout?7234 when `current_user` is not an admin7235 is expected to equal false7236 when user has dismissed callout7237 is expected to equal false7238 when `current_user` is an admin and user has not dismissed callout7239 is expected to equal true7240ProjectFeaturesCompatibility7241 converts fields from 'true' to ProjectFeature::ENABLED7242 converts fields from 'false' to ProjectFeature::DISABLED7243 converts fields from true to ProjectFeature::ENABLED7244 converts fields from false to ProjectFeature::DISABLED7245 access levels7246 access_level: "disabled", expected_result: 07247 accepts access level7248 access_level: "private", expected_result: 107249 accepts access level7250 access_level: "enabled", expected_result: 207251 accepts access level7252 access_level: "public", expected_result: 307253 accepts access level7254Gitlab::Database::BackgroundMigration::PrometheusMetrics7255 #track7256 reports batch_size7257 reports sub_batch_size7258 reports interval7259 reports job duration7260 increments updated tuples (currently based on batch_size)7261 reports migrated tuples7262 reports the total tuple count for the migration7263 reports last updated at timestamp7264 reports summary of query timings7265 when the tracking record does not having timing metrics7266 does not attempt to report query timings7267NewMergeRequestWorker7268 #perform7269 when a merge request not found7270 does not call Services7271 logs an error7272 when a user not found7273 does not call Services7274 logs an error7275 with a user7276 when the merge request author is blocked7277 behaves like a new merge request where the author cannot trigger notifications7278 does not create a notification for the mentioned user7279 when the merge request author is a ghost7280 behaves like a new merge request where the author cannot trigger notifications7281 does not create a notification for the mentioned user7282 when everything is ok7283 creates a new event record7284 creates a notification for the mentioned user7285MergeRequests::RequestReviewService7286 #execute7287 invalid permissions7288 returns an error7289 reviewer does not exist7290 returns an error7291 reviewer exists7292 returns success7293 updates reviewers state7294 sends email to reviewer7295 creates a new todo for the reviewer7296Admin::UserActionsHelper7297 #admin_actions7298 the user is a bot7299 is expected to be empty7300 the current user and user are the same7301 is expected to contain exactly "edit"7302 the user is a standard user7303 is expected to contain exactly "edit", "block", "ban", "deactivate", "delete", and "delete_with_contributions"7304 the user is an admin user7305 is expected to contain exactly "edit", "block", "ban", "deactivate", "delete", and "delete_with_contributions"7306 the user is blocked by LDAP7307 is expected to contain exactly "edit", "ldap", "delete", and "delete_with_contributions"7308 the user is blocked pending approval7309 is expected to contain exactly "edit", "approve", and "reject"7310 the user is blocked7311 is expected to contain exactly "edit", "unblock", "delete", and "delete_with_contributions"7312 the user is deactivated7313 is expected to contain exactly "edit", "block", "ban", "activate", "delete", and "delete_with_contributions"7314 the user is locked7315 is expected to contain exactly "edit", "block", "ban", "deactivate", "unlock", "delete", and "delete_with_contributions"7316 the user is banned7317 is expected to contain exactly "edit", "unban", "delete", and "delete_with_contributions"7318 the current_user does not have permission to delete the user7319 is expected to contain exactly "edit", "block", "ban", and "deactivate"7320 the user is a sole owner of a group7321DEPRECATION WARNING: Merging ("members"."access_level" != $1) and ("members"."access_level" = $1) no longer maintain both conditions, and will be replaced by the latter in Rails 6.2. To migrate to Rails 6.2's behavior, use `relation.merge(other, rewhere: true)`. (called from solo_owned_groups at /builds/gitlab-org/gitlab/app/models/user.rb:1367)7322 is expected to contain exactly "edit", "block", "ban", "deactivate", and "delete_with_contributions"7323 the user is a bot7324 is expected to contain exactly7325 when `ban_user_feature_flag` is disabled7326 the user is a standard user7327 is expected not to include "ban"7328 the user is banned7329 is expected not to include "unban"7330Gitlab::Ci::Config::Entry::Include7331 validations7332 when value is a string7333 is expected to be valid7334 when value is hash7335 when using not allowed keys7336 is expected not to be valid7337 when using "local"7338 is expected to be valid7339 when using "file"7340 is expected to be valid7341 when using "template"7342 is expected to be valid7343 when using "artifact"7344 and specifying "job"7345 is expected to be valid7346 without "job"7347 is expected not to be valid7348 has specific error7349 when using "project"7350 and specifying "ref" and "file"7351 is expected to be valid7352 without "ref"7353 is expected to be valid7354 without "file"7355 is expected not to be valid7356 has specific error7357 when using with "rules"7358 is expected to be valid7359 when rules is not an array of hashes7360 is expected not to be valid7361 has specific error7362 when value is something else7363 is expected not to be valid7364 #value7365 when config is a string7366 is expected to eq "test.yml"7367 when config is a hash7368 is expected to eq {:local=>"test.yml"}7369 when config has "rules"7370 is expected to eq {:local=>"test.yml", :rules=>[{:if=>"$VARIABLE"}]}7371Gitlab::ImportExport::AttributesFinder7372 #find_root7373 generates hash from project tree config7374 individual scenarios7375 generates the correct hash for a single project relation7376 generates the correct hash for a single project feature relation7377 generates the correct hash for a multiple project relation7378 generates the correct hash for a single sub-relation7379 generates the correct hash for a multiple sub-relation7380 generates the correct hash for a sub-relation with another sub-relation7381 generates the correct hash for a relation with included attributes7382 generates the correct hash for a relation with excluded attributes7383 generates the correct hash for a relation with both excluded and included attributes7384 generates the correct hash for a relation with custom methods7385 #find_relations_tree7386 when initialized with config including tree7387 when relation is in top-level keys of the tree7388 is expected to eq {:issues=>{}}7389 when the relation is not in top-level keys7390 is expected to be nil7391 when tree is not present in config7392 is expected to be nil7393 #find_excluded_keys7394 when initialized with excluded_attributes7395 is expected to eq ["name", "path"]7396 when excluded_attributes are not present in config7397 is expected to eq []7398Gitlab::Patch::Prependable7399 a class including a concern prepending a concern7400 returns values from prepended module ee7401 has the expected ancestors7402 prepends only once even if called twice7403 overriding methods7404 returns values from the class7405 a class prepending a concern prepending a concern7406 returns values from prepended module ee7407 has the expected ancestors7408 prepends only once7409 a class prepending a concern7410 returns values from prepended module ee7411 has the expected ancestors7412 prepends only once7413 simple case7414 class methods7415 has a method7416 can execute a method7417 instance methods7418 has a method7419 chains a method execution7420 having two prepended blocks7421 raises an error7422 the extra hack for override verification7423 when ENV["STATIC_VERIFICATION"] is not defined7424 does not extend ClassMethods onto the defining module7425 when ENV["STATIC_VERIFICATION"] is defined7426 does extend ClassMethods onto the defining module7427RuboCop::Cop::Migration::SaferBooleanColumn7428 in migration7429 registers no offense for tables not listed in SMALL_TABLES7430 registers no offense for non-boolean columns7431 for the application_settings table7432 given the source "add_column :application_settings, :column, :boolean, default: true"7433 registers the offense matching "should disallow nulls"7434 given the source "add_column :application_settings, :column, :boolean, default: false"7435 registers the offense matching "should disallow nulls"7436 given the source "add_column :application_settings, :column, :boolean, default: nil"7437 registers the offense matching "should have a default and should disallow nulls"7438 given the source "add_column :application_settings, :column, :boolean, null: false"7439 registers the offense matching "should have a default"7440 given the source "add_column :application_settings, :column, :boolean, null: true"7441 registers the offense matching "should have a default and should disallow nulls"7442 given the source "add_column :application_settings, :column, :boolean"7443 registers the offense matching "should have a default and should disallow nulls"7444 given the source "add_column :application_settings, :column, :boolean, default: nil, null: false"7445 registers the offense matching "should have a default"7446 given the source "add_column :application_settings, :column, :boolean, default: nil, null: true"7447 registers the offense matching "should have a default and should disallow nulls"7448 given the source "add_column :application_settings, :column, :boolean, default: false, null: true"7449 registers the offense matching "should disallow nulls"7450 given the source "add_column :application_settings, :column, :boolean, default: true, null: false"7451 registers no offense7452 given the source "add_column :application_settings, :column, :boolean, default: false, null: false"7453 registers no offense7454 for the plan_limits table7455 given the source "add_column :plan_limits, :column, :boolean, default: true"7456 registers the offense matching "should disallow nulls"7457 given the source "add_column :plan_limits, :column, :boolean, default: false"7458 registers the offense matching "should disallow nulls"7459 given the source "add_column :plan_limits, :column, :boolean, default: nil"7460 registers the offense matching "should have a default and should disallow nulls"7461 given the source "add_column :plan_limits, :column, :boolean, null: false"7462 registers the offense matching "should have a default"7463 given the source "add_column :plan_limits, :column, :boolean, null: true"7464 registers the offense matching "should have a default and should disallow nulls"7465 given the source "add_column :plan_limits, :column, :boolean"7466 registers the offense matching "should have a default and should disallow nulls"7467 given the source "add_column :plan_limits, :column, :boolean, default: nil, null: false"7468 registers the offense matching "should have a default"7469 given the source "add_column :plan_limits, :column, :boolean, default: nil, null: true"7470 registers the offense matching "should have a default and should disallow nulls"7471 given the source "add_column :plan_limits, :column, :boolean, default: false, null: true"7472 registers the offense matching "should disallow nulls"7473 given the source "add_column :plan_limits, :column, :boolean, default: true, null: false"7474 registers no offense7475 given the source "add_column :plan_limits, :column, :boolean, default: false, null: false"7476 registers no offense7477 outside of migration7478 registers no offense7479Banzai::ReferenceParser::FeatureFlagParser7480 #nodes_visible_to_user7481 when the link has a data-issue attribute7482 behaves like referenced feature visibility7483 when feature is disabled7484 does not create reference7485 when feature is enabled only for team members7486 does not create reference for non member7487 creates reference for member7488 when feature is enabled7489 creates reference7490 #referenced_by7491 when the link has a data-feature-flag attribute7492 using an existing feature flag ID7493 returns an Array of feature flags7494 using a non-existing feature flag ID7495 returns an empty Array7496Packages::Debian::GenerateDistributionKeyService7497 returns an Hash7498Users::DeactivateDormantUsersWorker7499 #perform7500 does not run for GitLab.com7501 when automatic deactivation of dormant users is enabled7502 deactivates dormant users7503 does not deactivate non-active users7504 user_type: :human, expected_state: "deactivated"7505 deactivates certain user types7506 user_type: :support_bot, expected_state: "active"7507 deactivates certain user types7508 user_type: :alert_bot, expected_state: "active"7509 deactivates certain user types7510 user_type: :visual_review_bot, expected_state: "active"7511 deactivates certain user types7512 user_type: :service_user, expected_state: "deactivated"7513 deactivates certain user types7514 user_type: :ghost, expected_state: "active"7515 deactivates certain user types7516 user_type: :project_bot, expected_state: "active"7517 deactivates certain user types7518 user_type: :migration_bot, expected_state: "active"7519 deactivates certain user types7520 user_type: :security_bot, expected_state: "active"7521 deactivates certain user types7522 user_type: :automation_bot, expected_state: "active"7523 deactivates certain user types7524 when automatic deactivation of dormant users is disabled7525 does nothing7526Security::LicenseComplianceJobsFinder7527 behaves like Security::JobsFinder7528 #new7529 does not get initialized for unsupported job types7530 #execute7531 behaves like JobsFinder core functionality7532 when the pipeline has no jobs7533 is expected to be empty7534 when the pipeline has no Secure jobs7535 is expected to be empty7536 when the pipeline only has jobs without report artifacts7537 is expected to be empty7538 when the pipeline only has jobs with reports unrelated to Secure products7539 is expected to be empty7540 when the pipeline only has jobs with reports with paths similar but not identical to Secure reports7541 is expected to be empty7542 when there is more than one pipeline7543 returns jobs associated with provided pipeline7544 #execute7545 returns only the license_scanning job7546SystemCheck::SimpleExecutor7547 #component7548 returns stored component name7549 #checks7550 returns a set of classes7551 #<<7552 appends a new check to the Set7553 inserts unique itens only7554 errors out when passing multiple items7555 #execute7556 runs included checks7557 #run_check7558 prints check name7559 when check pass7560 prints yes7561 when check fails7562 prints no7563 displays error message from #show_error7564 when check implements #repair!7565 executes #repair!7566 when repair succeeds7567 does not execute #show_error7568 when repair fails7569 does not execute #show_error7570 when check implements skip?7571 executes #skip? method7572 displays .skip_reason7573 displays #skip_reason7574 does not execute #check when #skip? is true7575 when implements a #multi_check7576 executes #multi_check method7577 does not execute #check method7578 when check implements #skip?7579 executes #skip? method7580 when there is an exception7581 rescues the exception7582Gitlab::Ci::Pipeline::Expression::Lexeme::Matches7583 .build7584 with non-evaluable operands7585 creates a new instance of the token7586 with evaluable operands7587 creates a new instance of the token7588 .type7589 is an operator7590 .precedence7591 has a precedence7592 #evaluate7593 when left and right do not match7594 is expected to eq false7595 when left and right match7596 is expected to eq true7597 when left is nil7598 is expected to eq false7599 when right is nil7600 is expected to eq false7601 when left and right are nil7602 is expected to eq false7603 when left is an empty string7604 is expected to eq false7605 when left and right are empty strings7606 is expected to eq true7607 when left is a multiline string and matches right7608 is expected to eq true7609 when left is a multiline string and does not match right7610 is expected to eq false7611 when a matching pattern uses regex flags7612 is expected to eq true7613 when a non-matching pattern uses regex flags7614 is expected to eq false7615Resolvers::LabelsResolver7616 is expected to have nullable GraphQL type LabelConnection7617 #resolve7618 with unauthorized user7619 returns no labels7620 with authorized user7621 returns no labels7622 without parent7623 returns no labels7624 with a parent project7625 include_ancestor_groups: nil, search_term: nil, expected_labels: -> { [label1, label2, subgroup_label1, subgroup_label2] }7626 is expected to contain exactly #<ProjectLabel id:47 group106/group107/project1025~47>, #<ProjectLabel id:48 group106/group107/project1025~48>, #<GroupLabel id:51 ~51>, and #<GroupLabel id:52 ~52>7627 include_ancestor_groups: false, search_term: nil, expected_labels: -> { [label1, label2, subgroup_label1, subgroup_label2] }7628 is expected to contain exactly #<ProjectLabel id:47 group106/group107/project1025~47>, #<ProjectLabel id:48 group106/group107/project1025~48>, #<GroupLabel id:51 ~51>, and #<GroupLabel id:52 ~52>7629 include_ancestor_groups: true, search_term: nil, expected_labels: -> { [label1, label2, group_label1, group_label2, subgroup_label1, subgroup_label2] }7630 is expected to contain exactly #<ProjectLabel id:47 group106/group107/project1025~47>, #<ProjectLabel id:48 group106/group107/project1025~48>, #<GroupLabel id:49 ~49>, #<GroupLabel id:50 ~50>, #<GroupLabel id:51 ~51>, and #<GroupLabel id:52 ~52>7631 include_ancestor_groups: nil, search_term: "new", expected_labels: -> { [label2, subgroup_label2] }7632 is expected to contain exactly #<ProjectLabel id:48 group106/group107/project1025~48> and #<GroupLabel id:52 ~52>7633 include_ancestor_groups: false, search_term: "new", expected_labels: -> { [label2, subgroup_label2] }7634 is expected to contain exactly #<ProjectLabel id:48 group106/group107/project1025~48> and #<GroupLabel id:52 ~52>7635 include_ancestor_groups: true, search_term: "new", expected_labels: -> { [label2, group_label2, subgroup_label2] }7636 is expected to contain exactly #<ProjectLabel id:48 group106/group107/project1025~48>, #<GroupLabel id:50 ~50>, and #<GroupLabel id:52 ~52>7637BitbucketServer::Connection7638 #get7639 returns JSON body7640 throws an exception if the response is not 2007641 throws an exception if the response is not JSON7642 throws an exception upon a network error7643 #post7644 returns JSON body7645 throws an exception if the response is not 2007646 throws an exception upon a network error7647 #delete7648 branch API7649 returns JSON body7650 throws an exception if the response is not 2007651 throws an exception upon a network error7652Types::BaseObject7653 scoping items7654 paginates arrays correctly7655 filters connections correctly7656 filters polymorphic connections7657 filters interface connections7658 redacts polymorphic objects7659 paginates before scoping7660 a lazy list7661 behaves like array member redaction7662 redacts the unauthorized array member7663 a list of lazy items7664 behaves like array member redaction7665 redacts the unauthorized array member7666 an array connection of items7667 behaves like array member redaction7668 redacts the unauthorized array member7669 an array connection of items, selecting edges7670 behaves like array member redaction7671 redacts the unauthorized array member7672 .authorize7673 keeps track of the specified value7674 can not redefine the authorize value7675gitlab:git rake tasks7676 fsck7677 outputs the integrity check for a repo7678 checksum_projects7679 outputs the checksum for a repo7680 outputs blank checksum for no repo7681 outputs zeroes for empty repo7682 outputs errors7683Gitlab::Checks::LfsIntegrity7684 #objects_missing?7685 with LFS not enabled7686 skips integrity check7687 with LFS enabled7688 is true if any LFS blobs are missing7689 is false if LFS objects have already been uploaded7690 nil rev7691 skips integrity check7692 deletion7693 skips integrity check7694 no changes7695 skips integrity check7696ProtectedBranches::CreateService7697 #execute7698 creates a new protected branch7699 when protecting a branch with a name that contains HTML tags7700 creates a new protected branch7701 when user does not have permission7702 creates a new protected branch if we skip authorization step7703 raises Gitlab::Access:AccessDeniedError7704 when a policy restricts rule creation7705 prevents creation of the protected branch rule7706Gitlab::UrlBlockers::UrlAllowlist7707 #domain_allowed?7708 returns true if domains present in allowlist7709 returns false when domain is blank7710 with ports7711 returns true if domain and ports present in allowlist7712 #ip_allowed?7713 returns true if ips present in allowlist7714 returns false when ip is blank7715 with ip ranges in allowlist7716 does not allowlist ipv4 range when not in allowlist7717 allowlists all ipv4s in the range when in allowlist7718 does not allowlist ipv6 range when not in allowlist7719 allowlists all ipv6s in the range when in allowlist7720 does not allowlist IPs outside the range7721 with ports7722 returns true if ip and ports present in allowlist7723Gitlab::Doctor::Secrets7724 when encrypted attributes are properly set7725 detects decryptable secrets7726 when attr_encrypted values are not decrypting7727 marks undecryptable values as bad7728 when TokenAuthenticatable values are not decrypting7729 marks undecryptable values as bad7730 when GrafanaIntegration token is set via private method7731 can access GrafanaIntegration token value7732Integrations::MockCi7733 accessors7734 is expected to respond to #enable_ssl_verification7735 is expected to respond to #enable_ssl_verification?7736 #initialize_properties7737 enables the setting by default7738 does not enable the setting if the record is already persisted7739 does not enable the setting if a custom value was set7740 #fields7741 inserts the checkbox field after the first URL field, or at the end7742 #commit_status7743 returns allowed states7744 returns :pending for 404 responses7745 returns :error for responses other than 200 or 4047746 returns :error for unknown states7747 returns :error for invalid JSON7748 returns :error for non-hash JSON responses7749 returns :error for JSON responses without a status7750 returns :error when connection is refused7751Packages::SemVer7752 #parse7753 behaves like #parse with a valid semver7754 with 1.0.07755 returns v1.0.0 with prefix7756 returns 1.0.0 without prefix7757 behaves like #parse with a valid semver7758 with 1.0.0-pre7759 returns v1.0.0-pre with prefix7760 returns 1.0.0-pre without prefix7761 behaves like #parse with a valid semver7762 with 1.0.0+build7763 returns v1.0.0+build with prefix7764 returns 1.0.0+build without prefix7765 behaves like #parse with a valid semver7766 with 1.0.0-pre+build7767 returns v1.0.0-pre+build with prefix7768 returns 1.0.0-pre+build without prefix7769 behaves like #parse with an invalid semver7770 with 01.0.07771 returns nil with prefix7772 returns nil without prefix7773 behaves like #parse with an invalid semver7774 with 0.01.07775 returns nil with prefix7776 returns nil without prefix7777 behaves like #parse with an invalid semver7778 with 0.0.017779 returns nil with prefix7780 returns nil without prefix7781 behaves like #parse with an invalid semver7782 with 1.0.0asdf7783 returns nil with prefix7784 returns nil without prefix7785Analytics::UsageTrends::Measurement7786 validation7787 is expected to validate that :recorded_at cannot be empty/falsy7788 is expected to validate that :identifier cannot be empty/falsy7789 is expected to validate that :count cannot be empty/falsy7790 is expected to validate that :recorded_at is case-sensitively unique within the scope of :identifier7791 identifiers enum7792 maps to the correct values7793 scopes7794 .order_by_latest7795 is expected to eq [#<Analytics::UsageTrends::Measurement id: 6, count: 1000, recorded_at: "2022-04-26 17:17:06.69883307...ent id: 5, count: 1000, recorded_at: "2022-04-18 17:17:06.690773389 +0000", identifier: "projects">]7796 .with_identifier7797 is expected to contain exactly #<Analytics::UsageTrends::Measurement id: 5, count: 1000, recorded_at: "2022-04-18 17:17:06.690773389 +0000", identifier: "projects"> and #<Analytics::UsageTrends::Measurement id: 6, count: 1000, recorded_at: "2022-04-26 17:17:06.698833079 +0000", identifier: "projects">7798 .recorded_after7799 is expected to contain exactly #<Analytics::UsageTrends::Measurement id: 6, count: 1000, recorded_at: "2022-04-26 17:17:06.698833079 +0000", identifier: "projects"> and #<Analytics::UsageTrends::Measurement id: 7, count: 1000, recorded_at: "2022-04-23 17:17:06.704648598 +0000", identifier: "groups">7800 when nil is given7801 does not apply filtering7802 .recorded_before7803 is expected to contain exactly #<Analytics::UsageTrends::Measurement id: 5, count: 1000, recorded_at: "2022-04-18 17:17:06.690773389 +0000", identifier: "projects"> and #<Analytics::UsageTrends::Measurement id: 7, count: 1000, recorded_at: "2022-04-23 17:17:06.704648598 +0000", identifier: "groups">7804 when nil is given7805 does not apply filtering7806 .identifier_query_mapping7807 is expected to be a kind of Hash7808 .identifier_min_max_queries7809 is expected to be a kind of Hash7810 .measurement_identifier_values7811 is expected to eq 117812 .find_latest_or_fallback7813 with usage statistics7814 returns the latest stored measurement7815 without usage statistics7816 returns the realtime query of the measurement7817IncidentManagement::PagerDuty::CreateIncidentIssueService7818 #execute7819 when PagerDuty webhook setting is active7820 when issue can be created7821 creates a new issue7822 responds with success7823 the issue author is Alert bot7824 issue has a correct title7825 issue has a correct description7826 when the payload does not contain a title7827 does not create a GitLab issue7828 responds with error7829 when PagerDuty webhook setting is not active7830 does not create a GitLab issue7831 responds with forbidden7832BulkImportWorker7833 #perform7834 when no bulk import is found7835 does nothing7836 when bulk import is finished7837 does nothing7838 when bulk import is failed7839 does nothing7840 when all entities are processed7841 marks bulk import as finished7842 when all entities are failed7843 marks bulk import as failed7844 when bulk import is created7845 marks bulk import as started7846 creates all the required pipeline trackers7847 when there are created entities to process7848 marks all entities as started, enqueues EntityWorker, ExportRequestWorker and reenqueues7849 when there are project entities to process7850 enqueues ExportRequestWorker7851 when exception occurs7852 tracks the exception & marks import as failed7853Gitlab::Ci::Status::Build::FailedAllowed7854 #text7855 does not override status text7856 #icon7857 returns a warning icon7858 #label7859 returns information about failed but allowed to fail status7860 #group7861 returns status failed with warnings status group7862 action details7863 #has_action?7864 does not decorate action details7865 #action_path7866 does not decorate action path7867 #action_icon7868 does not decorate action icon7869 #action_title7870 does not decorate action title7871 #badge_tooltip7872 does override badge_tooltip7873 #status_tooltip7874 does override status_tooltip7875 .matches?7876 when build is failed7877 when build is allowed to fail7878 is a correct match7879 when build is not allowed to fail7880 is not a correct match7881 when build did not fail7882 when build is allowed to fail7883 is not a correct match7884 when build is not allowed to fail7885 is not a correct match7886DiffFileMetadataEntity7887 as json7888 exposes the expected fields7889 behaves like diff file with conflict_type7890 #conflict_type7891 returns nil by default7892 when there is matching conflict file7893 returns false7894Gitlab::Ci::Build::Rules::Rule7895 #matches?7896 with one matching clause7897 is expected to eq true7898 with two matching clauses7899 is expected to eq true7900 with a matching and non-matching clause7901 is expected to eq false7902 with two non-matching clauses7903 is expected to eq false7904ResourceMilestoneEventFinder7905 #execute7906 returns events with milestones accessible by user7907 filters events with public project milestones if issues and MRs are private7908 filters events with project milestones not accessible by user7909 filters events with group milestones not accessible by user7910 when multiple events share the same milestone7911 avoids N+1 queries7912DesignManagement::DesignsFinder7913 #execute7914 when user can not read designs of an issue7915 returns no results7916 when user can read designs of an issue7917 when design management feature is disabled7918 returns no results7919 when design management feature is enabled7920 returns the designs sorted by their relative position7921 when argument is the ids of designs7922 is expected to eq [#<DesignManagement::Design id:428 namespace1059/project1066#1/designs[homescreen-444.jpg]>]7923 when argument is the filenames of designs7924 is expected to eq [#<DesignManagement::Design id:429 namespace1059/project1066#1/designs[homescreen-445.jpg]>]7925 when passed empty array7926 for filenames7927 is expected to be empty7928 for ids7929 is expected to be empty7930 returning designs that existed at a particular given version7931 when argument is the first version7932 is expected to eq [#<DesignManagement::Design id:428 namespace1059/project1066#1/designs[homescreen-444.jpg]>]7933 when arguments are version and id7934 when id is absent at version7935 is expected to eq []7936 when id is present at version7937 is expected to eq [#<DesignManagement::Design id:429 namespace1059/project1066#1/designs[homescreen-445.jpg]>]7938 when argument is the second version7939 is expected to contain exactly #<DesignManagement::Design id:428 namespace1059/project1066#1/designs[homescreen-444.jpg]> and #<DesignManagement::Design id:429 namespace1059/project1066#1/designs[homescreen-445.jpg]>7940IosSpecificTemplatesExperiment7941 is expected to equal true7942 skipping the experiment7943 no actor7944 is expected to be falsey7945 actor cannot create pipelines7946 is expected to be falsey7947 targeting a non iOS platform7948 is expected to be falsey7949 project has a ci.yaml file7950 is expected to be falsey7951 project has pipelines7952 is expected to be falsey7953Preloaders::UserMaxAccessLevelInGroupsPreloader7954 when the preloader is used7955 when user has indirect access to groups7956 when traversal_ids feature flag is disabled7957 behaves like executes N max member permission queries to the DB7958 executes the specified max membership queries7959 caches the correct access_level for each group7960 when traversal_ids feature flag is enabled7961 behaves like executes N max member permission queries to the DB7962 executes the specified max membership queries7963 caches the correct access_level for each group7964 when the preloader is not used7965 behaves like executes N max member permission queries to the DB7966 executes the specified max membership queries7967 caches the correct access_level for each group7968Gitlab::ImportExport::UploadsRestorer7969 bundle a project Git repo7970 legacy storage7971 saves the uploads successfully7972 copies the uploads to the project path7973 hashed storage7974 saves the uploads successfully7975 copies the uploads to the project path7976Gitlab::WordDiff::Segments::DiffHunk7977 #pos_old7978 is expected to eq 37979 when diff hunk is broken7980 is expected to eq 07981 #pos_new7982 is expected to eq 47983 when diff hunk is broken7984 is expected to eq 07985 #first_line?7986 is expected to be falsey7987 when diff hunk located on the first line7988 is expected to be truthy7989 #to_s7990 is expected to eq "@@ -3,14 +4,13 @@"7991BlobViewer::Base7992 .can_render?7993 when the extension is supported7994 when the binaryness matches7995 returns true7996 when the binaryness does not match7997 returns false7998 when the file type is supported7999 when the binaryness matches8000 returns true8001 when the binaryness does not match8002 returns false8003 when the extension and file type are not supported8004 returns false8005 #collapsed?8006 when the blob size is larger than the collapse limit8007 returns true8008 when the blob size is smaller than the collapse limit8009 returns false8010 #too_large?8011 when the blob size is larger than the size limit8012 returns true8013 when the blob size is smaller than the size limit8014 returns false8015 #render_error8016 when the blob is expanded8017 when the blob size is larger than the size limit8018 returns :too_large8019 when the blob size is smaller than the size limit8020 returns nil8021 when not expanded8022 when the blob size is larger than the collapse limit8023 returns :collapsed8024 when the blob size is smaller than the collapse limit8025 returns nil8026Sidebars::Panel8027 #renderable_menus8028 returns only renderable menus8029 #has_renderable_menus?8030 returns false when no renderable menus8031 returns true when no renderable menus8032 #add_element8033 adds the element to the last position of the list8034 does not add nil elements8035 #insert_element_before8036 adds element before the specific element class8037 does not add nil elements8038 when reference element does not exist8039 adds the element to the top of the list8040 #insert_element_after8041 adds element after the specific element class8042 does not add nil elements8043 when reference element does not exist8044 adds the element to the end of the list8045 #replace_element8046 replace existing element in the list8047 does not add nil elements8048 does not add the element if the other element is not found8049Mutations::Clusters::AgentTokens::Create8050 is expected to require graphql authorizations :create_cluster8051 #resolve8052 without token permissions8053 raises an error if the resource is not accessible to the user8054 with user permissions8055 creates a new token8056 returns token information8057 invalid params8058 generates an error message when id invalid8059Prometheus::ProxyService8060 configuration8061 ReactiveCaching refresh is not needed8062 #initialize8063 initializes attributes8064 converts ActionController::Parameters into hash8065 with unknown params8066 filters unknown params8067 with series method8068 allows match, start and end parameters8069 #execute8070 when prometheus_adapter is nil8071 returns error8072 when prometheus_adapter cannot query8073 returns error8074 cannot proxy8075 returns error8076 with caching8077 when value present in cache8078 returns cached value8079 when value not present in cache8080 returns nil8081 call prometheus api8082 connection to prometheus server succeeds8083 returns the http status code and body from prometheus8084 connection to prometheus server fails8085 prometheus client raises Gitlab::PrometheusClient::Error8086 returns error8087 with series API8088 calls PrometheusClient with given parameters8089 .from_cache8090 initializes an instance of ProxyService class8091layouts/_flash8092 closable flash messages8093 shows a close button8094 shows a close button8095 shows a close button8096 non closable flash messages8097 shows a close button8098 shows a close button8099 shows a close button8100 shows a close button8101Boards::Visits::CreateService8102 #execute8103 when a project board8104 behaves like boards recent visit create service8105 returns nil when there is no user8106 returns nil when database is read only8107 records the visit8108 when a group board8109 behaves like boards recent visit create service8110 returns nil when there is no user8111 returns nil when database is read only8112 records the visit8113Preloaders::Environments::DeploymentPreloader8114 does not trigger N+1 queries8115 batch loads the dependent associations8116 avoids scoping with IN clause during preload8117 sets environment on the associated deployment8118 does not attempt to set environment on a nil deployment8119clearing redis cache8120 clearing pipeline status cache8121 clears pipeline status cache8122 behaves like clears the cache8123 is expected to change `redis_keys.size` by -18124 clearing set caches8125 repository set8126 behaves like clears the cache8127 is expected to change `redis_keys.size` by -18128 reactive cache set8129 behaves like clears the cache8130 is expected to change `redis_keys.size` by -18131AuthorizedProjectUpdate::ProjectRecalculatePerUserWorker8132 is labeled as idempotent8133 performs multiple times sequentially without raising an exception8134 does not change authorizations when run twice8135 #perform8136 does not fail if the project does not exist8137 does not fail if the user does not exist8138 calls AuthorizedProjectUpdate::ProjectRecalculatePerUserService8139 exclusive lease8140 when exclusive lease has not been taken8141 obtains a new exclusive lease8142 when exclusive lease has already been taken8143 raises an error8144Mutations::AlertManagement::PrometheusIntegration::Update8145 is expected to require graphql authorizations :admin_project8146 #resolve8147 user has sufficient access to project8148 when ::Projects::Operations::UpdateService responds with success8149 returns the integration with no errors8150 when ::Projects::Operations::UpdateService responds with an error8151 returns errors8152 when resource is not accessible to the user8153 raises an error if the resource is not accessible to the user8154Packages::CleanupPackageFileWorker8155 #perform_work8156 with no work to do8157 is expected to be nil8158 with work to do8159 deletes the oldest package file pending destruction based on id8160 with a duplicated PyPI package file8161 deletes one of the duplicates8162 with a package file to destroy8163 with an error during the destroy8164 handles the error8165 when trying to destroy a destroyed record8166 handles the error8167 removing the last package file8168 deletes the package file and the package8169 #max_running_jobs8170 is expected to eq 58171 #remaining_work_count8172 is expected to eq 28173Ci::PendingBuilds::UpdateProjectWorker8174 #perform8175 when a project is not provided8176 does not call the service8177 when everything is ok8178 calls the service8179 is labeled as idempotent8180 performs multiple times sequentially without raising an exception8181 updates the pending builds8182projects/notes/_more_actions_dropdown8183 shows Report abuse to admin button if not editable and not current users comment8184 does not show the More actions button if not editable and current users comment8185 shows Report abuse to admin and Delete buttons if editable and not current users comment8186 shows Delete button if editable and current users comment8187Ci::PipelineSchedulePolicy8188 rules8189 rules for protected ref8190 when no one can push or merge to the branch8191 does not include ability to play pipeline schedule8192 when developers can push to the branch8193 includes ability to update pipeline8194 when no one can create the tag8195 does not include ability to play pipeline schedule8196 when no one can create the tag but it is not a tag8197 includes ability to play pipeline schedule8198 rules for owner of schedule8199 includes abilities to do all operations on pipeline schedule8200 rules for a maintainer8201 includes abilities to do all operations on pipeline schedule8202 rules for non-owner of schedule8203 includes abilities to take ownership8204Projects::Members::EffectiveAccessLevelPerUserFinder#execute8205 a combination of all possible avenues of membership8206 includes the highest access level from all avenues of memberships for the specific user alone8207JiraImport::UsersImporter8208 #execute8209 when Jira import is not configured properly8210 returns an error8211 when Jira instance is of Server deployment type8212 behaves like maps Jira users to GitLab users8213 when Jira import is configured correctly8214 when users mapper service raises an error8215 returns an error response8216 when users mapper service returns result8217 when users mapper service returns an empty array8218 returns nil payload8219 when Jira client returns any users8220 returns the mapped users8221 when Jira instance is of Cloud deployment type8222 behaves like maps Jira users to GitLab users8223 when Jira import is configured correctly8224 when users mapper service raises an error8225 returns an error response8226 when users mapper service returns result8227 when users mapper service returns an empty array8228 returns nil payload8229 when Jira client returns any users8230 returns the mapped users8231Gitlab::IssuablesCountForState8232 project given8233 provides the project8234 .declarative_policy_class8235 is expected to eq "IssuablePolicy"8236 #for_state_or_opened8237 returns the number of issuables for the given state8238 returns the number of open issuables when no state is given8239 returns the number of open issuables when a nil value is given8240 #[]8241 returns the number of issuables for the given state8242 casts valid states from Strings to Symbols8243 returns 0 when using an invalid state name as a String8244 fast_fail enabled8245 returns the expected value8246 returns -1 when the database times out8247 when store_in_redis_cache is `true`8248 with Issues8249 returns -1 for the requested state8250 when parent group is not present8251 behaves like calculating counts without caching8252 does not store in redis store8253 when params include search filters8254 behaves like calculating counts without caching8255 does not store in redis store8256 when counts are stored in cache8257 does not call finder count_by_state8258 when cache is empty8259 when state counts are under threshold8260 does not store state counts in cache8261 when state counts are over threshold8262 stores state counts in cache8263 with Merge Requests8264 behaves like calculating counts without caching8265 does not store in redis store8266Ci::AppendBuildTraceService8267 build trace append is successful8268 returns a correct stream size and status code8269 when could not correctly append to a trace8270 responds with content range violation and data stored8271 logs exception if build has live trace8272 when the trace size is exceeded8273 returns 403 status code8274NotificationRecipients::Builder::NewNote8275 #notification_recipients8276 for public notes8277 adds all participants, watchers and subscribers8278 for confidential notes8279 adds all participants, watchers and subscribers that are project memebrs8280Mutations::AlertManagement::PrometheusIntegration::Create8281 is expected to require graphql authorizations :admin_project8282 #resolve8283 user has access to project8284 when Prometheus Integration already exists8285 returns errors8286 when UpdateService responds with success8287 returns the integration with no errors8288 creates a corresponding token8289 when UpdateService responds with an error8290 returns errors8291 when resource is not accessible to the user8292 raises an error if the resource is not accessible to the user8293Gitlab::Database::GitlabSchema8294 .tables_to_schema8295 all tables have assigned a known gitlab_schema8296 for main using ActiveRecord::Base8297 new data sources are added8298 non-existing data sources are removed8299 for ci using Ci::ApplicationRecord8300 new data sources are added8301 non-existing data sources are removed8302 .table_schema8303 name: "ci_builds", classification: :gitlab_ci8304 is expected to eq :gitlab_ci8305 name: "my_schema.ci_builds", classification: :gitlab_ci8306 is expected to eq :gitlab_ci8307 name: "information_schema.columns", classification: :gitlab_shared8308 is expected to eq :gitlab_shared8309 name: "audit_events_part_5fc467ac26", classification: :gitlab_main8310 is expected to eq :gitlab_main8311 name: "_test_gitlab_main_table", classification: :gitlab_main8312 is expected to eq :gitlab_main8313 name: "_test_gitlab_ci_table", classification: :gitlab_ci8314 is expected to eq :gitlab_ci8315 name: "_test_my_table", classification: :gitlab_shared8316 is expected to eq :gitlab_shared8317 name: "pg_attribute", classification: :gitlab_shared8318 is expected to eq :gitlab_shared8319 name: "my_other_table", classification: :undefined_my_other_table8320 is expected to eq :undefined_my_other_table8321Gitlab::Analytics::CycleAnalytics::StageEvents::MergeRequestCreated8322 behaves like value stream analytics event8323 is expected to be a kind of String8324 is expected to be a kind of Symbol8325 is expected to include ApplicationRecord(abstract)8326 is expected to respond to #timestamp_projection8327 is expected to respond to #html_description8328 is expected to be a kind of Array8329 #apply_query_customization8330 expects an ActiveRecord::Relation object as argument and returns a modified version of it8331 #hash_code8332 returns a hash that uniquely identifies an event8333 does not differ when the same object is built with the same params8334 behaves like LEFT JOIN-able value stream analytics event8335 can use the event as LEFT JOIN8336 when looking at the record with data8337 contains the timestamp expression8338 when looking at the record without data8339 returns nil for the timestamp expression8340UsersStarProjectsFinder8341 #execute8342 as same user8343 is expected to contain exactly #<UsersStarProject id: 2, project_id: 1090, user_id: 1836, created_at: "2022-04-28 17:18:11.757711000 +0000", updated_at: "2022-04-28 17:18:11.757711000 +0000"> and #<UsersStarProject id: 1, project_id: 1090, user_id: 1834, created_at: "2022-04-28 17:18:11.631621000 +0000", updated_at: "2022-04-28 17:18:11.631621000 +0000">8344 as other user8345 is expected to contain exactly #<UsersStarProject id: 3, project_id: 1091, user_id: 1837, created_at: "2022-04-28 17:18:12.295782000 +0000", updated_at: "2022-04-28 17:18:12.295782000 +0000">8346 as no user8347 is expected to contain exactly #<UsersStarProject id: 5, project_id: 1092, user_id: 1841, created_at: "2022-04-28 17:18:12.971713000 +0000", updated_at: "2022-04-28 17:18:12.971713000 +0000">8348WorkerContext8349 .worker_context8350 allows modifying the context for the entire worker8351 allows fetches the context from a superclass if none was defined8352 .bulk_perform_async_with_contexts8353 calls bulk_perform_async with the arguments8354 behaves like tracking bulk scheduling contexts8355 clears the contexts8356 context contents8357 keeps track of the context per key to schedule8358 does not share contexts across threads8359 .bulk_perform_in_with_contexts8360 calls bulk_perform_in with the arguments and delay8361 behaves like tracking bulk scheduling contexts8362 clears the contexts8363 context contents8364 keeps track of the context per key to schedule8365 does not share contexts across threads8366 #with_context8367 allows modifying context when the job is running8368 yields the arguments to the block8369RuboCop::Cop::Gitlab::ModuleWithInstanceVariables8370 when source is a regular module8371 behaves like registering offense8372 registers an offense when instance variable is used in a module8373 when source is a nested module8374 behaves like registering offense8375 registers an offense when instance variable is used in a module8376 when source is a nested module with multiple offenses8377 behaves like registering offense8378 registers an offense when instance variable is used in a module8379 when source is using simple or ivar assignment8380 behaves like not registering offense8381 does not register offenses8382 when source is using simple ivar8383 behaves like not registering offense8384 does not register offenses8385 when source is defining initialize8386 behaves like not registering offense8387 does not register offenses8388 when source is using simple or ivar assignment with other ivar8389 behaves like registering offense8390 registers an offense when instance variable is used in a module8391 when source is using or ivar assignment with something else8392 behaves like registering offense8393 registers an offense when instance variable is used in a module8394TreeEntryPresenter8395 .web_url8396 is expected to eq "http://localhost/namespace1111/project1118/-/tree/b83d6e391c22777fca1ed3012fce84f633d7fed0/bar"8397 #web_path8398 is expected to eq "/namespace1112/project1119/-/tree/b83d6e391c22777fca1ed3012fce84f633d7fed0/bar"8399Gitlab::Octokit::Middleware8400 #call8401 when the URL is a public URL8402 behaves like Public URL8403 does not raise an error8404 when the URL is a localhost adresss8405 when localhost requests are not allowed8406 behaves like Local URL8407 raises an error8408 when localhost requests are allowed8409 behaves like Public URL8410 does not raise an error8411 when the URL is a local network address8412 when local network requests are not allowed8413 behaves like Local URL8414 raises an error8415 when local network requests are allowed8416 behaves like Public URL8417 does not raise an error8418ContextCommitsFinder8419 #execute8420 filters commits by valid sha/commit message8421 returns nothing when searched by invalid sha/commit message8422UpdateHighestRoleWorker8423 #perform8424 when user is not found8425 does not update or deletes any highest role8426 when user is found8427 when user is active and not internal8428 when user highest role exists8429 updates the highest role for the user8430 when user highest role does not exist8431 creates the highest role for the user8432 when user is either inactive or internal8433 additional_attributes: {:state=>"blocked"}8434 deletes highest role8435 additional_attributes: {:user_type=>:alert_bot}8436 deletes highest role8437 when user highest role does not exist8438 does not delete a highest role8439Gitlab::ExternalAuthorization::Response8440 #valid?8441 is valid for 200, 401, and 403 responses8442 is invalid for other statuses8443 #reason8444 returns a reason if it was included in the response body8445 returns nil when there was no body8446 #successful?8447 is `true` if the status is 2008448 is `false` if the status is 401 or 4038449BitbucketServer::Representation::Comment8450 #id8451 is expected to eq 98452 #author_username8453 returns username8454 when username is absent8455 returns slug8456 when slug and username are absent8457 returns displayName8458 #author_email8459 is expected to eq "test.user@example.com"8460 #note8461 is expected to eq "is this a new line?"8462 #created_at8463 is expected to be a kind of Time8464 #updated_at8465 is expected to be a kind of Time8466 #comments8467 is expected to eq 48468 is expected to all be a kind of BitbucketServer::Representation::Comment8469 is expected to contain exactly "Hello world", "Ok", "hello", and "hi"8470 comments have the right parent8471Gitlab::Ci::Config::Entry::Ports8472 when configuration is valid8473 #valid?8474 is valid8475 #value8476 returns valid array8477 when configuration is invalid8478 #valid?8479 is invalid8480 when any of the ports8481 have the same name8482 #valid?8483 is invalid8484 have the same port8485 #valid?8486 is invalid8487Resolvers::Projects::SnippetsResolver8488 #resolve8489 calls SnippetsFinder8490 when using no filter8491 returns expected snippets8492 when using filters8493 returns the snippets by visibility8494 returns the snippets by gid8495 returns the snippets by array of gid8496 returns an error if the gid is invalid8497 when no project is provided8498 returns no snippets8499 when provided user is not current user8500 returns no snippets8501 when project snippets are disabled8502 generates an error8503Gitlab::SidekiqMiddleware::SizeLimiter::Client8504 #call8505 when the validator rejects the job8506 raises an exception when scheduling job with #perform_at8507 raises an exception when scheduling job with #perform_async8508 raises an exception when scheduling job with #perform_in8509 when the validator validates the job suscessfully8510 raises an exception when scheduling job with #perform_at8511 raises an exception when scheduling job with #perform_async8512 raises an exception when scheduling job with #perform_in8513Users::Callout8514 behaves like having unique enum values8515 has unique values in "feature_name"8516 validations8517 is expected to validate that :feature_name cannot be empty/falsy8518 is expected to validate that :feature_name is unique within the scope of :user_id8519ErrorTracking::ErrorEvent8520 relationships8521 is expected to belong to error required: false8522 validations8523 is expected to validate that :description cannot be empty/falsy8524 is expected to validate that the length of :description is at most 10248525 is expected to validate that :occurred_at cannot be empty/falsy8526 is expected to validate that the length of :level is at most 2558527 is expected to validate that the length of :environment is at most 2558528 #stacktrace8529 generates a correct stacktrace in expected format8530 error context is missing8531 generates a stacktrace without context8532 #to_sentry_error_event8533 is expected to be a kind of Gitlab::ErrorTracking::ErrorEvent8534API::Helpers::LabelHelpers8535 create_service_params8536 when a project is given8537 returns the expected params8538 when a group is given8539 returns the expected params8540 when something else is given8541 raises a type error8542Banzai::ReferenceParser::MentionedUserParser8543 #gather_references8544 when the link has a data-group attribute8545 using an existing group ID8546 returns empty list of users8547 when the link has a data-project attribute8548 using an existing project ID8549 returns empty list of users8550 when the link has a data-user attribute8551 returns an Array of users8552Types::IssueSortEnum8553 is expected to eq "IssueSort"8554 exposes all the existing issue sort values8555 behaves like common sort values8556 exposes all the existing common sort values8557LearnGitlab::Onboarding8558 #completed_percentage8559 when no onboarding_progress exists8560 is expected to eq 08561 when no action has been completed8562 is expected to eq 08563 when one action has been completed8564 is expected to eq 118565 when all tracked actions have been completed8566 is expected to eq 1008567JiraConnect::SyncBuildsWorker8568 behaves like worker with data consistency8569 .get_data_consistency_feature_flag_enabled?8570 returns true8571 .get_data_consistency8572 returns correct data consistency8573 #perform8574 when pipeline exists8575 calls the Jira sync service8576 when pipeline does not exist8577 does not call the sync service8578Integrations::Irker8579 Validations8580 when integration is active8581 is expected to validate that :recipients cannot be empty/falsy8582 when integration is inactive8583 is expected not to validate that :recipients cannot be empty/falsy8584 Execute8585 sends valid JSON messages to an Irker listener8586Ci::DailyBuildGroupReportResultsWorker8587 #perform8588 when pipeline is found8589 executes service8590 when pipeline is not found8591 does not execute service8592MergeRequests::ResolveTodosWorker8593 behaves like an idempotent worker8594 is labeled as idempotent8595 performs multiple times sequentially without raising an exception8596 #perform8597 calls MergeRequests::ResolveTodosService#execute8598 with a non-existing merge request8599 does nothing8600 with a non-existing user8601 does nothing8602Postgresql::DetachedPartition8603 #ready_to_drop8604 includes partitions that should be dropped before now8605 does not include partitions that should be dropped after now8606Gitlab::Auth::OAuth::AuthHash8607 defaults8608 is expected to eq "ldap"8609 is expected to eql "CN=Onur Küçük,OU=Test,DC=example,DC=net"8610 is expected to eql "onur.küçük_ABC-123@example.net"8611 is expected to eql "oküçük"8612 is expected to eql "Onur Küçük"8613 is expected not to be empty8614 is expected to eq "some locality, some country"8615 email not provided8616 generates a temp email8617 username not provided8618 takes the first part of the email as username8619 name not provided8620 concats first and lastname as the name8621 auth_hash constructed with ASCII-8BIT encoding8622 forces utf8 encoding on uid8623 forces utf8 encoding on provider8624 forces utf8 encoding on name8625 forces utf8 encoding on username8626 forces utf8 encoding on email8627 forces utf8 encoding on password8628Gitlab::Search::SortOptions8629 .sort_and_direction8630 using order_by and sort8631 returns matched options8632 using just sort8633 returns matched options8634 when unknown option8635 returns unknown8636Packages::Composer::ComposerJsonService8637 #execute8638 with an existing file8639 with a valid file8640 returns the parsed json8641 with an invalid file8642 raises an error8643 without the composer.json file8644 raises an error8645Ci::JobTokenScope::RemoveProjectService8646 #execute8647 behaves like editable job token scope8648 when job token scope is disabled for the given project8649 behaves like returns error8650 returns an error response8651 when user does not have permissions to edit the job token scope8652 behaves like returns error8653 returns an error response8654 when user has permissions to edit the job token scope8655 when target project is not provided8656 behaves like returns error8657 returns an error response8658 when target project is provided8659 when user does not have permissions to read the target project8660 behaves like returns error8661 returns an error response8662 when user has permissions on source and target project8663 removes the project from the scope8664 when target project is same as the source project8665 behaves like returns error8666 returns an error response8667Gitlab::UsageDataCounters::EditorUniqueCounter8668 can return the count of actions per user deduplicated8669 for web IDE edit actions8670 behaves like tracks and counts action8671 is expected to eq 38672 does not track edit actions if author is not present8673 for SFE edit actions8674 behaves like tracks and counts action8675 is expected to eq 38676 does not track edit actions if author is not present8677 for snippet editor edit actions8678 behaves like tracks and counts action8679 is expected to eq 38680 does not track edit actions if author is not present8681 for SSE edit actions8682 behaves like tracks and counts action8683 is expected to eq 38684 does not track edit actions if author is not present8685TimelogPolicy8686 #rules8687 when user is anonymus8688 prevents adimistration of timelog8689 when user is the author of the timelog8690 allows adimistration of timelog8691 when user is not the author of the timelog but maintainer of the project8692 allows adimistration of timelog8693 when user is not the timelog's author, not a maintainer but an administrator8694 allows adimistration of timelog8695 when user is not the author of the timelog nor a maintainer of the project nor an administrator8696 prevents adimistration of timelog8697Gitlab::UsageDataCounters::ServiceUsageDataCounter8698 behaves like a redis usage counter8699 .count(download_payload_click)8700 increments the Service Usage Data download_payload_click counter by 18701 .read(download_payload_click)8702 returns the total number of download_payload_click events8703Cookies serializer initializer8704 uses JSON serializer by default8705 uses the unsafe hybrid serializer when the environment variables is set8706Users::BannedUser8707 relationships8708 is expected to belong to user required: false8709 validations8710 is expected to validate that :user cannot be empty/falsy8711 validates uniqueness of banned user id8712Gitlab::ImportExport::Group::ObjectBuilder8713 labels8714 finds the existing group label8715 creates a new label8716 when description is an empty string8717 finds the existing group label8718 milestones8719 finds the existing group milestone8720 creates a new milestone8721Gitlab::HookData::IssueBuilder8722 #build8723 includes safe attribute8724 includes additional attrs8725 when the issue has an image in the description8726 sets the image to use an absolute URL8727 for incident8728 includes additional attr8729admin/application_settings/_ci_cd8730 limits8731 has fields for CI/CD limits8732 does not display the plan name when there is only one plan8733 with multiple plans8734 displays the plan name when there is more than one plan8735Gitlab::GithubImport::ObjectCounter8736 validates the operation being incremented8737 increments the counter and saves the key to be listed in the summary later8738 does not increment the counter if the given value is <= 08739 expires etag cache of relevant realtime change endpoints on increment8740Ci::DownloadableArtifactEntity8741 #as_json8742 contains required fields8743 when user cannot read job artifact8744 returns only artifacts readable by user8745X509Issuer8746 validation8747 is expected to validate that :subject_key_identifier cannot be empty/falsy8748 is expected to validate that :subject cannot be empty/falsy8749 is expected to validate that :crl_url cannot be empty/falsy8750 .safe_create!8751 creates a new issuer if it was not found8752 assigns the correct attributes when creating8753 validators8754 accepts correct subject_key_identifier8755 rejects invalid subject_key_identifier8756 accepts valid crl_url8757 rejects invalid crl_url8758Gitlab::SidekiqMiddleware::DuplicateJobs::Strategies8759 .for8760 returns the right class for `until_executing`8761 returns the right class for `until_executed`8762 returns the right class for `none`8763 raises an UnknownStrategyError when passing an unknown key8764Preloaders::MergeRequestDiffPreloader8765 does not trigger N+1 queries8766Gitlab::UsageDataCounters::GitLabCliActivityUniqueCounter8767 when tracking a gitlab cli request8768 behaves like a request from an extension8769 tracks when the user agent is matching8770 does not track when the user agent is not matching8771 does not track if user agent is not present8772 does not track if user is not present8773Gitlab::Ci::Pipeline::Quota::Deployments8774 #enabled?8775 when limit is enabled in plan8776 is enabled8777 when limit is not enabled8778 is not enabled8779 when limit does not exist8780 is enabled by default8781 #exceeded?8782 when limit is exceeded8783 is exceeded8784 when limit is not exceeded8785 is not exceeded8786 #message8787 when limit is exceeded8788 returns info about pipeline deployment limit exceeded8789Resolvers::Ci::TestReportSummaryResolver8790 #resolve8791 when pipeline has build report results8792 returns test report summary data8793 when pipeline does not have build report results8794 renders test report summary data8795GroupDeployKeyPolicy8796 edit a group deploy key8797 when the user does not own the group deploy key8798 is expected to be disallowed :update_group_deploy_key8799 when the user owns the group deploy key8800 is expected to be allowed :update_group_deploy_key8801Mutations::Boards::Lists::Update8802 on group issue boards8803 behaves like update board list mutation8804 #resolve8805 with permission to admin board lists8806 updates the list position and collapsed state as expected8807 with permission to read board lists8808 updates the list collapsed state but not the list position8809 without permission to read board lists8810 raises Resource Not Found error8811Mutations::AlertManagement::HttpIntegration::Create8812 is expected to require graphql authorizations :admin_operations8813 #resolve8814 user has access to project8815 when HttpIntegrations::CreateService responds with success8816 returns the integration with no errors8817 when HttpIntegrations::CreateService responds with an error8818 returns errors8819 when resource is not accessible to the user8820 raises an error if the resource is not accessible to the user8821BulkImports::RelationExportWorker8822 #perform8823 is labeled as idempotent8824 performs multiple times sequentially without raising an exception8825 executes RelationExportService8826 when export record does not exist8827 creates export record8828MATLAB.gitlab-ci.yml8829 the created pipeline8830 creates all jobs8831PagesDomainSslRenewalWorker8832 #perform8833 delegates to ObtainLetsEncryptCertificateService8834 when domain was deleted8835 does nothing8836 when domain is disabled8837 does nothing8838validate database config8839 when config/database.yml is valid8840 validates configuration without errors and warnings8841 when config/database.yml is invalid8842 uses unknown connection name8843 raises exception8844 behaves like with SKIP_DATABASE_CONFIG_VALIDATION=true8845 does not raise exception8846 uses replica configuration8847 raises exception8848 behaves like with SKIP_DATABASE_CONFIG_VALIDATION=true8849 does not raise exception8850 main is not a first entry8851 raises exception8852 behaves like with SKIP_DATABASE_CONFIG_VALIDATION=true8853 does not raise exception8854Users::SavedReplies::UpdateService8855 #execute8856 when update fails8857 is expected not to be success8858 returns error messages8859 when update succeeds8860 is expected to be success8861 updates new Saved Reply in database8862 returns saved reply8863Gitlab::Ci::Reports::Security::Locations::SecretDetection8864 behaves like vulnerability location8865 #initialize8866 when all params are given8867 initializes an instance8868 param: :file_path8869 when param file_path is missing8870 raises an error8871 param: :start_line8872 when param start_line is missing8873 raises an error8874 #fingerprint8875 generates expected fingerprint8876 #fingerprint_path8877 generates expected fingerprint8878 #==8879 returns true when fingerprints are equal8880 returns false when fingerprints are different8881RuboCop::Cop::Migration::AddColumnsToWideTables8882 when outside of a migration8883 does not register any offenses8884 when in a migration8885 with wide tables8886 registers an offense when adding a column to a wide table8887 registers an offense when adding a column with default to a wide table8888 registers an offense when adding a reference8889 registers an offense when adding timestamps8890 register no offense when using other method8891 with a regular table8892 registers no offense for notes8893RspecFlaky::Report8894 delegates to #flaky_examples using SimpleDelegator8895 .load8896 loads the report file8897 .load_json8898 loads the report file8899 #initialize8900 accepts a RspecFlaky::FlakyExamplesCollection8901 does not accept anything else8902 #write8903 when RspecFlaky::Config.generate_report? is false8904 does not write any report file8905 when RspecFlaky::Config.generate_report? is true8906 delegates the writes to RspecFlaky::Report8907 #prune_outdated8908 returns a new collection without the examples older than 30 days by default8909 accepts a given number of days8910Gitlab::SQL::RecursiveCTE8911 #to_arel8912 generates an Arel relation for the CTE body8913 #alias_to8914 returns an alias for the CTE8915 replaces dots with an underscore8916 #apply_to8917 applies a CTE to an ActiveRecord::Relation8918 behaves like CTE with MATERIALIZED keyword examples8919 adding MATERIALIZE to the CTE8920 when PG version is <128921 does not add MATERIALIZE keyword8922 when PG version is >=128923 adds MATERIALIZE keyword8924 when version is higher than 128925 adds MATERIALIZE keyword8926 when materialized is disabled8927 does not add MATERIALIZE keyword8928Mutations::BaseMutation8929 argument nullability8930 when using a mutation with correct argument declarations8931 when argument is nullable and required8932 is expected to raise ArgumentError with message matching /must be provided: foo/8933 is expected not to raise Exception8934 is expected not to raise Exception8935 when argument is required and NOT nullable8936 is expected to raise ArgumentError with message matching /must be provided/8937 is expected to raise ArgumentError with message matching /must be provided/8938 is expected not to raise Exception8939Gitlab::UsageMetricGenerator8940 Creating metric instrumentation files8941 creates CE metric instrumentation files using the template8942 with EE flag true8943 creates EE metric instrumentation files using the template8944 for database type8945 creates the metric instrumentation file using the template8946 with type option missing8947 raises an ArgumentError8948 with type option value not included in approved superclasses8949 raises an ArgumentError8950 without operation for database metric8951 raises an ArgumentError8952 with wrong operation for database metric8953 raises an ArgumentError8954Gitlab::TimeTrackingFormatter8955 #parse8956 positive durations8957 is expected to eq 120008958 negative durations8959 is expected to eq -120008960 durations with months8961 uses our custom conversions8962 #output8963 time_tracking_limit_to_hours setting is true8964 is expected to eq "49h 40m"8965 time_tracking_limit_to_hours setting is false8966 is expected to eq "1w 1d 1h 40m"8967 handles negative time input8968 is expected to eq "-1w 1d 1h 40m"8969BulkImports::FileTransfer::GroupConfig8970 #portable_tree8971 returns portable tree8972 #export_path8973 returns tmpdir location8974 #portable_relations8975 returns a list of top level exportable relations8976 does not include skipped relations8977 #top_relation_tree8978 returns relation tree of a top level relation8979 #relation_excluded_keys8980 returns excluded keys for relation8981Gitlab::Email::Message::InProductMarketing8982 .for8983 when track exists8984 track: :create, expected_class: Gitlab::Email::Message::InProductMarketing::Create8985 is expected to eq Gitlab::Email::Message::InProductMarketing::Create8986 track: :team_short, expected_class: Gitlab::Email::Message::InProductMarketing::TeamShort8987 is expected to eq Gitlab::Email::Message::InProductMarketing::TeamShort8988 track: :trial_short, expected_class: Gitlab::Email::Message::InProductMarketing::TrialShort8989 is expected to eq Gitlab::Email::Message::InProductMarketing::TrialShort8990 track: :admin_verify, expected_class: Gitlab::Email::Message::InProductMarketing::AdminVerify8991 is expected to eq Gitlab::Email::Message::InProductMarketing::AdminVerify8992 track: :verify, expected_class: Gitlab::Email::Message::InProductMarketing::Verify8993 is expected to eq Gitlab::Email::Message::InProductMarketing::Verify8994 track: :trial, expected_class: Gitlab::Email::Message::InProductMarketing::Trial8995 is expected to eq Gitlab::Email::Message::InProductMarketing::Trial8996 track: :team, expected_class: Gitlab::Email::Message::InProductMarketing::Team8997 is expected to eq Gitlab::Email::Message::InProductMarketing::Team8998 track: :experience, expected_class: Gitlab::Email::Message::InProductMarketing::Experience8999 is expected to eq Gitlab::Email::Message::InProductMarketing::Experience9000 when track does not exist9001 raises error9002Resolvers::Clusters::AgentActivityEventsResolver9003 is expected to eq Types::Clusters::AgentActivityEventType9004 is expected to be truthy9005 #resolve9006 returns events associated with the agent9007 user does not have permission9008 is expected to be empty9009BulkImports::Projects::Pipelines::ProjectPipeline9010 #run9011 imports new project into destination group9012 pipeline parts9013 is expected to includes the BulkImports::Pipeline module9014 is expected to includes the BulkImports::Pipeline::Runner module9015 has extractors9016 has transformers9017BulkImports::NetworkError9018 .new9019 requires either a message or a HTTP response9020 #retriable?9021 returns true for MAX_RETRIABLE_COUNT times when cause if one of RETRIABLE_EXCEPTIONS9022 returns true for MAX_RETRIABLE_COUNT times when response is one of RETRIABLE_CODES9023 returns false for other exceptions9024 #retry_delay9025 returns the default value when there is not a rate limit error9026 when the exception is a rate limit error9027 returns the "Retry-After"9028 returns the default value when there is no "Retry-After" header9029SystemCheck::App::HashedStorageAllProjectsCheck9030 #check?9031 fails when at least one project is in legacy storage9032 succeeds when all projects are in hashed storage9033Gitlab::EventStore::Event9034 when schema is not defined9035 raises an error on initialization9036 when schema is defined9037 schema validation9038 when data matches the schema9039 initializes the event correctly9040 when required properties are present as well as unknown properties9041 initializes the event correctly9042 when some properties are missing9043 expects all properties to be present9044 when data is not a Hash9045 raises an error9046Releases::Source9047 .all9048 returns all formats of sources9049 #url9050 returns zip archived source url9051 when ref is directory structure9052 converts slash to dash9053CronjobQueue9054 sets the queue name of a worker9055 disables retrying of failed jobs9056 automatically clears project, user and namespace from the context9057 gets scheduled with caller_id set to Cronjob9058 does not set the caller_id if there was already one in the context9059shared/_milestones_sort_dropdown.html.haml9060 render9061 when a sort option is not selected9062 renders a default sort option9063 when a sort option is selected9064 renders the selected sort option9065RspecFlaky::FlakyExamplesCollection9066 #initialize9067 accepts no argument9068 accepts a hash9069 does not accept anything else9070 #to_h9071 calls #to_h on the values9072 #-9073 returns only examples that are not present in the given collection9074 fails if the given collection does not respond to `#key?`9075Gitlab::SQL::CTE9076 #to_arel9077 generates an Arel relation for the CTE body9078 #alias_to9079 returns an alias for the CTE9080 #apply_to9081 applies a CTE to an ActiveRecord::Relation9082 behaves like CTE with MATERIALIZED keyword examples9083 adding MATERIALIZE to the CTE9084 when PG version is <129085 does not add MATERIALIZE keyword9086 when PG version is >=129087 adds MATERIALIZE keyword9088 when version is higher than 129089 adds MATERIALIZE keyword9090 when materialized is disabled9091 does not add MATERIALIZE keyword9092layouts/nav/sidebar/_profile9093 behaves like has nav sidebar9094 has collapsed nav sidebar on mobile9095 behaves like sidebar includes snowplow attributes9096 is expected to have visible css ".nav-sidebar[data-track-action=\"render\"][data-track-label=\"user_side_navigation\"][data-track-property=\"user_side_navigation\"]"9097RawUsageData9098 validations9099 is expected to validate that :payload cannot be empty/falsy9100 is expected to validate that :recorded_at cannot be empty/falsy9101 uniqueness validation9102 is expected to validate that :recorded_at is case-sensitively unique9103 #update_version_metadata!9104 updates sent_at9105 updates version_usage_data_id_value9106BulkPushEventPayloadService9107 creates a PushEventPayload9108Gitlab::Kubernetes::KubectlCmd9109 .delete9110 constructs string properly9111 .apply_file9112 without optional args9113 requires filename to be present9114 constructs string properly9115 with optional args9116 constructs command properly with many args9117 constructs command properly with single arg9118 .api_resources9119 constructs string properly9120 .delete_crds_from_group9121 constructs string properly9122ExploreHelper9123 #explore_nav_links9124 has all the expected links by default9125 #public_visibility_restricted?9126 delegates to Gitlab::VisibilityLevel9127 #projects_filter_items9128 returns correct dropdown items9129 #projects_filter_selected9130 when visibility_level is present9131 returns corresponding item9132 when visibility_level is empty9133 returns corresponding item9134Gitlab::Usage::Metrics::Instrumentations::CountUsersAssociatingMilestonesToReleasesMetric9135 behaves like a correct instrumented metric value9136 has correct value9137Gitlab::Graphql::FindArgumentInParent9138 #find9139 searches parents and returns the argument9140 can find argument when passed in as both Ruby and GraphQL-formatted symbols and strings9141 returns nil if no arguments found in parents9142 can limit the depth it searches to9143BlobEntity9144 as json9145 contains needed attributes9146Gitlab::UsageDataCounters::SearchCounter9147 all_searches counter9148 behaves like usage counter with totals9149 increments counter and returns total count9150 navbar_searches counter9151 behaves like usage counter with totals9152 increments counter and returns total count9153 .fetch_supported_event9154 is expected to eq "all_searches"9155BulkImports::Groups::Pipelines::GroupAttributesPipeline9156 #run9157 imports allowed group attributes9158 #transform9159 fetches only allowed attributes and symbolize keys9160 when there is no data to transform9161 is expected to eq nil9162 #after_run9163 calls extractor#remove_tmpdir9164CommitUserMention9165 associations9166 is expected to belong to note required: false9167 behaves like has user mentions9168 #has_mentions?9169 when no mentions9170 returns false9171 when mentioned_users_ids not null9172 returns true9173 when mentioned projects9174 returns true9175 when mentioned groups9176 returns true9177ProductAnalytics::EventParams9178 .parse_event_params9179 extracts all params from raw event9180 .has_required_params?9181 aid and eid are present9182 is expected to be truthy9183 aid and eid are missing9184 is expected to be falsey9185 eid is missing9186 is expected to be falsey9187Types::Namespace::PackageSettingsType9188 is expected to eq "PackageSettings"9189 is expected to eq "Namespace-level Package Registry settings"9190 is expected to require graphql authorizations :read_package_settings9191 maven_duplicate_exception_regex field9192 is expected to have graphql type Types::UntrustedRegexp9193Issues::RescheduleStuckIssueRebalancesWorker9194 #perform9195 does not schedule a rebalance9196 schedules a rebalance in case there are any rebalances started9197Gitlab::Patch::ActionCableRedisListener9198 catches Redis connection errors and restarts Action Cable9199 re-raises other exceptions9200Ci::ArchiveTraceWorker9201 #perform9202 when job is found9203 executes service9204 when job is not found9205 does not execute service9206DisallowTwoFactorForSubgroupsWorker9207 schedules updating subgroups9208BlobViewer::RouteMap9209 #validation_message9210 calls prepare! on the viewer9211 when the configuration is valid9212 returns nil9213 when the configuration is invalid9214 returns the error message9215Gitlab::Config::Entry::Validator9216 delegated validator9217 when node is valid9218 validates attribute in node9219 returns no errors9220 when node is invalid9221 validates attribute in node9222 returns errors9223Graphql Field feature flags9224 Feature flagged field9225 checks YAML definition for default_enabled9226 skipping YAML check9227 returns the value when feature is enabled9228 returns nil when the feature is disabled9229Gitlab::Graphql::Tracers::MetricsTracer9230 when used as tracer and query is executed9231 does not record apdex for failing queries9232 duration: 0.1, expected_success: true9233 increments apdex sli9234 duration: 1.1, expected_success: false9235 increments apdex sli9236Sidebars::Projects::Menus::ScopeMenu9237 #container_html_options9238 is expected to match #<RSpec::Mocks::ArgumentMatchers::HashIncludingMatcher:0x00007f0352a302f8 @expected={:class=>"shortcuts-project rspec-project-link"}>9239 #extra_nav_link_html_options9240 is expected to match #<RSpec::Mocks::ArgumentMatchers::HashIncludingMatcher:0x00007f0350a6f1d0 @expected={:class=>"context-header has-tooltip", :title=>"project1178"}>9241RuboCop::Cop::GroupPublicOrVisibleToUser9242 flags the use of Group.public_or_visible_to_user with a constant receiver9243 does not flag the use of public_or_visible_to_user with a constant that is not Group9244 does not flag the use of Group.public_or_visible_to_user with a send receiver9245Gitlab::UsageDataCounters::BaseCounter9246 .fetch_supported_event9247 returns the matching event9248 when event is unknown9249 is expected to be nil9250 when prefix does not match the event name9251 is expected to be nil9252RuboCop::Cop::Database::EstablishConnection9253 flags the use of ActiveRecord::Base.establish_connection9254 flags the use of ActiveRecord::Base.establish_connection with arguments9255 flags the use of SomeModel.establish_connection9256Gitlab::Ci::Config::Yaml::Tags::Resolver9257 #to_hash9258 when referencing deeply nested arrays9259 when templates are defined before the job9260 behaves like expands references9261 expands the references9262 when templates are defined after the job9263 behaves like expands references9264 expands the references9265Types::Kas::AgentMetadataType9266 is expected to eq "AgentMetadata"9267 is expected to eq "Information about a connected Agent"9268 is expected to have graphql fields :version, :commit, :pod_namespace, and :pod_name9269Types::ReleaseAssetLinkType9270 is expected to require graphql authorizations :read_release9271 has the expected fields9272ScheduleMigrateExternalDiffsWorker9273 #perform9274 triggers a scan for diffs to migrate9275 will not run if the lease is already taken9276Types::QueryComplexityType9277 is expected to have graphql fields :limit and :score9278 works when executed9279Types::Projects::ServiceType9280 is expected to have graphql fields :type, :service_type, and :active9281 .resolve_type9282 resolves the corresponding type for objects9283Resolvers::PackagesBaseResolver9284 #resolve9285 throws an error9286JiraConnect::SubscriptionEntity9287 contains all necessary elements of the subscription9288BulkImports::Common::Transformers::ProhibitedAttributesTransformer9289 #transform9290 removes prohibited attributes9291 when there is no data to transform9292 returns9293Gitlab::RuggedInstrumentation9294 .query_time9295 increments query times9296 .increment_query_count9297 tracks query counts9298RuboCop::Cop::Scalability::IdempotentWorker9299 adds an offense when not defining idempotent method9300 adds an offense when not defining idempotent method9301API::Helpers::GraphqlHelpers9302 run_graphql!9303 when transform function is provided9304 returns the expected result9305 when a transform function is not provided9306 returns the expected result9307Packages::Composer::CacheCleanupWorker9308 #perform9309 does nothing9310Events::RenderService9311 #execute9312 when the request format is atom9313 renders the note inside events9314 when the request format is not atom9315 renders the note inside events9316API::Entities::Nuget::SearchResult9317 is expected to eq {:@type=>"Package", :authors=>"Author", :iconUrl=>"http://sandbox.com/icon", :id=>"PackageTest", :lic..."1.2.3", :versions=>[{:@id=>"http://sandbox.com/json/package", :downloads=>100, :version=>"1.2.3"}]}9318PartitionCreationWorker9319 #perform9320 forwards to the Database::PartitionManagementWorker9321Types::CommitEncodingEnum9322 is expected to eq "CommitEncoding"9323 exposes all the existing encoding option9324Evidences::ReleaseSerializer9325 represents an Evidence::ReleaseEntity entity9326Gitlab::LanguageData9327 #extensions9328 loads the extensions once9329Gitlab::NoCacheHeaders9330 #no_cache_headers9331 raises a RuntimeError9332Gitlab::ErrorTracking::LogFormatter9333 appends error-related log fields and filters sensitive Sidekiq arguments9334Types::MergeRequestReviewStateEnum9335 the correct enum members9336BlobViewer::Podspec9337 #package_name9338 returns the package name9339Types::ContainerRepositoryCleanupStatusEnum9340 exposes all statuses9341DiscussionNote9342 #to_ability_name9343 is expected to eq "note"9344Knapsack report was generated. Preview:9345{9346 "spec/models/application_setting_spec.rb": 230.55194926100012,9347 "spec/services/quick_actions/interpret_service_spec.rb": 113.53144282999983,9348 "spec/services/merge_requests/build_service_spec.rb": 100.99551570199947,9349 "spec/lib/gitlab/usage/metrics/names_suggestions/generator_spec.rb": 86.45607543599999,9350 "spec/services/snippets/update_service_spec.rb": 40.74282238200067,9351 "spec/models/integrations/slack_spec.rb": 47.21874095900057,9352 "spec/models/design_management/design_spec.rb": 20.026566760000605,9353 "spec/tooling/danger/project_helper_spec.rb": 10.64460461500039,9354 "spec/lib/object_storage/direct_upload_spec.rb": 29.790655828000126,9355 "spec/models/operations/feature_flags/strategy_spec.rb": 9.516724201000216,9356 "spec/services/auto_merge/base_service_spec.rb": 40.51098402600019,9357 "spec/workers/packages/maven/metadata/sync_worker_spec.rb": 41.81378945399956,9358 "spec/models/integrations/webex_teams_spec.rb": 25.947367105999547,9359 "spec/finders/concerns/packages/finder_helper_spec.rb": 28.872410513000432,9360 "spec/services/resource_access_tokens/create_service_spec.rb": 20.865826524999648,9361 "spec/models/integrations/pipelines_email_spec.rb": 22.685206782000023,9362 "spec/models/integrations/drone_ci_spec.rb": 20.25724284900025,9363 "spec/lib/gitlab/github_import/user_finder_spec.rb": 20.006014649999997,9364 "spec/finders/projects/serverless/functions_finder_spec.rb": 24.897549983999852,9365 "spec/services/members/approve_access_request_service_spec.rb": 21.013259647000268,9366 "spec/lib/gitlab/ci/pipeline/expression/statement_spec.rb": 4.19003155900009,9367 "spec/lib/gitlab/utils/strong_memoize_spec.rb": 15.10410119900007,9368 "spec/lib/backup/manager_spec.rb": 3.9501073110004654,9369 "spec/lib/banzai/filter/references/project_reference_filter_spec.rb": 14.920708935999755,9370 "spec/services/members/update_service_spec.rb": 19.092409746999692,9371 "spec/models/route_spec.rb": 12.153716244999487,9372 "spec/lib/gitlab/git/tag_spec.rb": 8.913977036999313,9373 "spec/graphql/mutations/merge_requests/set_assignees_spec.rb": 8.792134878999605,9374 "spec/lib/gitlab/diff/file_collection/merge_request_diff_spec.rb": 11.413628293999864,9375 "spec/workers/packages/go/sync_packages_worker_spec.rb": 7.534847156000069,9376 "spec/presenters/blob_presenter_spec.rb": 4.247258983000393,9377 "spec/services/clusters/create_service_spec.rb": 13.762176763999378,9378 "spec/models/terraform/state_spec.rb": 10.824343919999592,9379 "spec/models/ci/pending_build_spec.rb": 11.636522303000675,9380 "spec/finders/metrics/dashboards/annotations_finder_spec.rb": 11.003533322999829,9381 "spec/lib/gitlab/workhorse_spec.rb": 5.8680811919994085,9382 "spec/config/mail_room_spec.rb": 10.522429807999288,9383 "spec/models/projects/build_artifacts_size_refresh_spec.rb": 11.329637961000117,9384 "spec/models/prometheus_metric_spec.rb": 3.7982841550001467,9385 "spec/finders/ci/pipelines_for_merge_request_finder_spec.rb": 9.95519170100033,9386 "spec/lib/gitlab/metrics/dashboard/processor_spec.rb": 9.613075311999637,9387 "spec/services/suggestions/create_service_spec.rb": 8.708401146000142,9388 "spec/services/groups/import_export/export_service_spec.rb": 8.743819713000448,9389 "spec/lib/banzai/filter/syntax_highlight_filter_spec.rb": 1.7682386249998672,9390 "spec/lib/gitlab/import_export/snippet_repo_restorer_spec.rb": 6.064710093999565,9391 "spec/workers/merge_request_cleanup_refs_worker_spec.rb": 9.730288781000127,9392 "spec/services/jira_connect_subscriptions/create_service_spec.rb": 6.716487212999709,9393 "spec/finders/projects/topics_finder_spec.rb": 7.377560610999353,9394 "spec/routing/admin_routing_spec.rb": 4.065490410998791,9395 "spec/lib/gitlab/verify/job_artifacts_spec.rb": 7.876640244000555,9396 "spec/uploaders/terraform/state_uploader_spec.rb": 7.207714985999701,9397 "spec/lib/gitlab/middleware/read_only_spec.rb": 1.7494016569999076,9398 "spec/lib/gitlab/slash_commands/issue_move_spec.rb": 5.551776720999442,9399 "spec/lib/gitlab/database/load_balancing/session_spec.rb": 0.8439261009998518,9400 "spec/lib/banzai/pipeline/full_pipeline_spec.rb": 5.826394816000175,9401 "spec/models/packages/debian/group_component_file_spec.rb": 2.274696607999431,9402 "spec/models/commit_signatures/x509_commit_signature_spec.rb": 5.985077450999597,9403 "spec/graphql/resolvers/projects_resolver_spec.rb": 3.7506987289998506,9404 "spec/models/integrations/confluence_spec.rb": 2.7368948650000675,9405 "spec/lib/gitlab/checks/changes_access_spec.rb": 2.462255579000157,9406 "spec/models/project_import_state_spec.rb": 4.663567905000491,9407 "spec/lib/gitlab/sidekiq_daemon/memory_killer_spec.rb": 1.6645192239993776,9408 "spec/services/ci/after_requeue_job_service_spec.rb": 9.316454249999879,9409 "spec/lib/gitlab/profiler_spec.rb": 1.9565574670004935,9410 "spec/workers/concerns/project_import_options_spec.rb": 3.341643708000447,9411 "spec/lib/gitlab/email/handler/unsubscribe_handler_spec.rb": 6.7452512099998785,9412 "spec/workers/deployments/update_environment_worker_spec.rb": 5.379239007000251,9413 "spec/lib/gitlab/repo_path_spec.rb": 2.373521387999972,9414 "spec/helpers/nav_helper_spec.rb": 2.619985755000016,9415 "spec/finders/resource_state_event_finder_spec.rb": 4.40426935799951,9416 "spec/lib/banzai/filter/table_of_contents_filter_spec.rb": 1.1880739480002376,9417 "spec/services/boards/lists/destroy_service_spec.rb": 4.5545200550004665,9418 "spec/helpers/users/callouts_helper_spec.rb": 2.0450708689995736,9419 "spec/models/concerns/project_features_compatibility_spec.rb": 4.646712275999562,9420 "spec/lib/gitlab/database/background_migration/prometheus_metrics_spec.rb": 4.4884230499992555,9421 "spec/workers/new_merge_request_worker_spec.rb": 5.464122760000464,9422 "spec/services/merge_requests/request_review_service_spec.rb": 7.7074663100002,9423 "spec/helpers/admin/user_actions_helper_spec.rb": 2.766309061999891,9424 "spec/lib/gitlab/ci/config/entry/include_spec.rb": 0.7246007819994702,9425 "spec/lib/gitlab/import_export/attributes_finder_spec.rb": 0.5938208140005372,9426 "spec/lib/gitlab/patch/prependable_spec.rb": 0.5324774500004423,9427 "spec/rubocop/cop/migration/safer_boolean_column_spec.rb": 0.8855295269995622,9428 "spec/lib/banzai/reference_parser/feature_flag_parser_spec.rb": 3.276336113999605,9429 "spec/services/packages/debian/generate_distribution_key_service_spec.rb": 5.423644724000042,9430 "spec/workers/users/deactivate_dormant_users_worker_spec.rb": 3.0754283220003344,9431 "spec/finders/security/license_compliance_jobs_finder_spec.rb": 4.072270429999662,9432 "spec/lib/system_check/simple_executor_spec.rb": 1.1097291659998518,9433 "spec/lib/gitlab/ci/pipeline/expression/lexeme/matches_spec.rb": 0.8194487029995798,9434 "spec/graphql/resolvers/labels_resolver_spec.rb": 2.9735231929998918,9435 "spec/lib/bitbucket_server/connection_spec.rb": 0.9136504850002893,9436 "spec/graphql/types/base_object_spec.rb": 1.810097919999862,9437 "spec/tasks/gitlab/git_rake_spec.rb": 6.156879585000752,9438 "spec/lib/gitlab/checks/lfs_integrity_spec.rb": 3.6577282790003665,9439 "spec/services/protected_branches/create_service_spec.rb": 2.764379402000486,9440 "spec/lib/gitlab/url_blockers/url_allowlist_spec.rb": 0.5709331570005816,9441 "spec/lib/gitlab/doctor/secrets_spec.rb": 5.355713599999945,9442 "spec/models/integrations/mock_ci_spec.rb": 1.737991367000177,9443 "spec/models/packages/sem_ver_spec.rb": 1.1263088850000713,9444 "spec/models/analytics/usage_trends/measurement_spec.rb": 1.2002925280003183,9445 "spec/services/incident_management/pager_duty/create_incident_issue_service_spec.rb": 3.847133961000509,9446 "spec/workers/bulk_import_worker_spec.rb": 3.244212687000072,9447 "spec/lib/gitlab/ci/status/build/failed_allowed_spec.rb": 3.9966207159995975,9448 "spec/serializers/diff_file_metadata_entity_spec.rb": 2.562419501000477,9449 "spec/lib/gitlab/ci/build/rules/rule_spec.rb": 2.0919582139995327,9450 "spec/finders/resource_milestone_event_finder_spec.rb": 2.735111675000553,9451 "spec/finders/design_management/designs_finder_spec.rb": 2.1224638919993595,9452 "spec/experiments/ios_specific_templates_experiment_spec.rb": 1.5433660350008722,9453 "spec/models/preloaders/user_max_access_level_in_groups_preloader_spec.rb": 1.7911322030004158,9454 "spec/lib/gitlab/import_export/uploads_restorer_spec.rb": 1.4890863009995883,9455 "spec/lib/gitlab/word_diff/segments/diff_hunk_spec.rb": 0.4274170499993488,9456 "spec/models/blob_viewer/base_spec.rb": 1.1595509320004567,9457 "spec/lib/sidebars/panel_spec.rb": 0.8316794319998735,9458 "spec/graphql/mutations/clusters/agent_tokens/create_spec.rb": 0.941003472000375,9459 "spec/services/prometheus/proxy_service_spec.rb": 1.0665049600002021,9460 "spec/views/layouts/_flash.html.haml_spec.rb": 1.7090429810004935,9461 "spec/services/boards/visits/create_service_spec.rb": 1.055580340999768,9462 "spec/models/preloaders/environments/deployment_preloader_spec.rb": 1.6056822900000043,9463 "spec/tasks/cache/clear/redis_spec.rb": 2.7468031939997672,9464 "spec/workers/authorized_project_update/project_recalculate_per_user_worker_spec.rb": 1.0905676889997267,9465 "spec/graphql/mutations/alert_management/prometheus_integration/update_spec.rb": 0.9643809999997757,9466 "spec/workers/packages/cleanup_package_file_worker_spec.rb": 1.655016966000403,9467 "spec/workers/ci/pending_builds/update_project_worker_spec.rb": 2.824616025999603,9468 "spec/views/projects/notes/_more_actions_dropdown.html.haml_spec.rb": 3.0769413620000705,9469 "spec/policies/ci/pipeline_schedule_policy_spec.rb": 2.6546996619999845,9470 "spec/finders/projects/members/effective_access_level_per_user_finder_spec.rb": 1.9157736910001404,9471 "spec/services/jira_import/users_importer_spec.rb": 3.8571432700000514,9472 "spec/lib/gitlab/issuables_count_for_state_spec.rb": 0.779503097000088,9473 "spec/services/ci/append_build_trace_service_spec.rb": 0.8862563669999872,9474 "spec/services/notification_recipients/builder/new_note_spec.rb": 2.9120037889997548,9475 "spec/graphql/mutations/alert_management/prometheus_integration/create_spec.rb": 2.1134920429994963,9476 "spec/lib/gitlab/database/gitlab_schema_spec.rb": 0.656520098999863,9477 "spec/lib/gitlab/analytics/cycle_analytics/stage_events/merge_request_created_spec.rb": 1.1515371720006442,9478 "spec/finders/users_star_projects_finder_spec.rb": 2.2016052239996498,9479 "spec/workers/concerns/worker_context_spec.rb": 0.5845697150007254,9480 "spec/rubocop/cop/gitlab/module_with_instance_variables_spec.rb": 0.3907342430002245,9481 "spec/presenters/tree_entry_presenter_spec.rb": 1.0052150659994368,9482 "spec/lib/gitlab/octokit/middleware_spec.rb": 0.3885591640000712,9483 "spec/finders/context_commits_finder_spec.rb": 2.3363307820000045,9484 "spec/workers/update_highest_role_worker_spec.rb": 1.309837427000275,9485 "spec/lib/gitlab/external_authorization/response_spec.rb": 0.21121532999950432,9486 "spec/lib/bitbucket_server/representation/comment_spec.rb": 0.31520324099983554,9487 "spec/lib/gitlab/ci/config/entry/ports_spec.rb": 0.15030691599986312,9488 "spec/graphql/resolvers/projects/snippets_resolver_spec.rb": 2.168847038000422,9489 "spec/lib/gitlab/sidekiq_middleware/size_limiter/client_spec.rb": 0.43443820999982563,9490 "spec/models/users/callout_spec.rb": 0.3565339269998731,9491 "spec/models/error_tracking/error_event_spec.rb": 1.1019843759995638,9492 "spec/lib/api/helpers/label_helpers_spec.rb": 0.7477228309999191,9493 "spec/lib/banzai/reference_parser/mentioned_user_parser_spec.rb": 2.7505035929998485,9494 "spec/graphql/types/issue_sort_enum_spec.rb": 0.10463974999947823,9495 "spec/lib/learn_gitlab/onboarding_spec.rb": 0.18707190300028742,9496 "spec/workers/jira_connect/sync_builds_worker_spec.rb": 0.4612130759996944,9497 "spec/models/integrations/irker_spec.rb": 1.1953795890003676,9498 "spec/workers/ci/daily_build_group_report_results_worker_spec.rb": 0.9007809459999407,9499 "spec/workers/merge_requests/resolve_todos_worker_spec.rb": 1.0501309609999225,9500 "spec/models/postgresql/detached_partition_spec.rb": 0.14876245699997526,9501 "spec/lib/gitlab/auth/o_auth/auth_hash_spec.rb": 0.6878226460003134,9502 "spec/lib/gitlab/search/sort_options_spec.rb": 0.27996569399965665,9503 "spec/services/packages/composer/composer_json_service_spec.rb": 2.4705158290007603,9504 "spec/services/ci/job_token_scope/remove_project_service_spec.rb": 1.5951424610002505,9505 "spec/lib/gitlab/usage_data_counters/editor_unique_counter_spec.rb": 0.45199248799963243,9506 "spec/policies/timelog_policy_spec.rb": 0.8038327550002577,9507 "spec/lib/gitlab/usage_data_counters/service_usage_data_counter_spec.rb": 0.1337252470002568,9508 "spec/initializers/cookies_serializer_spec.rb": 0.1650181250006426,9509 "spec/models/users/banned_user_spec.rb": 0.5101597120001315,9510 "spec/lib/gitlab/import_export/group/object_builder_spec.rb": 0.9521337109999877,9511 "spec/lib/gitlab/hook_data/issue_builder_spec.rb": 1.3021430789995065,9512 "spec/views/admin/application_settings/_ci_cd.html.haml_spec.rb": 0.3491257380001116,9513 "spec/lib/gitlab/github_import/object_counter_spec.rb": 0.36903646500013565,9514 "spec/serializers/ci/downloadable_artifact_entity_spec.rb": 1.7856210129993997,9515 "spec/models/x509_issuer_spec.rb": 1.2322912549998364,9516 "spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/strategies_spec.rb": 0.3617161850006596,9517 "spec/models/preloaders/merge_request_diff_preloader_spec.rb": 1.4807391719996303,9518 "spec/lib/gitlab/usage_data_counters/gitlab_cli_activity_unique_counter_spec.rb": 0.18474451299971406,9519 "spec/lib/gitlab/ci/pipeline/quota/deployments_spec.rb": 0.582475064999926,9520 "spec/graphql/resolvers/ci/test_report_summary_resolver_spec.rb": 1.5601095050005824,9521 "spec/policies/group_deploy_key_policy_spec.rb": 0.3962012629999663,9522 "spec/graphql/mutations/boards/lists/update_spec.rb": 1.205887227999483,9523 "spec/graphql/mutations/alert_management/http_integration/create_spec.rb": 0.6366518000004362,9524 "spec/workers/bulk_imports/relation_export_worker_spec.rb": 1.0972911280005064,9525 "spec/lib/gitlab/ci/templates/MATLAB_spec.rb": 1.2556494619993828,9526 "spec/workers/pages_domain_ssl_renewal_worker_spec.rb": 1.137742473999424,9527 "spec/initializers/validate_database_config_spec.rb": 0.4118594020001183,9528 "spec/services/users/saved_replies/update_service_spec.rb": 0.46228576699922996,9529 "spec/lib/gitlab/ci/reports/security/locations/secret_detection_spec.rb": 0.3222537299998294,9530 "spec/rubocop/cop/migration/add_columns_to_wide_tables_spec.rb": 0.4532747780003774,9531 "spec/tooling/rspec_flaky/report_spec.rb": 0.42750235999938013,9532 "spec/lib/gitlab/sql/recursive_cte_spec.rb": 0.5203386519997366,9533 "spec/graphql/mutations/base_mutation_spec.rb": 0.45119590800004516,9534 "spec/lib/generators/gitlab/usage_metric_generator_spec.rb": 0.5885987449992172,9535 "spec/lib/gitlab/time_tracking_formatter_spec.rb": 0.3181611709997014,9536 "spec/models/bulk_imports/file_transfer/group_config_spec.rb": 0.556535728000199,9537 "spec/lib/gitlab/email/message/in_product_marketing_spec.rb": 0.3610046769999826,9538 "spec/graphql/resolvers/clusters/agent_activity_events_resolver_spec.rb": 0.7260271330005708,9539 "spec/lib/bulk_imports/projects/pipelines/project_pipeline_spec.rb": 0.9397614219997195,9540 "spec/lib/bulk_imports/network_error_spec.rb": 0.2961128520000784,9541 "spec/lib/system_check/app/hashed_storage_all_projects_check_spec.rb": 0.955159351000475,9542 "spec/lib/gitlab/event_store/event_spec.rb": 0.23476706800011016,9543 "spec/models/releases/source_spec.rb": 0.3417331880000347,9544 "spec/workers/concerns/cronjob_queue_spec.rb": 0.16022505500041007,9545 "spec/views/shared/_milestones_sort_dropdown.html.haml_spec.rb": 0.8515960610002367,9546 "spec/tooling/rspec_flaky/flaky_examples_collection_spec.rb": 0.18662815199968463,9547 "spec/lib/gitlab/sql/cte_spec.rb": 0.28390729399961856,9548 "spec/views/layouts/nav/sidebar/_profile.html.haml_spec.rb": 0.7777052370001911,9549 "spec/models/raw_usage_data_spec.rb": 0.33523413900002197,9550 "spec/services/bulk_push_event_payload_service_spec.rb": 0.688994375999755,9551 "spec/lib/gitlab/kubernetes/kubectl_cmd_spec.rb": 0.36414541600061057,9552 "spec/helpers/explore_helper_spec.rb": 0.3328228889995444,9553 "spec/lib/gitlab/usage/metrics/instrumentations/count_users_associating_milestones_to_releases_metric_spec.rb": 1.0823679300001459,9554 "spec/lib/gitlab/graphql/find_argument_in_parent_spec.rb": 0.12520963800034224,9555 "spec/serializers/blob_entity_spec.rb": 0.48252321499967366,9556 "spec/lib/gitlab/usage_data_counters/search_counter_spec.rb": 0.12820234800074104,9557 "spec/lib/bulk_imports/groups/pipelines/group_attributes_pipeline_spec.rb": 0.3139963509993322,9558 "spec/models/user_mentions/commit_user_mention_spec.rb": 0.14402981699913653,9559 "spec/lib/product_analytics/event_params_spec.rb": 0.10705932099972415,9560 "spec/graphql/types/namespace/package_settings_type_spec.rb": 0.13763851700059604,9561 "spec/workers/issues/reschedule_stuck_issue_rebalances_worker_spec.rb": 0.40345696300028067,9562 "spec/lib/gitlab/patch/action_cable_redis_listener_spec.rb": 0.16417892499976006,9563 "spec/workers/ci/archive_trace_worker_spec.rb": 0.5710715570003231,9564 "spec/workers/disallow_two_factor_for_subgroups_worker_spec.rb": 0.5092301829999997,9565 "spec/models/blob_viewer/route_map_spec.rb": 0.16701628400005575,9566 "spec/lib/gitlab/config/entry/validator_spec.rb": 0.1809828830000697,9567 "spec/graphql/features/feature_flag_spec.rb": 0.2193772889995671,9568 "spec/lib/gitlab/graphql/tracers/metrics_tracer_spec.rb": 0.16273352400003205,9569 "spec/lib/sidebars/projects/menus/scope_menu_spec.rb": 0.19020749300034367,9570 "spec/rubocop/cop/group_public_or_visible_to_user_spec.rb": 0.12165718800042669,9571 "spec/lib/gitlab/usage_data_counters/base_counter_spec.rb": 0.12018128899944713,9572 "spec/rubocop/cop/database/establish_connection_spec.rb": 0.0950922410002022,9573 "spec/lib/gitlab/ci/config/yaml/tags/resolver_spec.rb": 0.16036101400004554,9574 "spec/graphql/types/kas/agent_metadata_type_spec.rb": 0.1752347940000618,9575 "spec/graphql/types/release_asset_link_type_spec.rb": 0.07969799300008162,9576 "spec/workers/schedule_migrate_external_diffs_worker_spec.rb": 0.07636692300002323,9577 "spec/graphql/types/query_complexity_type_spec.rb": 0.16929178500049602,9578 "spec/graphql/types/projects/service_type_spec.rb": 0.19570896200002608,9579 "spec/graphql/resolvers/packages_base_resolver_spec.rb": 0.05415268599972478,9580 "spec/serializers/jira_connect/subscription_entity_spec.rb": 0.2280710889999682,9581 "spec/lib/bulk_imports/common/transformers/prohibited_attributes_transformer_spec.rb": 0.15179680600067513,9582 "spec/lib/gitlab/rugged_instrumentation_spec.rb": 0.15807566500006942,9583 "spec/rubocop/cop/scalability/idempotent_worker_spec.rb": 0.16483529499964789,9584 "spec/lib/api/helpers/graphql_helpers_spec.rb": 0.2889866629993776,9585 "spec/workers/packages/composer/cache_cleanup_worker_spec.rb": 0.30836696200003644,9586 "spec/services/events/render_service_spec.rb": 0.33691664799971477,9587 "spec/lib/api/entities/nuget/search_result_spec.rb": 0.05927953499940486,9588 "spec/workers/partition_creation_worker_spec.rb": 0.090900340999724,9589 "spec/graphql/types/commit_encoding_enum_spec.rb": 0.11836544900052104,9590 "spec/serializers/evidences/release_serializer_spec.rb": 0.11428336900007707,9591 "spec/lib/gitlab/language_data_spec.rb": 0.21498689999953058,9592 "spec/lib/gitlab/no_cache_headers_spec.rb": 0.15123138599938102,9593 "spec/lib/gitlab/error_tracking/log_formatter_spec.rb": 0.14592609600003925,9594 "spec/graphql/types/merge_request_review_state_enum_spec.rb": 0.11866197900053521,9595 "spec/models/blob_viewer/podspec_spec.rb": 0.1141573189997871,9596 "spec/graphql/types/container_repository_cleanup_status_enum_spec.rb": 0.06943019400023331,9597 "spec/models/discussion_note_spec.rb": 0.070830322999427159598}9599Knapsack global time execution for tests: 25m 17s9600Pending: (Failures listed here are expected and do not affect your suite's status)9601 1) DesignManagement::Design behaves like AtomicInternalId .has_internal_id Validation when presence validation is not required when creating an object does not raise an error if the internal id is blank9602 # No reason given9603 # ./spec/support/shared_examples/models/atomic_internal_id_shared_examples.rb:499604 2) DesignManagement::Design behaves like AtomicInternalId .has_internal_id Validation when presence validation is not required when updating an object does not raise an error if the internal id is blank9605 # No reason given9606 # ./spec/support/shared_examples/models/atomic_internal_id_shared_examples.rb:579607Finished in 25 minutes 20 seconds (files took 1 minute 24.78 seconds to load)96084525 examples, 0 failures, 2 pending9609RSpec exited with 0.9610No examples to retry, congrats!9612Not uploading cache ruby-gems-bullseye-9-non_protected due to policy9613Not uploading cache gitaly-ruby-gems-bullseye-9-non_protected due to policy9615Uploading artifacts...9616coverage/: found 5 matching files and directories 9617crystalball/: found 2 matching files and directories 9618deprecations/: found 4 matching files and directories 9619knapsack/: found 3 matching files and directories 9620rspec/: found 8 matching files and directories 9621WARNING: tmp/capybara/: no matching files 9622log/*.log: found 19 matching files and directories 9623WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/2391235411/artifacts?artifact_format=zip&artifact_type=archive&expire_in=31d new-url=https://gitlab.com9624WARNING: Retrying... context=artifacts-uploader error=request redirected9625Uploading artifacts as "archive" to coordinator... 201 Created id=2391235411 responseStatus=201 Created token=VwFQm2kB9626Uploading artifacts...9627rspec/junit_rspec.xml: found 1 matching files and directories 9628WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/2391235411/artifacts?artifact_format=gzip&artifact_type=junit&expire_in=31d new-url=https://gitlab.com9629WARNING: Retrying... context=artifacts-uploader error=request redirected9630Uploading artifacts as "junit" to coordinator... 201 Created id=2391235411 responseStatus=201 Created token=VwFQm2kB9632Job succeeded