rspec unit pg14 3/24
Passed Started
by
@vshushlin

Vladimir Shushlin
1/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/volume_component_injector.rb:14: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!2/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/workspace_creator.rb:15: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!3/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/workspace_creator.rb:24: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!4/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/workspace_creator.rb:25: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!5/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/workspace_creator.rb:28: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!6/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/workspace_variables_creator.rb:12: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!7/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/reconcile/main.rb:43: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!8/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/update/authorizer.rb:12: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!9/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/update/updater.rb:13: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!10/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/reconcile/input/agent_infos_observer.rb:15: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!11/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/reconcile/input/params_extractor.rb:14: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!12/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/reconcile/input/params_extractor.rb:16: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!13/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/reconcile/input/params_to_infos_converter.rb:14: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!14/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/reconcile/input/params_validator.rb:15: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!15/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/reconcile/output/rails_infos_observer.rb:11: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!16/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/reconcile/output/workspaces_to_rails_infos_converter.rb:15: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!17/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/reconcile/persistence/orphaned_workspaces_observer.rb:12: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!18/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/reconcile/persistence/workspaces_from_agent_infos_updater.rb:15: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!19/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/reconcile/persistence/workspaces_to_be_returned_finder.rb:16: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!20/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/reconcile/persistence/workspaces_to_be_returned_updater.rb:11: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!21Run options: exclude {:quarantine=>true, :level=>"background_migration", :click_house=>true, :real_ai_request=>true}22Test environment set up in 0.861439869 seconds23Project24 returns valid url to repo25 behaves like having unique enum values26 has unique values in "auto_cancel_pending_pipelines"27 behaves like ensures runners_token is prefixed28 #runners_token29 generates runners_token which starts with runner prefix30 when record has an invalid token31 generates runners_token which starts with runner prefix32 associations33 is expected to belong to organization required: false34 is expected to belong to group required: false35 is expected to belong to namespace required: false36 is expected to belong to project_namespace class_name => Namespaces::ProjectNamespace required: false inverse_of => project37 is expected to belong to creator class_name => User required: false38 is expected to belong to pool_repository required: false39 is expected to have many users40 is expected to have many maintainers through project_members source => user41 is expected to have many events42 is expected to have many merge_requests43 is expected to have many merge_request_metrics class_name => MergeRequest::Metrics44 is expected to have many issues45 is expected to have many work_items46 is expected to have many incident_management_issuable_escalation_statuses class_name => IncidentManagement::IssuableEscalationStatus through issues inverse_of => project47 is expected to have many milestones48 is expected to have many project_members dependent => delete_all49 is expected to have many namespace_members50 is expected to have many users through project_members51 is expected to have many requesters dependent => delete_all52 is expected to have many namespace_requesters53 is expected to have many notes dependent => destroy54 is expected to have many snippets class_name => ProjectSnippet55 is expected to have many deploy_keys_projects56 is expected to have many deploy_keys57 is expected to have many hooks58 is expected to have many protected_branches59 is expected to have many exported_protected_branches60 is expected to have one wiki_repository class_name => Projects::WikiRepository inverse_of => project61 is expected to have one design_management_repository class_name => DesignManagement::Repository inverse_of => project62 is expected to have one slack_integration63 is expected to have one catalog_resource64 is expected to have many ci_components class_name => Ci::Catalog::Resources::Component65 is expected to have many catalog_resource_versions class_name => Ci::Catalog::Resources::Version66 is expected to have one microsoft_teams_integration67 is expected to have one mattermost_integration68 is expected to have one hangouts_chat_integration69 is expected to have one telegram_integration70 is expected to have one unify_circuit_integration71 is expected to have one pumble_integration72 is expected to have one webex_teams_integration73 is expected to have one packagist_integration74 is expected to have one pushover_integration75 is expected to have one apple_app_store_integration76 is expected to have one google_play_integration77 is expected to have one asana_integration78 is expected to have many boards79 is expected to have one campfire_integration80 is expected to have one datadog_integration81 is expected to have one discord_integration82 is expected to have one drone_ci_integration83 is expected to have one emails_on_push_integration84 is expected to have one pipelines_email_integration85 is expected to have one irker_integration86 is expected to have one pivotaltracker_integration87 is expected to have one assembla_integration88 is expected to have one slack_slash_commands_integration89 is expected to have one mattermost_slash_commands_integration90 is expected to have one buildkite_integration91 is expected to have one bamboo_integration92 is expected to have one teamcity_integration93 is expected to have one jira_integration94 is expected to have one harbor_integration95 is expected to have one redmine_integration96 is expected to have one youtrack_integration97 is expected to have one clickup_integration98 is expected to have one custom_issue_tracker_integration99 is expected to have one bugzilla_integration100 is expected to have one ewm_integration101 is expected to have one external_wiki_integration102 is expected to have one confluence_integration103 is expected to have one gitlab_slack_application_integration104 is expected to have one project_feature105 is expected to have one project_repository106 is expected to have one container_expiration_policy107 is expected to have one statistics class_name => ProjectStatistics108 is expected to have one import_data class_name => ProjectImportData109 is expected to have one last_event class_name => Event110 is expected to have one forked_from_project through fork_network_member111 is expected to have one auto_devops class_name => ProjectAutoDevops112 is expected to have one error_tracking_setting class_name => ErrorTracking::ProjectErrorTrackingSetting113 is expected to have one project_setting114 is expected to have one alerting_setting class_name => Alerting::ProjectAlertingSetting115 is expected to have one mock_ci_integration116 is expected to have one mock_monitoring_integration117 is expected to have one service_desk_custom_email_verification class_name => ServiceDesk::CustomEmailVerification118 is expected to have one container_registry_data_repair_detail class_name => ContainerRegistry::DataRepairDetail119 is expected to have many container_registry_protection_rules class_name => ContainerRegistry::Protection::Rule120 is expected to have many commit_statuses121 is expected to have many ci_pipelines122 is expected to have many ci_refs123 is expected to have many builds124 is expected to have many build_report_results125 is expected to have many runner_projects126 is expected to have many runners127 is expected to have many variables128 is expected to have many triggers129 is expected to have many labels class_name => ProjectLabel130 is expected to have many users_star_projects131 is expected to have many repository_languages132 is expected to have many environments133 is expected to have many deployments134 is expected to have many todos135 is expected to have many releases136 is expected to have many lfs_objects_projects137 is expected to have many project_group_links138 is expected to have many notification_settings dependent => delete_all139 is expected to have many forked_to_members class_name => ForkNetworkMember140 is expected to have many forks through forked_to_members141 is expected to have many uploads142 is expected to have many pipeline_schedules143 is expected to have many members_and_requesters144 is expected to have many namespace_members_and_requesters145 is expected to have many clusters146 is expected to have many management_clusters class_name => Clusters::Cluster147 is expected to have many kubernetes_namespaces148 is expected to have many cluster_agents class_name => Clusters::Agent149 is expected to have many custom_attributes class_name => ProjectCustomAttribute150 is expected to have many project_badges class_name => ProjectBadge151 is expected to have many lfs_file_locks152 is expected to have many project_deploy_tokens153 is expected to have many deploy_tokens through project_deploy_tokens154 is expected to have many external_pull_requests155 is expected to have many sourced_pipelines156 is expected to have many source_pipelines157 is expected to have many prometheus_alert_events158 is expected to have many alert_management_alerts159 is expected to have many alert_management_http_integrations160 is expected to have many jira_imports161 is expected to have many repository_storage_moves162 is expected to have many reviews inverse_of => project163 is expected to have many packages class_name => Packages::Package164 is expected to have many package_files class_name => Packages::PackageFile165 is expected to have many rpm_repository_files class_name => Packages::Rpm::RepositoryFile inverse_of => project dependent => destroy166 is expected to have many debian_distributions class_name => Packages::Debian::ProjectDistribution dependent => destroy167 is expected to have many npm_metadata_caches class_name => Packages::Npm::MetadataCache168 is expected to have one packages_cleanup_policy class_name => Packages::Cleanup::Policy inverse_of => project169 is expected to have many package_protection_rules class_name => Packages::Protection::Rule inverse_of => project170 is expected to have many pipeline_artifacts dependent => restrict_with_error171 is expected to have many terraform_states class_name => Terraform::State inverse_of => project172 is expected to have many timelogs173 is expected to have many error_tracking_client_keys class_name => ErrorTracking::ClientKey174 is expected to have many pending_builds class_name => Ci::PendingBuild175 is expected to have many ci_feature_usages class_name => Projects::CiFeatureUsage176 is expected to have many bulk_import_exports class_name => BulkImports::Export177 is expected to have many job_artifacts dependent => restrict_with_error178 is expected to have many build_trace_chunks through builds dependent => restrict_with_error179 is expected to have many secure_files class_name => Ci::SecureFile dependent => restrict_with_error180 is expected to have one build_artifacts_size_refresh class_name => Projects::BuildArtifactsSizeRefresh181 is expected to have many project_callouts class_name => Users::ProjectCallout182 is expected to have many pipeline_metadata class_name => Ci::PipelineMetadata183 is expected to have many incident_management_timeline_event_tags class_name => IncidentManagement::TimelineEventTag184 is expected to have many integrations185 is expected to have many push_hooks_integrations class_name => Integration186 is expected to have many tag_push_hooks_integrations class_name => Integration187 is expected to have many issue_hooks_integrations class_name => Integration188 is expected to have many confidential_issue_hooks_integrations class_name => Integration189 is expected to have many merge_request_hooks_integrations class_name => Integration190 is expected to have many note_hooks_integrations class_name => Integration191 is expected to have many confidential_note_hooks_integrations class_name => Integration192 is expected to have many job_hooks_integrations class_name => Integration193 is expected to have many archive_trace_hooks_integrations class_name => Integration194 is expected to have many pipeline_hooks_integrations class_name => Integration195 is expected to have many wiki_page_hooks_integrations class_name => Integration196 is expected to have many deployment_hooks_integrations class_name => Integration197 is expected to have many alert_hooks_integrations class_name => Integration198 is expected to have many incident_hooks_integrations class_name => Integration199 is expected to have many pages_domains200 is expected to have one pages_metadatum201 is expected to have many pages_deployments202 has an inverse relationship with merge requests203 has a distinct has_many :lfs_objects relation through lfs_objects_projects204 behaves like model with repository205 container class includes HasRepository206 #commits_by207 retrieves several commits from the repository by oid208 #web_url209 when given the only_path option210 when only_path is false211 returns the full web URL for this repo212 when only_path is true213 returns the relative web URL for this repo214 when only_path is nil215 returns the full web URL for this repo216 when not given the only_path option217 returns the full web URL for this repo218 #url_to_repo219 returns the SSH URL to the repository220 #ssh_url_to_repo221 returns the SSH URL to the repository222 #http_url_to_repo223 returns the HTTP URL to the repository224 #repository225 returns valid repo226 uses the same container227 #storage228 returns valid storage229 #full_path230 returns valid full_path231 #lfs_enabled?232 returns the expected value233 #empty_repo?234 when the repo does not exist235 returns true236 when the repo exists237 returns the empty state of the repository238 #valid_repo?239 is expected to equal false240 is expected to equal true241 #repository_exists?242 is expected to equal false243 is expected to equal true244 #repo_exists?245 is expected to equal false246 is expected to equal true247 #root_ref248 is expected to equal true249 is expected to equal false250 is expected to equal false251 Respond to252 is expected to respond to #base_dir253 is expected to respond to #disk_path254 is expected to respond to #gitlab_shell255 #change_head256 delegates #change_head to repository257 #after_repository_change_head258 calls #reload_default_branch259 publishes an Repositories::DefaultBranchChangedEvent event260 behaves like model with wiki261 #create_wiki262 returns true if the wiki repository already exists263 returns true if the wiki repository was created264 when the repository cannot be created265 returns false and adds a validation error266 #wiki_repository_exists?267 returns true when the wiki repository exists268 returns false when the wiki repository does not exist269 wiki path conflict270 when the new path has been used by the wiki of other Project271 has an error on the name attribute272 when the new wiki path has been used by the path of other Project273 has an error on the name attribute274 when the new path has been used by the wiki of other Group275 has an error on the name attribute276 when the new wiki path has been used by the path of other Group277 has an error on the name attribute278 behaves like can move repository storage279 #set_repository_read_only!280 makes the repository read-only281 raises an error if the project is already read-only282 raises an error when there is an existing git transfer in progress283 skip_git_transfer_check is true284 makes the project read-only when git transfers are in progress285 #set_repository_writable!286 sets repository_read_only to false287 #reference_counter288 returns a Gitlab::ReferenceCounter object289 maintainers association290 returns only maintainers291 after initialized292 has a project_feature293 when deleting project294 also deletes the associated ProjectNamespace295 when project has object storage attached to it296 when associated object storage object is not deleted before the project297 adds an error to project298 when associated object storage object is deleted before the project299 deletes the project300 when creating a new project301 automatically creates a CI/CD settings row302 automatically creates a container expiration policy row303 does not create another container expiration policy if there is already one304 automatically creates a Pages metadata row305 automatically builds a project setting row306 with project namespaces307 behaves like creates project namespace308 automatically creates a project namespace309 updating a project310 when project has an associated project namespace311 project is INVALID when trying to remove project namespace312 when same project is being updated in 2 instances313 syncs only changed attributes314 updating cd_cd_settings315 does not raise an error316 #namespace_members317 includes the correct users318 is equivalent to #project_members319 behaves like query without source filters320 is expected not to include "source_id" and "source_type"321 #namespace_requesters322 includes the correct users323 is equivalent to #project_members324 behaves like query without source filters325 is expected not to include "source_id" and "source_type"326 #namespace_members_and_requesters327 includes the correct users328 is equivalent to #project_members329 behaves like query without source filters330 is expected not to include "source_id" and "source_type"331 #namespace_members setters332 is expected to be an instance of ProjectMember333 is expected to eq #<User id:15 @user14>334 is expected to eq #<Project id:25 namespace1/project-29>>335 is expected to be nil336 behaves like polymorphic membership relationship337 is expected to include {"source_type" => "Project", "source_id" => 25}338 behaves like member_namespace membership relationship339 is expected to include {"member_namespace_id" => 42}340 #namespace_requesters setters341 is expected to be an instance of ProjectMember342 is expected to eq #<User id:16 @user15>343 is expected to eq #<Project id:26 namespace1/project-30>>344 is expected to eq 2023-10-20 08:30:17.660901872 +0000345 behaves like polymorphic membership relationship346 is expected to include {"source_type" => "Project", "source_id" => 26}347 behaves like member_namespace membership relationship348 is expected to include {"member_namespace_id" => 44}349 #namespace_members_and_requesters setters350 is expected to be an instance of ProjectMember351 is expected to eq #<User id:17 @user16>352 is expected to eq #<Project id:27 namespace1/project-31>>353 is expected to eq 2023-10-20 08:30:18.289226836 +0000354 behaves like polymorphic membership relationship355 is expected to include {"source_type" => "Project", "source_id" => 27}356 behaves like member_namespace membership relationship357 is expected to include {"member_namespace_id" => 46}358 #members & #requesters359 behaves like members and requesters associations360 #members_and_requesters361 includes members and requesters362 #members363 includes members and exclude requesters364 #requesters365 does not include requesters366 ci_pipelines association367 returns only pipelines from ci_sources368 order of the `has_many :notes` association369 has `has_many :notes` as the first association among all the other associations thatincludes the `Issuable` module370 modules371 is expected to includes the Gitlab::ConfigHelper module372 is expected to includes the Gitlab::ShellAdapter module373 is expected to includes the Gitlab::VisibilityLevel module374 is expected to includes the Referable module375 is expected to includes the Sortable module376 before_validation377 with removal of leading spaces378 removes the leading space379 when name is nil380 falls through to the presence validation381 validation382 is expected to validate that :name cannot be empty/falsy383 is expected to validate that :name is case-sensitively unique within the scope of :namespace_id384 is expected to validate that the length of :name is at most 255385 is expected to allow :name to be ‹"space last "›386 is expected not to allow :path to be ‹"colon:in:path"›387 is expected to validate that :path cannot be empty/falsy388 is expected to validate that the length of :path is at most 255389 is expected to validate that the length of :description is at most 2000390 is expected to validate that the length of :ci_config_path is at most 255391 is expected to allow :ci_config_path to be ‹""›392 is expected not to allow :ci_config_path to be ‹"test/../foo"›393 is expected not to allow :ci_config_path to be ‹"/test/foo"›394 is expected to validate that :creator cannot be empty/falsy395 is expected to validate that :namespace cannot be empty/falsy396 is expected to validate that :repository_storage cannot be empty/falsy397 is expected to validate that :max_artifacts_size looks like an integer greater than 0398 is expected to validate that the length of :suggestion_commit_message is at most 255399 validates build timeout constraints400 does not allow new projects beyond user limits401 validates the visibility402 validates presence of project_feature403 validates project namespace creation404 does not create project namespace if project is not created405 repository storages inclusion406 does not allow repository storages that don't match a label in the configuration407 import_url408 does not allow an invalid URI as import_url409 does allow a SSH URI as import_url for persisted projects410 does not allow a SSH URI as import_url for new projects411 does allow a valid URI as import_url412 allows an empty URI413 does not produce import data on an empty URI414 does not produce import data on an invalid URI415 does not allow import_url pointing to localhost416 does not allow import_url pointing to the local network417 does not allow import_url with invalid ports for new projects418 does not allow import_url with invalid ports for persisted projects419 does not allow import_url with invalid user420 does not allow URLs with unencoded CR or LF characters421 allow URLs with CR or LF characters422 project pending deletion423 contains errors related to the project being deleted424 name format validation425 rejects a name starting with '.'426 rejects a name starting with '-'427 rejects a name starting with '$'428 name is unchanged429 does not raise validation error for name for existing project430 path validation431 allows paths reserved on the root namespace432 rejects paths reserved on another level433 rejects nested paths434 allows a reserved group name435 rejects a path ending in '.'436 rejects a path starting with '.'437 rejects a path ending in '-'438 rejects a path starting with '-'439 rejects a path ending in '_'440 rejects a path starting with '_'441 when validating if path already exist as pages unique domain442 rejects paths that match pages unique domain443 accepts path when the host does not match444 accepts path when the domain does not match445 path is unchanged446 does not raise validation error for path for existing project447 behaves like a BulkUsersByEmailLoad model448 #users_by_emails449 when nothing is loaded450 preforms the yielded query and supplies the data with only emails desired451 when store is preloaded452 passes back loaded data and does not update the items that already exist453 #all_pipelines454 has all pipelines455 when builds are disabled456 returns .external pipelines457 #ci_pipelines458 excludes dangling pipelines such as :webide459 when builds are disabled460 returns .external pipelines461 #commit_notes462 returns project's commit notes463 #personal_namespace_holder?464 project: personal_project, user: namespace_user, result: true465 is expected to eq true466 project: personal_project, user: admin_user, result: false467 is expected to eq false468 project: personal_project, user: another_user, result: false469 is expected to eq false470 project: personal_project, user: nil, result: false471 is expected to eq false472 project: group_project, user: namespace_user, result: false473 is expected to eq false474 project: group_project, user: group_owner_user, result: false475 is expected to eq false476 project: group_project, user: another_user, result: false477 is expected to eq false478 project: group_project, user: nil, result: false479 is expected to eq false480 project: group_project, user: nil, result: false481 is expected to eq false482 project: group_project, user: admin_user, result: false483 is expected to eq false484 #invalidate_personal_projects_count_of_owner485 for personal projects486 invalidates personal_project_count cache of the the owner of the personal namespace487 for projects in groups488 does not invalidates any cache489 #default_pipeline_lock490 keep_latest_artifact_enabled: false, result_pipeline_locked: :unlocked491 is expected to eq :unlocked492 keep_latest_artifact_enabled: true, result_pipeline_locked: :artifacts_locked493 is expected to eq :artifacts_locked494 #membership_locked?495 returns false496 #autoclose_referenced_issues497 when DB entry is nil498 returns true499 when DB entry is true500 returns true501 when DB entry is false502 returns false503 project token504 sets an random token if none provided505 does not set an random token if one provided506 Respond to507 is expected to respond to #url_to_repo508 is expected to respond to #execute_hooks509 is expected to respond to #owner510 is expected to respond to #path_with_namespace511 is expected to respond to #full_path512 delegation513 is expected to delegate #add_guest to the #team object514 is expected to delegate #add_reporter to the #team object515 is expected to delegate #add_developer to the #team object516 is expected to delegate #add_maintainer to the #team object517 is expected to delegate #add_member to the #team object518 is expected to delegate #add_members to the #team object519 is expected to delegate #team_members to the #team object as #members520 is expected to delegate #owner_name to the #owner object as #name, allowing #owner to return nil521 is expected to delegate #root_ancestor to the #namespace object, allowing #namespace to return nil522 is expected to delegate #certificate_based_clusters_enabled? to the #namespace object, allowing #namespace to return nil523 is expected to delegate #last_pipeline to the #commit object, allowing #commit to return nil524 is expected to delegate #container_registry_enabled? to the #project_feature object525 is expected to delegate #container_registry_access_level to the #project_feature object526 is expected to delegate #environments_access_level to the #project_feature object527 is expected to delegate #model_experiments_access_level to the #project_feature object528 is expected to delegate #feature_flags_access_level to the #project_feature object529 is expected to delegate #releases_access_level to the #project_feature object530 is expected to delegate #infrastructure_access_level to the #project_feature object531 is expected to delegate #maven_package_requests_forwarding to the #namespace object532 is expected to delegate #pypi_package_requests_forwarding to the #namespace object533 is expected to delegate #npm_package_requests_forwarding to the #namespace object534 read project settings535 is expected to delegate #show_default_award_emojis to the #project_setting object, allowing #project_setting to return nil536 is expected to delegate #show_default_award_emojis? to the #project_setting object, allowing #project_setting to return nil537 is expected to delegate #warn_about_potentially_unwanted_characters to the #project_setting object, allowing #project_setting to return nil538 is expected to delegate #warn_about_potentially_unwanted_characters? to the #project_setting object, allowing #project_setting to return nil539 is expected to delegate #enforce_auth_checks_on_uploads to the #project_setting object, allowing #project_setting to return nil540 is expected to delegate #enforce_auth_checks_on_uploads? to the #project_setting object, allowing #project_setting to return nil541 write project settings542 is expected to delegate #show_default_award_emojis= to the #project_setting object passing arguments [:args], allowing #project_setting to return nil543 is expected to delegate #warn_about_potentially_unwanted_characters= to the #project_setting object passing arguments [:args], allowing #project_setting to return nil544 is expected to delegate #enforce_auth_checks_on_uploads= to the #project_setting object passing arguments [:args], allowing #project_setting to return nil545 when ci_cd_settings is destroyed but project is not546 allows methods delegated to ci_cd_settings to be nil547 #ci_forward_deployment_enabled?548 behaves like a ci_cd_settings predicate method549 when ci_cd_settings is nil550 returns false551 when ci_cd_settings is not nil552 delegated_method_return: true, subject_return: true553 returns the expected boolean value554 delegated_method_return: false, subject_return: false555 returns the expected boolean value556 #ci_forward_deployment_rollback_allowed?557 behaves like a ci_cd_settings predicate method558 when ci_cd_settings is nil559 returns false560 when ci_cd_settings is not nil561 delegated_method_return: true, subject_return: true562 returns the expected boolean value563 delegated_method_return: false, subject_return: false564 returns the expected boolean value565 #ci_allow_fork_pipelines_to_run_in_parent_project?566 behaves like a ci_cd_settings predicate method567 when ci_cd_settings is nil568 returns false569 when ci_cd_settings is not nil570 delegated_method_return: true, subject_return: true571 returns the expected boolean value572 delegated_method_return: false, subject_return: false573 returns the expected boolean value574 #ci_outbound_job_token_scope_enabled?575 behaves like a ci_cd_settings predicate method576 when ci_cd_settings is nil577 returns false578 when ci_cd_settings is not nil579 delegated_method_return: true, subject_return: true580 returns the expected boolean value581 delegated_method_return: false, subject_return: false582 returns the expected boolean value583 #ci_inbound_job_token_scope_enabled?584 behaves like a ci_cd_settings predicate method585 when ci_cd_settings is nil586 returns false587 when ci_cd_settings is not nil588 delegated_method_return: true, subject_return: true589 returns the expected boolean value590 delegated_method_return: false, subject_return: false591 returns the expected boolean value592 #restrict_user_defined_variables?593 behaves like a ci_cd_settings predicate method594 when ci_cd_settings is nil595 returns false596 when ci_cd_settings is not nil597 delegated_method_return: true, subject_return: true598 returns the expected boolean value599 delegated_method_return: false, subject_return: false600 returns the expected boolean value601 #keep_latest_artifacts_available?602 behaves like a ci_cd_settings predicate method603 when ci_cd_settings is nil604 returns false605 when ci_cd_settings is not nil606 delegated_method_return: true, subject_return: true607 returns the expected boolean value608 delegated_method_return: false, subject_return: false609 returns the expected boolean value610 #keep_latest_artifact?611 behaves like a ci_cd_settings predicate method612 when ci_cd_settings is nil613 returns false614 when ci_cd_settings is not nil615 delegated_method_return: true, subject_return: true616 returns the expected boolean value617 delegated_method_return: false, subject_return: false618 returns the expected boolean value619 #group_runners_enabled?620 behaves like a ci_cd_settings predicate method621 when ci_cd_settings is nil622 returns false623 when ci_cd_settings is not nil624 delegated_method_return: true, subject_return: true625 returns the expected boolean value626 delegated_method_return: false, subject_return: false627 returns the expected boolean value628 #merge_commit_template_or_default629 returns default merge commit template630 when merge commit template is set and not nil631 returns current value632 #merge_commit_template_or_default=633 sets template to nil when set to default value634 sets template to nil when set to default value but with CRLF line endings635 allows changing template636 allows setting template to nil637 #squash_commit_template_or_default638 returns default squash commit template639 when squash commit template is set and not nil640 returns current value641 #squash_commit_template_or_default=642 sets template to nil when set to default value643 allows changing template644 allows setting template to nil645 reference methods646 #to_reference647 returns the path with reference_postfix648 returns the path with reference_postfix when arg is self649 returns the full_path with reference_postfix when full650 returns the full_path with reference_postfix when cross-project651 #to_reference_base652 when nil argument653 returns nil654 when full is true655 returns complete path to the project656 when same project argument657 returns nil658 when cross namespace project argument659 returns complete path to the project660 when same namespace / cross-project argument661 returns path to the project662 when different namespace / cross-project argument with same owner663 returns full path to the project664 when argument is a namespace665 with same project path666 returns path to the project667 with different project path668 returns full path to the project669 when argument is a user670 returns full path to the project671 #to_human_reference672 when nil argument673 returns nil674 when same project argument675 returns nil676 when cross namespace project argument677 returns complete name with namespace of the project678 when same namespace / cross-project argument679 returns name of the project680 #to_reference_base681 project: project1, full: false, from: nil, result: nil682 returns correct path683 project: project1, full: true, from: nil, result: lazy { project.full_path }684 returns correct path685 project: project1, full: false, from: group, result: lazy { project.path }686 returns correct path687 project: project1, full: true, from: group, result: lazy { project.full_path }688 returns correct path689 project: project1, full: false, from: parent, result: lazy { project.full_path }690 returns correct path691 project: project1, full: true, from: parent, result: lazy { project.full_path }692 returns correct path693 project: project1, full: false, from: project1, result: nil694 returns correct path695 project: project1, full: true, from: project1, result: lazy { project.full_path }696 returns correct path697 project: project1, full: false, from: project_namespace, result: nil698 returns correct path699 project: project1, full: true, from: project_namespace, result: lazy { project.full_path }700 returns correct path701 project: project1, full: false, from: project2, result: lazy { project.path }702 returns correct path703 project: project1, full: true, from: project2, result: lazy { project.full_path }704 returns correct path705 project: project1, full: false, from: project_namespace2, result: lazy { project.path }706 returns correct path707 project: project1, full: true, from: project_namespace2, result: lazy { project.full_path }708 returns correct path709 project: project1, full: false, from: another_group, result: lazy { project.full_path }710 returns correct path711 project: project1, full: true, from: another_group, result: lazy { project.full_path }712 returns correct path713 project: project1, full: false, from: project3, result: lazy { project.full_path }714 returns correct path715 project: project1, full: true, from: project3, result: lazy { project.full_path }716 returns correct path717 project: project1, full: false, from: project_namespace3, result: lazy { project.full_path }718 returns correct path719 project: project1, full: true, from: project_namespace3, result: lazy { project.full_path }720 returns correct path721 project: project1, full: false, from: user_namespace, result: lazy { project.full_path }722 returns correct path723 project: project1, full: true, from: user_namespace, result: lazy { project.full_path }724 returns correct path725 #merge_method726 ff: true, rebase: true, method: :ff727 is expected to eq :ff728 ff: true, rebase: false, method: :ff729 is expected to eq :ff730 ff: false, rebase: true, method: :rebase_merge731 is expected to eq :rebase_merge732 ff: false, rebase: false, method: :merge733 is expected to eq :merge734 #readme_url735 with a non-existing repository736 returns nil737 with an existing repository738 when no README exists739 returns nil740 when a README exists741 returns the README742 #new_issuable_address743 incoming email enabled744 returns the address to create a new issue745 returns the address to create a new merge request746 returns nil with invalid address type747 incoming email disabled748 returns nil749 returns nil750 last_activity methods751 last_activity752 alias last_activity to last_event753 last_activity_date754 returns the project's last update date755 #get_issue756 with default issues tracker757 returns an issue758 returns count of open issues759 returns nil when no issue found760 returns nil when user doesn't have access761 with external issues tracker762 when internal issues are enabled763 returns interlan issue764 returns an ExternalIssue when internal issue does not exists765 when internal issues are disabled766 returns always an External issues767 returns an ExternalIssue when internal issue does not exists768 #open_issues_count769 provides the issue count770 invokes the count service with current_user771 invokes the batch count service with no current_user772 #open_merge_requests_count773 provides the merge request count774 #issue_exists?775 is truthy when issue exists776 is falsey when issue does not exist777 #to_param778 with namespace779 is expected to eq "gitlabhq"780 with invalid path781 returns previous path to keep project suitable for use in URLs when persisted782 returns current path when new record783 #default_issues_tracker?784 is true if used internal tracker785 is false if used other tracker786 #has_wiki?787 returns true if project is wiki enabled or has external wiki788 #first_owner789 the project does not have a group790 is the namespace owner791 the project is in a group792 is the group owner793 #external_issue_tracker794 sets Project#has_external_issue_tracker when it is nil795 returns nil and does not query services when there is no external issue tracker796 retrieves external_issue_tracker querying services and cache it when there is external issue tracker797 #has_external_issue_tracker798 is false when external issue tracker integration is not active799 is false when other integration is active800 when there is an active external issue tracker integration801 is expected to eq true802 becomes false when external issue tracker integration is destroyed803 becomes false when external issue tracker integration becomes inactive804 when there are two active external issue tracker integrations805 does not become false when external issue tracker integration is destroyed806 does not become false when external issue tracker integration becomes inactive807 #external_wiki808 returns an active external wiki809 does not return an inactive external wiki810 sets Project#has_external_wiki when it is nil811 #has_external_wiki812 is expected to eq false813 when there is an active external wiki integration814 is expected to eq true815 becomes false if the external wiki integration is destroyed816 becomes false if the external wiki integration becomes inactive817 when created as inactive818 is false819 #star_count820 counts stars from multiple users821 does not count stars from blocked users822 counts stars on the right project823 #avatar_type824 is true if avatar is image825 is false if avatar is html page826 #avatar_url827 when avatar file is uploaded828 shows correct url829 when avatar file in git830 is expected to eq "http://localhost/namespace1/project-181/-/avatar"831 when git repo is empty832 is expected to eq nil833 #builds_enabled834 is expected to be truthy835 .sort_by_attribute836 reorders the input relation by start count desc837 reorders the input relation by last activity desc838 reorders the input relation by last activity asc839 sorting by name840 when using .sort_by_name_desc841 reorders the projects by descending name order842 when using .sort_by_name_asc843 reorders the projects by ascending name order844 .with_shared_runners_enabled845 when shared runners are enabled for project846 returns a project847 when shared runners are disabled for project848 returns an empty array849 .with_remote_mirrors850 when some remote mirrors are enabled for the project851 returns a project852 when some remote mirrors exists but disabled for the project853 returns a project854 when no remote mirrors exist for the project855 returns an empty list856 .with_jira_dvcs_cloud857 returns the correct project858 .with_jira_dvcs_server859 returns the correct project860 .with_slack_application_disabled861 when the Slack app setting is enabled862 includes only projects where Slack app is disabled or absent863 when the Slack app setting is not enabled864 includes all projects865 .with_slack_integration866 returns projects with both active and inactive slack integrations867 .with_slack_slash_commands_integration868 returns projects with both active and inactive slack slash commands integrations869 .cached_count870 returns total project count871 .trending872 sorts projects by the amount of notes in descending order873 does not take system notes into account874 .starred_by875 returns only projects starred by the given user876 .with_limit877 limits the number of projects returned878 .visible_to_user879 when a user has access to a project880 is expected to eq [#<Project id:183 namespace1/project-218>>]881 when a user does not have access to any projects882 is expected to eq []883 .with_integration884 returns the correct projects885 .with_active_integration886 returns the correct projects887 .include_integration888 avoids n + 1889 .service_desk_enabled890 returns the correct project891 #service_desk_enabled?892 is enabled893 #service_desk_address894 when service_desk_email is disabled895 behaves like with incoming email address896 when incoming email is enabled897 uses project full path as service desk address key898 when incoming email is disabled899 uses project full path as service desk address key900 when service_desk_email is enabled901 when project_key is set902 returns Service Desk alias address including the project_key903 when project_key is not set904 returns Service Desk alias address including the project full path905 when custom email is enabled906 returns custom email address907 when feature flag service_desk_custom_email is disabled908 returns custom email address909 .with_service_desk_key910 returns projects with given key911 returns empty if there is no project with the key912 .find_by_url913 url is internal914 path is recognised as a project path915 is expected to eq #<Project id:200 namespace1/project-236>>916 returns nil if the path detection throws an error917 path is not a project path918 is expected to be nil919 url is external920 is expected to be nil921 .without_integration922 returns projects without the integration923 repository storage by default924 picks storage from ApplicationSetting925 shared runners by default926 are enabled927 is expected to be truthy928 are disabled929 is expected to be falsey930 #any_online_runners?931 shared runners932 for shared runners disabled933 has no runners available934 has a project runner935 has a shared runner, but they are prohibited to use936 checks the presence of project runner937 returns false if match cannot be found938 returns false if runner is offline939 for shared runners enabled940 has a shared runner941 checks the presence of shared runner942 returns false if match cannot be found943 group runners944 for group runners disabled945 has no runners available946 has a group runner, but they are prohibited to use947 for group runners enabled948 has a group runner949 has an offline group runner950 checks the presence of group runner951 returns false if match cannot be found952 #shared_runners953 behaves like shared_runners954 when shared runners are enabled for project955 returns a list of shared runners956 when shared runners are disabled for project957 returns a empty list958 #available_shared_runners959 behaves like shared_runners960 when shared runners are enabled for project961 returns a list of shared runners962 when shared runners are disabled for project963 returns a empty list964 #visibility_level965 by default966 is expected to eq 0967 when set to INTERNAL in application settings968 is expected to eq 10969 attribute_name: :visibility, value: "public"970 sets the visibility level971 attribute_name: :visibility_level, value: 20972 sets the visibility level973 attribute_name: "visibility", value: "public"974 sets the visibility level975 attribute_name: "visibility_level", value: 20976 sets the visibility level977 #visibility_level_allowed?978 when checking on non-forked project979 is expected to be truthy980 is expected to be truthy981 is expected to be truthy982 when checking on forked project983 is expected to be truthy984 is expected to be truthy985 is expected to be falsey986 #pages_show_onboarding?987 if there is no metadata988 is expected to be truthy989 if onboarding is complete990 is expected to be falsey991 if there is metadata, but onboarding is not complete992 is expected to be truthy993 will return false if pages is deployed even if onboarding_complete is false994 is expected to be falsey995 #pages_deployed?996 if pages are deployed997 is expected to be truthy998 if public folder doesn't exist999 is expected to be falsey1000 #default_branch_protected?1001 default_branch_protection_level: 0, result: false1002 is expected to eq false1003 default_branch_protection_level: 1, result: false1004 is expected to eq false1005 default_branch_protection_level: 3, result: true1006 is expected to eq true1007 default_branch_protection_level: 2, result: true1008 is expected to eq true1009 default_branch_protection_level: 4, result: true1010 is expected to eq true1011 initial_push_to_default_branch_allowed_for_developer?1012 default_branch_protection_level: 0, result: true1013 is expected to eq true1014 default_branch_protection_level: 1, result: true1015 is expected to eq true1016 default_branch_protection_level: 3, result: false1017 is expected to eq false1018 default_branch_protection_level: 2, result: false1019 is expected to eq false1020 default_branch_protection_level: 4, result: true1021 is expected to eq true1022 .search1023 returns projects with a matching name1024 returns projects with a partially matching name1025 returns projects with a matching name regardless of the casing1026 returns projects with a matching description1027 returns projects with a partially matching description1028 returns projects with a matching description regardless of the casing1029 returns projects with a matching path1030 returns projects with a partially matching path1031 returns projects with a matching path regardless of the casing1032 defaults use_minimum_char_limit to true1033 passes use_minimum_char_limit if it is set1034 when include_namespace is true1035 returns projects that match the group path1036 returns projects that match the full path1037 with pending_delete project1038 shows pending deletion project1039 .optionally_search1040 searches for projects matching the query if one is given1041 returns the current relation if no search query is given1042 .eager_load_namespace_and_owner1043 eager loads the namespace and namespace owner1044 #expire_caches_before_rename1045 expires the caches of the repository and wiki1046 .search_by_title1047 returns projects with a matching name1048 returns projects with a partially matching name1049 returns projects with a matching name regardless of the casing1050 when checking projects from groups1051 when group is private project can not be internal1052 is expected to be falsey1053 when group is internal project can not be public1054 is expected to be falsey1055 #track_project_repository1056 with projects on legacy storage1057 behaves like tracks storage location1058 when a project repository entry does not exist1059 creates a new entry1060 tracks the project storage location1061 when a tracking entry exists1062 does not create a new entry in the database1063 updates the project storage location1064 refreshes a memoized repository value1065 when "replicate_object_pool_on_move" FF is disabled1066 does not update a memoized repository value1067 with projects on hashed storage1068 behaves like tracks storage location1069 when a project repository entry does not exist1070 creates a new entry1071 tracks the project storage location1072 when a tracking entry exists1073 does not create a new entry in the database1074 updates the project storage location1075 refreshes a memoized repository value1076 when "replicate_object_pool_on_move" FF is disabled1077 does not update a memoized repository value1078 #create_repository1079 using a regular repository1080 creates the repository1081 adds an error if the repository could not be created1082 passes through default branch1083 using a forked repository1084 does nothing1085 #ensure_repository1086 creates the repository if it not exist1087 does not create the repository if it exists1088 creates the repository if it is a fork1089 handling import URL1090 returns the sanitized URL1091 saves the url credentials percent decoded1092 saves url with no credentials1093 #container_registry_url1094 for enabled registry1095 is expected not to be nil1096 for disabled registry1097 is expected to be nil1098 #container_repositories_size1099 on gitlab.com1100 no_container_repositories: true, all_migrated: nil, gitlab_api_supported: nil, returned_size: nil, expected_result: 01101 is expected to eq 01102 no_container_repositories: false, all_migrated: false, gitlab_api_supported: nil, returned_size: nil, expected_result: nil1103 is expected to eq nil1104 no_container_repositories: false, all_migrated: true, gitlab_api_supported: false, returned_size: nil, expected_result: nil1105 is expected to eq nil1106 no_container_repositories: false, all_migrated: true, gitlab_api_supported: true, returned_size: 555, expected_result: 5551107 is expected to eq 5551108 no_container_repositories: false, all_migrated: true, gitlab_api_supported: true, returned_size: nil, expected_result: nil1109 is expected to eq nil1110 not on gitlab.com1111 is expected to eq nil1112 #container_registry_enabled=1113 updates project_feature1114 #container_registry_enabled1115 delegates to project_feature1116 #has_container_registry_tags?1117 when container registry is enabled1118 when tags are present for multi-level registries1119 has image tags1120 when tags are present for root repository1121 has image tags1122 when there are no tags at all1123 does not have image tags1124 when container registry is disabled1125 does not have image tags1126 does not check root repository tags1127 iterates through container repositories1128 #ci_config_path=1129 default_ci_config_path: nil, project_ci_config_path: :notset, expected_ci_config_path: :default1130 returns the correct path1131 default_ci_config_path: nil, project_ci_config_path: nil, expected_ci_config_path: :default1132 returns the correct path1133 default_ci_config_path: nil, project_ci_config_path: "", expected_ci_config_path: :default1134 returns the correct path1135 default_ci_config_path: nil, project_ci_config_path: "cust\u0000om/\u0000/path", expected_ci_config_path: "custom//path"1136 returns the correct path1137 default_ci_config_path: "", project_ci_config_path: :notset, expected_ci_config_path: :default1138 returns the correct path1139 default_ci_config_path: "", project_ci_config_path: nil, expected_ci_config_path: :default1140 returns the correct path1141 default_ci_config_path: "", project_ci_config_path: "", expected_ci_config_path: :default1142 returns the correct path1143 default_ci_config_path: "", project_ci_config_path: "cust\u0000om/\u0000/path", expected_ci_config_path: "custom//path"1144 returns the correct path1145 default_ci_config_path: "global/path", project_ci_config_path: :notset, expected_ci_config_path: "global/path"1146 returns the correct path1147 default_ci_config_path: "global/path", project_ci_config_path: nil, expected_ci_config_path: :default1148 returns the correct path1149 default_ci_config_path: "global/path", project_ci_config_path: "", expected_ci_config_path: :default1150 returns the correct path1151 default_ci_config_path: "global/path", project_ci_config_path: "cust\u0000om/\u0000/path", expected_ci_config_path: "custom//path"1152 returns the correct path1153 #uses_default_ci_config?1154 has a custom ci config path1155 has a blank ci config path1156 does not have a custom ci config path1157 #latest_successful_build_for_ref1158 behaves like latest successful build for sha or ref1159 with many builds1160 gives the latest builds from latest pipeline1161 with succeeded pipeline1162 standalone pipeline1163 returns builds for ref for default_branch1164 with nonexistent build1165 returns empty relation if the build cannot be found1166 with some pending pipeline1167 gives the latest build from latest pipeline1168 with pending pipeline1169 returns empty relation1170 with build belonging to a child pipeline1171 returns the child build1172 with a specified ref1173 is expected to eq #<Ci::Build status: "pending", finished_at: "2023-10-20 08:53:29.000000000 +0000", created_at: "2023-..."stage", id: 14, stage_id: 13, partition_id: 100, auto_canceled_by_partition_id: 100, tag_list: nil>1174 #latest_pipeline1175 default repository branch1176 when explicitly provided1177 is expected to eq #<Ci::Pipeline id: 14, ref: "master", sha: "b83d6e391c22777fca1ed3012fce84f633d7fed0", before_sha: ni...ha: nil, external_pull_request_id: nil, ci_ref_id: 6, locked: "artifacts_locked", partition_id: 100>1178 when not provided1179 is expected to eq #<Ci::Pipeline id: 17, ref: "master", sha: "b83d6e391c22777fca1ed3012fce84f633d7fed0", before_sha: ni...ha: nil, external_pull_request_id: nil, ci_ref_id: 8, locked: "artifacts_locked", partition_id: 100>1180 with provided sha1181 is expected to eq #<Ci::Pipeline id: 22, ref: "master", sha: "1b12f15a11fc6e62177bef08f47bc7b5ce50b141", before_sha: ni...a: nil, external_pull_request_id: nil, ci_ref_id: 10, locked: "artifacts_locked", partition_id: 100>1182 provided ref1183 is expected to eq #<Ci::Pipeline id: 24, ref: "add-ipython-files", sha: "4963fefc990451a8ad34289ce266b757456fc88c", bef...a: nil, external_pull_request_id: nil, ci_ref_id: 13, locked: "artifacts_locked", partition_id: 100>1184 with provided sha1185 is expected to eq #<Ci::Pipeline id: 29, ref: "add-ipython-files", sha: "4963fefc990451a8ad34289ce266b757456fc88c", bef...a: nil, external_pull_request_id: nil, ci_ref_id: 15, locked: "artifacts_locked", partition_id: 100>1186 bad ref1187 is expected to be nil1188 on deleted ref1189 always returns nil despite a pipeline exists1190 #latest_successful_build_for_sha1191 behaves like latest successful build for sha or ref1192 with many builds1193 gives the latest builds from latest pipeline1194 with succeeded pipeline1195 standalone pipeline1196 returns builds for ref for default_branch1197 with nonexistent build1198 returns empty relation if the build cannot be found1199 with some pending pipeline1200 gives the latest build from latest pipeline1201 with pending pipeline1202 returns empty relation1203 with build belonging to a child pipeline1204 returns the child build1205 #latest_successful_build_for_ref!1206 with many builds1207 gives the latest builds from latest pipeline1208 with succeeded pipeline1209 standalone pipeline1210 returns builds for ref for default_branch1211 returns exception if the build cannot be found1212 with some pending pipeline1213 gives the latest build from latest pipeline1214 with pending pipeline1215 returns empty relation1216 #import_status1217 with import_state1218 returns the right status1219 without import_state1220 returns none1221 #import_checksums1222 with import_checksums1223 returns the right checksums1224 without import_state1225 returns empty hash1226 #jira_import_status1227 when no jira imports1228 returns none1229 when there are jira imports1230 when latest import status is initial or jira imports are mising1231 returns initial1232 when latest import status is scheduled1233 returns scheduled1234 #human_import_status_name1235 with import_state1236 returns the right human import status1237 without import_state1238 returns none1239 #beautified_import_status_name1240 when import not finished1241 returns the right beautified import status1242 when import is finished1243 when import is partially completed1244 returns partially completed1245 when import is fully completed1246 returns completed1247 #add_import_job1248 forked1249 schedules a RepositoryForkWorker job1250 without repository1251 schedules RepositoryImportWorker1252 not forked1253 schedules a RepositoryImportWorker job1254 jira import1255 schedules a jira import job1256 #jira_import?1257 is expected to equal true1258 is expected to equal true1259 #github_import?1260 is expected to equal true1261 #github_enterprise_import?1262 is expected to equal true1263 is expected to equal false1264 is expected to equal true1265 is expected to equal true1266 #remove_import_data1267 when jira import1268 does remove import data1269 when neither a mirror nor a jira import1270 removes import data1271 #gitlab_project_import?1272 is expected to equal true1273 #gitea_import?1274 is expected to equal true1275 #has_remote_mirror?1276 returns true when a remote mirror is enabled1277 returns false when remote mirror is disabled1278 #update_remote_mirrors1279 syncs enabled remote mirror1280 does nothing when remote mirror is disabled globally and not overridden1281 does not sync disabled remote mirrors1282 #remote_mirror_available?1283 when remote mirror global setting is enabled1284 returns true1285 when remote mirror global setting is disabled1286 returns true when overridden1287 returns false when not overridden1288 #mark_stuck_remote_mirrors_as_failed!1289 fails stuck remote mirrors1290 #ancestors1291 group ancestory1292 behaves like project with group ancestors1293 returns all ancestors1294 behaves like project with ordered group ancestors1295 returns ancestors ordered by descending hierarchy1296 namespace ancestry1297 is expected to be empty1298 #ancestors_upto1299 group ancestry1300 includes ancestors upto but excluding the given ancestor1301 behaves like project with group ancestors1302 returns all ancestors1303 behaves like project with ordered group ancestors1304 returns ancestors ordered by descending hierarchy1305 with hierarchy_order1306 can be used with upto option1307 namespace ancestry1308 is expected to be empty1309 #root_ancestor1310 is expected to eq #<Namespaces::UserNamespace id:1 @namespace1>1311 in a group1312 is expected to eq #<Group id:419 @group53>1313 in a nested group1314 is expected to eq #<Group id:422 @group54>1315 #emails_disabled?1316 is the opposite of emails_disabled1317 #lfs_enabled?1318 LFS disabled in group1319 behaves like project overrides group1320 returns true when enabled in project1321 returns false when disabled in project1322 returns the value from the namespace, when no value is set in project1323 LFS enabled in group1324 behaves like project overrides group1325 returns true when enabled in project1326 returns false when disabled in project1327 returns the value from the namespace, when no value is set in project1328 LFS disabled globally1329 when no values are set1330 behaves like it always returns false1331 is expected to be falsey1332 when all values are set to true1333 behaves like it always returns false1334 is expected to be falsey1335 #after_repository_change_head1336 updates commit count1337 reloads the default branch1338 #after_change_head_branch_does_not_exist1339 adds an error to container if branch does not exist1340 #lfs_objects_for_repository_types1341 returns LFS objects of the specified type only1342 forks1343 #fork_network1344 includes a fork of the project1345 includes a fork of a fork1346 includes sibling forks1347 includes the base project1348 #in_fork_network_of?1349 is true for a real fork1350 is true for a fork of a fork1351 is true for sibling forks1352 is false when another project is given1353 #fork_source1354 returns the direct source if it exists1355 returns the root of the fork network when the directs source was deleted1356 returns nil if it is the root of the fork network1357 #forks1358 includes direct forks of the project1359 #lfs_object_oids_from_fork_source1360 when fork has one of two LFS objects1361 returns OIDs of owned LFS objects1362 returns empty when project is not a fork1363 behaves like can housekeep repository1364 with a clean redis state1365 #pushes_since_gc1366 without any pushes1367 returns 01368 with a number of pushes1369 returns the number of pushes1370 #increment_pushes_since_gc1371 increments the number of pushes since the last GC1372 #reset_pushes_since_gc1373 resets the number of pushes since the last GC1374 #pushes_since_gc_redis_shared_state_key1375 returns the proper redis key format1376 #git_garbage_collect_worker_klass1377 defines a git gargabe collect worker1378 #deployment_variables1379 when the deployment platform is stubbed1380 when project has a deployment platform1381 is expected to eq ["platform", "variables"]1382 when project has no deployment platform1383 is expected to eq []1384 when project has a deployment platforms1385 when environment name is review/name1386 returns variables from this service1387 when environment name is other1388 returns variables from this service1389 #default_environment1390 returns production environment when it exists1391 returns first environment when no production environment exists1392 returns nil when no available environment exists1393 #any_lfs_file_locks?1394 returns false when there are no LFS file locks1395 returns a cached true when there are LFS file locks1396 #protected_for?1397 when ref is nil1398 returns false1399 when ref is ref name1400 when ref is ambiguous1401 raises an error1402 when the ref is not protected1403 behaves like ref is not protected1404 returns false1405 when the ref is a protected branch1406 behaves like ref is protected branch1407 returns true1408 when the ref is a protected tag1409 behaves like ref is protected tag1410 returns true1411 when ref does not exist1412 returns false1413 when ref is full ref1414 when the ref is not protected1415 behaves like ref is not protected1416 returns false1417 when the ref is a protected branch1418 behaves like ref is protected branch1419 returns true1420 when the ref is a protected tag1421 behaves like ref is protected tag1422 returns true1423 when branch ref name is a full tag ref1424 when ref is not protected1425 returns false1426 when ref is a protected branch1427 returns true1428 when ref does not exist1429 returns false1430 #update_project_statistics1431 is called after creation1432 copies the namespace_id1433 updates the namespace_id when changed1434 inside_path1435 returns correct project1436 #route_map_for1437 when there is a .gitlab/route-map.yml at the commit1438 when the route map is valid1439 returns a route map1440 when the route map is invalid1441 returns nil1442 when there is no .gitlab/route-map.yml at the commit1443 returns nil1444 #public_path_for_source_path1445 when there is a route map1446 returns a public path with a leading slash unmodified1447 when the source path is mapped1448 returns the public path1449 when the source path is not mapped1450 returns nil1451 when there is no route map1452 returns nil1453 #parent1454 is expected to eq #<Namespaces::UserNamespace id:1 @namespace1>1455 #parent_id1456 is expected to eq 11457 #parent_changed?1458 is expected to be truthy1459 #default_merge_request_target1460 when mr_default_target_self is set to true1461 returns the current project1462 when merge request can not target upstream1463 returns the current project1464 when merge request can target upstream1465 returns the source project1466 #mr_can_target_upstream?1467 when forked from a more visible project1468 can not target the upstream project1469 when forked from a project with disabled merge requests1470 can not target the upstream project1471 when forked from a project with enabled merge requests1472 can target the upstream project1473 when not forked1474 can not target the upstream project1475 #lfs_http_url_to_repo1476 when a custom HTTP clone URL root is not set1477 returns the url to the repo without a username1478 when a custom HTTP clone URL root is set1479 returns the url to the repo, with the root replaced with the custom one1480 #pipeline_status1481 builds a pipeline status1482 hase a loaded pipeline status1483 #update1484 validates the visibility1485 does not validate the visibility1486 when validating if path already exist as pages unique domain1487 rejects paths that match pages unique domain1488 accepts path when the host does not match1489 accepts path when the domain does not match1490 #last_repository_updated_at1491 sets to created_at upon creation1492 .public_or_visible_to_user1493 with a user1494 includes projects the user has access to1495 includes projects the user can see1496 without a user1497 only includes public projects1498 min_access_level1499 excludes projects when user does not have required minimum access level1500 with deploy token users1501 deploy token user without project1502 is expected to eq []1503 deploy token user with projects1504 is expected to contain exactly #<Project id:406 namespace1/project-507>>, #<Project id:407 namespace1/project-508>>, and #<Project id:408 namespace1/project-509>>1505 with chained filter1506 is expected to contain exactly #<Project id:406 namespace1/project-507>> and #<Project id:407 namespace1/project-508>>1507 .ids_with_issuables_available_for1508 returns project ids with milestones available for user1509 .with_feature_available_for_user1510 with user1511 behaves like feature disabled1512 does not return projects with the project feature disabled1513 behaves like feature public1514 returns projects with the project feature public1515 behaves like feature enabled1516 returns projects with the project feature enabled1517 behaves like feature access level is nil1518 returns projects with the project feature access level nil1519 when feature is private1520 when user does not have access to the feature1521 does not return projects with the project feature private1522 when user has access to the feature1523 returns projects with the project feature private1524 user is an admin1525 behaves like feature disabled1526 does not return projects with the project feature disabled1527 behaves like feature public1528 returns projects with the project feature public1529 behaves like feature enabled1530 returns projects with the project feature enabled1531 behaves like feature access level is nil1532 returns projects with the project feature access level nil1533 when feature is private1534 when admin mode is enabled1535 returns projects with the project feature private1536 when admin mode is disabled1537 does not return projects with the project feature private1538 without user1539 behaves like feature disabled1540 does not return projects with the project feature disabled1541 behaves like feature public1542 returns projects with the project feature public1543 behaves like feature enabled1544 returns projects with the project feature enabled1545 behaves like feature access level is nil1546 returns projects with the project feature access level nil1547 when feature is private1548 does not return projects with the project feature private1549 .filter_by_feature_visibility1550 with reporter level access1551 project_level: :public, feature_access_level: :enabled, membership: :admin, admin_mode: true, expected_count: 11552 behaves like filter respects visibility1553 respects visibility1554 project_level: :public, feature_access_level: :enabled, membership: :admin, admin_mode: false, expected_count: 11555 behaves like filter respects visibility1556 respects visibility1557 project_level: :public, feature_access_level: :enabled, membership: :reporter, admin_mode: nil, expected_count: 11558 behaves like filter respects visibility1559 respects visibility1560 project_level: :public, feature_access_level: :enabled, membership: :guest, admin_mode: nil, expected_count: 11561 behaves like filter respects visibility1562 respects visibility1563 project_level: :public, feature_access_level: :enabled, membership: :non_member, admin_mode: nil, expected_count: 11564 behaves like filter respects visibility1565 respects visibility1566 project_level: :public, feature_access_level: :enabled, membership: :anonymous, admin_mode: nil, expected_count: 11567 behaves like filter respects visibility1568 respects visibility1569 project_level: :public, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 11570 behaves like filter respects visibility1571 respects visibility1572 project_level: :public, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 01573 behaves like filter respects visibility1574 respects visibility1575 project_level: :public, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 11576 behaves like filter respects visibility1577 respects visibility1578 project_level: :public, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 01579 behaves like filter respects visibility1580 respects visibility1581 project_level: :public, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 01582 behaves like filter respects visibility1583 respects visibility1584 project_level: :public, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 01585 behaves like filter respects visibility1586 respects visibility1587 project_level: :public, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 01588 behaves like filter respects visibility1589 respects visibility1590 project_level: :public, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 01591 behaves like filter respects visibility1592 respects visibility1593 project_level: :public, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 01594 behaves like filter respects visibility1595 respects visibility1596 project_level: :public, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 01597 behaves like filter respects visibility1598 respects visibility1599 project_level: :internal, feature_access_level: :enabled, membership: :admin, admin_mode: true, expected_count: 11600 behaves like filter respects visibility1601 respects visibility1602 project_level: :internal, feature_access_level: :enabled, membership: :admin, admin_mode: false, expected_count: 11603 behaves like filter respects visibility1604 respects visibility1605 project_level: :internal, feature_access_level: :enabled, membership: :reporter, admin_mode: nil, expected_count: 11606 behaves like filter respects visibility1607 respects visibility1608 project_level: :internal, feature_access_level: :enabled, membership: :guest, admin_mode: nil, expected_count: 11609 behaves like filter respects visibility1610 respects visibility1611 project_level: :internal, feature_access_level: :enabled, membership: :non_member, admin_mode: nil, expected_count: 11612 behaves like filter respects visibility1613 respects visibility1614 project_level: :internal, feature_access_level: :enabled, membership: :anonymous, admin_mode: nil, expected_count: 01615 behaves like filter respects visibility1616 respects visibility1617 project_level: :internal, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 11618 behaves like filter respects visibility1619 respects visibility1620 project_level: :internal, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 01621 behaves like filter respects visibility1622 respects visibility1623 project_level: :internal, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 11624 behaves like filter respects visibility1625 respects visibility1626 project_level: :internal, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 01627 behaves like filter respects visibility1628 respects visibility1629 project_level: :internal, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 01630 behaves like filter respects visibility1631 respects visibility1632 project_level: :internal, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 01633 behaves like filter respects visibility1634 respects visibility1635 project_level: :internal, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 01636 behaves like filter respects visibility1637 respects visibility1638 project_level: :internal, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 01639 behaves like filter respects visibility1640 respects visibility1641 project_level: :internal, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 01642 behaves like filter respects visibility1643 respects visibility1644 project_level: :internal, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 01645 behaves like filter respects visibility1646 respects visibility1647 project_level: :private, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 11648 behaves like filter respects visibility1649 respects visibility1650 project_level: :private, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 01651 behaves like filter respects visibility1652 respects visibility1653 project_level: :private, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 11654 behaves like filter respects visibility1655 respects visibility1656 project_level: :private, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 01657 behaves like filter respects visibility1658 respects visibility1659 project_level: :private, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 01660 behaves like filter respects visibility1661 respects visibility1662 project_level: :private, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 01663 behaves like filter respects visibility1664 respects visibility1665 project_level: :private, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 01666 behaves like filter respects visibility1667 respects visibility1668 project_level: :private, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 01669 behaves like filter respects visibility1670 respects visibility1671 project_level: :private, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 01672 behaves like filter respects visibility1673 respects visibility1674 project_level: :private, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 01675 behaves like filter respects visibility1676 respects visibility1677 with feature issues1678 project_level: :public, feature_access_level: :enabled, membership: :admin, admin_mode: true, expected_count: 11679 behaves like filter respects visibility1680 respects visibility1681 project_level: :public, feature_access_level: :enabled, membership: :admin, admin_mode: false, expected_count: 11682 behaves like filter respects visibility1683 respects visibility1684 project_level: :public, feature_access_level: :enabled, membership: :reporter, admin_mode: nil, expected_count: 11685 behaves like filter respects visibility1686 respects visibility1687 project_level: :public, feature_access_level: :enabled, membership: :guest, admin_mode: nil, expected_count: 11688 behaves like filter respects visibility1689 respects visibility1690 project_level: :public, feature_access_level: :enabled, membership: :non_member, admin_mode: nil, expected_count: 11691 behaves like filter respects visibility1692 respects visibility1693 project_level: :public, feature_access_level: :enabled, membership: :anonymous, admin_mode: nil, expected_count: 11694 behaves like filter respects visibility1695 respects visibility1696 project_level: :public, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 11697 behaves like filter respects visibility1698 respects visibility1699 project_level: :public, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 01700 behaves like filter respects visibility1701 respects visibility1702 project_level: :public, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 11703 behaves like filter respects visibility1704 respects visibility1705 project_level: :public, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 11706 behaves like filter respects visibility1707 respects visibility1708 project_level: :public, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 01709 behaves like filter respects visibility1710 respects visibility1711 project_level: :public, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 01712 behaves like filter respects visibility1713 respects visibility1714 project_level: :public, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 01715 behaves like filter respects visibility1716 respects visibility1717 project_level: :public, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 01718 behaves like filter respects visibility1719 respects visibility1720 project_level: :public, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 01721 behaves like filter respects visibility1722 respects visibility1723 project_level: :public, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 01724 behaves like filter respects visibility1725 respects visibility1726 project_level: :internal, feature_access_level: :enabled, membership: :admin, admin_mode: true, expected_count: 11727 behaves like filter respects visibility1728 respects visibility1729 project_level: :internal, feature_access_level: :enabled, membership: :admin, admin_mode: false, expected_count: 11730 behaves like filter respects visibility1731 respects visibility1732 project_level: :internal, feature_access_level: :enabled, membership: :reporter, admin_mode: nil, expected_count: 11733 behaves like filter respects visibility1734 respects visibility1735 project_level: :internal, feature_access_level: :enabled, membership: :guest, admin_mode: nil, expected_count: 11736 behaves like filter respects visibility1737 respects visibility1738 project_level: :internal, feature_access_level: :enabled, membership: :non_member, admin_mode: nil, expected_count: 11739 behaves like filter respects visibility1740 respects visibility1741 project_level: :internal, feature_access_level: :enabled, membership: :anonymous, admin_mode: nil, expected_count: 01742 behaves like filter respects visibility1743 respects visibility1744 project_level: :internal, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 11745 behaves like filter respects visibility1746 respects visibility1747 project_level: :internal, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 01748 behaves like filter respects visibility1749 respects visibility1750 project_level: :internal, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 11751 behaves like filter respects visibility1752 respects visibility1753 project_level: :internal, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 11754 behaves like filter respects visibility1755 respects visibility1756 project_level: :internal, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 01757 behaves like filter respects visibility1758 respects visibility1759 project_level: :internal, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 01760 behaves like filter respects visibility1761 respects visibility1762 project_level: :internal, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 01763 behaves like filter respects visibility1764 respects visibility1765 project_level: :internal, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 01766 behaves like filter respects visibility1767 respects visibility1768 project_level: :internal, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 01769 behaves like filter respects visibility1770 respects visibility1771 project_level: :internal, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 01772 behaves like filter respects visibility1773 respects visibility1774 project_level: :private, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 11775 behaves like filter respects visibility1776 respects visibility1777 project_level: :private, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 01778 behaves like filter respects visibility1779 respects visibility1780 project_level: :private, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 11781 behaves like filter respects visibility1782 respects visibility1783 project_level: :private, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 11784 behaves like filter respects visibility1785 respects visibility1786 project_level: :private, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 01787 behaves like filter respects visibility1788 respects visibility1789 project_level: :private, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 01790 behaves like filter respects visibility1791 respects visibility1792 project_level: :private, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 01793 behaves like filter respects visibility1794 respects visibility1795 project_level: :private, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 01796 behaves like filter respects visibility1797 respects visibility1798 project_level: :private, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 01799 behaves like filter respects visibility1800 respects visibility1801 project_level: :private, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 01802 behaves like filter respects visibility1803 respects visibility1804 with feature wiki1805 project_level: :public, feature_access_level: :enabled, membership: :admin, admin_mode: true, expected_count: 11806 behaves like filter respects visibility1807 respects visibility1808 project_level: :public, feature_access_level: :enabled, membership: :admin, admin_mode: false, expected_count: 11809 behaves like filter respects visibility1810 respects visibility1811 project_level: :public, feature_access_level: :enabled, membership: :reporter, admin_mode: nil, expected_count: 11812 behaves like filter respects visibility1813 respects visibility1814 project_level: :public, feature_access_level: :enabled, membership: :guest, admin_mode: nil, expected_count: 11815 behaves like filter respects visibility1816 respects visibility1817 project_level: :public, feature_access_level: :enabled, membership: :non_member, admin_mode: nil, expected_count: 11818 behaves like filter respects visibility1819 respects visibility1820 project_level: :public, feature_access_level: :enabled, membership: :anonymous, admin_mode: nil, expected_count: 11821 behaves like filter respects visibility1822 respects visibility1823 project_level: :public, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 11824 behaves like filter respects visibility1825 respects visibility1826 project_level: :public, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 01827 behaves like filter respects visibility1828 respects visibility1829 project_level: :public, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 11830 behaves like filter respects visibility1831 respects visibility1832 project_level: :public, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 11833 behaves like filter respects visibility1834 respects visibility1835 project_level: :public, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 01836 behaves like filter respects visibility1837 respects visibility1838 project_level: :public, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 01839 behaves like filter respects visibility1840 respects visibility1841 project_level: :public, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 01842 behaves like filter respects visibility1843 respects visibility1844 project_level: :public, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 01845 behaves like filter respects visibility1846 respects visibility1847 project_level: :public, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 01848 behaves like filter respects visibility1849 respects visibility1850 project_level: :public, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 01851 behaves like filter respects visibility1852 respects visibility1853 project_level: :internal, feature_access_level: :enabled, membership: :admin, admin_mode: true, expected_count: 11854 behaves like filter respects visibility1855 respects visibility1856 project_level: :internal, feature_access_level: :enabled, membership: :admin, admin_mode: false, expected_count: 11857 behaves like filter respects visibility1858 respects visibility1859 project_level: :internal, feature_access_level: :enabled, membership: :reporter, admin_mode: nil, expected_count: 11860 behaves like filter respects visibility1861 respects visibility1862 project_level: :internal, feature_access_level: :enabled, membership: :guest, admin_mode: nil, expected_count: 11863 behaves like filter respects visibility1864 respects visibility1865 project_level: :internal, feature_access_level: :enabled, membership: :non_member, admin_mode: nil, expected_count: 11866 behaves like filter respects visibility1867 respects visibility1868 project_level: :internal, feature_access_level: :enabled, membership: :anonymous, admin_mode: nil, expected_count: 01869 behaves like filter respects visibility1870 respects visibility1871 project_level: :internal, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 11872 behaves like filter respects visibility1873 respects visibility1874 project_level: :internal, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 01875 behaves like filter respects visibility1876 respects visibility1877 project_level: :internal, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 11878 behaves like filter respects visibility1879 respects visibility1880 project_level: :internal, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 11881 behaves like filter respects visibility1882 respects visibility1883 project_level: :internal, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 01884 behaves like filter respects visibility1885 respects visibility1886 project_level: :internal, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 01887 behaves like filter respects visibility1888 respects visibility1889 project_level: :internal, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 01890 behaves like filter respects visibility1891 respects visibility1892 project_level: :internal, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 01893 behaves like filter respects visibility1894 respects visibility1895 project_level: :internal, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 01896 behaves like filter respects visibility1897 respects visibility1898 project_level: :internal, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 01899 behaves like filter respects visibility1900 respects visibility1901 project_level: :private, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 11902 behaves like filter respects visibility1903 respects visibility1904 project_level: :private, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 01905 behaves like filter respects visibility1906 respects visibility1907 project_level: :private, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 11908 behaves like filter respects visibility1909 respects visibility1910 project_level: :private, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 11911 behaves like filter respects visibility1912 respects visibility1913 project_level: :private, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 01914 behaves like filter respects visibility1915 respects visibility1916 project_level: :private, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 01917 behaves like filter respects visibility1918 respects visibility1919 project_level: :private, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 01920 behaves like filter respects visibility1921 respects visibility1922 project_level: :private, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 01923 behaves like filter respects visibility1924 respects visibility1925 project_level: :private, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 01926 behaves like filter respects visibility1927 respects visibility1928 project_level: :private, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 01929 behaves like filter respects visibility1930 respects visibility1931 with feature code1932 project_level: :public, feature_access_level: :enabled, membership: :admin, admin_mode: true, expected_count: 11933 behaves like filter respects visibility1934 respects visibility1935 project_level: :public, feature_access_level: :enabled, membership: :admin, admin_mode: false, expected_count: 11936 behaves like filter respects visibility1937 respects visibility1938 project_level: :public, feature_access_level: :enabled, membership: :reporter, admin_mode: nil, expected_count: 11939 behaves like filter respects visibility1940 respects visibility1941 project_level: :public, feature_access_level: :enabled, membership: :guest, admin_mode: nil, expected_count: 11942 behaves like filter respects visibility1943 respects visibility1944 project_level: :public, feature_access_level: :enabled, membership: :non_member, admin_mode: nil, expected_count: 11945 behaves like filter respects visibility1946 respects visibility1947 project_level: :public, feature_access_level: :enabled, membership: :anonymous, admin_mode: nil, expected_count: 11948 behaves like filter respects visibility1949 respects visibility1950 project_level: :public, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 11951 behaves like filter respects visibility1952 respects visibility1953 project_level: :public, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 01954 behaves like filter respects visibility1955 respects visibility1956 project_level: :public, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 11957 behaves like filter respects visibility1958 respects visibility1959 project_level: :public, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 11960 behaves like filter respects visibility1961 respects visibility1962 project_level: :public, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 01963 behaves like filter respects visibility1964 respects visibility1965 project_level: :public, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 01966 behaves like filter respects visibility1967 respects visibility1968 project_level: :public, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 01969 behaves like filter respects visibility1970 respects visibility1971 project_level: :public, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 01972 behaves like filter respects visibility1973 respects visibility1974 project_level: :public, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 01975 behaves like filter respects visibility1976 respects visibility1977 project_level: :public, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 01978 behaves like filter respects visibility1979 respects visibility1980 project_level: :internal, feature_access_level: :enabled, membership: :admin, admin_mode: true, expected_count: 11981 behaves like filter respects visibility1982 respects visibility1983 project_level: :internal, feature_access_level: :enabled, membership: :admin, admin_mode: false, expected_count: 11984 behaves like filter respects visibility1985 respects visibility1986 project_level: :internal, feature_access_level: :enabled, membership: :reporter, admin_mode: nil, expected_count: 11987 behaves like filter respects visibility1988 respects visibility1989 project_level: :internal, feature_access_level: :enabled, membership: :guest, admin_mode: nil, expected_count: 11990 behaves like filter respects visibility1991 respects visibility1992 project_level: :internal, feature_access_level: :enabled, membership: :non_member, admin_mode: nil, expected_count: 11993 behaves like filter respects visibility1994 respects visibility1995 project_level: :internal, feature_access_level: :enabled, membership: :anonymous, admin_mode: nil, expected_count: 01996 behaves like filter respects visibility1997 respects visibility1998 project_level: :internal, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 11999 behaves like filter respects visibility2000 respects visibility2001 project_level: :internal, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 02002 behaves like filter respects visibility2003 respects visibility2004 project_level: :internal, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 12005 behaves like filter respects visibility2006 respects visibility2007 project_level: :internal, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 12008 behaves like filter respects visibility2009 respects visibility2010 project_level: :internal, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 02011 behaves like filter respects visibility2012 respects visibility2013 project_level: :internal, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 02014 behaves like filter respects visibility2015 respects visibility2016 project_level: :internal, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 02017 behaves like filter respects visibility2018 respects visibility2019 project_level: :internal, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 02020 behaves like filter respects visibility2021 respects visibility2022 project_level: :internal, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 02023 behaves like filter respects visibility2024 respects visibility2025 project_level: :internal, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 02026 behaves like filter respects visibility2027 respects visibility2028 project_level: :private, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 12029 behaves like filter respects visibility2030 respects visibility2031 project_level: :private, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 02032 behaves like filter respects visibility2033 respects visibility2034 project_level: :private, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 12035 behaves like filter respects visibility2036 respects visibility2037 project_level: :private, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 02038 behaves like filter respects visibility2039 respects visibility2040 project_level: :private, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 02041 behaves like filter respects visibility2042 respects visibility2043 project_level: :private, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 02044 behaves like filter respects visibility2045 respects visibility2046 project_level: :private, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 02047 behaves like filter respects visibility2048 respects visibility2049 project_level: :private, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 02050 behaves like filter respects visibility2051 respects visibility2052 project_level: :private, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 02053 behaves like filter respects visibility2054 respects visibility2055 project_level: :private, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 02056 behaves like filter respects visibility2057 respects visibility2058 .wrap_with_cte2059 wrapped query matches original2060 #remove_private_deploy_keys2061 for a private deploy key2062 when the key is not linked to another project2063 removes the key2064 when the key is linked to another project2065 does not remove the key2066 for a public deploy key2067 does not remove the key2068 #remove_export2069 removes the export2070 with export2071 #export_file_exists? returns true2072 #export_archive_exists? returns false2073 #forks_count2074 returns the number of forks2075 #git_transfer_in_progress?2076 project_reference_counter: 0, wiki_reference_counter: 0, design_reference_counter: 0, result: false2077 is expected to equal false2078 project_reference_counter: 2, wiki_reference_counter: 0, design_reference_counter: 0, result: true2079 is expected to equal true2080 project_reference_counter: 0, wiki_reference_counter: 2, design_reference_counter: 0, result: true2081 is expected to equal true2082 project_reference_counter: 0, wiki_reference_counter: 0, design_reference_counter: 2, result: true2083 is expected to equal true2084 legacy storage2085 #base_dir2086 returns base_dir based on namespace only2087 #disk_path2088 returns disk_path based on namespace and project path2089 #legacy_storage?2090 returns true when storage_version is nil2091 returns true when the storage_version is 02092 #hashed_storage?2093 returns false2094 hashed storage2095 #legacy_storage?2096 returns false2097 #hashed_storage?2098 returns true if rolled out2099 returns false when not rolled out yet2100 #base_dir2101 returns base_dir based on hash of project id2102 #disk_path2103 returns disk_path based on hash of project id2104 #has_ci?2105 when has .gitlab-ci.yml2106 CI is available2107 when there is no .gitlab-ci.yml2108 CI is available2109 when auto devops is disabled2110 CI is not available2111 #predefined_project_variables2112 is expected to include nil2113 when ci config path is overridden2114 is expected to include nil2115 #dependency_proxy_variables2116 when dependency_proxy is enabled2117 contains the downcased name2118 when dependency_proxy is disabled2119 is expected to be empty2120 #auto_devops_enabled?2121 when explicitly enabled2122 is expected to be truthy2123 when explicitly disabled2124 is expected to be falsey2125 when enabled in settings2126 is expected to be truthy2127 when disabled in settings2128 is expected to be falsey2129 when explicitly enabled2130 is expected to be truthy2131 when explicitly disabled2132 is expected to be falsey2133 when force_autodevops_on_by_default is enabled for the project2134 is expected to be truthy2135 with group parents2136 when enabled on parent2137 when auto devops instance enabled2138 is expected to be truthy2139 when auto devops instance disabled2140 is expected to be truthy2141 when disabled on parent2142 when auto devops instance enabled2143 is expected to be falsy2144 when auto devops instance disabled2145 is expected to be falsy2146 when enabled on root parent2147 when auto devops instance enabled2148 is expected to be truthy2149 when auto devops instance disabled2150 is expected to be truthy2151 when explicitly disabled on parent2152 is expected to be falsy2153 when disabled on root parent2154 when auto devops instance enabled2155 is expected to be falsy2156 when auto devops instance disabled2157 is expected to be falsy2158 when explicitly disabled on parent2159 is expected to be falsy2160 #has_auto_devops_implicitly_enabled?2161 when disabled in settings2162 does not have auto devops implicitly disabled2163 when enabled in settings2164 auto devops is implicitly disabled2165 when explicitly disabled2166 does not have auto devops implicitly disabled2167 when explicitly enabled2168 does not have auto devops implicitly disabled2169 when enabled on group2170 has auto devops implicitly enabled2171 when enabled on parent group2172 has auto devops implicitly enabled2173 #has_auto_devops_implicitly_disabled?2174 when explicitly disabled2175 does not have auto devops implicitly disabled2176 when explicitly enabled2177 does not have auto devops implicitly disabled2178 when enabled in settings2179 does not have auto devops implicitly disabled2180 when disabled in settings2181 auto devops is implicitly disabled2182 when force_autodevops_on_by_default is enabled for the project2183 does not have auto devops implicitly disabled2184 when disabled on group2185 has auto devops implicitly disabled2186 when disabled on parent group2187 has auto devops implicitly disabled2188 #api_variables2189 exposes API v4 URL2190 exposes API GraphQL URL2191 contains a URL variable for every supported API version2192 #latest_successful_builds_for2193 without a ref2194 returns a pipeline for the default branch2195 with the ref set to the default branch2196 returns a pipeline for the default branch2197 with a ref that is not the default branch2198 returns the latest successful pipeline for the given ref2199 #check_repository_path_availability2200 when the repository already exists2201 returns false when repository already exists2202 when the repository does not exist2203 returns false when repository already exists2204 skips gitlab-shell exists?2205 #latest_successful_pipeline_for_default_branch2206 memoizes and returns the latest successful pipeline for the default branch2207 #after_import2208 runs the correct hooks2209 project authorizations refresh2210 updates user authorizations2211 branch protection2212 does not protect when branch protection is disabled2213 gives developer access to push when branch protection is set to 'developers can push'2214 gives developer access to merge when branch protection is set to 'developers can merge'2215 protects default branch2216 project target platforms detection2217 calls enqueue_record_project_target_platforms2218 #update_project_counter_caches2219 updates all project counter caches2220 #set_full_path2221 writes full path in .git/config when key is missing2222 updates full path in .git/config when key is present2223 does not raise an error with an empty repository2224 #default_branch2225 with default_branch_name2226 instance_branch: "", root_group_branch: nil, project_group_branch: nil, project_branch: nil2227 is expected to eq nil2228 instance_branch: nil, root_group_branch: nil, project_group_branch: nil, project_branch: nil2229 is expected to eq nil2230 instance_branch: "main", root_group_branch: nil, project_group_branch: nil, project_branch: "main"2231 is expected to eq "main"2232 instance_branch: "main", root_group_branch: "root_branch", project_group_branch: nil, project_branch: "root_branch"2233 is expected to eq "root_branch"2234 instance_branch: "main", root_group_branch: "root_branch", project_group_branch: "group_branch", project_branch: "group_branch"2235 is expected to eq "group_branch"2236 #to_ability_name2237 returns project2238 #execute_hooks2239 executes active projects hooks with the specified scope2240 does not execute project hooks that dont match the specified scope2241 does not execute project hooks which are not active2242 executes hooks which were backed off and are no longer backed off2243 executes the system hooks with the specified scope2244 executes the system hooks when inside a transaction2245 #execute_integrations2246 executes integrations with the specified scope2247 does not execute integration that don't match the specified scope2248 does not trigger extra queries when called multiple times2249 with a CI integration2250 executes the integrations2251 and skipping ci2252 does not execute ci integrations2253 #has_active_hooks?2254 is expected to eq false2255 returns true when a matching push hook exists2256 returns true when a matching system hook exists2257 returns true when a plugin exists2258 with :emoji_hooks scope2259 returns true when a matching emoji hook exists2260 #has_active_integrations?2261 is expected to eq false2262 returns true when a matching service exists2263 caches matching integrations2264 #badges2265 returns the project and the project group badges2266 with nested_groups2267 returns the project and the project nested groups badges2268 with cross internal project merge requests2269 does not endlessly loop for internal projects with MRs to each other2270 #branch_allows_collaboration?2271 when there are open merge requests that have their source/target branches point to each other2272 when user is a developer2273 behaves like successful check2274 does not go into an infinite loop2275 when user is a reporter2276 behaves like successful check2277 does not go into an infinite loop2278 when user is a guest2279 behaves like successful check2280 does not go into an infinite loop2281 with cross project merge requests2282 #merge_requests_allowing_push_to_user2283 returns open merge requests for which the user has developer access to the target project2284 does not include merge requests for guest users2285 does not include the merge request for other users2286 is empty when no user is passed2287 when the merge requests are closed2288 does not include closed merge requests2289 #any_branch_allows_collaboration?2290 when there is an open merge request allowing collaboration2291 allows access2292 when the merge request author is not allowed to push_code2293 returns false2294 when the merge request is closed2295 returns false2296 when the merge request is merged2297 returns false2298 #branch_allows_collaboration?2299 allows access if the user can merge the merge request2300 does not allow guest users access2301 does not allow access to branches for which the merge request was closed2302 does not allow access if the user cannot merge the merge request2303 when the requeststore is active2304 only queries per project across instances2305 when the merge request author is not allowed to push_code2306 returns false2307 #external_authorization_classification_label2308 falls back to the default when none is configured2309 returns the classification label if it was configured on the project2310 #pages_https_only?2311 when HTTPS pages are disabled2312 is expected not to be pages https only2313 when HTTPS pages are enabled2314 is expected to be pages https only2315 #pages_https_only? validation2316 when no domains are associated2317 is expected to be valid2318 when domains including keys and certificates are associated2319 is expected to be valid2320 when domains including no keys or certificates are associated2321 is expected not to be valid2322 #toggle_ci_cd_settings!2323 toggles the value on #settings2324 #gitlab_deploy_token2325 when there is a gitlab deploy token associated2326 is expected to eq #<DeployToken id: 7, revoked: false, read_repository: true, read_registry: true, expires_at: "2023-10...write_registry: false, read_package_registry: false, write_package_registry: false, creator_id: nil>2327 when there is no a gitlab deploy token associated2328 is expected to be nil2329 when there is a gitlab deploy token associated but is has been revoked2330 is expected to be nil2331 when there is a gitlab deploy token associated but it is expired2332 is expected to be nil2333 when there is a deploy token associated with a different name2334 is expected to be nil2335 when there is a deploy token associated to a different project2336 is expected to be nil2337 when the project group has a gitlab deploy token associated2338 is expected to eq #<DeployToken id: 12, revoked: false, read_repository: true, read_registry: true, expires_at: "2023-1...write_registry: false, read_package_registry: false, write_package_registry: false, creator_id: nil>2339 when the project and its group has a gitlab deploy token associated2340 is expected to eq #<DeployToken id: 13, revoked: false, read_repository: true, read_registry: true, expires_at: "2023-1...write_registry: false, read_package_registry: false, write_package_registry: false, creator_id: nil>2341 with uploads2342 behaves like model with uploads2343 .destroy2344 with mounted uploader2345 deletes remote uploads2346 with not mounted uploads2347 with local files2348 deletes any FileUploader uploads which are not mounted2349 deletes local files2350 with remote files2351 deletes any FileUploader uploads which are not mounted2352 deletes remote files2353 #members_among2354 when users is an Array2355 returns project members among the users2356 maintains input order2357 returns empty array if users is empty2358 when users is a relation2359 returns project members among the users2360 returns empty relation if users is empty2361 #find_or_initialize_integrations2362 avoids N+1 database queries2363 avoids N+1 database queries with more available integrations2364 with disabled integrations2365 returns only enabled integrations sorted2366 #disabled_integrations2367 is expected to include "gitlab_slack_application"2368 is expected not to include "slack_slash_commands"2369 when slack_app_enabled setting is enabled2370 is expected to include "slack_slash_commands"2371 is expected not to include "gitlab_slack_application"2372 when Rails.env.development?2373 is expected not to include "slack_slash_commands"2374 is expected not to include "gitlab_slack_application"2375 #find_or_initialize_integration2376 avoids N+1 database queries2377 returns nil if integration is disabled2378 returns nil if integration does not exist2379 with an existing integration2380 retrieves the integration2381 with an instance-level integration2382 builds the integration from the instance integration2383 without an existing integration or instance-level2384 builds the integration2385 .for_group2386 returns the projects for a given group2387 .for_group_and_its_ancestor_groups2388 returns projects for group and its ancestors2389 .pending_data_repair_analysis2390 returns projects that are not in ContainerRegistry::DataRepairDetail2391 .with_package_registry_enabled2392 returns projects with the package registry enabled2393 .deployments2394 when there is a deployment record with created status2395 does not return the record2396 when there is a deployment record with running status2397 does not return the record2398 when there is a deployment record with success status2399 returns the record2400 #snippets_visible?2401 returns true when a logged in user can read snippets2402 returns true when an anonymous user can read snippets2403 returns false when a user can not read snippets2404 #all_clusters2405 returns project level cluster2406 project belongs to a group2407 returns clusters for groups of this project2408 project is hosted on instance with integrated cluster2409 returns all available clusters for this project2410 #object_pool_params2411 when the objects cannot be pooled2412 is expected to be empty2413 when a pool is created2414 returns that pool repository2415 #git_objects_poolable?2416 when not using hashed storage2417 is expected not to be git objects poolable2418 when the project is private2419 is expected not to be git objects poolable2420 when the project is public2421 is expected to be git objects poolable2422 when the project is internal2423 is expected to be git objects poolable2424 when objects are poolable2425 is expected to be git objects poolable2426 #swap_pool_repository!2427 moves project to the new pool repository2428 when feature flag replicate_object_pool_on_move is disabled2429 behaves like no pool repository swap2430 does not change pool repository for the project2431 when repository does not exist2432 behaves like no pool repository swap2433 does not change pool repository for the project2434 when project does not have a pool repository2435 behaves like no pool repository swap2436 does not change pool repository for the project2437 when project pool is on the same shard as repository2438 behaves like no pool repository swap2439 does not change pool repository for the project2440 when pool repository for shard is missing2441 raises record not found error2442 when pool repository has a different disk path2443 raises record not found error2444 #leave_pool_repository2445 removes the membership and disconnects alternates2446 when the project is pending delete2447 removes the membership and does not disconnect alternates2448 #link_pool_repository2449 links pool repository to project repository2450 when pool repository is missing2451 does not link anything2452 when pool repository is on the different shard as project repository2453 does not link anything2454 when feature flag replicate_object_pool_on_move is disabled2455 links pool repository to project repository2456 #check_personal_projects_limit2457 when creating a project for a group2458 does nothing2459 when the user is not allowed to create a personal project2460 when the project limit is zero2461 adds a validation error2462 when the project limit is greater than zero2463 adds a validation error2464 when the user is allowed to create personal projects2465 does nothing2466 validation #changing_shared_runners_enabled_is_allowed2467 shared_runners_setting: :shared_runners_enabled, project_shared_runners_enabled: true, valid_record: true2468 validates the configuration2469 shared_runners_setting: :shared_runners_enabled, project_shared_runners_enabled: false, valid_record: true2470 validates the configuration2471 shared_runners_setting: :shared_runners_disabled_and_overridable, project_shared_runners_enabled: true, valid_record: true2472 validates the configuration2473 shared_runners_setting: :shared_runners_disabled_and_overridable, project_shared_runners_enabled: false, valid_record: true2474 validates the configuration2475 shared_runners_setting: :shared_runners_disabled_and_unoverridable, project_shared_runners_enabled: true, valid_record: false2476 validates the configuration2477 shared_runners_setting: :shared_runners_disabled_and_unoverridable, project_shared_runners_enabled: false, valid_record: true2478 validates the configuration2479 #mark_pages_onboarding_complete2480 creates new record and sets onboarding_complete to true if none exists yet2481 overrides an existing setting2482 #mark_pages_as_deployed2483 works when artifacts_archive is missing2484 creates new record and sets deployed to true if none exists yet2485 updates the existing record and sets deployed to true and records artifact archive2486 #mark_pages_as_not_deployed2487 creates new record and sets deployed to false if none exists yet2488 updates the existing record and sets deployed to false and clears artifacts_archive2489 #update_pages_deployment!2490 creates new metadata record if none exists yet and sets deployment2491 updates the existing metadara record with deployment2492 #set_first_pages_deployment!2493 creates new metadata record if none exists yet and sets deployment2494 updates the existing metadara record with deployment2495 only updates metadata for this project2496 does nothing if metadata already references some deployment2497 marks project as not deployed if deployment is nil2498 #has_pool_repository?2499 returns false when it does not have a pool repository2500 returns true when it has a pool repository2501 #access_request_approvers_to_be_notified2502 for a personal project2503 behaves like returns active, non_invited, non_requested owners/maintainers of the project2504 is expected to contain exactly #<ProjectMember id: 705, access_level: 40, source_id: 587, source_type: "Project", user_id: 359, noti...invite_email_success: true, member_namespace_id: 1086, member_role_id: nil, expiry_notified_at: nil> and #<ProjectMember id: 704, access_level: 50, source_id: 587, source_type: "Project", user_id: 1, notifi...invite_email_success: true, member_namespace_id: 1086, member_role_id: nil, expiry_notified_at: nil>2505 for a project in a group2506 returns a maximum of ten maintainers/owners of the project in recent_sign_in descending order2507 behaves like returns active, non_invited, non_requested owners/maintainers of the project2508 is expected to contain exactly #<ProjectMember id: 739, access_level: 40, source_id: 593, source_type: "Project", user_id: 378, noti...invite_email_success: true, member_namespace_id: 1100, member_role_id: nil, expiry_notified_at: nil> and #<ProjectMember id: 716, access_level: 50, source_id: 593, source_type: "Project", user_id: 366, noti...invite_email_success: true, member_namespace_id: 1100, member_role_id: nil, expiry_notified_at: nil>2509 .with_pages_deployed2510 returns only projects that have pages deployed2511 .pages_metadata_not_migrated2512 returns only projects that have pages deployed2513 #pages_variables2514 returns the pages variables2515 returns the pages variables2516 #closest_setting2517 when setting is of non-boolean type2518 global_setting: 100, group_setting: 200, project_setting: 300, result: 3002519 behaves like fetching closest setting2520 returns closest non-nil value2521 global_setting: 100, group_setting: 200, project_setting: nil, result: 2002522 behaves like fetching closest setting2523 returns closest non-nil value2524 global_setting: 100, group_setting: nil, project_setting: nil, result: 1002525 behaves like fetching closest setting2526 returns closest non-nil value2527 global_setting: nil, group_setting: nil, project_setting: nil, result: nil2528 behaves like fetching closest setting2529 returns closest non-nil value2530 when setting is of boolean type2531 global_setting: true, group_setting: true, project_setting: false, result: false2532 behaves like fetching closest setting2533 returns closest non-nil value2534 global_setting: true, group_setting: false, project_setting: nil, result: false2535 behaves like fetching closest setting2536 returns closest non-nil value2537 global_setting: true, group_setting: nil, project_setting: nil, result: true2538 behaves like fetching closest setting2539 returns closest non-nil value2540 #drop_visibility_level!2541 when has a group2542 when the group `visibility_level` is more strict2543 sets `visibility_level` value from the group2544 when the group `visibility_level` is less strict2545 does not change the value of the `visibility_level` field2546 when `restricted_visibility_levels` of the GitLab instance exist2547 when `visibility_level` is included into `restricted_visibility_levels`2548 sets `visibility_level` value to `PRIVATE`2549 when `restricted_visibility_levels` does not include `visibility_level`2550 does not change the value of the `visibility_level` field2551 #jira_subscription_exists?2552 jira connect subscription exists2553 is expected to eq true2554 with_issues_or_mrs_available_for_user2555 returns correct projects2556 #limited_protected_branches2557 returns limited number of protected branches based on specified limit2558 #group_protected_branches2559 returns protected branches of the group2560 when project belongs to namespace2561 returns empty relation2562 #all_protected_branches2563 when feature flag `group_protected_branches` enabled2564 return all protected branches2565 when feature flag `group_protected_branches` disabled2566 return only project-level protected branches2567 #lfs_objects_oids2568 when project has associated LFS objects2569 returns OIDs of LFS objects2570 lfs_objects_projects associations are deleted along with project2571 lfs_objects associations are unchanged when the assicated project is removed2572 and there are specified oids2573 returns OIDs of LFS objects that match specified oids2574 when project has no associated LFS objects2575 returns empty array2576 #prometheus_integration_active?2577 when project has an activated prometheus integration2578 is expected to be truthy2579 when project has an inactive prometheus integration2580 the integration is marked as inactive2581 #add_export_job2582 when project storage_size does not exceed the application setting max_export_size2583 starts project export worker2584 when project storage_size exceeds the application setting max_export_size2585 raises Project::ExportLimitExceeded2586 when application setting max_export_size is not set2587 starts project export worker2588 #export_in_progress?2589 when project export is enqueued2590 is expected to equal false2591 when project export is in progress2592 is expected to equal true2593 when project export is completed2594 is expected to equal false2595 #export_status2596 when project export is enqueued2597 is expected to eq :queued2598 when project export is in progress2599 is expected to eq :started2600 when project export is completed2601 is expected to eq :finished2602 when project export is being regenerated2603 is expected to eq :regeneration_in_progress2604 with Debian Distributions2605 behaves like model with Debian distributions2606 removes distribution files on removal2607 #environments_for_scope2608 retrieves all project environments when using the * wildcard2609 retrieves a specific project environment when using the name of that environment2610 #latest_jira_import2611 when no jira imports2612 returns nil2613 when single jira import2614 returns the jira import2615 when multiple jira imports2616 returns latest jira import by created_at2617 #packages_enabled2618 is expected to equal true2619 when packages_enabled is enabled2620 project_visibility: 0, expected_result: 102621 set package_registry_access_level to correct value2622 project_visibility: 10, expected_result: 202623 set package_registry_access_level to correct value2624 project_visibility: 20, expected_result: 302625 set package_registry_access_level to correct value2626 when packages_enabled is disabled2627 set package_registry_access_level to DISABLED2628 set package_registry_access_level to DISABLED2629 set package_registry_access_level to DISABLED2630 #related_group_ids2631 when associated with a namespace2632 only includes linked groups2633 when associated with a group2634 includes self, ancestors and linked groups2635 #has_namespaced_npm_packages?2636 with scope of the namespace path2637 is expected to equal true2638 without scope of the namespace path2639 is expected to equal false2640 without packages2641 is expected to equal false2642 #package_already_taken?2643 within the package project2644 package_name: "@test/bar", package_version: "1.2.3", expected_result: false2645 is expected to eq false2646 package_name: "@test/bar", package_version: "5.5.5", expected_result: false2647 is expected to eq false2648 package_name: "@test/foo", package_version: "1.2.3", expected_result: false2649 is expected to eq false2650 package_name: "@test/foo", package_version: "5.5.5", expected_result: false2651 is expected to eq false2652 within a different project2653 package_name: "@test/bar", package_version: "1.2.3", expected_result: false2654 is expected to eq false2655 package_name: "@test/bar", package_version: "5.5.5", expected_result: false2656 is expected to eq false2657 package_name: "@test/foo", package_version: "1.2.3", expected_result: true2658 is expected to eq true2659 package_name: "@test/foo", package_version: "5.5.5", expected_result: false2660 is expected to eq false2661 for a different package type2662 returns false2663 with a pending_destruction package2664 package_name: "@test/bar", package_version: "1.2.3", expected_result: false2665 is expected to eq false2666 package_name: "@test/bar", package_version: "5.5.5", expected_result: false2667 is expected to eq false2668 package_name: "@test/foo", package_version: "1.2.3", expected_result: false2669 is expected to eq false2670 package_name: "@test/foo", package_version: "5.5.5", expected_result: false2671 is expected to eq false2672 #design_management_enabled?2673 lfs_enabled: false, hashed_storage_enabled: false, expectation: false2674 is expected to equal false2675 lfs_enabled: true, hashed_storage_enabled: false, expectation: false2676 is expected to equal false2677 lfs_enabled: false, hashed_storage_enabled: true, expectation: false2678 is expected to equal false2679 lfs_enabled: true, hashed_storage_enabled: true, expectation: true2680 is expected to equal true2681 #parent_loaded?2682 is false when the parent is not loaded2683 is true when the parent is loaded2684 #bots2685 is expected to contain exactly #<User id:402 @user386>2686 is expected not to include #<User id:403 @user387>2687 #enabled_group_deploy_keys2688 when a project does not have a group2689 is expected to be empty2690 when a project has a parent group2691 and this group has a group deploy key enabled2692 is expected to contain exactly #<GroupDeployKey id: 1, user_id: 404, created_at: "2023-10-20 08:38:58.163985280 +0000", updated_at: ...77:66:12:7a:93", fingerprint_sha256: "aRZpvHKR5LAO5/12Bpnb6MzR7REldxjxdtGcEy/wDks", usage_type: nil>2693 and this group has parent group which also has a group deploy key enabled2694 returns both group deploy keys2695 and another group has a group deploy key enabled2696 does not return this group deploy key2697 #activity_path2698 returns the project activity_path2699 #default_branch_or_main2700 returns default branch2701 when default branch is nil2702 returns Gitlab::DefaultBranch.value2703 topics2704 topic_list returns correct string array2705 topics returns correct topic records2706 topic_list=2707 set topics if only the order is changed2708 does not persist topics before project is saved2709 does not update topics if project is not valid2710 does not add new topic if name is not unique (case insensitive)2711 topic_list: ["topicA", "topicB"], expected_result: ["topicA", "topicB"]2712 set topics2713 topic_list: ["topicB", "topicA"], expected_result: ["topicB", "topicA"]2714 set topics2715 topic_list: [" topicC ", " topicD "], expected_result: ["topicC", "topicD"]2716 set topics2717 topic_list: ["topicE", "topicF", "topicE"], expected_result: ["topicE", "topicF"]2718 set topics2719 topic_list: ["topicE ", "topicF", " topicE"], expected_result: ["topicE", "topicF"]2720 set topics2721 topic_list: "topicA, topicB", expected_result: ["topicA", "topicB"]2722 set topics2723 topic_list: "topicB, topicA", expected_result: ["topicB", "topicA"]2724 set topics2725 topic_list: " topicC , topicD ", expected_result: ["topicC", "topicD"]2726 set topics2727 topic_list: "topicE, topicF, topicE", expected_result: ["topicE", "topicF"]2728 set topics2729 topic_list: "topicE , topicF, topicE", expected_result: ["topicE", "topicF"]2730 set topics2731 public topics counter2732 initial_visibility: private, new_visibility: nil, new_topic_list: "t2, t3", expected_count_changes: [0, 0, 0]2733 increments or decrements counters of topics2734 initial_visibility: internal, new_visibility: nil, new_topic_list: "t2, t3", expected_count_changes: [-1, 0, 1]2735 increments or decrements counters of topics2736 initial_visibility: public, new_visibility: nil, new_topic_list: "t2, t3", expected_count_changes: [-1, 0, 1]2737 increments or decrements counters of topics2738 initial_visibility: private, new_visibility: public, new_topic_list: nil, expected_count_changes: [1, 1, 0]2739 increments or decrements counters of topics2740 initial_visibility: private, new_visibility: internal, new_topic_list: nil, expected_count_changes: [1, 1, 0]2741 increments or decrements counters of topics2742 initial_visibility: private, new_visibility: private, new_topic_list: nil, expected_count_changes: [0, 0, 0]2743 increments or decrements counters of topics2744 initial_visibility: internal, new_visibility: public, new_topic_list: nil, expected_count_changes: [0, 0, 0]2745 increments or decrements counters of topics2746 initial_visibility: internal, new_visibility: internal, new_topic_list: nil, expected_count_changes: [0, 0, 0]2747 increments or decrements counters of topics2748 initial_visibility: internal, new_visibility: private, new_topic_list: nil, expected_count_changes: [-1, -1, 0]2749 increments or decrements counters of topics2750 initial_visibility: public, new_visibility: public, new_topic_list: nil, expected_count_changes: [0, 0, 0]2751 increments or decrements counters of topics2752 initial_visibility: public, new_visibility: internal, new_topic_list: nil, expected_count_changes: [0, 0, 0]2753 increments or decrements counters of topics2754 initial_visibility: public, new_visibility: private, new_topic_list: nil, expected_count_changes: [-1, -1, 0]2755 increments or decrements counters of topics2756 initial_visibility: private, new_visibility: public, new_topic_list: "t2, t3", expected_count_changes: [0, 1, 1]2757 increments or decrements counters of topics2758 initial_visibility: private, new_visibility: internal, new_topic_list: "t2, t3", expected_count_changes: [0, 1, 1]2759 increments or decrements counters of topics2760 initial_visibility: private, new_visibility: private, new_topic_list: "t2, t3", expected_count_changes: [0, 0, 0]2761 increments or decrements counters of topics2762 initial_visibility: internal, new_visibility: public, new_topic_list: "t2, t3", expected_count_changes: [-1, 0, 1]2763 increments or decrements counters of topics2764 initial_visibility: internal, new_visibility: internal, new_topic_list: "t2, t3", expected_count_changes: [-1, 0, 1]2765 increments or decrements counters of topics2766 initial_visibility: internal, new_visibility: private, new_topic_list: "t2, t3", expected_count_changes: [-1, -1, 0]2767 increments or decrements counters of topics2768 initial_visibility: public, new_visibility: public, new_topic_list: "t2, t3", expected_count_changes: [-1, 0, 1]2769 increments or decrements counters of topics2770 initial_visibility: public, new_visibility: internal, new_topic_list: "t2, t3", expected_count_changes: [-1, 0, 1]2771 increments or decrements counters of topics2772 initial_visibility: public, new_visibility: private, new_topic_list: "t2, t3", expected_count_changes: [-1, -1, 0]2773 increments or decrements counters of topics2774 #all_runners2775 behaves like all_runners2776 when shared runners are enabled for project2777 returns a list with all runners2778 when shared runners are disabled for project2779 returns a list without shared runners2780 when group runners are enabled for project2781 returns a list with all runners2782 when group runners are disabled for project2783 returns a list without group runners2784 #all_available_runners2785 behaves like all_runners2786 when shared runners are enabled for project2787 returns a list with all runners2788 when shared runners are disabled for project2789 returns a list without shared runners2790 when group runners are enabled for project2791 returns a list with all runners2792 when group runners are disabled for project2793 returns a list without group runners2794 #enforced_runner_token_expiration_interval and #effective_runner_token_expiration_interval2795 when there is no interval2796 behaves like no enforced expiration interval2797 is expected to be nil2798 behaves like no effective expiration interval2799 is expected to be nil2800 when there is a project interval2801 behaves like no enforced expiration interval2802 is expected to be nil2803 behaves like effective expiration interval2804 is expected to eq 3 days2805 when there is a site-wide enforced shared interval2806 behaves like no enforced expiration interval2807 is expected to be nil2808 behaves like no effective expiration interval2809 is expected to be nil2810 when there is a site-wide enforced group interval2811 behaves like no enforced expiration interval2812 is expected to be nil2813 behaves like no effective expiration interval2814 is expected to be nil2815 when there is a site-wide enforced project interval2816 behaves like enforced expiration interval2817 is expected to eq 5 days2818 behaves like effective expiration interval2819 is expected to eq 5 days2820 when there is a group-enforced group interval2821 behaves like no enforced expiration interval2822 is expected to be nil2823 behaves like no effective expiration interval2824 is expected to be nil2825 when there is a group-enforced subgroup interval2826 behaves like no enforced expiration interval2827 is expected to be nil2828 behaves like no effective expiration interval2829 is expected to be nil2830 when there is an owner group-enforced project interval2831 behaves like enforced expiration interval2832 is expected to eq 4 days2833 behaves like effective expiration interval2834 is expected to eq 4 days2835 when there is a grandparent group-enforced interval2836 behaves like enforced expiration interval2837 is expected to eq 3 days2838 behaves like effective expiration interval2839 is expected to eq 3 days2840 when there is a parent group-enforced interval overridden by group-enforced interval2841 behaves like enforced expiration interval2842 is expected to eq 4 days2843 behaves like effective expiration interval2844 is expected to eq 4 days2845 when site-wide enforced interval overrides project interval2846 behaves like enforced expiration interval2847 is expected to eq 3 days2848 behaves like effective expiration interval2849 is expected to eq 3 days2850 when project interval overrides site-wide enforced interval2851 has human-readable expiration intervals2852 behaves like enforced expiration interval2853 is expected to eq 5 days2854 behaves like effective expiration interval2855 is expected to eq 4 days2856 when site-wide enforced interval overrides group-enforced interval2857 behaves like enforced expiration interval2858 is expected to eq 3 days2859 behaves like effective expiration interval2860 is expected to eq 3 days2861 when group-enforced interval overrides site-wide enforced interval2862 behaves like enforced expiration interval2863 is expected to eq 4 days2864 behaves like effective expiration interval2865 is expected to eq 4 days2866 when group-enforced interval overrides project interval2867 behaves like enforced expiration interval2868 is expected to eq 3 days2869 behaves like effective expiration interval2870 is expected to eq 3 days2871 when project interval overrides group-enforced interval2872 behaves like enforced expiration interval2873 is expected to eq 5 days2874 behaves like effective expiration interval2875 is expected to eq 4 days2876 when there is an enforced project interval in an unrelated group2877 behaves like no enforced expiration interval2878 is expected to be nil2879 behaves like no effective expiration interval2880 is expected to be nil2881 when there is an enforced project interval in a subgroup2882 behaves like no enforced expiration interval2883 is expected to be nil2884 behaves like no effective expiration interval2885 is expected to be nil2886 behaves like it has loose foreign keys2887 has at least one loose foreign key definition2888 has the deletion trigger present2889 records record deletions2890 cleans up record deletions2891 Projects::SyncEvent2892 when creating the project2893 creates a projects_sync_event record2894 enqueues ProcessProjectSyncEventsWorker2895 when updating project namespace_id2896 creates a projects_sync_event record2897 enqueues ProcessProjectSyncEventsWorker2898 when updating project other attribute2899 creates a projects_sync_event record2900 in the same transaction2901 when updating different namespace_id2902 creates two projects_sync_event records2903 when updating the same namespace_id2904 creates one projects_sync_event record2905 .not_hidden2906 lists projects that are not hidden2907 #pending_delete_or_hidden?2908 pending_delete: true, hidden: false, expected_result: true2909 returns true if project is pending delete or hidden2910 pending_delete: true, hidden: true, expected_result: true2911 returns true if project is pending delete or hidden2912 pending_delete: false, hidden: true, expected_result: true2913 returns true if project is pending delete or hidden2914 pending_delete: false, hidden: false, expected_result: false2915 returns true if project is pending delete or hidden2916 #work_items_feature_flag_enabled?2917 behaves like checks parent group feature flag2918 when feature flag is disabled globally2919 is expected to be falsey2920 when feature flag is enabled globally2921 is expected to be truthy2922 when feature flag is enabled for the root group2923 is expected to be truthy2924 when feature flag is enabled for the group2925 is expected to be truthy2926 when feature flag is enabled for the project2927 when project belongs to a group2928 is expected to be truthy2929 when project does not belong to a group2930 is expected to be truthy2931 #work_items_mvc_feature_flag_enabled?2932 behaves like checks parent group feature flag2933 when feature flag is disabled globally2934 is expected to be falsey2935 when feature flag is enabled globally2936 is expected to be truthy2937 when feature flag is enabled for the root group2938 is expected to be truthy2939 when feature flag is enabled for the group2940 is expected to be truthy2941 #work_items_mvc_2_feature_flag_enabled?2942 behaves like checks parent group feature flag2943 when feature flag is disabled globally2944 is expected to be falsey2945 when feature flag is enabled globally2946 is expected to be truthy2947 when feature flag is enabled for the root group2948 is expected to be truthy2949 when feature flag is enabled for the group2950 is expected to be truthy2951 serialization2952 behaves like blocks unsafe serialization2953 blocks as_json2954 blocks to_json2955 #enqueue_record_project_target_platforms2956 enqueues a Projects::RecordTargetPlatformsWorker2957 when not in gitlab.com2958 behaves like does not enqueue a Projects::RecordTargetPlatformsWorker2959 does not enqueue a Projects::RecordTargetPlatformsWorker2960 #inactive?2961 behaves like returns true if project is inactive2962 storage_size: 1048576, last_activity_at: Wed, 20 Sep 2023 08:29:46.035235141 UTC +00:00, expected_result: false2963 returns expected result2964 storage_size: 1048576, last_activity_at: Tue, 20 Oct 2020 08:29:46.035695381 UTC +00:00, expected_result: false2965 returns expected result2966 storage_size: 8388608, last_activity_at: Wed, 20 Sep 2023 08:29:46.035879571 UTC +00:00, expected_result: false2967 returns expected result2968 storage_size: 8388608, last_activity_at: Tue, 20 Oct 2020 08:29:46.036026641 UTC +00:00, expected_result: true2969 returns expected result2970 .inactive2971 returns projects that are inactive2972 #refreshing_build_artifacts_size?2973 when project has no existing refresh record2974 is expected to be falsey2975 when project has existing refresh record2976 and refresh has not yet started2977 is expected to eq false2978 and refresh has started2979 is expected to eq true2980 #group_group_links2981 with group project2982 returns group links of group2983 with personal project2984 returns none2985 #security_training_available?2986 returns false2987 #packages_policy_subject2988 returns wrapper2989 #destroy_deployment_by_id2990 will call fast_destroy_all on a specific deployment by id2991 #can_create_custom_domains?2992 when max custom domain setting is set to 02993 is expected to equal true2994 when max custom domain setting is not set to 02995 is expected to equal false2996 #can_suggest_reviewers?2997 is expected to equal false2998 #suggested_reviewers_available?2999 is expected to equal false3000 .cascading_with_parent_namespace3001 behaves like cascading settings3002 return self value when no parent3003 return self value when unlocked3004 still return self value when locked subgroup3005 still return unlocked value when locked group3006 behaves like cascading settings3007 return self value when no parent3008 return self value when unlocked3009 still return self value when locked subgroup3010 still return unlocked value when locked group3011 behaves like cascading settings3012 return self value when no parent3013 return self value when unlocked3014 still return self value when locked subgroup3015 still return unlocked value when locked group3016 #archived3017 is expected to be falsey3018 is expected to be truthy3019 #resolve_outdated_diff_discussions3020 is expected to be falsey3021 when set explicitly3022 is expected to be truthy3023 #only_allow_merge_if_all_discussions_are_resolved3024 is expected to be falsey3025 when set explicitly3026 is expected to be truthy3027 #remove_source_branch_after_merge3028 is expected to be truthy3029 when set explicitly3030 is expected to be falsey3031 .is_importing3032 returns projects that have import in progress3033 .without_created_and_owned_by_banned_user3034 when project creator is not banned3035 includes the project3036 when project creator is banned3037EscapeUtils.escape_url is deprecated. Use CGI.escape instead, performance is similar3038EscapeUtils.escape_url is deprecated. Use CGI.escape instead, performance is similar3039 when project creator is also an owner3040 excludes the project3041 when project creator is not an owner3042 includes the project3043 #created_and_owned_by_banned_user?3044 when creator is banned3045EscapeUtils.escape_url is deprecated. Use CGI.escape instead, performance is similar3046EscapeUtils.escape_url is deprecated. Use CGI.escape instead, performance is similar3047 is expected to eq false3048 when creator is an owner3049 is expected to eq true3050 when creator is not banned3051 is expected to eq false3052 when there is no creator3053 is expected to eq false3054 behaves like something that has web-hooks3055 #any_hook_failed?3056 when there are no hooks3057 is expected to eq false3058 when there are hooks3059 is expected to eq false3060 when there is a failed hook3061 is expected to eq true3062 #cache_web_hook_failure3063 when no value is passed3064 stores the return value of #any_hook_failed? and passes it back3065 when a value is passed3066 stores the value and passes it back3067 #get_web_hook_failure3068 when no value is stored3069 is expected to be nil3070 when stored as true3071 is expected to eq true3072 when stored as false3073 is expected to eq false3074 #fetch_web_hook_failure3075 when a value has not been stored3076 calls #any_hook_failed?3077 when a value has been stored3078 does not call #any_hook_failed?3079 deprecated project attributes3080 project_attr: :wiki_enabled, project_method: :wiki_enabled?, project_feature_attr: :wiki_access_level3081 delegates the attributes to project feature3082 sets the default value3083 project_attr: :builds_enabled, project_method: :builds_enabled?, project_feature_attr: :builds_access_level3084 delegates the attributes to project feature3085 sets the default value3086 project_attr: :merge_requests_enabled, project_method: :merge_requests_enabled?, project_feature_attr: :merge_requests_access_level3087 delegates the attributes to project feature3088 sets the default value3089 project_attr: :issues_enabled, project_method: :issues_enabled?, project_feature_attr: :issues_access_level3090 delegates the attributes to project feature3091 sets the default value3092 project_attr: :snippets_enabled, project_method: :snippets_enabled?, project_feature_attr: :snippets_access_level3093 delegates the attributes to project feature3094 sets the default value3095 #supports_lock_on_merge?3096 behaves like checks self (project) and root ancestor feature flag3097 when FF is enabled for the root group3098 is expected to be truthy3099 when FF is enabled for the group3100 is expected to be truthy3101 when FF is enabled for the project3102 is expected to be truthy3103 when FF is disabled globally3104 is expected to be falsey3105 when FF is enabled globally3106 is expected to be truthy3107 with loose foreign key on organization_id3108 behaves like cleanup by a loose foreign key3109 cleans up (delete or nullify) the model3110 with loose foreign key on projects.creator_id3111 behaves like cleanup by a loose foreign key3112 cleans up (delete or nullify) the model3113Gitlab::ErrorTracking::ErrorRepository::OpenApiStrategy3114 #report_error3115 is not implemented3116 #find_error3117 when request succeeds3118 without events returned3119 does not log anything3120 returns detailed error3121 returns no first and last release version3122 with missing stats3123 returns empty frequency3124 with missing frequency3125 returns empty frequency3126 with missing frequency data3127 returns empty frequency3128 with events returned3129 does not log anything3130 returns first and last release version3131 when request fails3132 logs error3133 is expected to be nil3134 #list_errors3135 with errors3136 does not log anything3137 maps errors to models3138 when n errors are returned3139 does not log anything3140 returns the amount of errors3141 cursor links are preserved3142 when less errors than requested are returned3143 does not log anything3144 returns the amount of errors3145 cursor link for next is removed3146 with params3147 does not log anything3148 passes provided params to client3149 without explicit params3150 does not log anything3151 passes default params to client3152 when request fails3153 logs error3154 is expected to have attributes {:next => nil, :prev => nil}3155 #last_event_for3156 when both event and error is returned3157 does not log anything3158 returns mapped error event3159 when event is not returned3160 does not log anything3161 is expected to be nil3162 when list_events request fails3163 logs error3164 is expected to be nil3165 when error is not returned3166 does not log anything3167 is expected to be nil3168 when get_error request fails3169 logs error3170 is expected to be nil3171 #update_error3172 when update succeeds3173 does not log anything3174 is expected to eq true3175 when update fails3176 logs error3177 is expected to eq false3178 #dsn_url3179 is expected to eq "http://abc@localhost:8080/errortracking/api/v1/projects/1148"3180AbuseReport3181 is expected to be valid3182 associations3183 is expected to belong to reporter class_name => User required: false inverse_of => reported_abuse_reports3184 is expected to belong to resolved_by class_name => User required: false inverse_of => resolved_abuse_reports3185 is expected to belong to assignee class_name => User required: false inverse_of => assigned_abuse_reports3186 is expected to belong to user required: false inverse_of => abuse_reports3187 is expected to have many events class_name => ResourceEvents::AbuseReportEvent inverse_of => abuse_report3188 is expected to have many notes3189 is expected to have many user_mentions class_name => Abuse::Reports::UserMention3190 aliases reporter to author3191 validations3192 is expected to validate that :reporter cannot be empty/falsy3193 is expected to validate that :user cannot be empty/falsy3194 is expected to validate that :message cannot be empty/falsy3195 is expected to validate that :category cannot be empty/falsy3196 is expected to validate that :user_id is case-sensitively unique within the scope of :reporter_id and :category, producing a custom validation error on failure3197 is expected to validate that the length of :reported_from_url is at most 5123198 is expected to allow :reported_from_url to be ‹"http://gitlab.com"›3199 is expected to allow :reported_from_url to be ‹"https://gitlab.com"›3200 is expected not to allow :reported_from_url to be ‹"ftp://example.com"›3201 is expected not to allow :reported_from_url to be ‹"javascript:alert(window.opener.document.location)"›3202 is expected to allow :reported_from_url to be ‹"http://localhost:9000"›3203 is expected to allow :reported_from_url to be ‹"https://gitlab.com"›3204 is expected to validate that the length of :mitigation_steps is at most 10003205 is expected to allow :links_to_spam to be ‹[]›3206 is expected to allow :links_to_spam to be ‹nil›3207 is expected to allow :links_to_spam to be ‹""›3208 is expected to allow :links_to_spam to be ‹["https://gitlab.com"]›3209 is expected to allow :links_to_spam to be ‹["http://localhost:9000"]›3210 is expected not to allow :links_to_spam to be ‹["spam"]›3211 is expected not to allow :links_to_spam to be ‹["http://localhost:9000", "spam"]›3212 is expected to allow :links_to_spam to be ‹["https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com"]›3213 is expected not to allow :links_to_spam to be ‹["https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com"]›3214 is expected to allow :links_to_spam to be ‹["https://gitlab.com/yA9BlbM93johGHai3HuEl1GgaMgzFJc9YZ9JXtx3WKFvrTPI5xAv20Aa1ByHiCreqD92qY0x256jhwz8CNwaLwvluNYOROCIg1hpOiFdEjJ1RPghJv4QaepctKWzDNtACH6XRNqAk2zLakfcbZBNUnOUgeFj7R7iLrll7zgyLO8Mso0NbDfCBUqtPRVF5C3mTn8cNV1NoFS1ZbDBgDRgJAKs2vMe4dxAyy4ojUBXFGOUvkeswm4v4SVtVhgH3hs2TZkN6jbzPNdGXZmyaHkODwhgtSMbCrIoGZPSxwr3vVRtAp1ktlh7RQDYBtzIKYPeVa1YOWu0bIAkRRqK4iJUagXpYfmauyWWBd3NPQzR0fYWZgN94DAtMC6RBAQTMwwaq9RioS2F0Ebru9QIHP6b3qYf9ECg37ZOHOTC5U13djGEDtwkiXlxWFPncQYEpvrGR1XSE6L64b7UFhbEVSSbDu2npbMX6dv...›3215 is expected not to allow :links_to_spam to be ‹["https://gitlab.com/0Rh2UErRsZlW2309LiKQzqpuYLvHcKxo9zM4U8ODD510fCkH6hhHgA9FhTdR5SGFOgN8GbmCFh7C8Oxx53JduFyCNVx6djQMUXKAMXynYo1JLuNuFuMr0VsQUP3gC3r5QHW5xLbz6KF5KPGqQkH6CN9045R48wUYJ1YZd95vocCWRirulXdBAfP6DwvBnQZtmHxD9Dr2435a9Xd2LxsfFWWteLKrNFKhLUIXZLWmnv8ayrm62236379Bw0uk1E3h5Xwz7bog0ZHxiLnq7sB9nInMp08ZbDKWxXag074DtLR8lnr3qi90zI0FRUBpGyELFm7FsEAID4aGv5k26ufSyHRDNvs0QYPBGNQyG9cN4hGqCwqYQ7k14QFb6MEv6WfktVwRyaEIcl6oD3rYkRakBWiAk8MBmXw90jD3YJyLUhd2leII6o9M153uaDoH8UecQBsOFTAl14ZGu5vFc6lVMZN5KevSizU...›3216 for screenshot3217 is expected not to allow :screenshot to be ‹#<Rack::Test::UploadedFile:0x00007959cb635648 @content_type="text/plain", @original_filename="doc_sample.txt", @tempfile=#<Tempfile:/tmp/doc_sample20231020-329-gioz0m.txt>>›3218 is expected to allow :screenshot to be ‹#<Rack::Test::UploadedFile:0x00007959b890b740 @content_type="image/jpg", @original_filename="rails_sample.jpg", @tempfile=#<Tempfile:/tmp/rails_sample20231020-329-p7ph7f.jpg>>›3219 is expected to allow :screenshot to be ‹nil›3220 is expected to allow :screenshot to be ‹""›3221 evidence3222 is expected not to allow :evidence to be ‹"string"›3223 is expected not to allow :evidence to be ‹1.0›3224 is expected to allow :evidence to be ‹nil›3225 is expected to allow :evidence to be ‹{issues: [{:id=>1, :title=>"test issue title", :description=>"test issue content"}], snippets: [{:id=>2, :content=>"snippet content"}], notes: [{:id=>44, :content=>"notes content"}], user: {:login_count=>1, :account_age=>3, :spam_score=>0.3, :telesign_score=>0.4, :arkos_score=>0.2, :pvs_score=>0.8, :product_coverage=>0.8, :virus_total_score=>0.2}}›3226 scopes3227 .by_reporter_id3228 returns reports with reporter_id equal to the given user id3229 .open3230 returns reports without resolved_at value3231 .closed3232 returns reports with resolved_at value3233 .by_category3234 returns abuse reports with the specified category3235 .aggregated_by_user_and_category3236 when sort_by_count = true3237 sorts by aggregated_count in descending order and created_at in descending order3238 returns count with aggregated reports3239 when sort_by_count = false3240 does not sort using a specific order3241 before_validation3242 when links to spam contains empty strings3243 removes empty strings3244 #remove_user3245 blocks the user3246 lets a worker delete the user3247 #notify3248 delivers3249 returns early when not persisted3250 #screenshot_path3251 with asset host configured3252 returns a full URL with the asset host and system path3253 when no asset path configured3254 returns a full URL with the base url and system path3255 #report_type3256 when reported from an issue3257 is expected to eq :issue3258 when reported from a merge request3259 is expected to eq :merge_request3260 when reported from a profile3261 is expected to eq :profile3262 comment type3263 when reported from an issue comment3264 is expected to eq :comment3265 when reported from a merge request comment3266 is expected to eq :comment3267 when anchor exists not from an issue or merge request URL3268 is expected to eq :profile3269 when note id is invalid3270 is expected to eq :merge_request3271 when URL cannot be matched3272 is expected to be nil3273 #reported_content3274 when reported from an issue3275 is expected to eq "<p data-sourcepos=\"1:1-1:17\" dir=\"auto\">issue description</p>"3276 when reported from a merge request3277 is expected to eq "<p data-sourcepos=\"1:1-1:14\" dir=\"auto\">mr description</p>"3278 when reported from a merge request with an invalid note ID3279 is expected to eq "<p data-sourcepos=\"1:1-1:14\" dir=\"auto\">mr description</p>"3280 when reported from a profile3281 is expected to be nil3282 when reported from an unknown URL3283 is expected to be nil3284 when reported from an invalid URL3285 is expected to be nil3286 when reported from an issue comment3287 is expected to eq "<p data-sourcepos=\"1:1-1:16\" dir=\"auto\">comment in issue</p>"3288 when reported from a merge request comment3289 is expected to eq "<p data-sourcepos=\"1:1-1:13\" dir=\"auto\">comment in mr</p>"3290 when report type cannot be determined, because the comment does not exist3291 is expected to be nil3292 #past_closed_reports_for_user3293 returns past closed reports for the same user3294 #similar_open_reports_for_user3295 returns open reports for the same user and category3296 returns no abuse reports when the report is closed3297 enums3298 is expected to define :category as an enum backed by an integer with values ‹{spam: 1, offensive: 2, phishing: 3, crypto: 4, credentials: 5, copyright: 6, malware: 7, other: 8}›3299ServiceHook3300 behaves like a hook that does not get automatically disabled on failure3301 .executable/.disabled3302 finds the correct set of project hooks3303 when silent mode is enabled3304 causes no hooks to be considered executable3305 causes all hooks to be considered disabled3306 #executable?3307 recent_failures: 0, not_until: :not_set3308 has the correct state3309 recent_failures: 0, not_until: :past3310 has the correct state3311 recent_failures: 0, not_until: :future3312 has the correct state3313 recent_failures: 0, not_until: :now3314 has the correct state3315 recent_failures: 1, not_until: :not_set3316 has the correct state3317 recent_failures: 1, not_until: :past3318 has the correct state3319 recent_failures: 1, not_until: :future3320 has the correct state3321 recent_failures: 3, not_until: :not_set3322 has the correct state3323 recent_failures: 3, not_until: :past3324 has the correct state3325 recent_failures: 3, not_until: :future3326 has the correct state3327 recent_failures: 4, not_until: :not_set3328 has the correct state3329 recent_failures: 4, not_until: :past3330 has the correct state3331 recent_failures: 4, not_until: :now3332 has the correct state3333 recent_failures: 4, not_until: :future3334 has the correct state3335 #enable!3336 makes a hook executable if it was marked as failed3337 makes a hook executable if it is currently backed off3338 does not update hooks unless necessary3339 #backoff!3340 when we have not backed off before3341 does not disable the hook3342 when we have exhausted the grace period3343 does not disable the hook3344 #temporarily_disabled?3345 is false3346 #permanently_disabled?3347 is false3348 #alert_status3349 is expected to eq :executable3350 when hook has been disabled3351 is expected to eq :executable3352 when hook has been backed off3353 is expected to eq :executable3354 associations3355 is expected to belong to integration required: false3356 validations3357 is expected to validate that :integration cannot be empty/falsy3358 execute3359 #execute3360 #parent3361 with a project-level integration3362 returns the associated project3363 with a group-level integration3364 returns the associated group3365 with an instance-level integration3366 returns nil3367 #application_context3368 includes the type3369Gitlab::Database::MigrationHelpers::AutomaticLockWritesOnTables3370 # order random3371 when executing create_table migrations3372 when single database3373 does not lock any newly created tables (PENDING: Skipping because database ci exists)3374 when multiple databases3375 for creating a gitlab_main table3376 behaves like does not lock writes on table3377main: == : migrating ===============================================================3378main: -- create_table(:_test_gitlab_main_table)3379main: -> 0.1814s3380main: == : migrated (0.1904s) ======================================================3381 allows deleting records from the table3382 behaves like locks writes on table3383ci: == : migrating ===============================================================3384ci: -- create_table(:_test_gitlab_main_table)3385ci: -> 0.0033s3386I, [2023-10-20T08:44:49.645845 #329] INFO -- : Database: 'ci', Table: '_test_gitlab_main_table': Lock Writes3387ci: == : migrated (0.0690s) ======================================================3388 errors on deleting3389 when table listed as a deleted table3390 behaves like does not lock writes on table3391ci: == : migrating ===============================================================3392ci: -- create_table(:_test_gitlab_main_table)3393ci: -> 0.0038s3394ci: == : migrated (0.0261s) ======================================================3395 allows deleting records from the table3396 when the migration skips automatic locking of tables3397 behaves like does not lock writes on table3398ci: == : migrating ===============================================================3399ci: -- create_table(:_test_gitlab_main_table)3400ci: -> 0.0038s3401ci: == : migrated (0.0047s) ======================================================3402 allows deleting records from the table3403 when migration does not run within a transaction3404 behaves like locks writes on table using WithLockRetries3405ci: == : migrating ===============================================================3406ci: -- create_table(:_test_gitlab_main_table)3407ci: -> 0.0029s3408I, [2023-10-20T08:44:55.224989 #329] INFO -- : Database: 'ci', Table: '_test_gitlab_main_table': Lock Writes3409I, [2023-10-20T08:44:55.227260 #329] INFO -- : {:method=>"with_lock_retries", :class=>"gitlab:db:lock_writes", :message=>"Lock timeout is set", :current_iteration=>1, :lock_timeout_in_ms=>100}3410I, [2023-10-20T08:44:55.228513 #329] INFO -- : {:method=>"with_lock_retries", :class=>"gitlab:db:lock_writes", :message=>"Migration finished", :current_iteration=>1, :lock_timeout_in_ms=>100}3411ci: == : migrated (0.0310s) ======================================================3412 locks the writes on the table using WithLockRetries3413 when the SKIP_AUTOMATIC_LOCK_ON_WRITES feature flag is set3414 behaves like does not lock writes on table3415ci: == : migrating ===============================================================3416ci: -- create_table(:_test_gitlab_main_table)3417ci: -> 0.0040s3418ci: == : migrated (0.0053s) ======================================================3419 allows deleting records from the table3420 when the automatic_lock_writes_on_table feature flag is disabled3421 behaves like does not lock writes on table3422ci: == : migrating ===============================================================3423ci: -- create_table(:_test_gitlab_main_table)3424ci: -> 0.0045s3425ci: == : migrated (0.0180s) ======================================================3426 allows deleting records from the table3427 for creating a gitlab_main_clusterwide table3428 behaves like does not lock writes on table3429main: == : migrating ===============================================================3430main: -- create_table(:_test_gitlab_main_clusterwide_table)3431main: -> 0.0604s3432main: == : migrated (0.0930s) ======================================================3433 allows deleting records from the table3434 behaves like locks writes on table3435ci: == : migrating ===============================================================3436ci: -- create_table(:_test_gitlab_main_clusterwide_table)3437ci: -> 0.0033s3438I, [2023-10-20T08:45:03.021729 #329] INFO -- : Database: 'ci', Table: '_test_gitlab_main_clusterwide_table': Lock Writes3439ci: == : migrated (0.1007s) ======================================================3440 errors on deleting3441 for creating a gitlab_main_cell table3442 behaves like does not lock writes on table3443main: == : migrating ===============================================================3444main: -- create_table(:_test_gitlab_main_cell_table)3445main: -> 0.0062s3446main: == : migrated (0.0270s) ======================================================3447 allows deleting records from the table3448 behaves like locks writes on table3449ci: == : migrating ===============================================================3450ci: -- create_table(:_test_gitlab_main_cell_table)3451ci: -> 0.0035s3452I, [2023-10-20T08:45:06.801640 #329] INFO -- : Database: 'ci', Table: '_test_gitlab_main_cell_table': Lock Writes3453ci: == : migrated (0.0305s) ======================================================3454 errors on deleting3455 for creating a gitlab_pm table3456 behaves like does not lock writes on table3457main: == : migrating ===============================================================3458main: -- create_table(:_test_gitlab_pm_table)3459main: -> 0.0031s3460main: == : migrated (0.0113s) ======================================================3461 allows deleting records from the table3462 behaves like locks writes on table3463ci: == : migrating ===============================================================3464ci: -- create_table(:_test_gitlab_pm_table)3465ci: -> 0.0038s3466I, [2023-10-20T08:45:10.455878 #329] INFO -- : Database: 'ci', Table: '_test_gitlab_pm_table': Lock Writes3467ci: == : migrated (0.0339s) ======================================================3468 errors on deleting3469 for creating a gitlab_ci table3470 behaves like does not lock writes on table3471ci: == : migrating ===============================================================3472ci: -- create_table(:_test_gitlab_ci_table)3473ci: -> 0.0031s3474ci: == : migrated (0.0256s) ======================================================3475 allows deleting records from the table3476 behaves like locks writes on table3477main: == : migrating ===============================================================3478main: -- create_table(:_test_gitlab_ci_table)3479main: -> 0.0038s3480I, [2023-10-20T08:45:14.325083 #329] INFO -- : Database: 'main', Table: '_test_gitlab_ci_table': Lock Writes3481main: == : migrated (0.0715s) ======================================================3482 errors on deleting3483 when table listed as a deleted table3484 behaves like does not lock writes on table3485main: == : migrating ===============================================================3486main: -- create_table(:_test_gitlab_ci_table)3487main: -> 0.0032s3488main: == : migrated (0.0118s) ======================================================3489 allows deleting records from the table3490 when the migration skips automatic locking of tables3491 behaves like does not lock writes on table3492main: == : migrating ===============================================================3493main: -- create_table(:_test_gitlab_ci_table)3494main: -> 0.0041s3495main: == : migrated (0.0047s) ======================================================3496 allows deleting records from the table3497 when the SKIP_AUTOMATIC_LOCK_ON_WRITES feature flag is set3498 behaves like does not lock writes on table3499main: == : migrating ===============================================================3500main: -- create_table(:_test_gitlab_ci_table)3501main: -> 0.0045s3502main: == : migrated (0.0052s) ======================================================3503 allows deleting records from the table3504 when the automatic_lock_writes_on_table feature flag is disabled3505 behaves like does not lock writes on table3506main: == : migrating ===============================================================3507main: -- create_table(:_test_gitlab_ci_table)3508main: -> 0.0037s3509main: == : migrated (0.0047s) ======================================================3510 allows deleting records from the table3511 for creating gitlab_shared table3512 behaves like does not lock writes on table3513main: == : migrating ===============================================================3514main: -- create_table(:_test_table)3515main: -> 0.0031s3516main: == : migrated (0.0121s) ======================================================3517 allows deleting records from the table3518 behaves like does not lock writes on table3519ci: == : migrating ===============================================================3520ci: -- create_table(:_test_table)3521ci: -> 0.0032s3522ci: == : migrated (0.0271s) ======================================================3523 allows deleting records from the table3524 for creating a gitlab_geo table3525 behaves like does not lock writes on table3526 allows deleting records from the table (PENDING: No reason given)3527 for creating an unknown gitlab_schema table3528main: == : migrating ===============================================================3529main: -- create_table(:foobar)3530 raises an error about undefined gitlab_schema3531 when reversing drop_table migrations3532 when single database3533 does not lock any newly created tables (PENDING: Skipping because database ci exists)3534 when multiple databases3535 for re-creating a gitlab_main table3536 behaves like does not lock writes on table3537main: == : migrating ===============================================================3538main: -- drop_table(:_test_gitlab_main_table)3539main: -> 0.0020s3540main: == : migrated (0.0110s) ======================================================3541main: == : reverting ===============================================================3542main: -- create_table(:_test_gitlab_main_table)3543main: -> 0.0035s3544main: == : reverted (0.0257s) ======================================================3545 allows deleting records from the table3546 behaves like locks writes on table3547ci: == : migrating ===============================================================3548ci: -- drop_table(:_test_gitlab_main_table)3549ci: -> 0.0016s3550ci: == : migrated (0.0235s) ======================================================3551ci: == : reverting ===============================================================3552ci: -- create_table(:_test_gitlab_main_table)3553ci: -> 0.0402s3554I, [2023-10-20T08:45:34.751652 #329] INFO -- : Database: 'ci', Table: '_test_gitlab_main_table': Lock Writes3555ci: == : reverted (0.0891s) ======================================================3556 errors on deleting3557 for re-creating a gitlab_ci table3558 behaves like does not lock writes on table3559ci: == : migrating ===============================================================3560ci: -- drop_table(:_test_gitlab_ci_table)3561ci: -> 0.0016s3562ci: == : migrated (0.0272s) ======================================================3563ci: == : reverting ===============================================================3564ci: -- create_table(:_test_gitlab_ci_table)3565ci: -> 0.0031s3566ci: == : reverted (0.0238s) ======================================================3567 allows deleting records from the table3568 behaves like locks writes on table3569main: == : migrating ===============================================================3570main: -- drop_table(:_test_gitlab_ci_table)3571main: -> 0.0013s3572main: == : migrated (0.0082s) ======================================================3573main: == : reverting ===============================================================3574main: -- create_table(:_test_gitlab_ci_table)3575main: -> 0.0025s3576I, [2023-10-20T08:45:38.362006 #329] INFO -- : Database: 'main', Table: '_test_gitlab_ci_table': Lock Writes3577main: == : reverted (0.0117s) ======================================================3578 errors on deleting3579 for re-creating a gitlab_shared table3580 behaves like does not lock writes on table3581main: == : migrating ===============================================================3582main: -- drop_table(:_test_table)3583main: -> 0.0020s3584main: == : migrated (0.0107s) ======================================================3585main: == : reverting ===============================================================3586main: -- create_table(:_test_table)3587main: -> 0.0186s3588main: == : reverted (0.0262s) ======================================================3589 allows deleting records from the table3590 behaves like does not lock writes on table3591ci: == : migrating ===============================================================3592ci: -- drop_table(:_test_table)3593ci: -> 0.0018s3594ci: == : migrated (0.0225s) ======================================================3595ci: == : reverting ===============================================================3596ci: -- create_table(:_test_table)3597ci: -> 0.0030s3598ci: == : reverted (0.0229s) ======================================================3599 allows deleting records from the table3600 when renaming a table3601 when a gitlab_main table3602 behaves like does not lock writes on table3603main: == : migrating ===============================================================3604main: -- create_table(:_test_gitlab_main_table)3605main: -> 0.0032s3606main: == : migrated (0.0103s) ======================================================3607main: == : migrating ===============================================================3608main: -- rename_table(:_test_gitlab_main_table, :_test_gitlab_main_new_table)3609main: -> 0.1643s3610main: == : migrated (0.1706s) ======================================================3611 allows deleting records from the table3612 behaves like locks writes on table3613ci: == : migrating ===============================================================3614ci: -- create_table(:_test_gitlab_main_table)3615ci: -> 0.0038s3616I, [2023-10-20T08:45:45.767087 #329] INFO -- : Database: 'ci', Table: '_test_gitlab_main_table': Lock Writes3617I, [2023-10-20T08:45:45.768817 #329] INFO -- : {:method=>"with_lock_retries", :class=>"gitlab:db:lock_writes", :message=>"Lock timeout is set", :current_iteration=>1, :lock_timeout_in_ms=>100}3618I, [2023-10-20T08:45:45.770149 #329] INFO -- : {:method=>"with_lock_retries", :class=>"gitlab:db:lock_writes", :message=>"Migration finished", :current_iteration=>1, :lock_timeout_in_ms=>100}3619ci: == : migrated (0.0375s) ======================================================3620ci: == : migrating ===============================================================3621ci: -- rename_table(:_test_gitlab_main_table, :_test_gitlab_main_new_table)3622ci: -> 0.1058s3623I, [2023-10-20T08:45:45.904877 #329] INFO -- : Database: 'ci', Table: '_test_gitlab_main_new_table': Lock Writes3624ci: == : migrated (0.1429s) ======================================================3625 errors on deleting3626 when a gitlab_ci table3627 behaves like does not lock writes on table3628ci: == : migrating ===============================================================3629ci: -- create_table(:_test_gitlab_ci_table)3630ci: -> 0.0031s3631ci: == : migrated (0.0251s) ======================================================3632ci: == : migrating ===============================================================3633ci: -- rename_table(:_test_gitlab_ci_table, :_test_gitlab_ci_new_table)3634ci: -> 0.0099s3635ci: == : migrated (0.0302s) ======================================================3636 allows deleting records from the table3637 behaves like locks writes on table3638main: == : migrating ===============================================================3639main: -- create_table(:_test_gitlab_ci_table)3640main: -> 0.0032s3641I, [2023-10-20T08:45:49.644913 #329] INFO -- : Database: 'main', Table: '_test_gitlab_ci_table': Lock Writes3642I, [2023-10-20T08:45:49.646215 #329] INFO -- : {:method=>"with_lock_retries", :class=>"gitlab:db:lock_writes", :message=>"Lock timeout is set", :current_iteration=>1, :lock_timeout_in_ms=>100}3643I, [2023-10-20T08:45:49.647212 #329] INFO -- : {:method=>"with_lock_retries", :class=>"gitlab:db:lock_writes", :message=>"Migration finished", :current_iteration=>1, :lock_timeout_in_ms=>100}3644main: == : migrated (0.0171s) ======================================================3645main: == : migrating ===============================================================3646main: -- rename_table(:_test_gitlab_ci_table, :_test_gitlab_ci_new_table)3647main: -> 0.0495s3648I, [2023-10-20T08:45:49.708365 #329] INFO -- : Database: 'main', Table: '_test_gitlab_ci_new_table': Lock Writes3649main: == : migrated (0.0594s) ======================================================3650 errors on deleting3651SystemNotes::IssuablesService3652 #relate_issuable3653 when issue marks another as related3654 sets the note text3655 behaves like a system note3656 has the correct attributes3657 when issue marks several other issues as related3658 sets the note text3659 behaves like a system note3660 has the correct attributes3661 with work items3662 sets the note text with the correct work item type3663 #unrelate_issuable3664 behaves like a system note3665 has the correct attributes3666 when issue relation is removed3667 sets the note text3668 #change_assignee3669 behaves like a system note3670 has the correct attributes3671 when assignee added3672 sets the note text3673 behaves like a note with overridable created_at3674 the note has the correct time3675 when assignee removed3676 sets the note text3677 behaves like a note with overridable created_at3678 the note has the correct time3679 #change_issuable_assignees3680 builds a correct phrase when an assignee is added to a non-assigned issue3681 builds a correct phrase when assignee removed3682 builds a correct phrase when assignees changed3683 builds a correct phrase when three assignees removed and one added3684 builds a correct phrase when one assignee changed from a set3685 builds a correct phrase when one assignee removed from a set3686 builds a correct phrase when the locale is different3687 behaves like a system note3688 has the correct attributes3689 behaves like a note with overridable created_at3690 the note has the correct time3691 #change_issuable_reviewers3692 builds a correct phrase when a reviewer is added to a non-assigned merge request3693 builds a correct phrase when reviewer is removed3694 builds a correct phrase when reviewers changed3695 builds a correct phrase when three reviewers removed and one added3696 builds a correct phrase when one reviewer is changed from a set3697 builds a correct phrase when one reviewer removed from a set3698 builds a correct phrase when the locale is different3699 behaves like a system note3700 has the correct attributes3701 #change_issuable_contacts3702 builds a correct phrase when one contact is added3703 builds a correct phrase when one contact is removed3704 builds a correct phrase when one contact is added and one contact is removed3705 builds a correct phrase when three contacts are added and one removed3706 builds a correct phrase when three contacts are removed and one added3707 builds a correct phrase when the locale is different3708 behaves like a system note3709 has the correct attributes3710 #change_status3711 creates a resource state event3712 #change_title3713 when noteable responds to `title`3714 sets the note text3715 behaves like a system note3716 has the correct attributes3717 behaves like a note with overridable created_at3718 the note has the correct time3719 #change_description3720 when noteable responds to `description`3721 sets the note text3722 associates the related description version3723 behaves like a system note3724 has the correct attributes3725 behaves like a note with overridable created_at3726 the note has the correct time3727 #change_issue_confidentiality3728 issue has been made confidential3729 sets the note text3730 behaves like a system note3731 has the correct attributes3732 issue has been made visible3733 sets the note text3734 behaves like a system note3735 has the correct attributes3736 #cross_reference3737 behaves like a system note3738 has the correct attributes3739 when cross-reference disallowed3740 returns nil3741 does not create a system note metadata record3742 when cross-reference allowed3743 behaves like a system note3744 has the correct attributes3745 behaves like a note with overridable created_at3746 the note has the correct time3747 note_body3748 cross-project3749 from Commit3750 references the mentioning commit3751 from non-Commit3752 references the mentioning object3753 within the same project3754 from Commit3755 references the mentioning commit3756 from non-Commit3757 references the mentioning object3758 with external issue3759 queues a background worker3760 #cross_reference_exists?3761 issue from commit3762 is truthy when already mentioned3763 is falsey when not already mentioned3764 legacy capitalized cross reference3765 is truthy when already mentioned3766 commit from commit3767 is truthy when already mentioned3768 is falsey when not already mentioned3769 legacy capitalized cross reference3770 is truthy when already mentioned3771 commit with cross-reference from fork3772 is true when a fork mentions an external issue3773 legacy capitalized cross reference3774 is true when a fork mentions an external issue3775 #change_task_status3776 posts the 'marked the checklist item as complete' system note3777 behaves like a system note3778 has the correct attributes3779 #noteable_moved3780 moved to3781 notifies about noteable being moved to3782 behaves like cross project mentionable3783 contains cross reference to new noteable3784 mentions referenced noteable3785 mentions referenced project3786 behaves like a system note3787 has the correct attributes3788 moved from3789 notifies about noteable being moved from3790 behaves like cross project mentionable3791 contains cross reference to new noteable3792 mentions referenced noteable3793 mentions referenced project3794 behaves like a system note3795 has the correct attributes3796 invalid direction3797 raises error3798 #noteable_cloned3799 cloned to3800 notifies about noteable being cloned to3801 behaves like cross project mentionable3802 contains cross reference to new noteable3803 mentions referenced noteable3804 mentions referenced project3805 behaves like a system note3806 has the correct attributes3807 cloned from3808 notifies about noteable being cloned from3809 behaves like cross project mentionable3810 contains cross reference to new noteable3811 mentions referenced noteable3812 mentions referenced project3813 behaves like a system note3814 has the correct attributes3815 invalid direction3816 raises error3817 custom created timestamp3818 allows setting of custom created_at value3819 defaults to current time when created_at is not given3820 metrics3821 cloned from3822 does not tracks usage3823 cloned to3824 tracks usage3825 behaves like internal event tracking3826 logs to Snowplow3827 #mark_duplicate_issue3828 within the same project3829 is expected to eq "marked this issue as a duplicate of #2"3830 behaves like a system note3831 has the correct attributes3832 across different projects3833 is expected to eq "marked this issue as a duplicate of namespace162/project-1018#1"3834 behaves like a system note3835 has the correct attributes3836 #mark_canonical_issue_of_duplicate3837 within the same project3838 is expected to eq "marked #2 as a duplicate of this issue"3839 behaves like a system note3840 has the correct attributes3841 across different projects3842 is expected to eq "marked namespace164/project-1020#1 as a duplicate of this issue"3843 behaves like a system note3844 has the correct attributes3845 #discussion_lock3846 discussion unlocked3847 creates the note text correctly3848 behaves like a system note3849 has the correct attributes3850 discussion locked3851 creates the note text correctly3852 behaves like a system note3853 has the correct attributes3854 #cross_reference_disallowed?3855 when mentioned_in is not a MergeRequest3856 is falsey3857 when mentioned_in is a MergeRequest3858 is truthy when noteable is in commits3859 is falsey when noteable is not in commits3860 when notable is an ExternalIssue3861 is false with issue tracker supporting referencing3862 is true with issue tracker not supporting referencing3863 is true without issue tracker3864 #close_after_error_tracking_resolve3865 creates the expected state event3866 #auto_resolve_prometheus_alert3867 creates the expected state event3868 #change_issue_type3869 with issue3870 is expected to eq "changed type from incident to issue"3871 behaves like a system note3872 has the correct attributes3873 with work item3874 is expected to eq "changed type from task to issue"3875 behaves like a system note3876 has the correct attributes3877 #hierarchy_changed3878 when task is added as a child3879 sets the correct note text3880 behaves like a system note3881 has the correct attributes3882 when child task is removed3883 sets the correct note text3884 behaves like a system note3885 has the correct attributes3886ObjectStorage::DirectUpload3887 #has_length3888 is known3889 maximum size is not required3890 is unknown3891 and maximum size is specified3892 does not raise an error3893 and maximum size is not specified3894 raises an error3895 #get_url3896 when AWS is used3897 calls the proper method3898 when Google is used3899 calls the proper method3900 #to_hash3901 when AWS is used3902 when length is known3903 behaves like a valid S3 upload without multipart data3904 behaves like a valid S3 upload3905 sets Workhorse client data3906 behaves like a valid upload3907 returns valid structure3908 with an object with UTF-8 characters3909 returns an escaped path3910 when no region is specified3911 defaults to us-east-13912 when V2 signatures are used3913 does not enable Workhorse client3914 when V4 signatures are used3915 enables the Workhorse client for instance profiles3916 when consolidated settings are used3917 enables the Workhorse client3918 when only server side encryption is used3919 sends server side encryption settings3920 when SSE-KMS is used3921 sends server side encryption settings3922 behaves like a valid upload without multipart data3923 returns valid structure3924 behaves like a valid upload3925 returns valid structure3926 with an object with UTF-8 characters3927 returns an escaped path3928 when path style is true3929 behaves like a valid S3 upload without multipart data3930 behaves like a valid S3 upload3931 sets Workhorse client data3932 behaves like a valid upload3933 returns valid structure3934 with an object with UTF-8 characters3935 returns an escaped path3936 when no region is specified3937 defaults to us-east-13938 when V2 signatures are used3939 does not enable Workhorse client3940 when V4 signatures are used3941 enables the Workhorse client for instance profiles3942 when consolidated settings are used3943 enables the Workhorse client3944 when only server side encryption is used3945 sends server side encryption settings3946 when SSE-KMS is used3947 sends server side encryption settings3948 behaves like a valid upload without multipart data3949 returns valid structure3950 behaves like a valid upload3951 returns valid structure3952 with an object with UTF-8 characters3953 returns an escaped path3954 when IAM profile is true3955 behaves like a valid S3 upload without multipart data3956 behaves like a valid S3 upload3957 sets Workhorse client data3958 behaves like a valid upload3959 returns valid structure3960 with an object with UTF-8 characters3961 returns an escaped path3962 when no region is specified3963 defaults to us-east-13964 when V2 signatures are used3965 does not enable Workhorse client3966 when V4 signatures are used3967 enables the Workhorse client for instance profiles3968 when consolidated settings are used3969 enables the Workhorse client3970 when only server side encryption is used3971 sends server side encryption settings3972 when SSE-KMS is used3973 sends server side encryption settings3974 behaves like a valid upload without multipart data3975 returns valid structure3976 behaves like a valid upload3977 returns valid structure3978 with an object with UTF-8 characters3979 returns an escaped path3980 when IMSDv2 is available3981 behaves like a valid S3 upload without multipart data3982 behaves like a valid S3 upload3983 sets Workhorse client data3984 behaves like a valid upload3985 returns valid structure3986 with an object with UTF-8 characters3987 returns an escaped path3988 when no region is specified3989 defaults to us-east-13990 when V2 signatures are used3991 does not enable Workhorse client3992 when V4 signatures are used3993 enables the Workhorse client for instance profiles3994 when consolidated settings are used3995 enables the Workhorse client3996 when only server side encryption is used3997 sends server side encryption settings3998 when SSE-KMS is used3999 sends server side encryption settings4000 behaves like a valid upload without multipart data4001 returns valid structure4002 behaves like a valid upload4003 returns valid structure4004 with an object with UTF-8 characters4005 returns an escaped path4006 when length is unknown4007 behaves like a valid S3 upload with multipart data4008 behaves like a valid S3 upload4009 sets Workhorse client data4010 behaves like a valid upload4011 returns valid structure4012 with an object with UTF-8 characters4013 returns an escaped path4014 when no region is specified4015 defaults to us-east-14016 when V2 signatures are used4017 does not enable Workhorse client4018 when V4 signatures are used4019 enables the Workhorse client for instance profiles4020 when consolidated settings are used4021 enables the Workhorse client4022 when only server side encryption is used4023 sends server side encryption settings4024 when SSE-KMS is used4025 sends server side encryption settings4026 behaves like a valid upload with multipart data4027 returns valid structure4028 uses only strings in query parameters4029 behaves like a valid upload4030 returns valid structure4031 with an object with UTF-8 characters4032 returns an escaped path4033 when maximum upload size is 04034 returns maximum number of parts4035 part size is minimum, 5MB4036 when maximum upload size is < 5 MiB4037 returns only 1 part4038 part size is minimum, 5MB4039 when maximum upload size is 10MB4040 returns only 2 parts4041 part size is minimum, 5MB4042 when maximum upload size is 12MB4043 returns only 3 parts4044 part size is rounded-up to 5MB4045 when maximum upload size is 49GB4046 returns maximum, 100 parts4047 part size is rounded-up to 5MB4048 when Google is used4049 with google_application_default4050 when length is known4051 behaves like a valid Google upload4052 enables the Workhorse client4053 behaves like a valid upload4054 returns valid structure4055 with an object with UTF-8 characters4056 returns an escaped path4057 with workhorse_google_client disabled4058 does not set Workhorse client data4059 behaves like a valid upload without multipart data4060 returns valid structure4061 behaves like a valid upload4062 returns valid structure4063 with an object with UTF-8 characters4064 returns an escaped path4065 when length is unknown4066 behaves like a valid Google upload4067 enables the Workhorse client4068 behaves like a valid upload4069 returns valid structure4070 with an object with UTF-8 characters4071 returns an escaped path4072 with workhorse_google_client disabled4073 does not set Workhorse client data4074 behaves like a valid upload without multipart data4075 returns valid structure4076 behaves like a valid upload4077 returns valid structure4078 with an object with UTF-8 characters4079 returns an escaped path4080 with google_json_key_location4081 when length is known4082 behaves like a valid Google upload4083 enables the Workhorse client4084 behaves like a valid upload4085 returns valid structure4086 with an object with UTF-8 characters4087 returns an escaped path4088 with workhorse_google_client disabled4089 does not set Workhorse client data4090 behaves like a valid upload without multipart data4091 returns valid structure4092 behaves like a valid upload4093 returns valid structure4094 with an object with UTF-8 characters4095 returns an escaped path4096 when length is unknown4097 behaves like a valid Google upload4098 enables the Workhorse client4099 behaves like a valid upload4100 returns valid structure4101 with an object with UTF-8 characters4102 returns an escaped path4103 with workhorse_google_client disabled4104 does not set Workhorse client data4105 behaves like a valid upload without multipart data4106 returns valid structure4107 behaves like a valid upload4108 returns valid structure4109 with an object with UTF-8 characters4110 returns an escaped path4111 with google_json_key_string4112 when length is known4113 behaves like a valid Google upload4114 enables the Workhorse client4115 behaves like a valid upload4116 returns valid structure4117 with an object with UTF-8 characters4118 returns an escaped path4119 with workhorse_google_client disabled4120 does not set Workhorse client data4121 behaves like a valid upload without multipart data4122 returns valid structure4123 behaves like a valid upload4124 returns valid structure4125 with an object with UTF-8 characters4126 returns an escaped path4127 when length is unknown4128 behaves like a valid Google upload4129 enables the Workhorse client4130 behaves like a valid upload4131 returns valid structure4132 with an object with UTF-8 characters4133 returns an escaped path4134 with workhorse_google_client disabled4135 does not set Workhorse client data4136 behaves like a valid upload without multipart data4137 returns valid structure4138 behaves like a valid upload4139 returns valid structure4140 with an object with UTF-8 characters4141 returns an escaped path4142 when AzureRM is used4143 behaves like a valid AzureRM upload4144 enables the Workhorse client4145 behaves like a valid upload4146 returns valid structure4147 with an object with UTF-8 characters4148 returns an escaped path4149 behaves like a valid upload without multipart data4150 returns valid structure4151 behaves like a valid upload4152 returns valid structure4153 with an object with UTF-8 characters4154 returns an escaped path4155 when a custom storage domain is used4156 behaves like a valid AzureRM upload4157 enables the Workhorse client4158 behaves like a valid upload4159 returns valid structure4160 with an object with UTF-8 characters4161 returns an escaped path4162 #use_workhorse_google_client?4163 with consolidated_settings4164 with google_application_default4165 is expected to be truthy4166 with google_json_key_string4167 is expected to be truthy4168 with google_json_key_location4169 is expected to be truthy4170 without any google setting4171 is expected to be falsey4172 without consolidated_settings4173 is expected to be falsey4174Groups::GroupMembersHelper4175 #group_members_app_data4176 returns expected json4177 group members4178 behaves like members.json4179 returns `members` property that matches json schema4180 sets `member_path` property4181 with user status set4182 behaves like members.json4183 returns `members` property that matches json schema4184 sets `member_path` property4185 invited group members4186 behaves like members.json4187 returns `members` property that matches json schema4188 sets `member_path` property4189 access requests4190 behaves like members.json4191 returns `members` property that matches json schema4192 sets `member_path` property4193 group links4194 sets `group.members` property that matches json schema4195 sets `member_path` property4196 inherited4197 include_relations: [:inherited, :direct], result: lazy { [group_group_link, sub_group_group_link].map(&:id) }4198 returns correct group links4199 include_relations: [:inherited], result: lazy { [group_group_link].map(&:id) }4200 returns correct group links4201 include_relations: [:direct], result: lazy { [sub_group_group_link].map(&:id) }4202 returns correct group links4203 when pagination is not available4204 sets `pagination` attribute to expected json4205 when pagination is available4206 sets `pagination` attribute to expected json4207 #group_member_header_subtext4208 contains expected text with group name4209Gitlab::LetsEncrypt::Client4210 #new_order4211 ensures account registration4212 generates and stores private key and initialize acme client with it4213 returns order4214 when private key is saved in settings4215 uses current value of private key4216 when acme integration is disabled4217 raises error4218 #load_order4219 ensures account registration4220 generates and stores private key and initialize acme client with it4221 loads order4222 when private key is saved in settings4223 uses current value of private key4224 when acme integration is disabled4225 raises error4226 #load_challenge4227 ensures account registration4228 generates and stores private key and initialize acme client with it4229 loads challenge4230 when private key is saved in settings4231 uses current value of private key4232 when acme integration is disabled4233 raises error4234 #terms_of_service_url4235 returns valid url4236DraftNotes::PublishService4237 only publishes the draft notes belonging to the current user4238 single draft note4239 publishes4240 does not skip notification4241 does not track the publish event4242 commit_id is set4243 creates note from draft with commit_id4244 multiple draft notes4245 returns success4246 publishes all draft notes for a user in a merge request4247 sends batch notification4248 tracks the publish event4249 when review fails to create4250 does not publish any draft note4251 does not track the publish event4252 returns an error4253 behaves like does not trigger GraphQL subscription mergeRequestMergeStatusUpdated4254 is expected not to receive merge_request_merge_status_updated(*(any args)) 0 times4255 behaves like triggers GraphQL subscription mergeRequestMergeStatusUpdated4256 is expected to receive merge_request_merge_status_updated(#<MergeRequest id:56 namespace186/project-1042!1>) 1 time4257 capturing diff notes positions and keeping around commits4258 creates diff_note_positions for diff notes4259 keeps around the commits of each published note4260 does not request a lot from Gitaly4261 commit_id is set4262 creates note from draft with commit_id4263 draft notes with suggestions4264 creates a suggestion with correct content4265 when the diff is changed4266 creates a suggestion based on the latest diff content and positions4267 with quick actions4268 performs quick actions4269 does not create a note if it only contains quick actions4270 with drafts that resolve threads4271 resolves the thread4272 sends notifications if all threads are resolved4273 user cannot create notes4274 returns an error4275Integrations::Jenkins4276 sets the default values4277 behaves like Integrations::BaseCi4278 default values4279 is expected to eq :ci4280 behaves like Integrations::ResetSecretFields4281 #exposing_secrets_fields4282 returns an array of strings4283 #reset_secret_fields?4284 returns false if no exposing field has changed4285 returns true if any exposing field has changed4286 validation callback4287 when an exposing field has changed4288 clears all secret fields4289 when a secret field has been updated4290 does not clear this secret field4291 when a secret field has been updated with the same value4292 does not clear this secret field4293 when no exposing field has changed4294 does not clear any secret fields4295 accessors4296 is expected to respond to #enable_ssl_verification4297 is expected to respond to #enable_ssl_verification?4298 #initialize_properties4299 enables the setting by default4300 does not enable the setting if the record is already persisted4301 does not enable the setting if a custom value was set4302 #fields4303 inserts the checkbox field after the first URL field, or at the end4304 does not insert the field repeatedly4305 behaves like Integrations::HasWebHook4306 associations4307 is expected to have one service_hook inverse_of => integration4308 callbacks4309 calls #update_web_hook! when enabled4310 does not call #update_web_hook! when disabled4311 does not call #update_web_hook! when validation fails4312 #hook_url4313 returns a string4314 #url_variables4315 returns a hash4316 #hook_ssl_verification4317 returns a boolean4318 delegates to #enable_ssl_verification if the concern is included4319 #update_web_hook!4320 creates or updates a service hook4321 raises an error if the service hook could not be saved4322 does not attempt to save the service hook if there are no changes4323 #execute_web_hook!4324 creates the webhook if necessary and executes it4325 raises an error if the service hook could not be saved4326 Validations4327 when the integration is active4328 #username4329 when password was not touched4330 is expected not to validate that :username cannot be empty/falsy4331 when password was touched4332 is expected to validate that :username cannot be empty/falsy4333 when password is blank4334 does not validate the username4335 #password4336 does not validate the presence of password if username is nil4337 validates the presence of password if username is present4338 when the integration is inactive4339 is expected not to validate that :username cannot be empty/falsy4340 is expected not to validate that :password cannot be empty/falsy4341 #hook_url4342 when the jenkins_url has no relative path4343 is expected to eq "http://jenkins.example.com/project/my_project"4344 when the jenkins_url has relative path4345 is expected to eq "http://organization.example.com/jenkins/project/my_project"4346 userinfo is missing and username and password are set4347 is expected to eq "http://u%24ername:pas%24%20word@organization.example.com/jenkins/project/my_project"4348 userinfo is provided and username and password are set4349 is expected to eq "http://username:password@organization.example.com/jenkins/project/my_project"4350 userinfo is provided username and password are not set4351 is expected to eq "http://u:p@organization.example.com/jenkins/project/my_project"4352 #test4353 returns the right status4354 #execute4355 invokes the Jenkins API4356 adds default web hook headers to the request4357 request url contains properly serialized username and password4358Packages::Npm::GenerateMetadataService4359 # order random4360 #dist_tags4361 for packages without tags4362 is expected to be a kind of Hash4363 is expected to eq "2.0.11"4364 avoids N+1 database queries4365 for packages with tags4366 is expected to be a kind of Hash4367 is expected to eq "2.0.4"4368 is expected to eq "2.0.4"4369 is expected to eq "2.0.6"4370 is expected to eq "2.0.11"4371 is expected to eq "2.0.11"4372 avoids N+1 database queries4373 when passing only_dist_tags: true4374 returns only dist tags4375 #versions4376 has_dependencies: true, has_metadatum: true4377 is expected to be a kind of Hash4378 is expected to match schema "public_api/v4/packages/npm_package_version"4379 is expected to match schema "public_api/v4/packages/npm_package_version"4380 is expected to be blank4381 avoids N+1 database queries4382 for dependencies4383 is expected to be any4384 is expected to equal nil4385 is expected to be any4386 is expected to equal nil4387 is expected to be any4388 is expected to equal nil4389 is expected to be any4390 is expected to equal nil4391 when generate dependencies4392 loads grouped dependency links4393 for metadatum4394 is expected not to equal nil4395 is expected to equal nil4396 is expected not to equal nil4397 is expected to equal nil4398 is expected not to equal nil4399 is expected to equal nil4400 is expected not to equal nil4401 is expected to equal nil4402 is expected not to equal nil4403 is expected to equal nil4404 is expected not to equal nil4405 is expected to equal nil4406 has_dependencies: false, has_metadatum: true4407 is expected to be a kind of Hash4408 is expected to match schema "public_api/v4/packages/npm_package_version"4409 is expected to match schema "public_api/v4/packages/npm_package_version"4410 is expected to be blank4411 avoids N+1 database queries4412 for dependencies4413 is expected to equal nil4414 is expected to equal nil4415 is expected to equal nil4416 is expected to equal nil4417 is expected to equal nil4418 is expected to equal nil4419 is expected to equal nil4420 is expected to equal nil4421 when generate dependencies4422 loads grouped dependency links4423 for metadatum4424 is expected not to equal nil4425 is expected to equal nil4426 is expected not to equal nil4427 is expected to equal nil4428 is expected not to equal nil4429 is expected to equal nil4430 is expected not to equal nil4431 is expected to equal nil4432 is expected not to equal nil4433 is expected to equal nil4434 is expected not to equal nil4435 is expected to equal nil4436 has_dependencies: true, has_metadatum: false4437 is expected to be a kind of Hash4438 is expected to match schema "public_api/v4/packages/npm_package_version"4439 is expected to match schema "public_api/v4/packages/npm_package_version"4440 is expected to be blank4441 avoids N+1 database queries4442 for dependencies4443 is expected to be any4444 is expected to equal nil4445 is expected to be any4446 is expected to equal nil4447 is expected to be any4448 is expected to equal nil4449 is expected to be any4450 is expected to equal nil4451 when generate dependencies4452 loads grouped dependency links4453 for metadatum4454 is expected to equal nil4455 is expected to equal nil4456 is expected to equal nil4457 is expected to equal nil4458 is expected to equal nil4459 is expected to equal nil4460 is expected to equal nil4461 is expected to equal nil4462 is expected to equal nil4463 is expected to equal nil4464 is expected to equal nil4465 is expected to equal nil4466 has_dependencies: false, has_metadatum: false4467 is expected to be a kind of Hash4468 is expected to match schema "public_api/v4/packages/npm_package_version"4469 is expected to match schema "public_api/v4/packages/npm_package_version"4470 is expected to be blank4471 avoids N+1 database queries4472 for dependencies4473 is expected to equal nil4474 is expected to equal nil4475 is expected to equal nil4476 is expected to equal nil4477 is expected to equal nil4478 is expected to equal nil4479 is expected to equal nil4480 is expected to equal nil4481 when generate dependencies4482 loads grouped dependency links4483 for metadatum4484 is expected to equal nil4485 is expected to equal nil4486 is expected to equal nil4487 is expected to equal nil4488 is expected to equal nil4489 is expected to equal nil4490 is expected to equal nil4491 is expected to equal nil4492 is expected to equal nil4493 is expected to equal nil4494 is expected to equal nil4495 is expected to equal nil4496 with package files pending destruction4497 does not return them4498Projects::Security::ConfigurationPresenter4499 #to_html_data_attribute4500 when latest default branch pipeline`s source is not auto devops4501 includes links to auto devops and secure product docs4502 returns info that Auto DevOps is not enabled4503 includes a link to the latest pipeline4504 has stubs for autofix4505 includes feature information4506 includes a link to the latest pipeline4507 includes the path to gitlab_ci history4508 while retrieving information about user's ability to enable auto_devops4509 is_admin: true, archived: true, feature_available: true, result: false4510 includes can_enable_auto_devops4511 is_admin: false, archived: true, feature_available: true, result: false4512 includes can_enable_auto_devops4513 is_admin: true, archived: false, feature_available: true, result: true4514 includes can_enable_auto_devops4515 is_admin: false, archived: false, feature_available: true, result: false4516 includes can_enable_auto_devops4517 is_admin: true, archived: true, feature_available: false, result: false4518 includes can_enable_auto_devops4519 is_admin: false, archived: true, feature_available: false, result: false4520 includes can_enable_auto_devops4521 is_admin: true, archived: false, feature_available: false, result: false4522 includes can_enable_auto_devops4523 is_admin: false, archived: false, feature_available: false, result: false4524 includes can_enable_auto_devops4525 when checking features configured status4526 type: :dast, configured: true4527 returns proper configuration status4528 type: :dast_profiles, configured: true4529 returns proper configuration status4530 type: :sast, configured: true4531 returns proper configuration status4532 type: :sast_iac, configured: false4533 returns proper configuration status4534 type: :container_scanning, configured: false4535 returns proper configuration status4536 type: :cluster_image_scanning, configured: false4537 returns proper configuration status4538 type: :dependency_scanning, configured: false4539 returns proper configuration status4540 type: :license_scanning, configured: true4541 returns proper configuration status4542 type: :secret_detection, configured: false4543 returns proper configuration status4544 type: :coverage_fuzzing, configured: false4545 returns proper configuration status4546 type: :api_fuzzing, configured: false4547 returns proper configuration status4548 type: :corpus_management, configured: true4549 returns proper configuration status4550 when the job has more than one report4551 type: :dast, configured: false4552 properly detects security jobs4553 type: :dast_profiles, configured: true4554 properly detects security jobs4555 type: :sast, configured: true4556 properly detects security jobs4557 type: :sast_iac, configured: false4558 properly detects security jobs4559 type: :container_scanning, configured: false4560 properly detects security jobs4561 type: :cluster_image_scanning, configured: false4562 properly detects security jobs4563 type: :dependency_scanning, configured: false4564 properly detects security jobs4565 type: :license_scanning, configured: true4566 properly detects security jobs4567 type: :secret_detection, configured: false4568 properly detects security jobs4569 type: :coverage_fuzzing, configured: false4570 properly detects security jobs4571 type: :api_fuzzing, configured: false4572 properly detects security jobs4573 type: :corpus_management, configured: true4574 properly detects security jobs4575 while retrieving information about gitlab ci file4576 when a .gitlab-ci.yml file exists4577 expects gitlab_ci_present to be true4578 when a .gitlab-ci.yml file does not exist4579 expects gitlab_ci_present to be false if the file is not present4580 when the project is empty4581 includes a blank gitlab_ci history path4582 when the project has no default branch set4583 includes the path to gitlab_ci history4584 when the latest default branch pipeline's source is auto devops4585 reports that auto devops is enabled4586 when gathering feature data4587 type: :dast, configured: true4588 reports that all scanners are configured for which latest pipeline has builds4589 type: :dast_profiles, configured: true4590 reports that all scanners are configured for which latest pipeline has builds4591 type: :sast, configured: true4592 reports that all scanners are configured for which latest pipeline has builds4593 type: :sast_iac, configured: false4594 reports that all scanners are configured for which latest pipeline has builds4595 type: :container_scanning, configured: false4596 reports that all scanners are configured for which latest pipeline has builds4597 type: :cluster_image_scanning, configured: false4598 reports that all scanners are configured for which latest pipeline has builds4599 type: :dependency_scanning, configured: false4600 reports that all scanners are configured for which latest pipeline has builds4601 type: :license_scanning, configured: false4602 reports that all scanners are configured for which latest pipeline has builds4603 type: :secret_detection, configured: true4604 reports that all scanners are configured for which latest pipeline has builds4605 type: :coverage_fuzzing, configured: false4606 reports that all scanners are configured for which latest pipeline has builds4607 type: :api_fuzzing, configured: false4608 reports that all scanners are configured for which latest pipeline has builds4609 type: :corpus_management, configured: true4610 reports that all scanners are configured for which latest pipeline has builds4611 when the project has no default branch pipeline4612 reports that auto devops is disabled4613 includes a link to CI pipeline docs4614 when gathering feature data4615 type: :dast, configured: false4616 reports all security jobs as unconfigured with exception of "fake" jobs4617 type: :dast_profiles, configured: true4618 reports all security jobs as unconfigured with exception of "fake" jobs4619 type: :sast, configured: false4620 reports all security jobs as unconfigured with exception of "fake" jobs4621 type: :sast_iac, configured: false4622 reports all security jobs as unconfigured with exception of "fake" jobs4623 type: :container_scanning, configured: false4624 reports all security jobs as unconfigured with exception of "fake" jobs4625 type: :cluster_image_scanning, configured: false4626 reports all security jobs as unconfigured with exception of "fake" jobs4627 type: :dependency_scanning, configured: false4628 reports all security jobs as unconfigured with exception of "fake" jobs4629 type: :license_scanning, configured: false4630 reports all security jobs as unconfigured with exception of "fake" jobs4631 type: :secret_detection, configured: false4632 reports all security jobs as unconfigured with exception of "fake" jobs4633 type: :coverage_fuzzing, configured: false4634 reports all security jobs as unconfigured with exception of "fake" jobs4635 type: :api_fuzzing, configured: false4636 reports all security jobs as unconfigured with exception of "fake" jobs4637 type: :corpus_management, configured: true4638 reports all security jobs as unconfigured with exception of "fake" jobs4639Ci::CreatePipelineService#execute4640 behaves like creating a pipeline with environment keyword4641 with environment4642 creates the environment4643 sets tags when build job (PENDING: No reason given)4644 with environment with auto_stop_in4645 creates the environment with auto stop in4646 with environment name including persisted variables4647 skips persisted variables in environment name4648 when environment with Kubernetes configuration4649 stores the requested namespace4650 when environment with invalid name4651 does not create an environment4652 when environment with duplicate names4653 creates a pipeline with the environment4654 when pipeline has a job with environment4655 when environment name is valid4656 has a job with environment4657 when environment name is invalid4658 has a job without environment4659 child pipeline triggers4660 behaves like successful creation4661 creates bridge jobs correctly4662 with resource group4663 creates bridge job with resource group4664 when sidekiq processes the job4665 transitions to pending status and triggers a downstream pipeline4666 when the resource is occupied by the other bridge4667 stays waiting for resource4668 when resource group key includes a variable4669 ignores the resource group keyword because it fails to expand the variable4670 child pipeline triggers4671 when YAML is valid4672 behaves like successful creation4673 creates bridge jobs correctly4674 when trigger:include is specified as a string4675 behaves like successful creation4676 creates bridge jobs correctly4677 when trigger:include is specified as array of strings4678 behaves like successful creation4679 creates bridge jobs correctly4680 when limit of includes is reached4681 behaves like creation failure4682 returns errors4683 when including configs from artifact4684 when specified dependency is in the wrong order4685 behaves like creation failure4686 returns errors4687 when specified dependency is missing :job key4688 behaves like creation failure4689 returns errors4690 when including configs from a project4691 when specifying all attributes4692 behaves like successful creation4693 creates bridge jobs correctly4694 without specifying file4695 behaves like creation failure4696 returns errors4697 when specifying multiple files4698 behaves like successful creation4699 creates bridge jobs correctly4700Gitlab::ProjectTemplate4701 .all4702 returns all templates4703 #project_host4704 when `preview` is valid4705 is expected to eq "https://gitlab.com"4706 when `preview` is `nil`4707 is expected to eq nil4708 #project_path4709 is expected to eq "some/project/path"4710 #uri_encoded_project_path4711 is expected to eq "some%2Fproject%2Fpath"4712 .find4713 when there is a match4714 is expected to be a kind of Gitlab::ProjectTemplate4715 when there is no match4716 is expected to equal nil4717 .archive_directory4718 is expected to be a kind of Pathname4719 instance methods4720 is expected to respond to [:logo, :file, :archive_path]4721 validate all templates4722 rails has a valid archive4723 spring has a valid archive4724 express has a valid archive4725 iosswift has a valid archive4726 dotnetcore has a valid archive4727 android has a valid archive4728 gomicro has a valid archive4729 bridgetown has a valid archive4730 gatsby has a valid archive4731 hugo has a valid archive4732 pelican has a valid archive4733 jekyll has a valid archive4734 plainhtml has a valid archive4735 hexo has a valid archive4736 middleman has a valid archive4737 gitpod_spring_petclinic has a valid archive4738 nfhugo has a valid archive4739 nfjekyll has a valid archive4740 nfplainhtml has a valid archive4741 nfgitbook has a valid archive4742 nfhexo has a valid archive4743 salesforcedx has a valid archive4744 serverless_framework has a valid archive4745 tencent_serverless_framework has a valid archive4746 jsonnet has a valid archive4747 cluster_management has a valid archive4748 kotlin_native_linux has a valid archive4749 typo3_distribution has a valid archive4750 laravel has a valid archive4751 with valid parameters4752 can be imported4753 with valid parameters4754 can be imported4755 with valid parameters4756 can be imported4757 with valid parameters4758 can be imported4759 with valid parameters4760 can be imported4761 with valid parameters4762 can be imported4763 with valid parameters4764 can be imported4765 with valid parameters4766 can be imported4767 with valid parameters4768 can be imported4769 with valid parameters4770 can be imported4771 with valid parameters4772 can be imported4773 with valid parameters4774 can be imported4775 with valid parameters4776 can be imported4777 with valid parameters4778 can be imported4779 with valid parameters4780 can be imported4781 with valid parameters4782 can be imported4783 with valid parameters4784 can be imported4785 with valid parameters4786 can be imported4787 with valid parameters4788 can be imported4789 with valid parameters4790 can be imported4791 with valid parameters4792 can be imported4793 with valid parameters4794 can be imported4795 with valid parameters4796 can be imported4797 with valid parameters4798 can be imported4799 with valid parameters4800 can be imported4801 with valid parameters4802 can be imported4803 with valid parameters4804 can be imported4805 with valid parameters4806 can be imported4807 with valid parameters4808 can be imported4809Integrations::Bamboo4810 behaves like Integrations::BaseCi4811 default values4812 is expected to eq :ci4813 behaves like Integrations::ResetSecretFields4814 #exposing_secrets_fields4815 returns an array of strings4816 #reset_secret_fields?4817 returns false if no exposing field has changed4818 returns true if any exposing field has changed4819 validation callback4820 when an exposing field has changed4821 clears all secret fields4822 when a secret field has been updated4823 does not clear this secret field4824 when a secret field has been updated with the same value4825 does not clear this secret field4826 when no exposing field has changed4827 does not clear any secret fields4828 accessors4829 is expected to respond to #enable_ssl_verification4830 is expected to respond to #enable_ssl_verification?4831 #initialize_properties4832 enables the setting by default4833 does not enable the setting if the record is already persisted4834 does not enable the setting if a custom value was set4835 #fields4836 inserts the checkbox field after the first URL field, or at the end4837 does not insert the field repeatedly4838 Validations4839 when active4840 is expected to validate that :build_key cannot be empty/falsy4841 is expected to validate that :bamboo_url cannot be empty/falsy4842 behaves like issue tracker integration URL attribute4843 is expected to allow :bamboo_url to be ‹"https://example.com"›4844 is expected not to allow :bamboo_url to be ‹"example.com"›4845 is expected not to allow :bamboo_url to be ‹"ftp://example.com"›4846 is expected not to allow :bamboo_url to be ‹"herp-and-derp"›4847 #username4848 does not validate the presence of username if password is nil4849 validates the presence of username if password is present4850 #password4851 does not validate the presence of password if username is nil4852 validates the presence of password if username is present4853 when inactive4854 is expected not to validate that :build_key cannot be empty/falsy4855 is expected not to validate that :bamboo_url cannot be empty/falsy4856 is expected not to validate that :username cannot be empty/falsy4857 is expected not to validate that :password cannot be empty/falsy4858 #execute4859 runs update and build action4860 #build_page4861 returns the contents of the reactive cache4862 #commit_status4863 returns the contents of the reactive cache4864 #calculate_reactive_cache4865 when Bamboo API returns single result4866 behaves like reactive cache calculation4867 #build_page4868 returns a specific URL when status is 5004869 returns a specific URL when response has no results4870 returns a build URL when bamboo_url has no trailing slash4871 when bamboo_url has trailing slash4872 returns a build URL4873 #commit_status4874 sets commit status to :error when status is 5004875 sets commit status to "pending" when status is 4044876 sets commit status to "pending" when response has no results4877 sets commit status to "success" when build state contains Success4878 sets commit status to "failed" when build state contains Failed4879 sets commit status to "pending" when build state contains Pending4880 sets commit status to :error when build state is unknown4881 sets commit status to :error with a Net::OpenTimeout error4882 sets commit status to :error with a Net::ReadTimeout error4883 sets commit status to :error with a Net::WriteTimeout error4884 sets commit status to :error with a Gitlab::HTTP_V2::ReadTotalTimeout error4885 sets commit status to :error with a EOFError error4886 sets commit status to :error with a SocketError error4887 sets commit status to :error with a OpenSSL::SSL::SSLError error4888 sets commit status to :error with a OpenSSL::OpenSSLError error4889 sets commit status to :error with a Errno::ECONNRESET error4890 sets commit status to :error with a Errno::ECONNREFUSED error4891 sets commit status to :error with a Errno::EHOSTUNREACH error4892 sets commit status to :error with a Errno::ENETUNREACH error4893 sets commit status to :error with a Gitlab::HTTP_V2::BlockedUrlError error4894 sets commit status to :error with a Gitlab::HTTP_V2::RedirectionTooDeep error4895 sets commit status to :error with a Net::HTTPBadResponse error4896 when Bamboo API returns an array of results and we only consider the last one4897 behaves like reactive cache calculation4898 #build_page4899 returns a specific URL when status is 5004900 returns a specific URL when response has no results4901 returns a build URL when bamboo_url has no trailing slash4902 when bamboo_url has trailing slash4903 returns a build URL4904 #commit_status4905 sets commit status to :error when status is 5004906 sets commit status to "pending" when status is 4044907 sets commit status to "pending" when response has no results4908 sets commit status to "success" when build state contains Success4909 sets commit status to "failed" when build state contains Failed4910 sets commit status to "pending" when build state contains Pending4911 sets commit status to :error when build state is unknown4912 sets commit status to :error with a Net::OpenTimeout error4913 sets commit status to :error with a Net::ReadTimeout error4914 sets commit status to :error with a Net::WriteTimeout error4915 sets commit status to :error with a Gitlab::HTTP_V2::ReadTotalTimeout error4916 sets commit status to :error with a EOFError error4917 sets commit status to :error with a SocketError error4918 sets commit status to :error with a OpenSSL::SSL::SSLError error4919 sets commit status to :error with a OpenSSL::OpenSSLError error4920 sets commit status to :error with a Errno::ECONNRESET error4921 sets commit status to :error with a Errno::ECONNREFUSED error4922 sets commit status to :error with a Errno::EHOSTUNREACH error4923 sets commit status to :error with a Errno::ENETUNREACH error4924 sets commit status to :error with a Gitlab::HTTP_V2::BlockedUrlError error4925 sets commit status to :error with a Gitlab::HTTP_V2::RedirectionTooDeep error4926 sets commit status to :error with a Net::HTTPBadResponse error4927 #avatar_url4928 returns the avatar image path4929Projects::MoveForksService4930 #execute4931 rollbacks changes if transaction fails4932 when moving a root forked project4933 moves the descendant forks4934 updates the fork network4935 when moving a intermediate forked project4936 moves the descendant forks4937 moves the ascendant fork4938 does not update fork network4939 when moving a leaf forked project4940 moves the ascendant fork4941 does not update fork network4942Snippets::CreateService4943 #execute4944 when ProjectSnippet4945 behaves like a service that creates a snippet4946 creates a snippet with the provided attributes4947 behaves like public visibility level restrictions apply4948 when user is not an admin4949 responds with an error4950 does not create a public snippet4951 when user is an admin4952 responds with success4953 creates a public snippet4954 when visibility level is passed as a string4955 assigns the correct visibility level4956 behaves like checking spam4957 executes SpamActionService4958 behaves like snippet create data is tracked4959 increments count when create succeeds4960 when create fails4961 does not increment count4962 behaves like an error service response when save fails4963 responds with an error4964 does not create the snippet4965 behaves like creates repository and files4966 creates repository4967 commits the files to the repository4968 when repository creation action fails4969 does not create the snippet4970 returns a generic creation error4971 does not return a snippet with an id4972 when repository creation fails with invalid file name4973 returns an appropriate error4974 when the commit action fails4975 does not create the snippet4976 destroys the created repository4977 destroys the snippet_repository4978 logs the error4979 returns a generic error4980 when snippet creation fails4981 does not create repository4982 behaves like after_save callback to store_mentions4983 when mentionable attributes change4984 saves mentions4985 when mentionable attributes do not change4986 does not call store_mentions4987 when save fails4988 does not call store_mentions4989 behaves like when snippet_actions param is present4990 creates a snippet with the provided attributes4991 commit the files to the repository4992 when content or file_name params are present4993 a validation error is raised4994 when snippet_actions param is invalid4995 a validation error is raised4996 when snippet_actions contain an action different from "create"4997 a validation error is raised4998 when "create" operation does not have file_path or is empty4999 generates the file path for the files5000 behaves like invalid params error response5001 responds to errors appropriately5002 when uploaded files are passed to the service5003 does not move uploaded files to the snippet5004 when PersonalSnippet5005 behaves like a service that creates a snippet5006 creates a snippet with the provided attributes5007 behaves like public visibility level restrictions apply5008 when user is not an admin5009 responds with an error5010 does not create a public snippet5011 when user is an admin5012 responds with success5013 creates a public snippet5014 when visibility level is passed as a string5015 assigns the correct visibility level5016 behaves like checking spam5017 executes SpamActionService5018 behaves like snippet create data is tracked5019 increments count when create succeeds5020 when create fails5021 does not increment count5022 behaves like an error service response when save fails5023 responds with an error5024 does not create the snippet5025 behaves like creates repository and files5026 creates repository5027 commits the files to the repository5028 when repository creation action fails5029 does not create the snippet5030 returns a generic creation error5031 does not return a snippet with an id5032 when repository creation fails with invalid file name5033 returns an appropriate error5034 when the commit action fails5035 does not create the snippet5036 destroys the created repository5037 destroys the snippet_repository5038 logs the error5039 returns a generic error5040 when snippet creation fails5041 does not create repository5042 behaves like after_save callback to store_mentions5043 when mentionable attributes change5044 saves mentions5045 when mentionable attributes do not change5046 does not call store_mentions5047 when save fails5048 does not call store_mentions5049 behaves like when snippet_actions param is present5050 creates a snippet with the provided attributes5051 commit the files to the repository5052 when content or file_name params are present5053 a validation error is raised5054 when snippet_actions param is invalid5055 a validation error is raised5056 when snippet_actions contain an action different from "create"5057 a validation error is raised5058 when "create" operation does not have file_path or is empty5059 generates the file path for the files5060 behaves like invalid params error response5061 responds to errors appropriately5062 when the snippet description contains files5063 stores the snippet description correctly5064 when there is a validation error5065 does not move uploaded files to the snippet5066Every integration5067 apple_app_store5068 secret fields5069 uses type: 'password' for all secret fields5070 defines non-empty titles and help texts for all secret fields5071 asana5072 secret fields5073 uses type: 'password' for all secret fields5074 defines non-empty titles and help texts for all secret fields5075 assembla5076 secret fields5077 uses type: 'password' for all secret fields5078 defines non-empty titles and help texts for all secret fields5079 bamboo5080 secret fields5081 uses type: 'password' for all secret fields5082 defines non-empty titles and help texts for all secret fields5083 bugzilla5084 secret fields5085 uses type: 'password' for all secret fields5086 defines non-empty titles and help texts for all secret fields5087 buildkite5088 secret fields5089 uses type: 'password' for all secret fields5090 defines non-empty titles and help texts for all secret fields5091 campfire5092 secret fields5093 uses type: 'password' for all secret fields5094 defines non-empty titles and help texts for all secret fields5095 clickup5096 secret fields5097 uses type: 'password' for all secret fields5098 defines non-empty titles and help texts for all secret fields5099 confluence5100 secret fields5101 uses type: 'password' for all secret fields5102 defines non-empty titles and help texts for all secret fields5103 custom_issue_tracker5104 secret fields5105 uses type: 'password' for all secret fields5106 defines non-empty titles and help texts for all secret fields5107 datadog5108 secret fields5109 uses type: 'password' for all secret fields5110 defines non-empty titles and help texts for all secret fields5111 discord5112 secret fields5113 uses type: 'password' for all secret fields5114 defines non-empty titles and help texts for all secret fields5115 drone_ci5116 secret fields5117 uses type: 'password' for all secret fields5118 defines non-empty titles and help texts for all secret fields5119 emails_on_push5120 secret fields5121 uses type: 'password' for all secret fields5122 defines non-empty titles and help texts for all secret fields5123 ewm5124 secret fields5125 uses type: 'password' for all secret fields5126 defines non-empty titles and help texts for all secret fields5127 external_wiki5128 secret fields5129 uses type: 'password' for all secret fields5130 defines non-empty titles and help texts for all secret fields5131 github5132 secret fields5133 uses type: 'password' for all secret fields5134 defines non-empty titles and help texts for all secret fields5135 gitlab_slack_application5136 secret fields5137 uses type: 'password' for all secret fields5138 defines non-empty titles and help texts for all secret fields5139 google_play5140 secret fields5141 uses type: 'password' for all secret fields5142 defines non-empty titles and help texts for all secret fields5143 hangouts_chat5144 secret fields5145 uses type: 'password' for all secret fields5146 defines non-empty titles and help texts for all secret fields5147 harbor5148 secret fields5149 uses type: 'password' for all secret fields5150 defines non-empty titles and help texts for all secret fields5151 irker5152 secret fields5153 uses type: 'password' for all secret fields5154 defines non-empty titles and help texts for all secret fields5155 jenkins5156 secret fields5157 uses type: 'password' for all secret fields5158 defines non-empty titles and help texts for all secret fields5159 jira5160 secret fields5161 uses type: 'password' for all secret fields5162 defines non-empty titles and help texts for all secret fields5163 mattermost5164 secret fields5165 uses type: 'password' for all secret fields5166 defines non-empty titles and help texts for all secret fields5167 mattermost_slash_commands5168 secret fields5169 uses type: 'password' for all secret fields5170 defines non-empty titles and help texts for all secret fields5171 microsoft_teams5172 secret fields5173 uses type: 'password' for all secret fields5174 defines non-empty titles and help texts for all secret fields5175 mock_ci5176 secret fields5177 uses type: 'password' for all secret fields5178 defines non-empty titles and help texts for all secret fields5179 mock_monitoring5180 secret fields5181 uses type: 'password' for all secret fields5182 defines non-empty titles and help texts for all secret fields5183 packagist5184 secret fields5185 uses type: 'password' for all secret fields5186 defines non-empty titles and help texts for all secret fields5187 pipelines_email5188 secret fields5189 uses type: 'password' for all secret fields5190 defines non-empty titles and help texts for all secret fields5191 pivotaltracker5192 secret fields5193 uses type: 'password' for all secret fields5194 defines non-empty titles and help texts for all secret fields5195 prometheus5196 secret fields5197 uses type: 'password' for all secret fields5198 defines non-empty titles and help texts for all secret fields5199 pumble5200 secret fields5201 uses type: 'password' for all secret fields5202 defines non-empty titles and help texts for all secret fields5203 pushover5204 secret fields5205 uses type: 'password' for all secret fields5206 defines non-empty titles and help texts for all secret fields5207 redmine5208 secret fields5209 uses type: 'password' for all secret fields5210 defines non-empty titles and help texts for all secret fields5211 shimo5212 secret fields5213 uses type: 'password' for all secret fields5214 defines non-empty titles and help texts for all secret fields5215 slack5216 secret fields5217 uses type: 'password' for all secret fields5218 defines non-empty titles and help texts for all secret fields5219 slack_slash_commands5220 secret fields5221 uses type: 'password' for all secret fields5222 defines non-empty titles and help texts for all secret fields5223 squash_tm5224 secret fields5225 uses type: 'password' for all secret fields5226 defines non-empty titles and help texts for all secret fields5227 teamcity5228 secret fields5229 uses type: 'password' for all secret fields5230 defines non-empty titles and help texts for all secret fields5231 telegram5232 secret fields5233 uses type: 'password' for all secret fields5234 defines non-empty titles and help texts for all secret fields5235 unify_circuit5236 secret fields5237 uses type: 'password' for all secret fields5238 defines non-empty titles and help texts for all secret fields5239 webex_teams5240 secret fields5241 uses type: 'password' for all secret fields5242 defines non-empty titles and help texts for all secret fields5243 youtrack5244 secret fields5245 uses type: 'password' for all secret fields5246 defines non-empty titles and help texts for all secret fields5247 zentao5248 secret fields5249 uses type: 'password' for all secret fields5250 defines non-empty titles and help texts for all secret fields5251Gitlab::Redis::Pubsub5252 # order random5253 .url5254 withstands mutation5255 when yml file with env variable5256 reads redis url from env variable5257 .with5258 when running on single-threaded runtime5259 instantiates a connection pool with size 55260 when running on multi-threaded runtime5261 instantiates a connection pool with a size based on the concurrency of the worker5262 when there is no config at all5263 can run an empty block5264 #sentinels?5265 when sentinels are defined5266 returns true5267 when sentinels are not defined5268 is expected to eq nil5269 when cluster is defined5270 returns false5271 #db5272 with old format5273 returns the correct db5274 with new format5275 returns the correct db5276 with cluster-mode5277 returns the correct db5278 #fetch_config5279 when redis.yml exists5280 when the fallback has a redis.yml entry5281 is expected to eq {"fallback redis.yml"=>123}5282 and an instance config file exists5283 is expected to eq {"instance specific file"=>456}5284 and the instance has a redis.yml entry5285 is expected to eq {"instance redis.yml"=>789}5286 when no redis config file exsits5287 returns nil5288 when resque.yml exists5289 returns the config from resque.yml5290 #parse_client_tls_options5291 when configuration does not have TLS related options5292 returns the coniguration as-is5293 when specified certificate file does not exist5294 raises error about missing certificate file5295 when specified key file does not exist5296 raises error about missing key file5297 when only certificate file is specified5298 renders resque.yml correctly5299 when only key file is specified5300 renders resque.yml correctly5301 when configuration valid TLS related options5302 converts cert_file and key_file appropriately5303 #raw_config_hash5304 returns old-style single url config in a hash5305 returns cluster config without url key in a hash5306 .store5307 with old format5308 behaves like redis store5309 instantiates Redis::Store5310 with the namespace5311 uses specified namespace5312 with new format5313 behaves like redis store5314 instantiates Redis::Store5315 with the namespace5316 uses specified namespace5317 .config_file_name5318 when there is no config file anywhere5319 is expected to be nil5320 #fetch_config5321 raises an exception when the config file contains invalid yaml5322 when redis.yml exists5323 uses config/redis.yml5324 when no config file exsits5325 returns nil5326 when resque.yml exists5327 returns the config from resque.yml5328 .params5329 withstands mutation5330 when url contains unix socket reference5331 with old format5332 returns path key instead5333 with new format5334 returns path key instead5335 when url is host based5336 with old format5337 returns hash with host, port, db, and password5338 with new format5339 rails_env: "development", host: "development-host"5340 returns hash with host, port, db, and password5341 rails_env: "test", host: "test-host"5342 returns hash with host, port, db, and password5343 rails_env: "production", host: "production-host"5344 returns hash with host, port, db, and password5345 with redis cluster format5346 rails_env: "development", host: "development-master"5347 returns hash with cluster and password5348 rails_env: "test", host: "test-master"5349 returns hash with cluster and password5350 rails_env: "production", host: "production-master"5351 returns hash with cluster and password5352 #sentinels5353 when sentinels are defined5354 rails_env: "development", hosts: ["development-replica1", "development-replica2"]5355 returns an array of hashes with host and port keys5356 rails_env: "test", hosts: ["test-replica1", "test-replica2"]5357 returns an array of hashes with host and port keys5358 rails_env: "production", hosts: ["production-replica1", "production-replica2"]5359 returns an array of hashes with host and port keys5360 when sentinels are not defined5361 returns nil5362 when cluster is defined5363 returns nil5364 behaves like redis_shared_examples5365 .config_file_name5366 when there is no config file anywhere5367 is expected to be nil5368 .store5369 with old format5370 behaves like redis store5371 instantiates Redis::Store5372 with the namespace5373 uses specified namespace5374 with new format5375 behaves like redis store5376 instantiates Redis::Store5377 with the namespace5378 uses specified namespace5379 .params5380 withstands mutation5381 when url contains unix socket reference5382 with old format5383 returns path key instead5384 with new format5385 returns path key instead5386 when url is host based5387 with old format5388 returns hash with host, port, db, and password5389 with new format5390 rails_env: "development", host: "development-host"5391 returns hash with host, port, db, and password5392 rails_env: "test", host: "test-host"5393 returns hash with host, port, db, and password5394 rails_env: "production", host: "production-host"5395 returns hash with host, port, db, and password5396 with redis cluster format5397 rails_env: "development", host: "development-master"5398 returns hash with cluster and password5399 rails_env: "test", host: "test-master"5400 returns hash with cluster and password5401 rails_env: "production", host: "production-master"5402 returns hash with cluster and password5403 .url5404 withstands mutation5405 when yml file with env variable5406 reads redis url from env variable5407 .version5408 returns a version5409 .with5410 when running on single-threaded runtime5411 instantiates a connection pool with size 55412 when running on multi-threaded runtime5413 instantiates a connection pool with a size based on the concurrency of the worker5414 when there is no config at all5415 can run an empty block5416 #db5417 with old format5418 returns the correct db5419 with new format5420 returns the correct db5421 with cluster-mode5422 returns the correct db5423 #sentinels5424 when sentinels are defined5425 rails_env: "development", hosts: ["development-replica1", "development-replica2"]5426 returns an array of hashes with host and port keys5427 rails_env: "test", hosts: ["test-replica1", "test-replica2"]5428 returns an array of hashes with host and port keys5429 rails_env: "production", hosts: ["production-replica1", "production-replica2"]5430 returns an array of hashes with host and port keys5431 when sentinels are not defined5432 returns nil5433 when cluster is defined5434 returns nil5435 #sentinels?5436 when sentinels are defined5437 returns true5438 when sentinels are not defined5439 is expected to eq nil5440 when cluster is defined5441 returns false5442 #raw_config_hash5443 returns old-style single url config in a hash5444 returns cluster config without url key in a hash5445 #parse_client_tls_options5446 when configuration does not have TLS related options5447 returns the coniguration as-is5448 when specified certificate file does not exist5449 raises error about missing certificate file5450 when specified key file does not exist5451 raises error about missing key file5452 when only certificate file is specified5453 renders resque.yml correctly5454 when only key file is specified5455 renders resque.yml correctly5456 when configuration valid TLS related options5457 converts cert_file and key_file appropriately5458 #fetch_config5459 raises an exception when the config file contains invalid yaml5460 when redis.yml exists5461 uses config/redis.yml5462 when no config file exsits5463 returns nil5464 when resque.yml exists5465 returns the config from resque.yml5466 .version5467 returns a version5468seed production settings5469 GITLAB_SHARED_RUNNERS_REGISTRATION_TOKEN is set in the environment5470Saved Runner Registration Token5471Saved CI JWT signing key5472 writes the token to the database5473 GITLAB_PROMETHEUS_METRICS_ENABLED is set in the environment5474 GITLAB_PROMETHEUS_METRICS_ENABLED is true5475Saved Prometheus metrics enabled flag5476Saved CI JWT signing key5477 prometheus_metrics_enabled is set to true5478 GITLAB_PROMETHEUS_METRICS_ENABLED is false5479Saved Prometheus metrics enabled flag5480Saved CI JWT signing key5481 prometheus_metrics_enabled is set to false5482 GITLAB_PROMETHEUS_METRICS_ENABLED is default5483Saved CI JWT signing key5484 prometheus_metrics_enabled is set to true5485 CI JWT signing key5486Saved CI JWT signing key5487 writes valid RSA key to the database5488Users::Internal5489 # order random5490 behaves like bot users5491 creates the user if it does not exist5492 creates a route for the namespace of the created user5493 does not create a new user if it already exists5494 when a regular user exists with the bot usernane5495 creates a user with a non-conflicting username5496 when a regular user exists with the bot user email5497 creates a user with a non-conflicting email5498 when a domain allowlist is in place5499 creates the bot user5500 behaves like bot users5501 creates the user if it does not exist5502 creates a route for the namespace of the created user5503 does not create a new user if it already exists5504 when a regular user exists with the bot usernane5505 creates a user with a non-conflicting username5506 when a regular user exists with the bot user email5507 creates a user with a non-conflicting email5508 when a domain allowlist is in place5509 creates the bot user5510 behaves like bot users5511 creates the user if it does not exist5512 creates a route for the namespace of the created user5513 does not create a new user if it already exists5514 when a regular user exists with the bot usernane5515 creates a user with a non-conflicting username5516 when a regular user exists with the bot user email5517 creates a user with a non-conflicting email5518 when a domain allowlist is in place5519 creates the bot user5520 behaves like bot user avatars5521 sets the custom avatar for the created bot5522 behaves like bot user avatars5523 sets the custom avatar for the created bot5524 when bot is the admin bot5525 is expected to be admin5526 is expected to be confirmed5527 behaves like bot user avatars5528 sets the custom avatar for the created bot5529 behaves like bot users5530 creates the user if it does not exist5531 creates a route for the namespace of the created user5532 does not create a new user if it already exists5533 when a regular user exists with the bot usernane5534 creates a user with a non-conflicting username5535 when a regular user exists with the bot user email5536 creates a user with a non-conflicting email5537 when a domain allowlist is in place5538 creates the bot user5539 behaves like bot user avatars5540 sets the custom avatar for the created bot5541 behaves like bot users5542 creates the user if it does not exist5543 creates a route for the namespace of the created user5544 does not create a new user if it already exists5545 when a regular user exists with the bot usernane5546 creates a user with a non-conflicting username5547 when a regular user exists with the bot user email5548 creates a user with a non-conflicting email5549 when a domain allowlist is in place5550 creates the bot user5551 when bot is the support_bot5552 is expected to be confirmed5553 behaves like bot users5554 creates the user if it does not exist5555 creates a route for the namespace of the created user5556 does not create a new user if it already exists5557 when a regular user exists with the bot usernane5558 creates a user with a non-conflicting username5559 when a regular user exists with the bot user email5560 creates a user with a non-conflicting email5561 when a domain allowlist is in place5562 creates the bot user5563 behaves like bot user avatars5564 sets the custom avatar for the created bot5565 behaves like bot user avatars5566 sets the custom avatar for the created bot5567 behaves like bot users5568 creates the user if it does not exist5569 creates a route for the namespace of the created user5570 does not create a new user if it already exists5571 when a regular user exists with the bot usernane5572 creates a user with a non-conflicting username5573 when a regular user exists with the bot user email5574 creates a user with a non-conflicting email5575 when a domain allowlist is in place5576 creates the bot user5577 behaves like bot users5578 creates the user if it does not exist5579 creates a route for the namespace of the created user5580 does not create a new user if it already exists5581 when a regular user exists with the bot usernane5582 creates a user with a non-conflicting username5583 when a regular user exists with the bot user email5584 creates a user with a non-conflicting email5585 when a domain allowlist is in place5586 creates the bot user5587Gitlab::GithubImport::Importer::PullRequestImporter5588 #execute5589 imports the pull request5590 caches the created MR ID even if importer later fails5591 #create_merge_request5592 when the author could be found5593 imports the pull request with the pull request author as the merge request author5594 returns the created merge request5595 when the source and target branch are identical5596 uses a generated source branch name for the merge request5597 when the import fails due to a foreign key error5598 does not raise any errors5599 when the merge request already exists5600 returns the existing merge request5601 when the author could not be found5602 imports the pull request with the project creator as the merge request author5603 when merge request is invalid5604 fails validation5605 #set_merge_request_assignees5606 when pull request has an assignee5607 sets merge request assignees5608 when pull request does not have any assignees5609 does not set merge request assignees5610 #insert_git_data5611 does not create the source branch if merge request is merged5612 creates a merge request diff and sets it as the latest5613 creates the merge request diff commits5614 when merge request is open5615 creates the source branch5616 is able to retry on pre-receive errors5617 ignores Git command errors when creating a branch5618 ignores Git PreReceive errors when creating a branch5619 when the merge request exists5620 creates the merge request diffs if they do not yet exist5621SystemNotes::MergeRequestsService5622 .merge_when_pipeline_succeeds5623 posts the 'merge when pipeline succeeds' system note5624 behaves like a system note5625 has the correct attributes5626 .cancel_merge_when_pipeline_succeeds5627 posts the 'merge when pipeline succeeds' system note5628 behaves like a system note5629 has the correct attributes5630 .abort_merge_when_pipeline_succeeds5631 posts the 'merge when pipeline succeeds' system note5632 behaves like a system note5633 has the correct attributes5634 .handle_merge_request_draft5635 adding draft note5636 sets the note text5637 behaves like a system note5638 has the correct attributes5639 removing draft note5640 sets the note text5641 behaves like a system note5642 has the correct attributes5643 .add_merge_request_draft_from_commit5644 posts the 'marked this merge request as draft from commit' system note5645 behaves like a system note5646 has the correct attributes5647 .resolve_all_discussions5648 sets the note text5649 behaves like a system note5650 has the correct attributes5651 .diff_discussion_outdated5652 behaves like a system note5653 has the correct attributes5654 when the change_position is valid for the discussion5655 creates a new note in the discussion5656 links to the diff in the system note5657 discussion is on an image5658 links to the diff in the system note5659 when the change_position does not point to a valid version5660 creates a new note in the discussion5661 does not create a link5662 .change_branch5663 behaves like a system note5664 has the correct attributes5665 when target branch name changed5666 on update5667 sets the note text5668 on delete5669 sets the note text5670 for invalid event_type5671 raises exception5672 .change_branch_presence5673 behaves like a system note5674 has the correct attributes5675 when source branch deleted5676 sets the note text5677 .new_issue_branch5678 branch_project is set5679 behaves like a system note for new issue branch5680 behaves like a system note5681 has the correct attributes5682 when a branch is created from the new branch button5683 sets the note text5684 branch_project is not set5685 behaves like a system note for new issue branch5686 behaves like a system note5687 has the correct attributes5688 when a branch is created from the new branch button5689 sets the note text5690 .new_merge_request5691 sets the new merge request note text5692 behaves like a system note5693 has the correct attributes5694 .picked_into_branch5695 posts the 'picked merge request' system note5696 links the merge request and the cherry-pick commit5697 behaves like a system note5698 has the correct attributes5699 #approve_mr5700 behaves like a system note5701 has the correct attributes5702 when merge request approved5703 sets the note text5704Ci::PipelineCreation::CancelRedundantPipelinesService5705 # order random5706 #execute!5707 when build statuses are set up correctly5708 has builds of all statuses5709 when auto-cancel is enabled5710 cancels only previous interruptible builds5711 logs canceled pipelines5712 does not cancel future pipelines5713 when the previous pipeline has a child pipeline5714 with another nested child pipeline5715 cancels all nested child pipeline builds5716 when started after pipeline was finished5717 cancels child pipeline builds5718 when the child pipeline has interruptible running jobs5719 cancels all child pipeline builds5720 when the child pipeline includes completed interruptible jobs5721 cancels all child pipeline builds with a cancelable_status5722 when the child pipeline has started non-interruptible job5723 does not cancel any child pipeline builds5724 when the child pipeline has non-interruptible non-started job5725 when the jobs are cancelable5726 cancels all child pipeline builds when build status waiting_for_resource included5727 cancels all child pipeline builds when build status preparing included5728 cancels all child pipeline builds when build status pending included5729 cancels all child pipeline builds when build status created included5730 cancels all child pipeline builds when build status scheduled included5731 when the jobs are not cancelable5732 does not cancel child pipeline builds when build status canceled included5733 does not cancel child pipeline builds when build status skipped included5734 does not cancel child pipeline builds when build status manual included5735 when the pipeline is a child pipeline5736 does not cancel any builds5737 when the previous pipeline source is webide5738 does not cancel builds of the previous pipeline5739 behaves like time limits pipeline cancellation5740 with old pipelines5741 ignores old pipelines5742 when auto-cancel is disabled5743 does not cancel any build5744 when enable_cancel_redundant_pipelines_service FF is enabled5745 does not cancel any build5746Gitlab::Database::PartitioningMigrationHelpers::TableManagementHelpers5747 list partitioning conversion helpers5748 #convert_table_to_first_list_partition5749 behaves like delegates to ConvertTable5750 throws an error if in a transaction5751 delegates to a method on List::ConvertTable5752 #revert_converting_table_to_first_list_partition5753 behaves like delegates to ConvertTable5754 throws an error if in a transaction5755 delegates to a method on List::ConvertTable5756 #prepare_constraint_for_list_partitioning5757 behaves like delegates to ConvertTable5758 throws an error if in a transaction5759 delegates to a method on List::ConvertTable5760 #revert_preparing_constraint_for_list_partitioning5761 behaves like delegates to ConvertTable5762 throws an error if in a transaction5763 delegates to a method on List::ConvertTable5764 #partition_table_by_date5765 when the table is not allowed5766 raises an error5767 when run inside a transaction block5768 raises an error5769 when the the max_date is less than the min_date5770 raises an error5771 when the max_date is equal to the min_date5772 raises an error5773 when the given table does not have a primary key5774 raises an error5775 when an invalid partition column is given5776 raises an error5777 constructing the partitioned table5778 creates a table partitioned by the proper column5779 requires the migration helper to be run in DDL mode5780 changes the primary key datatype to bigint5781 removes the default from the primary key column5782 creates the partitioned table with the same non-key columns5783 creates a partition spanning over each month in the range given5784 with a non-integer primary key datatype5785 does not change the primary key datatype5786 when min_date is not given5787 with records present already5788 creates a partition spanning over each month from the first record5789 without data5790 creates the catchall partition plus two actual partition5791 when max_date is not given5792 creates partitions including the next month from today5793 without min_date, max_date5794 creates partitions for the current and next month5795 keeping data in sync with the partitioned table5796 creates a trigger function on the original table5797 syncs inserts to the partitioned tables5798 syncs updates to the partitioned tables5799 syncs deletes to the partitioned tables5800 #drop_partitioned_table_for5801 drops the trigger syncing to the partitioned table5802 drops the partitioned copy and all partitions5803 when the table is not allowed5804 raises an error5805 #enqueue_partitioning_data_migration5806 when the table is not allowed5807 raises an error5808 when run inside a transaction block5809 raises an error5810 when records exist in the source table5811 enqueues jobs to copy each batch of data5812 #cleanup_partitioning_data_migration5813 when the table is not allowed5814 raises an error5815 when tracking records exist in the batched_background_migrations table5816 deletes those pertaining to the given table5817 #create_hash_partitions5818 creates partitions for the full hash space (8 partitions)5819 creates partitions for the full hash space (16 partitions)5820 #finalize_backfilling_partitioned_table5821 when the table is not allowed5822 raises an error5823 when the partitioned table does not exist5824 raises an error5825 finishing pending batched background migration jobs5826 ensures finishing of remaining jobs and vacuums the partitioned table5827 #replace_with_partitioned_table5828 replaces the original table with the partitioned table5829 moves the trigger from the original table to the new table5830 #rollback_replace_with_partitioned_table5831 replaces the partitioned table with the non-partitioned table5832 moves the trigger from the partitioned table to the non-partitioned table5833 #drop_nonpartitioned_archive_table5834 drops the archive table5835 drops the trigger on the source table5836 drops the sync function5837 #create_trigger_to_sync_tables5838 creates the sync function5839 installs the trigger5840Release5841 is expected to be valid5842 associations5843 is expected to belong to project required: false5844 is expected to belong to author class_name => User required: false5845 is expected to have many links class_name => Releases::Link5846 is expected to have many milestones5847 is expected to have many milestone_releases5848 is expected to have many evidences class_name => Releases::Evidence5849 is expected to have one catalog_resource_version class_name => Ci::Catalog::Resources::Version5850 validation5851 is expected to validate that :project cannot be empty/falsy5852 is expected to validate that :tag cannot be empty/falsy5853 when a release exists in the database without a name5854 does not require name5855 when description of a release is longer than the limit5856 creates a validation error5857 when a release is tied to a milestone for another project5858 creates a validation error5859 when a release is tied to a milestone linked to the same project5860 successfully links this release to this milestone5861 when creating new release5862 is expected to validate that :author_id cannot be empty/falsy5863 when updating existing release without author5864 updates successfully5865 latest releases5866 .latest5867 without order_by5868 returns the latest release by released date5869 with order_by: created_at5870 returns the latest release by created date5871 when there are no releases5872 returns nil5873 .latest_for_projects5874 without order_by5875 returns the latest release by released date for each project5876 with order_by: created_at5877 returns the latest release by created date for each project5878 when no projects are provided5879 returns empty response5880 when there are no releases5881 returns empty response5882 #assets_count5883 returns the number of sources5884 when a links exists5885 counts the link as an asset5886 excludes sources count when asked5887 .create5888 fills released_at using created_at if it's not set5889 does not change released_at if it's set explicitly5890 #update5891 when links do not exist5892 when params are specified for creation5893 creates a link successfuly5894 when a link exists5895 when params are specified for update5896 updates the link successfully5897 when params are specified for deletion5898 removes the link successfuly5899 #sources5900 returns sources5901 #upcoming_release?5902 during the backfill migration when released_at could be nil5903 handles a nil released_at value and returns false5904 evidence5905 when a release is deleted5906 also deletes the associated evidence5907 #name5908 name is nil5909 returns tag5910 #milestone_titles5911 is expected to eq "Milestone 1, Milestone 2"5912Trigger5913 # order random5914 Trigger::Docs5915 #variables5916 BRANCH_CE5917 when CI_PROJECT_PATH is gitlab-org/gitlab-foss5918 sets BRANCH_CE to CI_COMMIT_REF_NAME5919 BRANCH_EE5920 when CI_PROJECT_PATH is gitlab-org/gitlab5921 sets BRANCH_EE to CI_COMMIT_REF_NAME5922 BRANCH_RUNNER5923 when CI_PROJECT_PATH is gitlab-org/gitlab-runner5924 sets BRANCH_RUNNER to CI_COMMIT_REF_NAME5925 BRANCH_OMNIBUS5926 when CI_PROJECT_PATH is gitlab-org/omnibus-gitlab5927 sets BRANCH_OMNIBUS to CI_COMMIT_REF_NAME5928 BRANCH_CHARTS5929 when CI_PROJECT_PATH is gitlab-org/charts/gitlab5930 sets BRANCH_CHARTS to CI_COMMIT_REF_NAME5931 BRANCH_OPERATOR5932 when CI_PROJECT_PATH is gitlab-org/cloud-native/gitlab-operator5933 sets BRANCH_OPERATOR to CI_COMMIT_REF_NAME5934 REVIEW_SLUG5935 when CI_MERGE_REQUEST_IID is set5936 sets REVIEW_SLUG5937 when CI_MERGE_REQUEST_IID is not set5938 sets REVIEW_SLUG5939 .access_token5940 when DOCS_PROJECT_API_TOKEN is set5941 returns the docs-specific access token5942 when DOCS_PROJECT_API_TOKEN is not set5943 returns the default access token5944 #invoke!5945 #downstream_project_path5946 when DOCS_PROJECT_PATH is set5947 triggers the pipeline on the correct project5948 #ref5949 when DOCS_BRANCH is set5950 triggers the pipeline on the correct ref5951 #cleanup!5952 when stopping the environment succeeds5953 displays a success message5954 when stopping the environment fails5955 displays a failure message5956 Trigger::CNG5957 #variables5958 does not include redundant variables5959 invokes the trigger with expected variables5960 TRIGGER_BRANCH5961 when CNG_BRANCH is not set5962 sets TRIGGER_BRANCH to master5963 sets TRIGGER_BRANCH to main-jh on JH side5964 when CNG_BRANCH is set5965 sets TRIGGER_BRANCH to cng_branch5966 when CI_COMMIT_REF_NAME is a stable branch5967 sets TRIGGER_BRANCH to the corresponding stable branch5968 when CI_COMMIT_REF_NAME is a stable branch on JH side5969 sets TRIGGER_BRANCH to the corresponding stable branch5970 GITLAB_VERSION5971 when CI_COMMIT_SHA is set5972 sets GITLAB_VERSION to CI_COMMIT_SHA5973 GITLAB_TAG5974 when CI_COMMIT_TAG is set5975 sets GITLAB_TAG to true5976 when CI_COMMIT_TAG is nil5977 sets GITLAB_TAG to nil5978 CE_PIPELINE5979 when Trigger.ee? is true5980 sets CE_PIPELINE to nil5981 when Trigger.ee? is false5982 sets CE_PIPELINE to true5983 EE_PIPELINE5984 when Trigger.ee? is true5985 sets EE_PIPELINE to true5986 when Trigger.ee? is false5987 sets EE_PIPELINE to nil5988 GITLAB_REF_SLUG5989 when CI_COMMIT_TAG is set5990 sets GITLAB_REF_SLUG to CI_COMMIT_REF_NAME5991 when CI_COMMIT_TAG is nil5992 sets GITLAB_REF_SLUG to CI_COMMIT_SHA5993 #version_param_value5994 raw_version: "1.2.3", expected_version: "v1.2.3"5995 when set in ENV5996 includes the version from ENV5997 raw_version: "1.2.3-rc1", expected_version: "v1.2.3-rc1"5998 when set in ENV5999 includes the version from ENV6000 raw_version: "1.2.3-ee", expected_version: "v1.2.3-ee"6001 when set in ENV6002 includes the version from ENV6003 raw_version: "1.2.3-rc1-ee", expected_version: "v1.2.3-rc1-ee"6004 when set in ENV6005 includes the version from ENV6006 Trigger::DatabaseTesting6007 #variables6008 invokes the trigger with expected variables6009 when CI_MERGE_REQUEST_SOURCE_BRANCH_SHA is set6010 sets TOP_UPSTREAM_SOURCE_SHA to ci_merge_request_source_branch_sha6011 when CI_MERGE_REQUEST_SOURCE_BRANCH_SHA is set as empty6012 sets TOP_UPSTREAM_SOURCE_SHA to CI_COMMIT_SHA6013 when CI_MERGE_REQUEST_SOURCE_BRANCH_SHA is not set6014 sets TOP_UPSTREAM_SOURCE_SHA to CI_COMMIT_SHA6015 #invoke!6016 invokes the trigger with expected variables6017 #downstream_project_path6018 when GITLABCOM_DATABASE_TESTING_PROJECT_PATH is set6019 triggers the pipeline on the correct project6020 #ref6021 when GITLABCOM_DATABASE_TESTING_TRIGGER_REF is set6022 triggers the pipeline on the correct ref6023 when no MR notes with the identifier exist yet6024 posts a new note6025 Trigger::Base6026 #invoke!6027 when required methods aren't defined6028 raises a NotImplementedError6029 when required methods are defined6030 waits for downstream pipeline6031 when env variable `FOO_BAR_BRANCH` does not exist6032 triggers the pipeline on the correct project and branch6033 when env variable `FOO_BAR_BRANCH` exists6034 triggers the pipeline on the correct project and branch6035 #variables6036 includes simple forwarded variables6037 #base_variables6038 when CI_COMMIT_TAG is set6039 sets GITLAB_REF_SLUG to CI_COMMIT_REF_NAME6040 when CI_COMMIT_TAG is nil6041 sets GITLAB_REF_SLUG to CI_COMMIT_REF_SLUG6042 when TRIGGERED_USER is set6043 sets TRIGGERED_USER to triggered_user6044 when TRIGGERED_USER is not set6045 sets TRIGGERED_USER to GITLAB_USER_NAME6046 when CI_COMMIT_SHA is set6047 sets TOP_UPSTREAM_SOURCE_SHA to CI_COMMIT_SHA6048 #version_file_variables6049 version_file: "GITALY_SERVER_VERSION", version: "1"6050 when set in ENV6051 includes the version from ENV6052 when set in a file6053 includes the version from the file6054 version_file: "GITLAB_ELASTICSEARCH_INDEXER_VERSION", version: "2"6055 when set in ENV6056 includes the version from ENV6057 when set in a file6058 includes the version from the file6059 version_file: "GITLAB_KAS_VERSION", version: "3"6060 when set in ENV6061 includes the version from ENV6062 when set in a file6063 includes the version from the file6064 version_file: "GITLAB_PAGES_VERSION", version: "4"6065 when set in ENV6066 includes the version from ENV6067 when set in a file6068 includes the version from the file6069 version_file: "GITLAB_SHELL_VERSION", version: "5"6070 when set in ENV6071 includes the version from ENV6072 when set in a file6073 includes the version from the file6074 version_file: "GITLAB_WORKHORSE_VERSION", version: "6"6075 when set in ENV6076 includes the version from ENV6077 when set in a file6078 includes the version from the file6079notify/pipeline_fixed_email.html.haml6080 when pipeline has a name attribute6081 behaves like pipeline status changes email6082 when the pipeline contains a failed job6083 behaves like renders the pipeline status changes email correctly6084 pipeline with user6085 renders the email correctly6086 behaves like correct pipeline information for pipelines for merge requests6087 when pipeline for merge request6088 renders a source ref of the pipeline6089 pipeline without user6090 renders the email correctly6091 when the latest failed job is a bridge job6092 behaves like renders the pipeline status changes email correctly6093 pipeline with user6094 renders the email correctly6095 behaves like correct pipeline information for pipelines for merge requests6096 when pipeline for merge request6097 renders a source ref of the pipeline6098 pipeline without user6099 renders the email correctly6100 when pipeline does not have a name attribute6101 behaves like pipeline status changes email6102 when the pipeline contains a failed job6103 behaves like renders the pipeline status changes email correctly6104 pipeline with user6105 renders the email correctly6106 behaves like correct pipeline information for pipelines for merge requests6107 when pipeline for merge request6108 renders a source ref of the pipeline6109 pipeline without user6110 renders the email correctly6111 when the latest failed job is a bridge job6112 behaves like renders the pipeline status changes email correctly6113 pipeline with user6114 renders the email correctly6115 behaves like correct pipeline information for pipelines for merge requests6116 when pipeline for merge request6117 renders a source ref of the pipeline6118 pipeline without user6119 renders the email correctly6120DevOpsReport::Metric6121 validations6122 is expected to validate that :leader_issues cannot be empty/falsy6123 is expected to validate that :leader_issues looks like a number greater than or equal to 06124 is expected to validate that :instance_issues cannot be empty/falsy6125 is expected to validate that :instance_issues looks like a number greater than or equal to 06126 is expected to validate that :percentage_issues cannot be empty/falsy6127 is expected to validate that :percentage_issues looks like a number greater than or equal to 06128 is expected to validate that :leader_notes cannot be empty/falsy6129 is expected to validate that :leader_notes looks like a number greater than or equal to 06130 is expected to validate that :instance_notes cannot be empty/falsy6131 is expected to validate that :instance_notes looks like a number greater than or equal to 06132 is expected to validate that :percentage_notes cannot be empty/falsy6133 is expected to validate that :percentage_notes looks like a number greater than or equal to 06134 is expected to validate that :leader_milestones cannot be empty/falsy6135 is expected to validate that :leader_milestones looks like a number greater than or equal to 06136 is expected to validate that :instance_milestones cannot be empty/falsy6137 is expected to validate that :instance_milestones looks like a number greater than or equal to 06138 is expected to validate that :percentage_milestones cannot be empty/falsy6139 is expected to validate that :percentage_milestones looks like a number greater than or equal to 06140 is expected to validate that :leader_boards cannot be empty/falsy6141 is expected to validate that :leader_boards looks like a number greater than or equal to 06142 is expected to validate that :instance_boards cannot be empty/falsy6143 is expected to validate that :instance_boards looks like a number greater than or equal to 06144 is expected to validate that :percentage_boards cannot be empty/falsy6145 is expected to validate that :percentage_boards looks like a number greater than or equal to 06146 is expected to validate that :leader_merge_requests cannot be empty/falsy6147 is expected to validate that :leader_merge_requests looks like a number greater than or equal to 06148 is expected to validate that :instance_merge_requests cannot be empty/falsy6149 is expected to validate that :instance_merge_requests looks like a number greater than or equal to 06150 is expected to validate that :percentage_merge_requests cannot be empty/falsy6151 is expected to validate that :percentage_merge_requests looks like a number greater than or equal to 06152 is expected to validate that :leader_ci_pipelines cannot be empty/falsy6153 is expected to validate that :leader_ci_pipelines looks like a number greater than or equal to 06154 is expected to validate that :instance_ci_pipelines cannot be empty/falsy6155 is expected to validate that :instance_ci_pipelines looks like a number greater than or equal to 06156 is expected to validate that :percentage_ci_pipelines cannot be empty/falsy6157 is expected to validate that :percentage_ci_pipelines looks like a number greater than or equal to 06158 is expected to validate that :leader_environments cannot be empty/falsy6159 is expected to validate that :leader_environments looks like a number greater than or equal to 06160 is expected to validate that :instance_environments cannot be empty/falsy6161 is expected to validate that :instance_environments looks like a number greater than or equal to 06162 is expected to validate that :percentage_environments cannot be empty/falsy6163 is expected to validate that :percentage_environments looks like a number greater than or equal to 06164 is expected to validate that :leader_deployments cannot be empty/falsy6165 is expected to validate that :leader_deployments looks like a number greater than or equal to 06166 is expected to validate that :instance_deployments cannot be empty/falsy6167 is expected to validate that :instance_deployments looks like a number greater than or equal to 06168 is expected to validate that :percentage_deployments cannot be empty/falsy6169 is expected to validate that :percentage_deployments looks like a number greater than or equal to 06170 is expected to validate that :leader_projects_prometheus_active cannot be empty/falsy6171 is expected to validate that :leader_projects_prometheus_active looks like a number greater than or equal to 06172 is expected to validate that :instance_projects_prometheus_active cannot be empty/falsy6173 is expected to validate that :instance_projects_prometheus_active looks like a number greater than or equal to 06174 is expected to validate that :percentage_projects_prometheus_active cannot be empty/falsy6175 is expected to validate that :percentage_projects_prometheus_active looks like a number greater than or equal to 06176 is expected to validate that :leader_service_desk_issues cannot be empty/falsy6177 is expected to validate that :leader_service_desk_issues looks like a number greater than or equal to 06178 is expected to validate that :instance_service_desk_issues cannot be empty/falsy6179 is expected to validate that :instance_service_desk_issues looks like a number greater than or equal to 06180 is expected to validate that :percentage_service_desk_issues cannot be empty/falsy6181 is expected to validate that :percentage_service_desk_issues looks like a number greater than or equal to 06182 #percentage_score6183 returns stored percentage score6184EnvironmentSerializer6185 behaves like avoid N+1 on environments serialization6186 avoids N+1 database queries with grouping6187 avoids N+1 database queries without grouping6188 does not preload for environments that does not exist in the page6189 when there is a collection of objects provided6190 contains important elements of environment6191 generates payload for collection6192 when representing environments within folders6193 when there is a single environment6194 represents one standalone environment6195 when there are multiple environments in folder6196 represents one item that is a folder6197 when there are multiple folders and standalone environments6198 represents multiple items grouped within folders6199 when folders and standalone environments share the same name6200 does not group standalone environments with folders that have the same name6201 when used with pagination6202 creates a paginated serializer6203 when resource is paginatable relation6204 when there is a single environment object in relation6205 serializes environments6206 when multiple environment objects are serialized6207 serializes appropriate number of objects6208 appends relevant headers6209 when grouping environments within folders6210 paginates grouped items including ordering6211 appends correct total page count header6212 appends correct page count headers6213 batching loading6214 uses the custom preloader service6215 fetches the last and upcoming deployment correctly6216Ci::CreatePipelineService6217 behaves like creating a pipeline with environment keyword6218 with environment6219 creates the environment6220 sets tags when build job6221 with environment with auto_stop_in6222 creates the environment with auto stop in6223 with environment name including persisted variables6224 skips persisted variables in environment name6225 when environment with Kubernetes configuration6226 stores the requested namespace6227 when environment with invalid name6228 does not create an environment6229 when environment with duplicate names6230 creates a pipeline with the environment6231 when pipeline has a job with environment6232 when environment name is valid6233 has a job with environment6234 when environment name is invalid6235 has a job without environment6236 #execute6237 with deployment tier6238 creates the environment with the expected tier6239 when tier is testing6240 creates the environment with the expected tier6241 when branch pipeline creates a dynamic environment6242 does not associate merge request with the environment6243 when variables are dependent on stage name6244 creates the pipeline successfully6245MergeRequests::Conflicts::ListService6246 #can_be_resolved_in_ui?6247 returns a falsey value when the MR can be merged without conflicts6248 returns a falsey value when the MR is marked as having conflicts, but has none6249 returns a falsey value when one of the MR branches is missing6250 returns a falsey value when the MR does not support new diff notes6251 returns a falsey value when the conflicts contain a large file6252 returns a falsey value when the conflicts contain a binary file6253 returns a falsey value when the conflicts contain a file edited in one branch and deleted in another6254 returns a truthy value when the conflicts are resolvable in the UI6255 returns a truthy value when the conflicts have to be resolved in an editor6256 returns a falsey value when the MR has a missing ref after a force push6257 returns a falsey value when the MR has a missing revision after a force push6258 returns a falsey value when the conflict is in a submodule revision6259API::Helpers::Packages::DependencyProxyHelpers6260 #redirect_registry_request6261 with maven packages6262 application_setting: true, group_setting: nil, forward_to_registry: true, example_name: "executing redirect"6263 behaves like executing redirect6264 redirects to package registry6265 application_setting: true, group_setting: nil, forward_to_registry: false, example_name: "executing fallback"6266 behaves like executing fallback6267 redirects to package registry6268 application_setting: false, group_setting: nil, forward_to_registry: true, example_name: "executing fallback"6269 behaves like executing fallback6270 redirects to package registry6271 application_setting: false, group_setting: nil, forward_to_registry: false, example_name: "executing fallback"6272 behaves like executing fallback6273 redirects to package registry6274 application_setting: true, group_setting: false, forward_to_registry: true, example_name: "executing fallback"6275 behaves like executing fallback6276 redirects to package registry6277 application_setting: true, group_setting: false, forward_to_registry: false, example_name: "executing fallback"6278 behaves like executing fallback6279 redirects to package registry6280 application_setting: false, group_setting: true, forward_to_registry: true, example_name: "executing redirect"6281 behaves like executing redirect6282 redirects to package registry6283 application_setting: false, group_setting: true, forward_to_registry: false, example_name: "executing fallback"6284 behaves like executing fallback6285 redirects to package registry6286 when no target is present6287 behaves like executing redirect6288 redirects to package registry6289 when maven_central_request_forwarding is disabled6290 application_setting: true, forward_to_registry: true6291 behaves like executing fallback6292 redirects to package registry6293 application_setting: true, forward_to_registry: false6294 behaves like executing fallback6295 redirects to package registry6296 application_setting: false, forward_to_registry: true6297 behaves like executing fallback6298 redirects to package registry6299 application_setting: false, forward_to_registry: false6300 behaves like executing fallback6301 redirects to package registry6302 with npm packages6303 application_setting: true, group_setting: nil, forward_to_registry: true, example_name: "executing redirect"6304 behaves like executing redirect6305 redirects to package registry6306 application_setting: true, group_setting: nil, forward_to_registry: false, example_name: "executing fallback"6307 behaves like executing fallback6308 redirects to package registry6309 application_setting: false, group_setting: nil, forward_to_registry: true, example_name: "executing fallback"6310 behaves like executing fallback6311 redirects to package registry6312 application_setting: false, group_setting: nil, forward_to_registry: false, example_name: "executing fallback"6313 behaves like executing fallback6314 redirects to package registry6315 application_setting: true, group_setting: false, forward_to_registry: true, example_name: "executing fallback"6316 behaves like executing fallback6317 redirects to package registry6318 application_setting: true, group_setting: false, forward_to_registry: false, example_name: "executing fallback"6319 behaves like executing fallback6320 redirects to package registry6321 application_setting: false, group_setting: true, forward_to_registry: true, example_name: "executing redirect"6322 behaves like executing redirect6323 redirects to package registry6324 application_setting: false, group_setting: true, forward_to_registry: false, example_name: "executing fallback"6325 behaves like executing fallback6326 redirects to package registry6327 when no target is present6328 behaves like executing redirect6329 redirects to package registry6330 when maven_central_request_forwarding is disabled6331 application_setting: true, forward_to_registry: true6332 behaves like executing fallback6333 redirects to package registry6334 application_setting: true, forward_to_registry: false6335 behaves like executing fallback6336 redirects to package registry6337 application_setting: false, forward_to_registry: true6338 behaves like executing fallback6339 redirects to package registry6340 application_setting: false, forward_to_registry: false6341 behaves like executing fallback6342 redirects to package registry6343 with pypi packages6344 application_setting: true, group_setting: nil, forward_to_registry: true, example_name: "executing redirect"6345 behaves like executing redirect6346 redirects to package registry6347 application_setting: true, group_setting: nil, forward_to_registry: false, example_name: "executing fallback"6348 behaves like executing fallback6349 redirects to package registry6350 application_setting: false, group_setting: nil, forward_to_registry: true, example_name: "executing fallback"6351 behaves like executing fallback6352 redirects to package registry6353 application_setting: false, group_setting: nil, forward_to_registry: false, example_name: "executing fallback"6354 behaves like executing fallback6355 redirects to package registry6356 application_setting: true, group_setting: false, forward_to_registry: true, example_name: "executing fallback"6357 behaves like executing fallback6358 redirects to package registry6359 application_setting: true, group_setting: false, forward_to_registry: false, example_name: "executing fallback"6360 behaves like executing fallback6361 redirects to package registry6362 application_setting: false, group_setting: true, forward_to_registry: true, example_name: "executing redirect"6363 behaves like executing redirect6364 redirects to package registry6365 application_setting: false, group_setting: true, forward_to_registry: false, example_name: "executing fallback"6366 behaves like executing fallback6367 redirects to package registry6368 when no target is present6369 behaves like executing redirect6370 redirects to package registry6371 when maven_central_request_forwarding is disabled6372 application_setting: true, forward_to_registry: true6373 behaves like executing fallback6374 redirects to package registry6375 application_setting: true, forward_to_registry: false6376 behaves like executing fallback6377 redirects to package registry6378 application_setting: false, forward_to_registry: true6379 behaves like executing fallback6380 redirects to package registry6381 application_setting: false, forward_to_registry: false6382 behaves like executing fallback6383 redirects to package registry6384 with non-forwardable package type6385 conan6386 raises an error6387 nuget6388 raises an error6389 composer6390 raises an error6391 generic6392 raises an error6393 golang6394 raises an error6395 debian6396 raises an error6397 rubygems6398 raises an error6399 helm6400 raises an error6401 terraform_module6402 raises an error6403 rpm6404 raises an error6405 ml_model6406 raises an error6407 #registry_url6408 package_type: :maven, expected_result: "https://repo.maven.apache.org/maven2/test/123", params: {:path=>"test", :file_name=>"123", :project=>nil}6409 is expected to eq "https://repo.maven.apache.org/maven2/test/123"6410 package_type: :npm, expected_result: "https://registry.npmjs.org/test", params: {:package_name=>"test"}6411 is expected to eq "https://registry.npmjs.org/test"6412 package_type: :pypi, expected_result: "https://pypi.org/simple/test/", params: {:package_name=>"test"}6413 is expected to eq "https://pypi.org/simple/test/"6414 with non-forwardable package type conan6415 raises an error6416 with non-forwardable package type nuget6417 raises an error6418 with non-forwardable package type composer6419 raises an error6420 with non-forwardable package type generic6421 raises an error6422 with non-forwardable package type golang6423 raises an error6424 with non-forwardable package type debian6425 raises an error6426 with non-forwardable package type rubygems6427 raises an error6428 with non-forwardable package type helm6429 raises an error6430 with non-forwardable package type terraform_module6431 raises an error6432 with non-forwardable package type rpm6433 raises an error6434 with non-forwardable package type ml_model6435 raises an error6436SystemNotes::DesignManagementService6437 #design_version_added6438 with one kind of event6439 makes just one note6440 adds a new system note6441 with a mixture of events6442 makes one note for each kind of event6443 adds a system note for each kind of event6444 icons6445 action: :creation6446 has a valid action6447 action: :modification6448 has a valid action6449 action: :deletion6450 has a valid action6451 it succeeds6452 action: :creation, icon: "designs_added", human_description: "added"6453 has the correct data6454 action: :modification, icon: "designs_modified", human_description: "updated"6455 has the correct data6456 action: :deletion, icon: "designs_removed", human_description: "removed"6457 has the correct data6458 #design_discussion_added6459 adds a new system note6460 has the correct note text6461 behaves like a system note6462 has the correct attributes6463Banzai::Filter::MathFilter6464 handles multiple styles in one text block6465 protects against malicious backtracking6466 inline math using $...$ syntax6467 with valid syntax6468 text: "$2+2$", result_template: "<p><math>2+2</math></p>"6469 behaves like inline math6470 removes surrounding dollar signs and adds class code, math and js-render-math6471 text: "$22+1$ and $22 + a^2$", result_template: "<p><math>22+1</math> and <math>22 + a^2</math></p>"6472 behaves like inline math6473 removes surrounding dollar signs and adds class code, math and js-render-math6474 text: "$22 and $2+2$", result_template: "<p>$22 and <math>2+2</math></p>"6475 behaves like inline math6476 removes surrounding dollar signs and adds class code, math and js-render-math6477 text: "$2+2$ $22 and flightjs/Flight$22 $2+2$", result_template: "<p><math>2+2</math> $22 and flightjs/Flight$22 <math>2+2</math></p>"6478 behaves like inline math6479 removes surrounding dollar signs and adds class code, math and js-render-math6480 text: "$1/2$ <b>test</b>", result_template: "<p><math>1/2</math> <b>test</b></p>"6481 behaves like inline math6482 removes surrounding dollar signs and adds class code, math and js-render-math6483 text: "$a!$", result_template: "<p><math>a!</math></p>"6484 behaves like inline math6485 removes surrounding dollar signs and adds class code, math and js-render-math6486 text: "$x$", result_template: "<p><math>x</math></p>"6487 behaves like inline math6488 removes surrounding dollar signs and adds class code, math and js-render-math6489 text: "$1+2\\$$", result_template: "<p><math>1+2\\$</math></p>"6490 behaves like inline math6491 removes surrounding dollar signs and adds class code, math and js-render-math6492 text: "$1+\\$2$", result_template: "<p><math>1+\\$2</math></p>"6493 behaves like inline math6494 removes surrounding dollar signs and adds class code, math and js-render-math6495 text: "$1+\\%2$", result_template: "<p><math>1+\\%2</math></p>"6496 behaves like inline math6497 removes surrounding dollar signs and adds class code, math and js-render-math6498 text: "$1+\\#2$", result_template: "<p><math>1+\\#2</math></p>"6499 behaves like inline math6500 removes surrounding dollar signs and adds class code, math and js-render-math6501 text: "$1+\\&2$", result_template: "<p><math>1+\\&2</math></p>"6502 behaves like inline math6503 removes surrounding dollar signs and adds class code, math and js-render-math6504 text: "$1+\\{2$", result_template: "<p><math>1+\\{2</math></p>"6505 behaves like inline math6506 removes surrounding dollar signs and adds class code, math and js-render-math6507 text: "$1+\\}2$", result_template: "<p><math>1+\\}2</math></p>"6508 behaves like inline math6509 removes surrounding dollar signs and adds class code, math and js-render-math6510 text: "$1+\\_2$", result_template: "<p><math>1+\\_2</math></p>"6511 behaves like inline math6512 removes surrounding dollar signs and adds class code, math and js-render-math6513 inline math using $`...`$ syntax6514 with valid syntax6515 text: "$`2+2`$", result_template: "<p><math>2+2</math></p>"6516 behaves like inline math6517 removes surrounding dollar signs and adds class code, math and js-render-math6518 text: "$`22+1`$ and $`22 + a^2`$", result_template: "<p><math>22+1</math> and <math>22 + a^2</math></p>"6519 behaves like inline math6520 removes surrounding dollar signs and adds class code, math and js-render-math6521 text: "$22 and $`2+2`$", result_template: "<p>$22 and <math>2+2</math></p>"6522 behaves like inline math6523 removes surrounding dollar signs and adds class code, math and js-render-math6524 text: "$`2+2`$ $22 and flightjs/Flight$22 $`2+2`$", result_template: "<p><math>2+2</math> $22 and flightjs/Flight$22 <math>2+2</math></p>"6525 behaves like inline math6526 removes surrounding dollar signs and adds class code, math and js-render-math6527 text: "test $$`2+2`$$ test", result_template: "<p>test $<math>2+2</math>$ test</p>"6528 behaves like inline math6529 removes surrounding dollar signs and adds class code, math and js-render-math6530 text: "$`1+\\$2`$", result_template: "<p><math>1+\\$2</math></p>"6531 behaves like inline math6532 removes surrounding dollar signs and adds class code, math and js-render-math6533 inline display math using $$...$$ syntax6534 with valid syntax6535 text: "$$2+2$$", result_template: "<p><math>2+2</math></p>"6536 behaves like display math6537 removes surrounding dollar signs and adds class code, math and js-render-math6538 text: "$$ 2+2 $$", result_template: "<p><math>2+2</math></p>"6539 behaves like display math6540 removes surrounding dollar signs and adds class code, math and js-render-math6541 text: "$$22+1$$ and $$22 + a^2$$", result_template: "<p><math>22+1</math> and <math>22 + a^2</math></p>"6542 behaves like display math6543 removes surrounding dollar signs and adds class code, math and js-render-math6544 text: "$22 and $$2+2$$", result_template: "<p>$22 and <math>2+2</math></p>"6545 behaves like display math6546 removes surrounding dollar signs and adds class code, math and js-render-math6547 text: "$$2+2$$ $22 and flightjs/Flight$22 $$2+2$$", result_template: "<p><math>2+2</math> $22 and flightjs/Flight$22 <math>2+2</math></p>"6548 behaves like display math6549 removes surrounding dollar signs and adds class code, math and js-render-math6550 text: "flightjs/Flight$22 and $$a^2 + b^2 = c^2$$", result_template: "<p>flightjs/Flight$22 and <math>a^2 + b^2 = c^2</math></p>"6551 behaves like display math6552 removes surrounding dollar signs and adds class code, math and js-render-math6553 text: "$$a!$$", result_template: "<p><math>a!</math></p>"6554 behaves like display math6555 removes surrounding dollar signs and adds class code, math and js-render-math6556 text: "$$x$$", result_template: "<p><math>x</math></p>"6557 behaves like display math6558 removes surrounding dollar signs and adds class code, math and js-render-math6559 text: "$$20,000 and $$30,000", result_template: "<p><math>20,000 and</math>30,000</p>"6560 behaves like display math6561 removes surrounding dollar signs and adds class code, math and js-render-math6562 block display math using $$\n...\n$$ syntax6563 with valid syntax6564 text: "$$\n2+2\n$$", result_template: "<math>2+2\n</math>"6565 behaves like display math6566 removes surrounding dollar signs and adds class code, math and js-render-math6567 text: "$$ \n2+2\n$$", result_template: "<math>2+2\n</math>"6568 behaves like display math6569 removes surrounding dollar signs and adds class code, math and js-render-math6570 text: "$$\n2+2\n3+4\n$$", result_template: "<math>2+2\n3+4\n</math>"6571 behaves like display math6572 removes surrounding dollar signs and adds class code, math and js-render-math6573 when it spans multiple lines6574 behaves like display math6575 removes surrounding dollar signs and adds class code, math and js-render-math6576 when it contains \6577 behaves like display math6578 removes surrounding dollar signs and adds class code, math and js-render-math6579 display math using ```math...``` syntax6580 adds data-math-style display attribute to display math6581 adds js-render-math class to display math6582 ignores code blocks that are not math6583 requires the pre to contain both code and math6584 unrecognized syntax6585 text: "`2+2`", result: "<p><code>2+2</code></p>"6586 is ignored6587 text: "test $`2+2` test", result: "<p>test $<code>2+2</code> test</p>"6588 is ignored6589 text: "test `2+2`$ test", result: "<p>test <code>2+2</code>$ test</p>"6590 is ignored6591 text: "$20,000 and $30,000", result: "<p>$20,000 and $30,000</p>"6592 is ignored6593 text: "$20,000 in $USD", result: "<p>$20,000 in $USD</p>"6594 is ignored6595 text: "$ a^2 $", result: "<p>$ a^2 $</p>"6596 is ignored6597 text: "test $$\n2+2\n$$", result: "<p>test $$\n2+2\n$$</p>"6598 is ignored6599 text: "$\n$", result: "<p>$\n$</p>"6600 is ignored6601 text: "$$$", result: "<p>$$$</p>"6602 is ignored6603 text: "`$1+2$`", result: "<p><code>$1+2$</code></p>"6604 is ignored6605 text: "`$$1+2$$`", result: "<p><code>$$1+2$$</code></p>"6606 is ignored6607 text: "`$\\$1+2$$`", result: "<p><code>$\\$1+2$$</code></p>"6608 is ignored6609 when limiting how many elements can be marked as math6610 enforces limits by default6611 does not limit when math_rendering_limits_enabled is false6612Notes::BuildService6613 #execute6614 when in_reply_to_discussion_id is specified6615 when a note with that original discussion ID exists6616 sets the note up to be in reply to that note6617 when discussion is resolved6618 resolves the note6619 when a note with that discussion ID exists6620 sets the note up to be in reply to that note6621 when no note with that discussion ID exists6622 sets an error6623 when user has no access to discussion6624 sets an error6625 personal snippet note6626 when a snippet is public6627 creates a reply note6628 when a snippet is private6629 creates a reply note when the author replies6630 sets an error when another user replies6631 when a snippet is internal6632 creates a reply note when the author replies6633 creates a reply note when a regular user replies6634 sets an error when an external user replies6635 when replying to individual note6636 sets the note up to be in reply to that note6637 when noteable does not support replies6638 builds another individual note6639 confidential comments6640 when creating a new confidential comment6641 reporter6642 behaves like user allowed to set comment as confidential6643 is expected to be truthy6644 issuable author6645 behaves like user not allowed to set comment as confidential6646 is expected to be falsey6647 issuable assignee6648 behaves like user not allowed to set comment as confidential6649 is expected to be falsey6650 admin6651 behaves like user allowed to set comment as confidential6652 is expected to be truthy6653 external6654 behaves like user not allowed to set comment as confidential6655 is expected to be falsey6656 guest6657 behaves like user not allowed to set comment as confidential6658 is expected to be falsey6659 when replying to a confidential comment6660 with reporter access6661 behaves like confidential set to `true`6662 `confidential` param is ignored to match the parent note confidentiality6663 with admin access6664 behaves like confidential set to `true`6665 `confidential` param is ignored to match the parent note confidentiality6666 with noteable author6667 behaves like returns `Discussion to reply to cannot be found` error6668 is expected to equal true6669 with noteable assignee6670 behaves like returns `Discussion to reply to cannot be found` error6671 is expected to equal true6672 with guest access6673 behaves like returns `Discussion to reply to cannot be found` error6674 is expected to equal true6675 with external user6676 behaves like returns `Discussion to reply to cannot be found` error6677 is expected to equal true6678 when replying to a public comment6679 `confidential` param is ignored and set to `false`6680 when noteable is not set6681 builds a note without saving it6682MembersHelper6683 #remove_member_message6684 is expected to eq "Are you sure you want to remove Sidney Jones988 from the Sidney Jones987 / Project-1255 Name project?"6685 is expected to eq "Are you sure you want to revoke the invitation for to join the Sidney Jones990 / Project-1257 Name project?"6686 is expected to eq "Are you sure you want to deny Sidney Jones994's request to join the Sidney Jones993 / Project-1259 Name project?"6687 is expected to eq "Are you sure you want to withdraw your access request for the Sidney Jones995 / Project-1260 Name project?"6688 is expected to eq "Are you sure you want to remove Sidney Jones997 from the group333 group and any subresources?"6689 is expected to eq "Are you sure you want to revoke the invitation for to join the group335 group?"6690 is expected to eq "Are you sure you want to deny Sidney Jones999's request to join the group337 group?"6691 is expected to eq "Are you sure you want to withdraw your access request for the group338 group?"6692 an accepted user invitation with no user associated6693 logs an exception and shows orphaned status6694 a pending member invitation with no user associated6695 does not error when there is an invitation for the requestor6696 #remove_member_title6697 is expected to eq "Remove user from project"6698 is expected to eq "Deny access request from project"6699 is expected to eq "Remove user from group and any subresources"6700 is expected to eq "Deny access request from group"6701 #leave_confirmation_message6702 is expected to eq "Are you sure you want to leave the \"Sidney Jones1012 / Project-1266 Name\" project?"6703 is expected to eq "Are you sure you want to leave the \"group344\" group?"6704 #member_request_access_link6705 returns request link for project members6706 returns the request link for group members6707Ci::PipelineTriggerService6708 #execute6709 with a trigger token6710 when trigger belongs to a different project6711 does nothing6712 when trigger owner does not have a permission to read a project6713 does nothing6714 when params have an existing trigger token6715 when params have an existing ref6716 triggers a pipeline6717 stores the payload as a variable6718 when commit message has [ci skip]6719 ignores [ci skip] and create as general6720 when params have a variable6721 has variables6722 when params have duplicate variables6723 creates a failed pipeline without variables6724 behaves like detecting an unprocessable pipeline trigger6725 when the pipeline was not created successfully6726 has the correct status code6727 when params have a non-existant ref6728 does not trigger a pipeline6729 when params have a non-existant trigger token6730 does not trigger a pipeline6731 with a pipeline job token6732 when job user does not have a permission to read a project6733 does nothing6734 when job is not running6735 does nothing6736 when job does not have a project6737 does nothing6738 when params have an existsed job token6739 when params have an existsed ref6740 triggers a pipeline6741 behaves like logs downstream pipeline creation6742 logs details6743 when commit message has [ci skip]6744 ignores [ci skip] and create as general6745 when params have a variable6746 has variables6747 when params have duplicate variables6748 creates a failed pipeline without variables6749 behaves like detecting an unprocessable pipeline trigger6750 when the pipeline was not created successfully6751 has the correct status code6752 when params have a non-existant ref6753 does not trigger a job in the pipeline6754 when params have a non-existsed trigger token6755 does not trigger a pipeline6756Packages::Conan::SearchService6757 #execute6758 with wildcard6759 makes a wildcard query6760 with only wildcard6761 returns empty6762 with no wildcard6763 makes a search using the beginning of the recipe6764 with full recipe match6765 makes an exact search6766 with malicious query6767 returns empty6768 for project6769 when passing a project6770 returns only packages of the given project6771 when passing a project with nil6772 returns all packages6773Terraform::State6774 is expected to belong to project required: false6775 is expected to belong to locked_by_user class_name => User required: false6776 is expected to validate that :name cannot be empty/falsy6777 is expected to validate that :project_id cannot be empty/falsy6778 is expected to validate that :uuid cannot be empty/falsy6779 default values6780 is expected to be present6781 is expected to eq "test"6782 scopes6783 .ordered_by_name6784 is expected to eq ["state_a", "state_b", "state_c", "state_d"]6785 .with_name6786 is expected to contain exactly #<Terraform::State id: 10, project_id: 1118, created_at: "2023-10-20 08:56:20.604495462 +0000", updat...fb", name: "matching-name", versioning_enabled: true, deleted_at: nil, activerecord_lock_version: 0>6787 #latest_file6788 is expected to eq #<Terraform::StateUploader:0x0000795987b328d8 @model=#<Terraform::StateVersion id: 6, terraform_state...0x0000795987b32630 @uploader=#<Terraform::StateUploader:0x0000795987b328d8 ...>, @cache_called=nil>>6789 but no version exists yet6790 is expected to be nil6791 #update_file!6792 versioning is enabled6793 creates a new version6794 versioning is disabled (migration to versioned in progress)6795 creates a new version, corrects the migrated version number, and marks the state as versioned6796 the current version cannot be determined6797 uses version - 1 to correct the migrated version number6798IconsHelper6799 sprite_icon_path6800 returns relative path6801 only calls image_path once when called multiple times6802 when an asset_host is set in the config it will return an absolute local URL6803 returns an absolute URL on that asset host6804 sprite_icon6805 returns svg icon html with DEFAULT_ICON_SIZE6806 returns svg icon html without size class6807 returns svg icon html + size classes6808 returns svg icon html + size classes + additional class6809 returns a file icon6810 non existing icon6811 raises in development mode6812 raises in test mode6813 does not raise in production mode6814 audit icon6815 returns right icon name for standard auth6816 returns right icon name for two-factor auth6817 returns right icon name for google_oauth2 auth6818 file_type_icon_class6819 returns folder-o class6820 returns share class6821 returns document class with .pdf6822 returns doc-image class with .jpg6823 returns doc-image class with .JPG6824 returns doc-image class with .png6825 returns doc-image class with .apng6826 returns doc-image class with .webp6827 returns doc-compressed class with .tar6828 returns doc-compressed class with .TAR6829 returns doc-compressed class with .tar.gz6830 returns volume-up class with .mp36831 returns volume-up class with .MP36832 returns volume-up class with .m4a6833 returns volume-up class with .wav6834 returns live-preview class with .avi6835 returns live-preview class with .AVI6836 returns live-preview class with .mp46837 returns doc-text class with .odt6838 returns doc-text class with .doc6839 returns doc-text class with .DOC6840 returns doc-text class with .docx6841 returns document class with .xls6842 returns document class with .XLS6843 returns document class with .xlsx6844 returns doc-chart class with .odp6845 returns doc-chart class with .ppt6846 returns doc-chart class with .PPT6847 returns doc-chart class with .pptx6848 returns doc-text class with .unknow6849 returns doc-text class with no extension6850 #external_snippet_icon6851 returns external snippet icon6852 gl_loading_icon6853 returns the default spinner markup6854 when css_class is provided6855 appends css_class to container element6856 when size is provided6857 sets the size class6858 when color is provided6859 sets the color class6860 when inline is true6861 creates an inline container6862Projects::GitDeduplicationService6863 #execute6864 when there is not already a lease6865 when the project does not have a pool repository6866 calls disconnect_git_alternates6867 when the project has a pool repository6868 links the repository to the object pool6869 does not link the repository to the object pool if they are not on the same storage6870 when the project is a source project6871 calls fetch6872 does not call fetch if git objects are not poolable6873 does not call fetch if pool and project are not on the same storage6874 when visibility level of the project6875 is private6876 does not call fetch6877 is public6878 calls fetch6879 is internal6880 calls fetch6881 when the repository access level6882 is private6883 does not call fetch6884 is greater than private6885 calls fetch6886 when a lease is already out6887 fails when a lease is already out6888Issuable::DiscussionsListService6889 # order random6890 fetching notes for merge requests6891 behaves like listing issuable discussions6892 when user cannot read issue6893 returns no notes6894 when user can read issuable6895 with paginated results6896 returns next page notes6897 and cannot read confidential notes6898 returns non confidential notes6899 and can read confidential notes6900 returns all notes6901 and system notes only6902 returns system notes6903 and user comments only6904 returns user comments6905 fetching notes for issue6906 behaves like listing issuable discussions6907 when user cannot read issue6908 returns no notes6909 when user can read issuable6910 with paginated results6911 returns next page notes6912 and cannot read confidential notes6913 returns non confidential notes6914 and can read confidential notes6915 returns all notes6916 and system notes only6917 returns system notes6918 and user comments only6919 returns user comments6920 without notes widget6921 returns no notes6922Gitlab::Checks::DiffCheck6923 #validate!6924 when ref is not tag or branch ref6925 does not call find_changed_paths6926 when commits is empty6927 does not call find_changed_paths6928 when commits include merge commit6929 when merge commit does not include additional changes6930 checks the additional changes6931 when merge commit includes additional changes6932 checks the additional changes6933 when commits is not empty6934 when deletion is true6935 does not call find_changed_paths6936 with LFS not enabled6937 does not invoke :lfs_file_locks_validation6938 with LFS enabled6939 when change is sent by a different user6940 raises an error if the user is not allowed to update the file6941 when change is sent by the author of the lock6942 doesn't raise any error6943 when a merge commit merged a file locked by another user6944 doesn't raise any error6945 when a merge commit includes additional file locked by another user6946 does raise an error6947Terraform::StateUploader6948 #filename6949 contains the version of the terraform state record6950 legacy state with versioning disabled6951 contains the UUID of the terraform state record6952 #store_dir6953 hashes the project ID and UUID6954 legacy state with versioning disabled6955 contains the ID of the project6956 #key6957 creates a digest with a secret key and the project id6958 encryption6959 encrypts the stored file6960 decrypts the file when reading6961 .direct_upload_enabled?6962 returns false6963 .proxy_download_enabled?6964 returns true6965 .default_store6966 when object storage is enabled6967 returns REMOTE6968 when object storage is disabled6969 returns LOCAL6970Projects::AfterImportWorker6971 #execute6972 performs housekeeping6973 with some refs in refs/pull/**/*6974 removes refs/pull/**/*6975 with a ref in refs/heads/tmp6976 does not remove refs/heads/tmp6977 with a ref in refs/tags/tmp6978 does not remove refs/tags/tmp6979 with a ref in refs/replace/tmp6980 does not remove refs/replace/tmp6981 with a ref in refs/merge-requests/tmp6982 does not remove refs/merge-requests/tmp6983 with a ref in refs/environments/tmp6984 does not remove refs/environments/tmp6985 with a ref in refs/keep-around/tmp6986 does not remove refs/keep-around/tmp6987 with a ref in refs/pipelines/tmp6988 does not remove refs/pipelines/tmp6989 when after import action throw non-retriable exception6990 throws after import error6991 when housekeeping service lease is taken6992 logs the error message6993 when after import action throw retriable exception one time6994 removes refs/pull/**/*6995 records the failures in the database6996Packages::Nuget::ExtractionWorker6997 #perform6998 with valid package file6999 updates package and package file7000 with exisiting package7001 reuses existing package and updates package file7002 with invalid package file id7003 doesn't update package and package file7004 with controlled errors7005 with package file not containing a nuspec file7006 behaves like handling error7007 updates package status to error7008 with invalid metadata7009 with a blank package name7010 behaves like handling error7011 updates package status to error7012 with package with an invalid package name7013 with My/package7014 behaves like handling error7015 updates package status to error7016 with ../../../my_package7017 behaves like handling error7018 updates package status to error7019 with %2e%2e%2fmy_package7020 behaves like handling error7021 updates package status to error7022 with package with a blank package version7023 behaves like handling error7024 updates package status to error7025 with package with an invalid package version7026 with 5557027 behaves like handling error7028 updates package status to error7029 with 1./2.37030 behaves like handling error7031 updates package status to error7032 with ../../../../../1.2.37033 behaves like handling error7034 updates package status to error7035 with %2e%2e%2f1.2.37036 behaves like handling error7037 updates package status to error7038 handling a Zip::Error exception7039 behaves like handling error7040 updates package status to error7041 with uncontrolled errors7042 behaves like handling error7043 updates package status to error7044Banzai::Filter::BroadcastMessageSanitizationFilter7045 behaves like default allowlist7046 sanitizes tags that are not allowed7047 sanitizes tag attributes7048 sanitizes javascript in attributes7049 sanitizes mixed-cased javascript in attributes7050 allows allowlisted HTML tags from the user7051 sanitizes `class` attribute on any element7052 sanitizes `id` attribute on any element7053 custom allowlist7054 behaves like XSS prevention7055 disallows protocol-based JS injection: simple, no spaces7056 disallows protocol-based JS injection: simple, spaces before7057 disallows protocol-based JS injection: simple, spaces after7058 disallows protocol-based JS injection: simple, spaces before and after7059 disallows protocol-based JS injection: preceding colon7060 disallows protocol-based JS injection: UTF-8 encoding7061 disallows protocol-based JS injection: long UTF-8 encoding7062 disallows protocol-based JS injection: long UTF-8 encoding without semicolons7063 disallows protocol-based JS injection: hex encoding7064 disallows protocol-based JS injection: long hex encoding7065 disallows protocol-based JS injection: hex encoding without semicolons7066 disallows protocol-based JS injection: null char7067 disallows protocol-based JS injection: invalid URL char7068 disallows protocol-based JS injection: Unicode7069 disallows protocol-based JS injection: spaces and entities7070 disallows protocol whitespace7071 disallows data links7072 disallows vbscript links7073 behaves like sanitize link7074 removes `rel` attribute from `a` elements7075 disallows invalid URIs7076 allows non-standard anchor schemes7077 allows relative links7078 allows `a` elements7079 is expected to eq "<a href=\"/\">Link</a>"7080 allows `br` elements7081 is expected to eq "Hello<br>World"7082 when `a` elements have `style` attribute7083 disallows other properties in `style` attribute on `a` elements7084 allows specific properties7085 is expected to eq "<a href=\"#\" style=\"color: red; border: blue; background: green; padding: 10px; margin: 10px; text-decoration: underline;\">Stylish Link</a>"7086 allows `class` on `a` elements7087 is expected to eq "<a href=\"#\" class=\"btn\">Button Link</a>"7088AuthHelper7089 button_based_providers7090 returns all enabled providers from devise7091 does not return ldap provider7092 returns empty array7093 providers_for_base_controller7094 returns all enabled providers from devise7095 excludes ldap providers7096 form_based_providers7097 includes LDAP providers7098 includes crowd provider7099 form_based_auth_provider_has_active_class?7100 selects main LDAP server7101 any_form_based_providers_enabled?7102 detects form-based providers7103 ignores ldap providers when ldap web sign in is disabled7104 enabled_button_based_providers7105 all providers are enabled to sign in7106 returns all the enabled providers from settings in expected order7107 puts google and github in the beginning7108 GitHub OAuth sign in is disabled from application setting7109 doesn't return github as provider7110 popular_enabled_button_based_providers7111 returns the intersection set of popular & enabled providers7112 button_based_providers_enabled?7113 button based providers enabled7114 returns true7115 all the button based providers are disabled via application_setting7116 returns false7117 #link_provider_allowed?7118 delegates to identity provider policy7119 #unlink_provider_allowed?7120 delegates to identity provider policy7121 #provider_has_icon?7122 returns true for defined providers7123 returns false for undefined providers7124 when provider is defined by config7125 returns true7126 when provider is not defined by config7127 returns true7128 #allow_admin_mode_password_authentication_for_web?7129 is expected to equal true7130 when password authentication for web is disabled7131 is expected to equal false7132 when current_user is an ldap user7133 is expected to equal false7134 when user got password automatically set7135 is expected to equal false7136 #auth_active?7137 for atlassian_oauth2 provider7138 returns true when present7139 returns false when not present7140 for other omniauth providers7141 returns true when present7142 returns false when not present7143 #auth_app_owner_text7144 when owner is a user7145 behaves like generates text with the correct info7146 includes the name of the application owner7147 when owner is a group7148 behaves like generates text with the correct info7149 includes the name of the application owner7150 when the user is missing7151 returns nil7152 #auth_strategy_class7153 when configuration specifies no provider7154 returns false7155 when configuration specifies a provider with args but without strategy_class7156 returns false7157 when configuration specifies a provider with args and strategy_class7158 returns the class7159 when configuration specifies another provider with args and another strategy_class7160 returns false7161 #saml_providers7162 when SAML is enabled without specifying a strategy class7163 returns the saml provider7164 when configuration specifies no provider7165 returns an empty list7166 when configuration specifies a provider with a SAML strategy_class7167 returns the provider7168 when configuration specifies two providers with a SAML strategy_class7169 returns the provider7170 when configuration specifies a provider with a non-SAML strategy_class7171 returns an empty list7172 when configuration specifies four providers but only two with SAML strategy_class7173 returns the provider7174Gitlab::Ci::Config::Entry::Cache7175 validations7176 when entry config value is correct7177 #value7178 behaves like hash key value7179 returns hash value7180 with files7181 behaves like hash key value7182 returns hash value7183 with files and prefix7184 behaves like hash key value7185 returns hash value7186 with prefix7187 key is nil7188 with option `unprotect` specified7189 returns true7190 with `policy`7191 policy: "pull-push", result: "pull-push"7192 is expected to include {:policy => "pull-push"}7193 policy: "push", result: "push"7194 is expected to include {:policy => "push"}7195 policy: "pull", result: "pull"7196 is expected to include {:policy => "pull"}7197 policy: "$VARIABLE", result: "$VARIABLE"7198 is expected to include {:policy => "$VARIABLE"}7199 policy: "unknown", result: "unknown"7200 is expected to include {:policy => "unknown"}7201 without `policy`7202 assigns policy to default7203 with `when`7204 when_config: "on_success", result: "on_success"7205 is expected to include {:when => "on_success"}7206 when_config: "on_failure", result: "on_failure"7207 is expected to include {:when => "on_failure"}7208 when_config: "always", result: "always"7209 is expected to include {:when => "always"}7210 when_config: "unknown", result: "unknown"7211 is expected to include {:when => "unknown"}7212 without `when`7213 assigns when to default7214 with `fallback_keys`7215 matches the list of fallback keys7216 without `fallback_keys`7217 assigns an empty list7218 #valid?7219 is expected to be valid7220 with files7221 is expected to be valid7222 with `policy`7223 policy: "pull-push", valid: true7224 returns expected validity7225 policy: "push", valid: true7226 returns expected validity7227 policy: "pull", valid: true7228 returns expected validity7229 policy: "$VARIABLE", valid: true7230 returns expected validity7231 policy: "unknown", valid: false7232 returns expected validity7233 with `when`7234 when_config: "on_success", valid: true7235 returns expected validity7236 when_config: "on_failure", valid: true7237 returns expected validity7238 when_config: "always", valid: true7239 returns expected validity7240 when_config: "unknown", valid: false7241 returns expected validity7242 with key missing7243 #value7244 sets key with the default7245 when entry value is not correct7246 #errors7247 when is not a hash7248 reports errors with config value7249 when descendants are invalid7250 with invalid keys7251 reports error with descendants7252 with empty key7253 reports error with descendants7254 with invalid files7255 reports error with descendants7256 with prefix without files7257 reports error with descendants7258 when there is an unknown key present7259 reports error with descendants7260 when there is an unknown key present7261 reports error with descendants7262 when the `when` keyword is not a valid string7263 when `when` is unknown7264 returns error7265 when it is an array7266 returns error7267 when it is a boolean7268 returns error7269 when the `policy` keyword is not a valid string7270 when `policy` is unknown7271 returns error7272 when it is an array7273 returns error7274 when it is a boolean7275 returns error7276Mutations::Issues::Create7277 is expected to require graphql authorizations :create_issue7278 #resolve7279 when the user does not have permission to create an issue7280 raises an error7281 when the user has exceeded the rate limit7282 raises an error7283 when the user can create an issue7284 when creating an issue a developer7285 creates issue with correct values7286 when passing in label_ids7287 creates issue with correct values7288 when trying to create issue with restricted params7289 ignores the special params7290 when creating a non-default issue type7291 creates issue with correct values7292 when creating an issue as owner7293 sets the special params7294 #ready?7295 when passing in both labels and label_ids7296 raises exception when mutually exclusive params are given7297 when passing only `discussion_to_resolve` param7298 raises exception when mutually exclusive params are given7299 when passing only `merge_request_to_resolve_discussions_of` param7300 raises exception when mutually exclusive params are given7301RuboCop::Cop::RSpec::HaveGitlabHttpStatus7302 # order random7303 partially autocorrects invalid numeric status7304 bad: "have_http_status(-1)", good: "have_gitlab_http_status(-1)"7305 registers an offense7306 does not autocorrect7307 offenses and autocorrections7308 bad: "have_http_status(:ok)", good: "have_gitlab_http_status(:ok)"7309 registers an offense7310 does not register an offense7311 bad: "have_http_status(204)", good: "have_gitlab_http_status(:no_content)"7312 registers an offense7313 does not register an offense7314 bad: "have_gitlab_http_status(201)", good: "have_gitlab_http_status(:created)"7315 registers an offense7316 does not register an offense7317 bad: "have_http_status(var)", good: "have_gitlab_http_status(var)"7318 registers an offense7319 does not register an offense7320 bad: "have_http_status(:success)", good: "have_gitlab_http_status(:success)"7321 registers an offense7322 does not register an offense7323 bad: "have_http_status(:invalid)", good: "have_gitlab_http_status(:invalid)"7324 registers an offense7325 does not register an offense7326 bad: "expect(response.status).to eq(200)", good: "expect(response).to have_gitlab_http_status(:ok)"7327 registers an offense7328 does not register an offense7329 bad: "expect(response.status).not_to eq(200)", good: "expect(response).not_to have_gitlab_http_status(:ok)"7330 registers an offense7331 does not register an offense7332 ignore7333 code: "have_http_status"7334 does not register an offense7335 code: "have_http_status { }"7336 does not register an offense7337 code: "have_http_status(200, arg)"7338 does not register an offense7339 code: "have_gitlab_http_status"7340 does not register an offense7341 code: "have_gitlab_http_status { }"7342 does not register an offense7343 code: "have_gitlab_http_status(200, arg)"7344 does not register an offense7345 code: "expect(response.status).to eq(arg)"7346 does not register an offense7347 code: "expect(response.status).to eq(:ok)"7348 does not register an offense7349 code: "expect(response.status).to some_matcher(200)"7350 does not register an offense7351 code: "expect(response.status).not_to eq(arg)"7352 does not register an offense7353 code: "expect(response.status).not_to eq(:ok)"7354 does not register an offense7355 code: "expect(response.status).not_to some_matcher(200)"7356 does not register an offense7357 code: "expect(result.status).to eq(200)"7358 does not register an offense7359 code: "expect(result.status).not_to eq(200)"7360 does not register an offense7361 code: "response = some_assignment\nexpect(response.status).to eq(200)\n"7362 does not register an offense7363 code: "response = some_assignment\nexpect(response.status).not_to eq(200)\n"7364 does not register an offense7365Spammable7366 Associations7367 is expected to have one user_agent_detail dependent => destroy7368 ClassMethods7369 returns correct attr_spammable7370 InstanceMethods7371 is invalid if spam7372 #check_for_spam?7373 returns true for public project7374 returns true for other visibility levels7375 when not overriden7376 when spammable attributes have changed7377 attr: :title7378 is expected to eq true7379 attr: :description7380 is expected to eq true7381 when other attributes have changed7382 is expected to eq false7383 #invalidate_if_spam7384 when the model is spam7385 model: :issue7386 has an error related to spam on the model7387 model: :merge_request7388 has an error related to spam on the model7389 model: :note7390 has an error related to spam on the model7391 model: :snippet7392 has an error related to spam on the model7393 model: :spammable_model7394 has an error related to spam on the model7395 when the model needs recaptcha7396 has an error related to spam on the model7397 when the model needs recaptcha but does not support it7398 has an error that discards the spammable7399 if the model is spam and also needs recaptcha7400 has an error related to spam on the model7401 when the model is not spam nor needs recaptcha7402 returns no error7403 if recaptcha is not enabled and the model needs recaptcha7404 has no errors7405 spam flags7406 #spam!7407 adds only `spam` flag7408 #needs_recaptcha!7409 when recaptcha is supported7410 adds `needs_recaptcha` flag7411 when recaptcha is not supported7412 marks the object as spam7413 #render_recaptcha?7414 when recaptcha is not enabled7415 returns false7416 when recaptcha is enabled7417 when there are two or more errors7418 returns false7419 when there are less than two errors7420 when spammable does not need recaptcha7421 returns false7422 when spammable needs recaptcha7423 returns false7424 #clear_spam_flags!7425 clears spam and recaptcha flags7426 #submittable_as_spam_by?7427 tests if the user can submit spam7428 #allow_possible_spam?7429 when the `allow_possible_spam` application setting is turned off7430 is expected to eq false7431 when the `allow_possible_spam` application setting is turned on7432 is expected to eq true7433Gitlab::I18n::PoLinter7434 #errors7435 only calls validation once7436 #validate_po7437 for a fuzzy message7438 has an error7439 for a translations with newlines7440 has an error for a normal string7441 has an error when a translation is defined over multiple lines7442 raises an error when a plural translation is defined over multiple lines7443 raises an error when the plural id is defined over multiple lines7444 with an invalid po7445 returns the error7446 does not validate entries7447 with missing metadata7448 returns the an error7449 with a valid po7450 parses the file7451 validates the entries7452 has no errors7453 with missing plurals7454 has errors7455 with multiple plurals7456 has errors7457 with unescaped chars7458 contains an error7459 when an entry contains html7460 presents an error for each component containing angle brackets7461 #parse_po7462 with a valid po7463 fills in the entries7464 does not have errors7465 with an invalid po7466 contains an error7467 sets the entries to an empty array7468 #validate_entries7469 keeps track of errors for entries7470 #validate_entry7471 validates the flags, variable usage, newlines, and unescaped chars7472 #validate_number_of_plurals7473 validates when there are an incorrect number of translations7474 #validate_variables7475 validates both singular and plural in a pluralized string when the entry has a singular7476 only validates plural when there is no separate singular7477 validates the message variables7478 validates variable usage in message ids7479 #validate_variables_in_message7480 detects when a variables are used incorrectly7481 does not allow combining 1 `%d` unnamed variable with named variables7482 #validate_translation7483 succeeds with valid variables7484 adds an error message when translating fails7485 adds an error message when translating fails when translating with context7486 adds an error when trying to translate with incorrect variables when using unnamed variables7487 adds an error when trying to translate with named variables when unnamed variables are expected7488 tests translation for all given forms7489 #numbers_covering_all_plurals7490 can correctly find all required numbers to translate to Polish7491 #fill_in_variables7492 builds an array for %d translations7493 builds an array for %s translations7494 builds a hash for named variables7495PrometheusAlert7496 .distinct_projects7497 returns a count of all distinct projects which have an alert7498 operators7499 contains the correct equality operator7500 associations7501 is expected to belong to project required: false7502 is expected to belong to environment required: false7503 is expected to belong to prometheus_metric required: false7504 is expected to have many prometheus_alert_events7505 is expected to have many related_issues7506 is expected to have many alert_management_alerts7507 project validations7508 is expected to validate that :environment cannot be empty/falsy7509 is expected to validate that :project cannot be empty/falsy7510 is expected to validate that :prometheus_metric cannot be empty/falsy7511 is expected to validate that :operator cannot be empty/falsy7512 is expected to validate that :threshold cannot be empty/falsy7513 when environment and metric belongs same project7514 is expected to be valid7515 when environment belongs to different project7516 is expected not to be valid7517 when metric belongs to different project7518 is expected not to be valid7519 when metric is common7520 is expected to be valid7521 runbook validations7522 disallow invalid urls7523 allow valid urls7524 #full_query7525 returns the concatenated query7526 #to_param7527 returns the params of the prometheus alert7528Gitlab::ImportExport::Group::RelationFactory7529 label object7530 does not have the original ID7531 does not have the original group_id7532 has the new group_id7533 excluded attributes7534 are removed from the imported object7535 behaves like Notes user references7536 when the importer is admin7537 and the note author is not mapped7538 is expected to eq #<User id:1197 @user780>7539 is expected to include "*By Administrator"7540 and the note author is the importer user7541 is expected to eq #<User id:1199 @user782>7542 is expected not to include "*By Administrator"7543 and the note author exists in the target instance7544 is expected to eq #<User id:1201 @user784>7545 is expected not to include "*By Administrator"7546 when the importer is not admin7547 and the note author is not mapped7548 is expected to eq #<User id:1205 @user788>7549 is expected to include "*By Administrator"7550 and the note author is the importer user7551 is expected to eq #<User id:1207 @user790>7552 is expected to include "*By Administrator"7553 and the note author exists in the target instance7554 is expected to eq #<User id:1210 @user793>7555 is expected to include "*By Administrator"7556 when relation is namespace_settings7557 is expected to eq nil7558Gitlab::Ci::Status::Build::Stop7559 #label7560 is expected to eq "manual stop action"7561 action details7562 #has_action?7563 when user is allowed to update build7564 is expected to have action7565 when user is not allowed to update build7566 is expected not to have action7567 #action_path7568 is expected to include "497/play"7569 #action_icon7570 is expected to eq "stop"7571 #action_title7572 is expected to eq "Stop"7573 #action_button_title7574 is expected to eq "Stop this environment"7575 .matches?7576 when build is playable7577 when build stops an environment7578 is a correct match7579 when build does not stop an environment7580 does not match7581 when build is not playable7582 does not match7583 #status_tooltip7584 does not override status status_tooltip7585 #badge_tooltip7586 does not override status badge_tooltip7587Issues::ReferencedMergeRequestsService7588 #execute7589 returns a list of sorted merge requests7590 performance7591 does not run extra queries when extra namespaces are included7592 preloads the head pipeline for each merge request, and its routes7593 only loads issue notes once7594 #referenced_merge_requests7595 returns the referenced merge requests7596 excludes cross project references if the user cannot read cross project7597 performance7598 does not run a query for each note author7599 #closed_by_merge_requests7600 returns the open merge requests that close this issue7601 returns an empty array when the current issue is closed already7602 performance7603 does not run a query for each note author7604Resolvers::BoardsResolver7605 #resolve7606 when there is no parent7607 returns none if parent is nil7608 when project boards7609 behaves like group and project boards resolver7610 does not create a default board7611 calls Boards::BoardsFinder7612 avoids N+1 queries7613 multiple_issue_boards_available?7614 returns multiple boards7615 returns only the first boards7616 when querying for a single board7617 returns specified board7618 returns nil if board not found7619 when group boards7620 behaves like group and project boards resolver7621 does not create a default board7622 calls Boards::BoardsFinder7623 avoids N+1 queries7624 multiple_issue_boards_available?7625 returns multiple boards7626 returns only the first boards7627 when querying for a single board7628 returns specified board7629 returns nil if board not found7630Gitlab::LegacyGithubImport::IssueFormatter7631 when importing a GitHub project7632 behaves like Gitlab::LegacyGithubImport::IssueFormatter#attributes7633 when issue is open7634 returns formatted attributes7635 when issue is closed7636 returns formatted attributes7637 when it is assigned to someone7638 returns nil as assignee_id when is not a GitLab user7639 returns GitLab user id associated with GitHub id as assignee_id7640 returns GitLab user id associated with GitHub email as assignee_id7641 when it has a milestone7642 returns nil when milestone does not exist7643 returns milestone when it exists7644 when author is a GitLab user7645 returns project creator_id as author_id when is not a GitLab user7646 returns GitLab user id associated with GitHub id as author_id7647 returns GitLab user id associated with GitHub email as author_id7648 returns description without created at tag line7649 behaves like Gitlab::LegacyGithubImport::IssueFormatter#number7650 returns issue number7651 when importing a Gitea project7652 behaves like Gitlab::LegacyGithubImport::IssueFormatter#attributes7653 when issue is open7654 returns formatted attributes7655 when issue is closed7656 returns formatted attributes7657 when it is assigned to someone7658 returns nil as assignee_id when is not a GitLab user7659 returns GitLab user id associated with GitHub id as assignee_id7660 returns GitLab user id associated with GitHub email as assignee_id7661 when it has a milestone7662 returns nil when milestone does not exist7663 returns milestone when it exists7664 when author is a GitLab user7665 returns project creator_id as author_id when is not a GitLab user7666 returns GitLab user id associated with GitHub id as author_id7667 returns GitLab user id associated with GitHub email as author_id7668 returns description without created at tag line7669 behaves like Gitlab::LegacyGithubImport::IssueFormatter#number7670 returns issue number7671 #has_comments?7672 when number of comments is greater than zero7673 returns true7674 when number of comments is equal to zero7675 returns false7676 #pull_request?7677 when mention a pull request7678 returns true7679 when does not mention a pull request7680 returns false7681bin/feature-flag7682 FeatureFlagCreator7683 properly creates a feature flag7684 when running on master7685 requires feature branch7686 validates feature flag name7687 argv: [".invalid.feature.flag"], ex: /Provide a name for the feature flag that is/7688 is expected to raise /Provide a name for the feature flag that is/7689 argv: ["existing-feature-flag"], ex: /already exists!/7690 is expected to raise /already exists!/7691 FeatureFlagOptionParser7692 .parse7693 missing feature flag name7694 parses -h7695 param: :name, argv: ["foo"], result: "foo"7696 is expected to eq "foo"7697 param: :amend, argv: ["foo", "--amend"], result: true7698 is expected to eq true7699 param: :force, argv: ["foo", "-f"], result: true7700 is expected to eq true7701 param: :force, argv: ["foo", "--force"], result: true7702 is expected to eq true7703 param: :ee, argv: ["foo", "-e"], result: true7704 is expected to eq true7705 param: :ee, argv: ["foo", "--ee"], result: true7706 is expected to eq true7707 param: :introduced_by_url, argv: ["foo", "-m", "https://url"], result: "https://url"7708 is expected to eq "https://url"7709 param: :introduced_by_url, argv: ["foo", "--introduced-by-url", "https://url"], result: "https://url"7710 is expected to eq "https://url"7711 param: :rollout_issue_url, argv: ["foo", "-i", "https://url"], result: "https://url"7712 is expected to eq "https://url"7713 param: :rollout_issue_url, argv: ["foo", "--rollout-issue-url", "https://url"], result: "https://url"7714 is expected to eq "https://url"7715 param: :dry_run, argv: ["foo", "-n"], result: true7716 is expected to eq true7717 param: :dry_run, argv: ["foo", "--dry-run"], result: true7718 is expected to eq true7719 param: :type, argv: ["foo", "-t", "development"], result: :development7720 is expected to eq :development7721 param: :type, argv: ["foo", "--type", "development"], result: :development7722 is expected to eq :development7723 param: :type, argv: ["foo", "-t", "invalid"], result: nil7724 is expected to eq nil7725 param: :type, argv: ["foo", "--type", "invalid"], result: nil7726 is expected to eq nil7727 param: :group, argv: ["foo", "-g", "group::geo"], result: "group::geo"7728 is expected to eq "group::geo"7729 param: :group, argv: ["foo", "--group", "group::geo"], result: "group::geo"7730 is expected to eq "group::geo"7731 param: :group, argv: ["foo", "-g", "invalid"], result: nil7732 is expected to eq nil7733 param: :group, argv: ["foo", "--group", "invalid"], result: nil7734 is expected to eq nil7735 .read_type7736 when there is only a single type defined7737 returns that type7738 when there is deprecated feature flag type7739 and deprecated type is given7740 shows error message and retries7741 when there are many types defined7742 reads type from stdin7743 when invalid type is given7744 shows error message and retries7745 .read_group7746 reads type from stdin7747 invalid group given7748 shows error message and retries7749 .read_introduced_by_url7750 reads type from stdin7751 empty URL given7752 skips entry7753 invalid URL given7754 shows error message and retries7755 .read_rollout_issue_url7756 reads type from stdin7757 invalid URL given7758 shows error message and retries7759 .read_ee_only7760 is expected to eq false7761PagesDomainAcmeOrder7762 .expired7763 returns only expired orders7764 .find_by_domain_and_token7765 domain_name: "test.com", challenge_token: "righttoken", present: true7766 is expected to eq true7767 domain_name: "test.com", challenge_token: "wrongtoken", present: false7768 is expected to eq false7769 domain_name: "test.org", challenge_token: "righttoken", present: false7770 is expected to eq false7771 associations7772 is expected to belong to pages_domain required: false7773 validations7774 is expected to validate that :pages_domain cannot be empty/falsy7775 is expected to validate that :expires_at cannot be empty/falsy7776 is expected to validate that :url cannot be empty/falsy7777 is expected to validate that :challenge_token cannot be empty/falsy7778 is expected to validate that :challenge_file_content cannot be empty/falsy7779 is expected to validate that :private_key cannot be empty/falsy7780Gitlab::Ci::Pipeline::Duration7781 .from_periods7782 test sample A7783 behaves like calculating duration7784 is expected to eq 47785 test sample B7786 behaves like calculating duration7787 is expected to eq 47788 test sample C7789 behaves like calculating duration7790 is expected to eq 87791 test sample D7792 behaves like calculating duration7793 is expected to eq 47794 test sample E7795 behaves like calculating duration7796 is expected to eq 77797 test sample F7798 behaves like calculating duration7799 is expected to eq 67800 test sample G7801 behaves like calculating duration7802 is expected to eq 47803 .from_pipeline7804 returns the duration of the running build7805 does not generate N+1 queries if more builds are added7806 does not generate N+1 queries if more bridges and their pipeline builds are added7807 when there is no running build7808 returns the duration for all the builds7809 when there are direct bridge jobs7810 returns the duration of the running build7811 when there is no running build7812 returns the duration for all the builds (including self and downstreams)7813 when there are downstream bridge jobs7814 returns the duration of the running build7815 when there is no running build7816 returns the duration for all the builds (including self and downstreams)7817Gitlab::Partitioning::ForeignKeysGenerator7818 # order random7819 without foreign keys7820 does not generate migrations7821 with one FK7822 generates foreign key migrations7823 with many FKs7824 generates migrations for the selected FK7825Ml::Model7826 # order random7827 #by_project_and_id7828 if exists7829 is expected to eq #<Ml::Model id: 1, created_at: "2023-10-20 08:58:54.717321560 +0000", updated_at: "2023-10-20 08:58:54.717321560 +0000", project_id: 1234, name: "an_existing_model">7830 if id has no match7831 is expected to equal nil7832 if project id does not match7833 is expected to equal nil7834 .find_or_create7835 when model name does not exist in the project7836 creates a model7837 when model name exists but project is different7838 creates a model7839 when model exists7840 fetches existing model7841 with_version_count7842 when model has versions7843 is expected to eq 17844 when model has no versions7845 is expected to eq 07846 #valid?7847 validates a valid model version7848 name7849 ctx: "name is blank", name: ""7850 is expected to include :name7851 ctx: "name is not valid package name", name: "!!()()"7852 is expected to include :name7853 ctx: "name is too large", name: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"7854 is expected to include :name7855 ctx: "name is not unique in the project", name: "an_existing_model"7856 is expected to include :name7857 default_experiment7858 when experiment name name is different than model name7859 is expected to include :default_experiment7860 when model version project is different than model project7861 is expected to include :default_experiment7862 .by_project7863 is expected to contain exactly #<Ml::Model id: 1, created_at: "2023-10-20 08:58:54.717321560 +0000", updated_at: "2023-10-20 08:58:54.717321560 +0000", project_id: 1234, name: "an_existing_model">7864 .including_latest_version7865 loads latest version7866 associations7867 is expected to belong to project required: false7868 is expected to have one default_experiment7869 is expected to have many versions7870 is expected to have one latest_version class_name => Ml::ModelVersion inverse_of => model7871Projects::ContainerRepository::DestroyService7872 when user has access to registry7873 behaves like executing with permissions7874 deletes the repository7875 sends disable_timeout = true as part of the params as default7876 sends disable_timeout = false as part of the params if it is set to false7877 when deleting the tags fails7878 sets status as deleted_failed7879 logs the error7880 behaves like returning an error status with message7881 returns an error status7882 when destroying the repository fails7883 sets status as deleted_failed7884 logs the error7885 behaves like returning an error status with message7886 returns an error status7887 when user does not have access to registry7888 does not delete a repository7889 behaves like returning an error status with message7890 returns an error status7891 when called during project deletion7892 behaves like executing with permissions7893 deletes the repository7894 sends disable_timeout = true as part of the params as default7895 sends disable_timeout = false as part of the params if it is set to false7896 when deleting the tags fails7897 sets status as deleted_failed7898 logs the error7899 behaves like returning an error status with message7900 returns an error status7901 when destroying the repository fails7902 sets status as deleted_failed7903 logs the error7904 behaves like returning an error status with message7905 returns an error status7906 when there is no user7907 behaves like returning an error status with message7908 returns an error status7909AutoDevops::DisableWorker#perform7910 disables auto devops for project7911 when project owner is a user7912 sends an email to pipeline user and project owner(s)7913 when project does not have owner7914 sends an email to pipeline user7915 when pipeline is not related to a user and project does not have owner7916 does not send an email7917Ci::CreatePipelineService7918 cache7919 with cache:key7920 uses the provided key7921 with cache:key:files7922 when file.lock exists7923 builds a cache key7924 when file.lock does not exist7925 uses default cache key7926 with cache:key:files and prefix7927 when file.lock exists7928 builds a cache key7929 when file.lock does not exist7930 uses default cache key7931 with too many files7932 has errors7933Security::CiConfiguration::SastIacCreateService7934 #execute7935 user does not belong to project7936 returns an error status7937 does not track a snowplow event7938 user belongs to project7939 does track the snowplow event7940 raises exception if the user does not have permission to create a new branch7941 when exception is raised7942 when branch was created7943 tries to rm branch7944 when branch was not created7945 does not try to rm branch7946 with no parameters7947 returns the path to create a new merge request7948 when the project has a non-default ci config file7949 does track the snowplow event7950 when existing ci config contains anchors/aliases7951 returns a ServiceResponse error7952 when parsing existing ci config gives a Psych error7953 returns a ServiceResponse error7954 when parsing existing ci config gives any other error7955 is successful7956 when the project is empty7957 returns a ServiceResponse error7958Gitlab::Git::Conflict::Parser7959 .parse7960 when the file has valid conflicts7961 content has LF endings7962 behaves like successful parsing7963 sets our lines as new lines7964 sets their lines as old lines7965 sets non-conflicted lines as both7966 sets consecutive line numbers for line_obj_index, line_old, and line_new7967 content has CRLF endings7968 behaves like successful parsing7969 sets our lines as new lines7970 sets their lines as old lines7971 sets non-conflicted lines as both7972 sets consecutive line numbers for line_obj_index, line_old, and line_new7973 content has mixed LF and CRLF endings7974 behaves like successful parsing7975 sets our lines as new lines7976 sets their lines as old lines7977 sets non-conflicted lines as both7978 sets consecutive line numbers for line_obj_index, line_old, and line_new7979 when the file contents include conflict delimiters7980 raises MissingEndDelimiter when there is no end delimiter at the end7981 when there is a non-start delimiter first7982 raises UnexpectedDelimiter when there is a middle delimiter first7983 raises UnexpectedDelimiter when there is an end delimiter first7984 does not raise when there is an end delimiter for a different path first7985 when a start delimiter is followed by a non-middle delimiter7986 raises UnexpectedDelimiter when it is followed by an end delimiter7987 raises UnexpectedDelimiter when it is followed by another start delimiter7988 does not raise when it is followed by a start delimiter for a different path7989 when a middle delimiter is followed by a non-end delimiter7990 raises UnexpectedDelimiter when it is followed by another middle delimiter7991 raises UnexpectedDelimiter when it is followed by a start delimiter7992 does not raise when it is followed by a start delimiter for another path7993 other file types7994 raises UnmergeableFile when lines is blank, indicating a binary file7995 raises UnmergeableFile when the file is over 200 KiB7996 when the file contains UTF-8 characters7997 does not raise7998Integrations::SlackSlashCommands7999 behaves like Integrations::BaseSlashCommands8000 Associations8001 is expected to respond to #token8002 default values8003 is expected to eq :chat8004 #valid_token?8005 when the token is empty8006 is false8007 when there is a token8008 accepts equal tokens8009 #trigger8010 no token is passed8011 returns nil8012 with a token passed8013 no user can be found8014 when no url can be generated8015 responds with the authorize url8016 when an auth url can be generated8017 generates the url8018 when the user is authenticated8019 triggers the command8020 when user is blocked8021 behaves like blocks command execution8022 is expected to match "you do not have access to the GitLab project"8023 when user is deactivated8024 behaves like blocks command execution8025 is expected to match "your http://localhost account needs to be reactivated"8026 #trigger8027 when an auth url is generated8028 uses slack compatible links8029Gitlab::Ci::Pipeline::Chain::EvaluateWorkflowRules8030 #perform!8031 when pipeline has been skipped by workflow configuration8032 does not save the pipeline8033 breaks the chain8034 attaches an error to the pipeline8035 saves workflow_rules_result8036 when pipeline has not been skipped by workflow configuration8037 continues the pipeline processing chain8038 does not skip the pipeline8039 attaches no errors8040 saves workflow_rules_result8041Files::CreateService8042 #execute8043 when file matches LFS filter8044 with LFS disabled8045 skips gitattributes check8046 doesn't create LFS pointers8047 with LFS enabled8048 creates an LFS pointer8049 creates an LfsObject with the file's content8050 links the LfsObject to the project8051 commit attribute8052 uses the commit email8053Ci::CreatePipelineService8054 dry run8055 when pipeline is valid8056 returns a valid pipeline8057 behaves like returns a non persisted pipeline8058 does not persist the pipeline8059 does not process the pipeline8060 does not schedule merge request head pipeline update8061 when pipeline is not valid8062 when there are syntax errors8063 returns a pipeline with errors8064 behaves like returns a non persisted pipeline8065 does not persist the pipeline8066 does not process the pipeline8067 does not schedule merge request head pipeline update8068 when there are logical errors8069 returns a pipeline with errors8070 behaves like returns a non persisted pipeline8071 does not persist the pipeline8072 does not process the pipeline8073 does not schedule merge request head pipeline update8074 when there are errors at the seeding stage8075 returns a pipeline with errors8076 behaves like returns a non persisted pipeline8077 does not persist the pipeline8078 does not process the pipeline8079 does not schedule merge request head pipeline update8080MergeRequestMergeabilityCheckWorker8081 #perform8082 when merge request does not exist8083 does not execute MergeabilityCheckService8084 when merge request exists8085 executes MergeabilityCheckService8086 structurally logs a failed mergeability check8087 behaves like an idempotent worker8088 is labeled as idempotent8089 performs multiple times sequentially without raising an exception8090 is mergeable8091Spam::AkismetService8092 #spam?8093 behaves like no activity if Akismet is not enabled8094 is automatically false8095 performs no check8096 if Akismet is enabled8097 correctly transforms options for the akismet client, including spelling of referrer key8098 the text is spam8099 is expected to be truthy8100 the text is blatant spam8101 is expected to be truthy8102 the text is not spam8103 is expected to be falsey8104 error handling8105 StandardError other than ArgumentError is raised8106 is expected to be falsey8107 logs an error8108 ArgumentError is raised in dev8109 raises original error8110 #submit_ham8111 behaves like no activity if Akismet is not enabled8112 is automatically false8113 performs no check8114 behaves like false if Akismet is not available8115 if Akismet is not available8116 is expected to be falsey8117 logs an error8118 if Akismet is available8119 is expected to be truthy8120 #submit_spam8121 behaves like no activity if Akismet is not enabled8122 is automatically false8123 performs no check8124 behaves like false if Akismet is not available8125 if Akismet is not available8126 is expected to be falsey8127 logs an error8128 if Akismet is available8129 is expected to be truthy8130BulkImports::Projects::Pipelines::IssuesPipeline8131 #run8132 imports issue into destination project8133 zoom meetings8134 restores zoom meetings8135 sentry issue8136 restores sentry issue information8137 award emoji8138 has award emoji on an issue8139 issue state8140 restores issue state8141 labels8142 restores issue labels8143 milestone8144 restores issue milestone8145 timelogs8146 restores issue timelogs8147 notes8148 restores issue notes and their award emoji8149 when importing an issue with one award emoji and other relations with one item8150 saves properly8151Resolvers::SnippetsResolver8152 #resolve8153 calls SnippetsFinder8154 when using no filter8155 returns expected snippets8156 when using filters8157 returns the snippets by type8158 returns the snippets by visibility8159 returns snippets to explore8160 returns the snippets by single gid8161 returns the snippets by array of gid8162 generates an error if both project and author are provided8163 by author id8164 returns the snippets8165 by project id8166 returns the snippets8167Gitlab::Metrics::Methods8168 #define_metrics8169 metrics access method not defined8170 defines metrics accessing method8171 metrics access method defined8172 raises error when trying to redefine method8173 metric is not cached8174 calls fetch_metric8175 metric is cached8176 returns cached metric8177 #fetch_metric8178 when counter is not cached8179 initializes counter metric8180 when counter is cached8181 uses class metric cache8182 when metric is reloaded8183 initializes counter metric8184 when metric is configured with feature8185 when feature is enabled8186DEPRECATION WARNING: Invalid Feature Flag some_metric_feature stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:49)8187 initializes counter metric8188 when feature is disabled8189DEPRECATION WARNING: Invalid Feature Flag some_metric_feature stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:49)8190 returns NullMetric8191 #define_metrics8192 metrics access method not defined8193 defines metrics accessing method8194 metrics access method defined8195 raises error when trying to redefine method8196 metric is not cached8197 calls fetch_metric8198 metric is cached8199 returns cached metric8200 #fetch_metric8201 when gauge is not cached8202 initializes counter metric8203 when gauge is cached8204 uses class metric cache8205 when metric is reloaded8206 initializes gauge metric8207 when metric is configured with feature8208 when feature is enabled8209DEPRECATION WARNING: Invalid Feature Flag some_metric_feature stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:49)8210 initializes gauge metric8211 when feature is disabled8212DEPRECATION WARNING: Invalid Feature Flag some_metric_feature stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:49)8213 returns NullMetric8214 #define_metrics8215 metrics access method not defined8216 defines metrics accessing method8217 metrics access method defined8218 raises error when trying to redefine method8219 metric is not cached8220 calls fetch_metric8221 metric is cached8222 returns cached metric8223 #fetch_metric8224 when histogram is not cached8225 initializes counter metric8226 when histogram is cached8227 uses class metric cache8228 when metric is reloaded8229 initializes histogram metric8230 when metric is configured with feature8231 when feature is enabled8232DEPRECATION WARNING: Invalid Feature Flag some_metric_feature stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:49)8233 initializes histogram metric8234 when feature is disabled8235DEPRECATION WARNING: Invalid Feature Flag some_metric_feature stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:49)8236 returns NullMetric8237Gitlab::Cleanup::OrphanLfsFileReferences8238 dry run8239 prints messages and does not delete references8240 regular run8241 prints messages and deletes invalid reference8242 does nothing if the project has no LFS objects8243 LFS object is in design repository8244 is not removed8245 LFS object is in wiki repository8246 is not removed8247 LFS for project snippets8248 is disabled8249WorkItems::ImportCsvService8250 # order random8251 #execute8252 when user has permission8253 behaves like importer with email notification8254 notifies user of import result8255 when file format is valid8256 when work item types are available8257 creates the expected number of work items8258 sets work item attributes8259 when csv contains work item types that are missing or not available8260 creates no work items8261 returns the correct result8262 when file is missing necessary headers8263 creates no records8264 creates no work items8265 when import_export_work_items_csv feature flag is off8266 raises an error8267 when user does not have permission8268 raises an error8269Ci::CreatePipelineService8270 rate limiting8271 when user is under the limit8272 allows pipeline creation8273 when user is over the limit8274 blocks pipeline creation8275 with different users8276 allows other members to create pipelines8277 with different commits8278 allows user to create pipeline8279 with different projects8280 allows user to create pipeline8281Atlassian::JiraConnect::Serializers::DeploymentEntity8282 # order random8283 #issue_keys8284 extracts issue keys from the commits8285 limits the number of commits scanned8286 when deploy happened at an older commit8287 extracts only issue keys from that commit or older8288 when the deployment has an associated merge request8289 includes issue keys extracted from the merge request8290 when there was a successful deploy to the environment8291 behaves like extracts only issue keys from commits made since that deployment8292 is expected to contain exactly "add a" and "add d"8293 when the deploy was for a different environment8294 behaves like ignores that deployment8295 is expected to contain exactly "add a", "add d", and "added"8296 when the deploy was for a different branch or tag8297 behaves like ignores that deployment8298 is expected to contain exactly "add a", "add d", and "added"8299 when the deploy was not successful8300 behaves like ignores that deployment8301 is expected to contain exactly "add a", "add d", and "added"8302 when the deploy commit cannot be found8303 behaves like ignores that deployment8304 is expected to contain exactly "add a", "add d", and "added"8305 when there is a more recent deployment8306 extracts only issue keys from commits made since that deployment8307 #to_json8308 when the deployment does not belong to any Jira issue8309 can encode the object8310 is invalid, since it has no issue keys8311 when the deployment belongs to Jira issue8312 is valid according to the deployment info schema8313 when deployment is an external deployment8314 does not raise errors when serializing8315 environment type8316 tier: "other", env_type: "unmapped"8317 has the same type as the environment tier8318HtmlEscapedHelpers8319 # order random8320 #ensure_no_html_escaped_tags!8321 when content contains HTML escaped chars8322 raises an exception8323 when content does not contain HTML escaped tags8324 does not raise anything8325 #match_html_escaped_tags8326 content: nil, expected_match: nil8327 is expected to eq nil8328 content: "", expected_match: nil8329 is expected to eq nil8330 content: "<a href", expected_match: nil8331 is expected to eq nil8332 content: "<span href", expected_match: nil8333 is expected to eq nil8334 content: "</a>", expected_match: nil8335 is expected to eq nil8336 content: "<a href", expected_match: "<a"8337 is expected to eq "<a"8338 content: "<span href", expected_match: "<span"8339 is expected to eq "<span"8340 content: "< span", expected_match: "< span"8341 is expected to eq "< span"8342 content: "some text <a href", expected_match: "<a"8343 is expected to eq "<a"8344 content: "some text \"<a href", expected_match: "<a"8345 is expected to eq "<a"8346 content: "</a&glt;", expected_match: "</a"8347 is expected to eq "</a"8348 content: "</span>", expected_match: "</span"8349 is expected to eq "</span"8350 content: "< / span>", expected_match: "< / span"8351 is expected to eq "< / span"8352 content: "title=\"<a href", expected_match: nil8353 is expected to eq nil8354 content: "title= \"<a href", expected_match: nil8355 is expected to eq nil8356 content: "title= '<a href", expected_match: nil8357 is expected to eq nil8358 content: "title= '</a", expected_match: nil8359 is expected to eq nil8360 content: "title= '</span", expected_match: nil8361 is expected to eq nil8362 content: "title=\"foo\"><a", expected_match: "<a"8363 is expected to eq "<a"8364 content: "title='foo'>\n<a", expected_match: "<a"8365 is expected to eq "<a"8366Gitlab::BitbucketImport::WikiFormatter8367 #disk_path8368 appends .wiki to disk path8369 #full_path8370 appends .wiki to project path8371 #import_url8372 returns URL of the wiki repository8373Atlassian::JiraConnect::Serializers::BuildEntity8374 when the pipeline does not belong to any Jira issue8375 #issue_keys8376 is empty8377 #to_json8378 can encode the object8379 is invalid, since it has no issue keys8380 when the pipeline does belong to a Jira issue8381 because it belongs to an MR with a jira_branch8382 #issue_keys8383 is not empty8384 #to_json8385 is valid according to the build info schema8386 because it belongs to an MR with a jira_title8387 #issue_keys8388 is not empty8389 #to_json8390 is valid according to the build info schema8391 because it belongs to an MR with a jira_description8392 #issue_keys8393 is not empty8394 #to_json8395 is valid according to the build info schema8396 in the pipeline's commit message8397 #issue_keys8398 is expected to contain exactly "PROJ-1234"8399 #to_json8400 is expected to be valid json and match schema {"additionalProperties"=>false, "properties"=>{"buildNumber"=>{"type"=>"integer"}, "displayName"=>{"t...splayName", "url", "state", "issueKeys", "testInfo", "references", "lastUpdated"], "type"=>"object"}8401Packages::CleanupPackageRegistryWorker8402 #perform8403 with package files pending destruction8404 queues the cleanup job8405 behaves like an idempotent worker8406 is labeled as idempotent8407 performs multiple times sequentially without raising an exception8408 with no package files pending destruction8409 does not queue the cleanup job8410 behaves like an idempotent worker8411 is labeled as idempotent8412 performs multiple times sequentially without raising an exception8413 with runnable policies8414 queues the cleanup job8415 behaves like an idempotent worker8416 is labeled as idempotent8417 performs multiple times sequentially without raising an exception8418 with no runnable policies8419 does not queue the cleanup job8420 counts logging8421 logs all the counts8422 with load balancing enabled8423 reads the count from the replica8424Types::BaseEnum8425 adds a formatted `deprecated_reason` to the subject8426 appends to the description if given8427 does not append to the description if it is absent8428 adds information about the replacement if provided8429 supports named reasons: renamed8430 supports :alpha8431 does not allow :alpha and :deprecated together8432 .from_rails_enum8433 contructs the correct values8434 .declarative_enum8435 #graphql_name8436 when the use_name is `true`8437 changes the graphql_name8438 when the use_name is `false`8439 does not change the graphql_name8440 #description8441 when the use_description is `true`8442 changes the description8443 when the use_description is `false`8444 does not change the description8445 #values8446 sets the values defined by the declarative enum8447 .enum8448 adds all enum values to #enum8449 is a HashWithIndefferentAccess8450 validations8451 raises an informative error if `deprecation_reason` is used8452 raises an error if a required property is missing8453 raises an error if milestone is not a String8454 visible?8455 defaults to true8456 when subject is deprecated8457 defaults to true8458 returns false if `remove_deprecated` is true in context8459Clusters::Agents::Authorizations::CiAccess::ConfigScopes8460 # order random8461 .with_available_ci_access_fields8462 is expected to contain exactly #<Clusters::Agents::Authorizations::CiAccess::ProjectAuthorization id: 1, project_id: 1305, agent_id: 1, config: {"default_namespace"=>"production"}>, #<Clusters::Agents::Authorizations::CiAccess::ProjectAuthorization id: 2, project_id: 1305, agent_id: 2, config: {"access_as"=>{}}>, and #<Clusters::Agents::Authorizations::CiAccess::ProjectAuthorization id: 3, project_id: 1305, agent_id: 3, config: {"access_as"=>{"agent"=>{}}}>8463Gitlab::Ci::Status::Build::Manual8464 #illustration8465 is expected to include :image, :size, :title, and :content8466 when the user can trigger the job8467 when the job has not been played8468 instructs the user about possible actions8469 when the job is retryable8470 instructs the user about possible actions8471 when the user can not trigger the job because of outdated deployment8472 is expected to match /This deployment job does not run automatically and must be started manually, but it's older than the latest deployment, and therefore can't run/8473 when the user can not trigger the job due to another reason8474 informs the user8475 .matches?8476 when build is manual8477 is a correct match8478 when build is not manual8479 does not match8480ServiceDesk::CustomEmailVerifications::CreateService8481 # order random8482 #execute8483 behaves like a verification process that exits early8484 aborts verification process and exits early8485 when feature flag :service_desk_custom_email is disabled8486 behaves like a verification process that exits early8487 aborts verification process and exits early8488 when service desk setting exists8489 aborts verification process and exits early8490 when user has maintainer role in project8491 initiates verification process successfully8492 when providing invalid SMTP credentials8493 behaves like a verification process with ramp up error8494 aborts verification process8495 behaves like a verification process with ramp up error8496 aborts verification process8497 behaves like a verification process with ramp up error8498 aborts verification process8499Gitlab::Analytics::InternalEventsGenerator8500 # order random8501 Creating metric definition file8502 for single time frame8503 creates a metric definition file8504 with time frame "all"8505 creates a total count metric definition file8506 for ultimate only feature8507 creates a metric definition file8508 with invalid time frame8509 raises error8510 with duplicated key path8511 raises error8512 without at least one tier available8513 raises error8514 with unknown tier8515 raises error8516 without obligatory parameter8517 raises error8518 with to short description8519 asks again for description8520 for multiple time frames8521 creates metric definition files8522 with default time frames8523 creates metric definition files8524 Creating event definition file8525 creates an event definition file using the template8526 for ultimate only feature8527 creates an event definition file using the template8528 without default identifiers8529 creates an event definition file using the template8530 with duplicated event8531 in known_events8532 does not create event definition8533 in event definition files8534 raises error8535layouts/devise8536 behaves like a layout which reflects the application theme setting8537 as a themed layout8538 when no theme is explicitly selected8539 renders with the default theme8540 when user is authenticated & has selected a specific theme8541 chosen_theme: #<struct Gitlab::Themes::Theme id=1, name="Indigo", css_class="ui-indigo", css_filename="theme_indigo", primary_color="#222261">8542 renders with the Indigo theme8543 chosen_theme: #<struct Gitlab::Themes::Theme id=6, name="Light Indigo", css_class="ui-light-indigo", css_filename="theme_light_indigo", primary_color="#41419f">8544 renders with the Light Indigo theme8545 chosen_theme: #<struct Gitlab::Themes::Theme id=4, name="Blue", css_class="ui-blue", css_filename="theme_blue", primary_color="#0b2640">8546 renders with the Blue theme8547 chosen_theme: #<struct Gitlab::Themes::Theme id=7, name="Light Blue", css_class="ui-light-blue", css_filename="theme_light_blue", primary_color="#145aa1">8548 renders with the Light Blue theme8549 chosen_theme: #<struct Gitlab::Themes::Theme id=5, name="Green", css_class="ui-green", css_filename="theme_green", primary_color="#0e4328">8550 renders with the Green theme8551 chosen_theme: #<struct Gitlab::Themes::Theme id=8, name="Light Green", css_class="ui-light-green", css_filename="theme_light_green", primary_color="#1b653f">8552 renders with the Light Green theme8553 chosen_theme: #<struct Gitlab::Themes::Theme id=9, name="Red", css_class="ui-red", css_filename="theme_red", primary_color="#580d02">8554 renders with the Red theme8555 chosen_theme: #<struct Gitlab::Themes::Theme id=10, name="Light Red", css_class="ui-light-red", css_filename="theme_light_red", primary_color="#a02e1c">8556 renders with the Light Red theme8557 chosen_theme: #<struct Gitlab::Themes::Theme id=2, name="Gray", css_class="ui-gray", css_filename="theme_gray", primary_color="#333238">8558 renders with the Gray theme8559 chosen_theme: #<struct Gitlab::Themes::Theme id=3, name="Light Gray", css_class="ui-light-gray", css_filename="theme_light_gray", primary_color="#ececef">8560 renders with the Light Gray theme8561 chosen_theme: #<struct Gitlab::Themes::Theme id=11, name="Dark Mode (alpha)", css_class="gl-dark", css_filename=nil, primary_color="#1f1e24">8562 renders with the Dark Mode (alpha) theme8563 behaves like a layout which reflects the preferred language8564 when changing the a preferred language8565 renders the correct `lang` attribute in the html element8566 logo8567 renders GitLab logo8568 with custom logo8569 renders custom logo8570Gitlab::Ci::Pipeline::Seed::Build::Cache8571 #attributes8572 with cache:key8573 is expected to include {:key => "a-key", :paths => ["vendor/ruby"]}8574 with cache:key as a symbol8575 is expected to include {:key => "a_key", :paths => ["vendor/ruby"]}8576 with cache:key:files8577 with existing files8578 behaves like version and gemfile files8579 without a prefix8580 builds a string key with an index and file names as a prefix8581 with files starting with ./8582 behaves like version and gemfile files8583 without a prefix8584 builds a string key with an index and file names as a prefix8585 with no files8586 behaves like default key8587 without a prefix8588 uses default key with an index and file names as a prefix8589 with files ending with /8590 behaves like default key8591 without a prefix8592 uses default key with an index and file names as a prefix8593 with new line in filenames8594 behaves like default key8595 without a prefix8596 uses default key with an index and file names as a prefix8597 with missing files8598 behaves like default key8599 without a prefix8600 uses default key with an index and file names as a prefix8601 with directories8602 with directory8603 behaves like foo/bar directory key8604 without a prefix8605 builds a string key with an index and file names as a prefix8606 with directory ending in slash8607 behaves like foo/bar directory key8608 without a prefix8609 builds a string key with an index and file names as a prefix8610 with directories ending in slash star8611 behaves like foo/bar directory key8612 without a prefix8613 builds a string key with an index and file names as a prefix8614 with cache:key:prefix8615 without files8616 adds prefix to default key8617 with existing files8618 adds prefix key8619 with missing files8620 adds prefix to default key8621 with cache:fallback_keys8622 is expected to include {:key => "ruby-branch-key", :paths => ["vendor/ruby"], :fallback_keys => ["ruby-default"]}8623 with all cache option keys8624 is expected to include {:key => "a-key", :paths => ["vendor/ruby"], :untracked => true, :policy => "push", :unprotect => true, :when => "on_success", :fallback_keys => ["default-ruby"]}8625 with unknown cache option keys8626 is expected to raise ArgumentError with message matching /unknown_key/8627Gitlab::Ci::Matching::RunnerMatcher8628 .new8629 when attributes are missing8630 is expected to raise KeyError8631 with attributes8632 is expected to eq [1]8633 is expected to eq "instance_type"8634 is expected to eq 08635 is expected to eq 18636 is expected to eq false8637 is expected to eq "ref_protected"8638 is expected to eq ["tag1", "tag2"]8639 #instance_type?8640 is expected to be truthy8641 context with private runners8642 is expected to be falsey8643 #matches?8644 with an instance of BuildMatcher8645 ref_protected: true, build_protected: true, run_untagged: true, runner_tags: [], build_tags: [], result: true8646 is expected to eq true8647 ref_protected: true, build_protected: false, run_untagged: true, runner_tags: [], build_tags: [], result: false8648 is expected to eq false8649 ref_protected: false, build_protected: true, run_untagged: true, runner_tags: [], build_tags: [], result: true8650 is expected to eq true8651 ref_protected: false, build_protected: false, run_untagged: true, runner_tags: [], build_tags: [], result: true8652 is expected to eq true8653 ref_protected: true, build_protected: true, run_untagged: true, runner_tags: [], build_tags: [], result: true8654 is expected to eq true8655 ref_protected: true, build_protected: true, run_untagged: true, runner_tags: [], build_tags: ["a"], result: false8656 is expected to eq false8657 ref_protected: true, build_protected: true, run_untagged: true, runner_tags: ["a", "b"], build_tags: ["a"], result: true8658 is expected to eq true8659 ref_protected: true, build_protected: true, run_untagged: true, runner_tags: ["a"], build_tags: ["a", "b"], result: false8660 is expected to eq false8661 ref_protected: true, build_protected: true, run_untagged: true, runner_tags: ["a"], build_tags: ["a"], result: true8662 is expected to eq true8663 ref_protected: true, build_protected: true, run_untagged: false, runner_tags: ["a"], build_tags: ["a"], result: true8664 is expected to eq true8665 ref_protected: true, build_protected: true, run_untagged: false, runner_tags: ["b"], build_tags: ["a"], result: false8666 is expected to eq false8667 ref_protected: true, build_protected: true, run_untagged: false, runner_tags: ["a", "b"], build_tags: ["a"], result: true8668 is expected to eq true8669 with an instance of Ci::Build8670 raises ArgumentError8671Releases::Links::DestroyService8672 # order random8673 #execute8674 successfully deletes a release link8675 when user does not have access to delete release link8676 returns an error8677 when release link does not exist8678 returns an error8679 when release link deletion failed8680 returns an error8681Gitlab::Usage::Metrics::Instrumentations::CountImportedProjectsTotalMetric8682 with all time frame8683 behaves like a correct instrumented metric value and query8684 behaves like a correct instrumented metric value8685 has correct value8686 behaves like a correct instrumented metric query8687 has correct generate query8688 for 28d time frame8689 behaves like a correct instrumented metric value and query8690 behaves like a correct instrumented metric value8691 has correct value8692 behaves like a correct instrumented metric query8693 has correct generate query8694Packages::CreateEventService8695 #execute8696 with a user8697 behaves like redis package unique event creation8698 tracks the event8699 behaves like redis package count event creation8700 tracks the event8701 with a deploy token8702 behaves like redis package unique event creation8703 tracks the event8704 behaves like redis package count event creation8705 tracks the event8706 with no user8707 behaves like redis package count event creation8708 tracks the event8709 with a package as scope8710 as guest8711 behaves like redis package count event creation8712 tracks the event8713 with user8714 behaves like redis package unique event creation8715 tracks the event8716 behaves like redis package count event creation8717 tracks the event8718Types::QueryType8719 is called Query8720 has the expected fields8721 namespace field8722 finds namespaces by full path8723 organization field8724 finds organization by path8725 project field8726 finds projects by full path8727 metadata field8728 returns metadata8729 issue field8730 finds an issue by it's gid8731 merge_request field8732 finds a merge_request by it's gid8733 usage_trends_measurements field8734 returns usage trends measurements8735 runner field8736 is expected to have graphql type Types::Ci::RunnerType8737 runners field8738 is expected to have graphql type #<Class:0x00007959cd0ff5f0>8739 runner_platforms field8740 returns runner platforms8741 runner_setup field8742 returns runner setup instructions8743 container_repository field8744 is expected to have graphql type Types::ContainerRepositoryDetailsType8745 package field8746 is expected to have graphql type Types::Packages::PackageDetailsType8747 timelogs field8748 returns timelogs8749 boardList field8750 finds a board list by its gid8751Resolvers::Clusters::AgentsResolver8752 is expected to have nullable GraphQL type ClusterAgentConnection8753 is expected to include :lookahead8754 #resolve8755 the current user has access to clusters8756 finds all agents8757 the current user does not have access to clusters8758 returns an empty result8759Resolvers::Clusters::AgentsResolver.single8760 is expected to be < Resolvers::Clusters::AgentsResolver8761 is expected to eq Types::Clusters::AgentType8762 is expected to eq true8763 is expected to include :lookahead8764 arguments8765 name8766 is expected to be present8767Gitlab::Metrics::Exporter::BaseExporter8768 when exporter is enabled8769 when exporter is stopped8770 #start8771 starts the exporter8772 with custom settings8773 starts server with port and address from settings8774 logging enabled8775 configures a WEBrick logger with the given file8776 logs any errors during startup8777 logging disabled8778 configures a WEBrick logger with the null device8779 with TLS enabled8780 injects the necessary OpenSSL config for WEBrick8781 with intermediate certificates8782 injects them in the extra chain8783 when thread is not alive8784 does close listeners8785 #stop8786 doesn't shutdown stopped server8787 when exporter is running8788 #start8789 doesn't start running server8790 #stop8791 shutdowns server8792 request handling8793 method_class: Net::HTTP::Get, path: "/metrics", http_status: 2008794 responds with proper http_status8795 collects request metrics8796 method_class: Net::HTTP::Get, path: "/", http_status: 4048797 responds with proper http_status8798 collects request metrics8799 when exporter is disabled8800 #start8801 doesn't start8802 #stop8803 doesn't shutdown8804Resolvers::ProjectPackagesResolver8805 #resolve8806 behaves like group and projects packages resolver8807 without sort8808 returns the proper packages8809 with sorting and filtering8810 CREATED_DESC8811 is expected to eq [#<Packages::Package id: 96, project_id: 1329, created_at: "2023-10-20 08:00:53.026254033 +0000", upd...e_type: "conan", creator_id: 1414, status: "default", last_downloaded_at: nil, status_message: nil>]8812 NAME_DESC8813 is expected to eq [#<Packages::Package id: 96, project_id: 1329, created_at: "2023-10-20 08:00:53.026254033 +0000", upd...e_type: "conan", creator_id: 1414, status: "default", last_downloaded_at: nil, status_message: nil>]8814 VERSION_DESC8815 is expected to eq [#<Packages::Package id: 96, project_id: 1329, created_at: "2023-10-20 08:00:53.026254033 +0000", upd...e_type: "conan", creator_id: 1414, status: "default", last_downloaded_at: nil, status_message: nil>]8816 TYPE_ASC8817 is expected to eq [#<Packages::Package id: 96, project_id: 1329, created_at: "2023-10-20 08:00:53.026254033 +0000", upd...e_type: "conan", creator_id: 1414, status: "default", last_downloaded_at: nil, status_message: nil>]8818 CREATED_ASC8819 is expected to eq [#<Packages::Package id: 94, project_id: 1329, created_at: "2023-10-19 09:00:52.619421517 +0000", upd...age_type: "maven", creator_id: 1414, status: "error", last_downloaded_at: nil, status_message: nil>]8820 NAME_ASC8821 is expected to eq [#<Packages::Package id: 94, project_id: 1329, created_at: "2023-10-19 09:00:52.619421517 +0000", upd...age_type: "maven", creator_id: 1414, status: "error", last_downloaded_at: nil, status_message: nil>]8822 VERSION_ASC8823 is expected to eq [#<Packages::Package id: 94, project_id: 1329, created_at: "2023-10-19 09:00:52.619421517 +0000", upd...age_type: "maven", creator_id: 1414, status: "error", last_downloaded_at: nil, status_message: nil>]8824 TYPE_DESC8825 is expected to eq [#<Packages::Package id: 94, project_id: 1329, created_at: "2023-10-19 09:00:52.619421517 +0000", upd...age_type: "maven", creator_id: 1414, status: "error", last_downloaded_at: nil, status_message: nil>]8826 filter by package_name8827 is expected to eq [#<Packages::Package id: 94, project_id: 1329, created_at: "2023-10-19 09:00:52.619421517 +0000", upd...e_type: "conan", creator_id: 1414, status: "default", last_downloaded_at: nil, status_message: nil>]8828 filter by package_type8829 is expected to eq [#<Packages::Package id: 94, project_id: 1329, created_at: "2023-10-19 09:00:52.619421517 +0000", upd...e_type: "conan", creator_id: 1414, status: "default", last_downloaded_at: nil, status_message: nil>]8830 filter by status8831 is expected to eq [#<Packages::Package id: 96, project_id: 1329, created_at: "2023-10-20 08:00:53.026254033 +0000", upd...age_type: "maven", creator_id: 1414, status: "error", last_downloaded_at: nil, status_message: nil>]8832 include_versionless8833 is expected to include #<Packages::Package id: 98, project_id: 1329, created_at: "2023-10-20 08:59:53.420438511 +0000", upda...ge_type: "maven", creator_id: 1414, status: "default", last_downloaded_at: nil, status_message: nil>8834Resolvers::GroupMembersResolver8835 is expected to have nullable GraphQL type GroupMemberConnection8836 behaves like querying members with a group8837 #resolve8838 finds all resource members8839 with sort options8840 searches users by user name8841 with search8842 when the search term matches a user8843 searches users by user name8844 when the search term does not match any user8845 is empty8846 when user can not see resource members8847 generates an error8848Gitlab::Ci::Parsers::Security::Sast8849 #parse!8850 when passing valid report8851 report_format: :sast, report_version: "15.0.0", scanner_length: 1, finding_length: 5, identifier_length: 6, file_path: "groovy/src/main/java/com/gitlab/security_products/tests/App.groovy", start_line: 47, end_line: 47, primary_identifiers_length: nil8852 parses all identifiers and findings8853 generates expected location8854 generates expected metadata_version8855 report_format: :sast_semgrep_for_multiple_findings, report_version: "15.0.4", scanner_length: 1, finding_length: 2, identifier_length: 6, file_path: "app/app.py", start_line: 39, end_line: nil, primary_identifiers_length: 28856 parses all identifiers and findings8857 generates expected location8858 generates expected metadata_version8859 when parsing an empty report8860 is expected to be empty8861Gitlab::Pagination::Keyset::SimpleOrderBuilder8862 when no order present8863 orders by primary key8864 sets the column definition distinct and not nullable8865 when the order scope's model uses default_scope8866 orders by primary key8867 when primary key order present8868 orders by primary key without altering the direction8869 when ordered by other column8870 adds extra primary key order as tie-breaker8871 sets the column definition for created_at non-distinct and nullable8872 when ordered by two columns where the last one is the tie breaker8873 preserves the order8874 when non-nullable column is given8875 sets the column definition for namespace_id non-distinct and non-nullable8876 when ordering by a column with the lower named function8877 sets the column definition for name8878 adds extra primary key order as tie-breaker8879 NULLS order given as as an Arel node8880 when NULLS LAST order is given without a tie-breaker8881 sets the column definition for created_at appropriately8882 orders by primary key8883 when NULLS FIRST order is given with a tie-breaker8884 sets the column definition for created_at appropriately8885 orders by the given primary key8886 return :unable_to_order symbol when order cannot be built8887 when raw SQL order is given8888 is expected to eq false8889 when an invalid NULLS order is given8890 scope: lazy { Project.order(Arel.sql('projects.updated_at created_at Asc Nulls Last')) }8891 is expected to eq false8892 scope: lazy { Project.order(Arel.sql('projects.created_at ZZZ NULLS FIRST')) }8893 is expected to eq false8894 scope: lazy { Project.order(Arel.sql('projects.relative_position ASC NULLS LAST')) }8895 is expected to eq false8896 when more than 2 columns are given for the order8897 is expected to eq false8898Gitlab::Ci::Badge::Coverage::Template8899 behaves like a badge template8900 #key_text8901 says coverage by default8902 when custom key_text is defined8903 returns custom value8904 when its size is larger than the max allowed value8905 returns default value8906 #key_width8907 is fixed by default8908 when custom key_width is defined8909 returns custom value8910 when it is larger than the max allowed value8911 returns default value8912 #value_text8913 when coverage is known8914 returns coverage percentage8915 when coverage is known to many digits8916 returns rounded coverage percentage8917 when coverage is unknown8918 returns string that says coverage is unknown8919 #value_width8920 when coverage is known8921 is narrower when coverage is known8922 when coverage is unknown8923 is wider when coverage is unknown to fit text8924 #key_color8925 always has the same color8926 #value_color8927 when coverage is good8928 is green8929 when coverage is acceptable8930 is green-orange8931 when coverage is medium8932 is orange-yellow8933 when coverage is low8934 is red8935 when coverage is unknown8936 is grey8937 #width8938 when coverage is known8939 returns the key width plus value width8940 when coverage is unknown8941 returns key width plus wider value width8942Admin::AbuseReports::UpdateService8943 # order random8944 #execute8945 with invalid parameters8946 invalid user8947 when no user is given8948 behaves like returns an error response8949 returns an error response8950 when given user is not an admin8951 behaves like returns an error response8952 returns an error response8953 invalid label_ids8954 does not update the abuse report8955 is expected to be success8956 with valid parameters8957 when label_ids is empty8958 when abuse report has existing labels8959 clears the abuse report labels8960 is expected to be success8961 when abuse report has no existing labels8962 does not update the abuse report8963 is expected to be success8964 when label_ids is not empty8965 updates the abuse report8966 is expected to be success8967Branches::ValidateNewService8968 #execute8969 validation8970 returns error with an invalid branch name8971 returns success with a valid branch name8972 branch exist8973 returns error when branch exists8974 returns success when branch name is available8975WorkItems::Widgets::CurrentUserTodosService::UpdateService8976 # order random8977 #before_update_in_transaction8978 when adding a todo8979 when user has no access8980 does add a todo8981 when user has access8982 creates a new todo for the user and the work item8983 when marking as done8984 when user has no access8985 does not change todo status8986 when resolving all todos of the work item8987 resolves todos of the user for the work item8988 when resolving a specific todo8989 resolves todos of the user for the work item8990GroupDeployKey8991 is expected to validate that :user cannot be empty/falsy8992 is expected to belong to user required: false8993 is expected to have many groups8994 is of type DeployKey8995 #group_deploy_keys_group_for8996 when this group deploy key is linked to a given group8997 returns the relevant group_deploy_keys_group association8998 when this group deploy key is not linked to a given group8999 is expected to be nil9000 .defined_enums9001 excludes the inherited enum9002 #can_be_edited_for9003 when a given user has the :update_group_deploy_key permission for that key9004 is true9005 when a given user does not have the :update_group_deploy_key permission for that key9006 is true when this user has the :update_group_deploy_key_for_group permission for this group9007 is false when this user does not have the :update_group_deploy_key_for_group permission for this group9008 #group_deploy_keys_groups_for_user9009 when a group has a group deploy key9010 returns the related group_deploy_keys_group association when the user can read the group9011 does not return the related group_deploy_keys_group association when the user cannot read the group9012 .for_groups9013 when group deploy keys are enabled for some groups9014 returns these group deploy keys9015API::Helpers::Packages::Npm9016 # order random9017 #finder_for_endpoint_scope9018 when called with project scope9019 returns a PackageFinder for project scope9020 when called with instance scope9021 returns a PackageFinder for namespace scope9022 when called with group scope9023 returns a PackageFinder for group scope9024 #project_id_or_nil9025 when called with project scope9026 is expected to eq 13519027 when called with group scope9028 is expected to eq 13519029 when called with instance scope9030 when given an unscoped name9031 is expected to eq nil9032 when given a scope that does not match a group name9033 is expected to eq nil9034 when given a scope that matches a group name9035 is expected to eq 13519036 with another package with the same name, in another project in the namespace9037 returns the project id for the newest matching package within the scope9038 with npm_allow_packages_in_multiple_projects disabled9039 when given an unscoped name9040 is expected to eq nil9041 when given a scope that does not match a group name9042 is expected to eq nil9043 when given a scope that matches a group name9044 is expected to eq 13519045 with another package with the same name, in another project in the namespace9046 returns the project id for the newest matching package within the scope9047 #enqueue_sync_metadata_cache_worker9048 behaves like enqueue a worker to sync a metadata cache9049 enqueues a worker to create a metadata cache9050 with npm_metadata_cache disabled9051 behaves like does not enqueue a worker to sync a metadata cache9052 does not enqueue a worker to sync a metadata cache9053projects/hooks/edit9054 renders webhook page with "Recent events"9055 webhook is rate limited9056 renders alert9057 webhook is permanently disabled9058 renders alert9059 webhook is temporarily disabled9060 renders alert9061Mutations::Environments::Update9062 # order random9063 #resolve9064 when service execution succeeded9065 returns no errors9066 updates the environment9067 when service cannot update the attribute9068 returns an error9069 when setting cluster agent ID to the environment9070 sets the cluster agent to the environment9071 when unsetting cluster agent ID to the environment9072 removes the cluster agent from the environment9073 when the cluster agent is not updated9074 does not change the environment cluster agent9075 when user is reporter who does not have permission to access the environment9076 raises an error9077Gitlab::SlashCommands::IssueShow9078 #execute9079 the issue exists9080 returns the issue9081 when its reference is given9082 shows the issue9083 the issue does not exist9084 returns not found9085 .match9086 matches the iid9087 accepts a reference9088Projects::TriggeredHooks9089 executes hooks by scope9090 applies branch filters, when they match9091 applies branch filters, when they do not match9092 with emoji hooks9093 executes hook9094 when emoji_webhooks feature flag is disabled9095 does not execute the hook9096 when emoji_webhooks feature flag is enabled for the project9097 executes the hook9098WorkItems::Widgets::AssigneesService::UpdateService9099 #before_update_in_transaction9100 updates the assignees and sets updated_at to the current time9101 when passing an empty array9102 removes existing assignees9103 when user does not have access9104 does not update the assignees9105 when multiple assignees are given9106 when work item allows multiple assignees9107 sets all the given assignees9108 when work item does not allow multiple assignees9109 only sets the first assignee9110 when assignee does not have access to the work item9111 does not set the assignee9112 when assignee ids are the same as the existing ones9113 does not touch updated_at9114 when widget does not exist in new type9115 resets the work item's assignees9116Gitlab::Ci::Variables::Builder::Group9117 #secret_variables9118 when the ref is not protected9119 contains only the CI variables9120 when the ref is protected9121 contains all the variables9122 when environment name is specified9123 when environment scope is exactly matched9124 is expected to contain exactly #<Gitlab::Ci::Variables::Collection::Item:0x00007959c642f268 @variable={:key=>"VARIABLE_1", :value=>"secret", :public=>false, :file=>false, :masked=>false, :raw=>false}>9125 when environment scope is matched by wildcard9126 is expected to contain exactly #<Gitlab::Ci::Variables::Collection::Item:0x00007959cd163820 @variable={:key=>"VARIABLE_1", :value=>"secret", :public=>false, :file=>false, :masked=>false, :raw=>false}>9127 when environment scope does not match9128 is expected not to contain exactly #<Gitlab::Ci::Variables::Collection::Item:0x00007959c52066b8 @variable={:key=>"VARIABLE_1", :value=>"secret", :public=>false, :file=>false, :masked=>false, :raw=>false}>9129 when environment scope has _9130 does not treat it as wildcard9131 when environment name contains underscore9132 matches literally for _9133 when environment scope has %9134 does not treat it as wildcard9135 when environment name contains a percent9136 matches literally for _9137 when variables with the same name have different environment scopes9138 orders the variables from least to most matched9139 when group has children9140 traversal queries9141 returns all variables belonging to the group and parent groups9142Gitlab::Auth::Result9143 when actor is User9144 returns auth_user9145 does not return deploy token9146 when actor is Deploy token9147 returns deploy token9148 does not return auth_user9149 #authentication_abilities_include?9150 when authentication abilities are empty9151 returns false9152 when authentication abilities are not empty9153 returns false when ability is not allowed9154 returns true when ability is allowed9155 #can_perform_action_on_project?9156 returns if actor can do perform given action on given project9157 returns if actor cannot do perform given action on given project9158 #can?9159 returns if actor can do perform given action on given project9160 returns if actor cannot do perform given action on given project9161Packages::Policies::GroupPolicy9162 read_package9163 with admin9164 when admin mode is enabled9165 is expected to be allowed :read_package9166 when admin mode is disabled9167 is expected to be disallowed :read_package9168 with owner9169 is expected to be allowed :read_package9170 with maintainer9171 is expected to be allowed :read_package9172 with reporter9173 is expected to be allowed :read_package9174 with guest9175 is expected to be disallowed :read_package9176 with non member9177 is expected to be disallowed :read_package9178 with anonymous9179 is expected to be disallowed :read_package9180 deploy token access9181 when a deploy token with read_package_registry scope9182 is expected to be allowed :read_package9183 when a deploy token with write_package_registry scope9184 is expected to be allowed :read_package9185Gitlab::HookData::UserBuilder9186 #build9187 data9188 on create9189 is expected to eq "user_create"9190 behaves like includes the required attributes9191 includes the required attributes9192 behaves like does not include old username attributes9193 does not include old username attributes9194 behaves like does not include state attributes9195 does not include state attributes9196 on destroy9197 is expected to eq "user_destroy"9198 behaves like includes the required attributes9199 includes the required attributes9200 behaves like does not include old username attributes9201 does not include old username attributes9202 behaves like does not include state attributes9203 does not include state attributes9204 on rename9205 is expected to eq "user_rename"9206 includes old username details9207 behaves like includes the required attributes9208 includes the required attributes9209 behaves like does not include state attributes9210 does not include state attributes9211 on failed_login9212 is expected to eq "user_failed_login"9213 includes state details9214 behaves like includes the required attributes9215 includes the required attributes9216 behaves like does not include old username attributes9217 does not include old username attributes9218Gitlab::Database::Partitioning::CiSlidingListStrategy9219 # order random9220 #validate_and_fix9221 does not call change_column_default9222 #extra_partitions9223 when all partitions are true for detach_partition_if9224 is expected to be empty9225 when all partitions are false for detach_partition_if9226 is expected to be empty9227 #active_partition9228 is the partition with the largest value9229 attributes9230 is expected to have attributes {:analyze_interval => 1 week, :detach_partition_if => #<Proc:0x00007959a5c20650 /builds/gitlab-org/gitlab...database/partitioning/ci_sliding_list_strategy_spec.rb:181 (lambda)>, :partitioning_key => :partition}9231 #missing_partitions9232 when next_partition_if returns true9233 is a partition definition for the next partition in the series9234 when next_partition_if returns false9235 is empty9236 when there are no partitions for the table9237 returns a partition for value 19238 #initial_partition9239 starts with the value 1009240 with routing tables9241 removes the prefix9242 #current_partitions9243 detects both partitions9244 #ensure_partitioning_column_ignored_or_readonly!9245 does not raise when the column is not ignored9246 #next_partition9247 is one after the active partition9248 with routing tables9249 removes the prefix9250Gitlab::Database::MigrationHelpers::ConvertToBigint9251 # order random9252 #temp_column_removed?9253 return true when column is not present9254 return false when column present9255 #columns_swapped?9256 returns true if columns are already swapped9257 returns false if columns are not yet swapped9258 #com_or_dev_or_test_but_not_jh?9259 dot_com: true, dev_or_test: true, jh: true, expectation: true9260 returns true for GitLab.com (but not JH), dev, or test9261 dot_com: true, dev_or_test: false, jh: true, expectation: false9262 returns true for GitLab.com (but not JH), dev, or test9263 dot_com: false, dev_or_test: true, jh: true, expectation: true9264 returns true for GitLab.com (but not JH), dev, or test9265 dot_com: false, dev_or_test: false, jh: true, expectation: false9266 returns true for GitLab.com (but not JH), dev, or test9267 dot_com: true, dev_or_test: true, jh: false, expectation: true9268 returns true for GitLab.com (but not JH), dev, or test9269 dot_com: true, dev_or_test: false, jh: false, expectation: true9270 returns true for GitLab.com (but not JH), dev, or test9271 dot_com: false, dev_or_test: true, jh: false, expectation: true9272 returns true for GitLab.com (but not JH), dev, or test9273 dot_com: false, dev_or_test: false, jh: false, expectation: false9274 returns true for GitLab.com (but not JH), dev, or test9275Resolvers::ProjectMergeRequestsResolver9276 by assignee9277 filters merge requests by assignee username9278 does not find anything9279 by author9280 filters merge requests by author username9281 does not find anything9282 by reviewer9283 filters merge requests by reviewer username9284 does not find anything9285Gitlab::Import::MergeRequestHelpers9286 .create_merge_request_without_hooks9287 when merge request does not exist9288 returns a new object9289 does load all existing objects9290 when merge request does exist9291 returns an existing object9292 when project is deleted9293 returns an existing object9294 .insert_merge_request_reviewers9295 when reviewers are not present9296 does not insert reviewers9297 when reviewers are present9298 inserts reviewers9299SshKeys::ExpiredNotificationWorker9300 uses a cronjob queue9301 #perform9302 with a large batch9303 updates all keys regardless of batch size9304 with expiring key today9305 invoke the notification service9306 updates notified column9307 is labeled as idempotent9308 performs multiple times sequentially without raising an exception9309 when key has expired in the past9310 does not update notified column9311 when key has already been notified of expiration9312 does not update notified column9313Gitlab::Database::AsyncIndexes9314 .create_pending_indexes!9315 takes 2 pending indexes and creates those9316 .drop_pending_indexes!9317 takes 2 pending indexes and destroys those9318 .execute_pending_actions!9319 with one entry9320 executes instructions ordered by attempts and ids9321 with two entries9322 executes instructions ordered by attempts9323 when the budget allows more instructions9324 retries failed attempts9325SystemCheck::App::GitUserDefaultSSHConfigCheck9326 only whitelists safe files9327 #skip?9328 user_exists: true, home_dir_exists: true9329 is expected to eq false9330 user_exists: true, home_dir_exists: false9331 is expected to eq true9332 user_exists: false, home_dir_exists: true9333 is expected to eq true9334 user_exists: false, home_dir_exists: false9335 is expected to eq true9336 #check?9337 fails if a forbidden file exists9338 succeeds if the SSH directory doesn't exist9339 succeeds if all the whitelisted files exist9340 #show_error9341 outputs error information9342Gitlab::Graphql::Loaders::LazyRelationLoader9343 # order random9344 #load9345 when the association is has many9346 is expected to be an instance of Gitlab::Graphql::Loaders::LazyRelationLoader::RelationProxy9347 #relation9348 without arguments9349 is expected to contain exactly #<Issue id:197 namespace664/project-1581#1> and #<Issue id:198 namespace664/project-1581#2>9350 with arguments9351 is expected to contain exactly #<Issue id:197 namespace664/project-1581#1>9352 using the same context for different records9353 does not mix associated records9354 does not cause N+1 queries9355 using Active Record querying methods9356 is expected to equal 19357 using Active Record finder methods9358 is expected to contain exactly #<Issue id:197 namespace664/project-1581#1> and #<Issue id:198 namespace664/project-1581#2>9359 calling a method that returns a non relation object9360 is expected to equal 19361 calling a prohibited method9362 raises a `PrematureQueryExecutionTriggered` error9363 when the association is has one9364 is expected to eq #<ProjectSetting project_id: 1364, created_at: "2023-10-20 09:01:41.657808347 +0000", updated_at: "20...e_versions_enabled: false, cube_api_key: nil, product_analytics_configurator_connection_string: nil>9365 when the association is belongs to9366 raises error9367Gitlab::SidekiqMiddleware::AdminMode::Client9368 yields block9369 user is a regular user9370 no admin mode field in payload9371 user is an administrator9372 admin mode disabled9373 no admin mode field in payload9374 admin mode enabled9375 when sidekiq required context not set9376 no admin mode field in payload9377 when user stored in current request9378 has admin mode field in payload9379 when bypassing session9380 has admin mode field in payload9381 admin mode setting disabled9382 yields block9383 no admin mode field in payload9384Gitlab::DependencyLinker::ComposerJsonLinker9385 .support?9386 supports composer.json9387 does not support other files9388 #link9389 does not link the module name9390 links the homepage9391 links the repository URL9392 links the license9393 links dependencies9394 does not link core dependencies9395RuboCop::Cop::Migration::BatchMigrationsPostOnly9396 # order random9397 when methods appear in a post-deployment migration9398 allows 'ensure_batched_background_migration_is_finished' to be called9399 allows 'queue_batched_background_migration' to be called9400 allows 'delete_batched_background_migration' to be called9401 allows 'ensure_batched_background_migration_is_finished' to be called9402 allows arbitrary other method to be called9403 when methods appear in a regular migration9404 does not allow 'ensure_batched_background_migration_is_finished' to be called9405 does not allow 'queue_batched_background_migration' to be called9406 does not allow 'delete_batched_background_migration' to be called9407 does not allow 'ensure_batched_background_migration_is_finished' to be called9408 allows arbitrary other method to be called9409ServiceDesk::CustomEmails::DestroyService9410 # order random9411 #execute9412 when feature flag service_desk_custom_email is disabled9413 behaves like a service that exits with error9414 exits early9415 with illegitimate user9416 behaves like a service that exits with error9417 exits early9418 with legitimate user9419 behaves like a service that exits with error9420 exits early9421 when service desk setting exists9422 behaves like a successful service that destroys all custom email records9423 ensures no custom email records exist9424 when custom email is present9425 behaves like a successful service that destroys all custom email records9426 ensures no custom email records exist9427 when credential exists9428 behaves like a successful service that destroys all custom email records9429 ensures no custom email records exist9430 when verification exists9431 behaves like a successful service that destroys all custom email records9432 ensures no custom email records exist9433Users::EmailVerification::ValidateTokenService9434 #execute9435 with a valid attribute9436 attr: :unlock_token9437 when successful9438 returns a success status9439 when rate limited9440 returns a failure status9441 when expired9442 returns a failure status9443 when invalid9444 returns a failure status9445 when encrypted token was not set and a blank token is provided9446 returns a failure status9447 attr: :confirmation_token9448 when successful9449 returns a success status9450 when rate limited9451 returns a failure status9452 when expired9453 returns a failure status9454 when invalid9455 returns a failure status9456 when encrypted token was not set and a blank token is provided9457 returns a failure status9458 with an invalid attribute9459 raises an error9460Gitlab::Metrics::Subscribers::ExternalHttp9461 .detail_store9462 when external HTTP detail store is empty9463 returns an empty array9464 when the performance bar is not enabled9465 returns an empty array9466 when external HTTP detail store has some values9467 returns the external http detailed store9468 .payload9469 when SafeRequestStore does not have any item from external HTTP9470 returns an empty array9471 when external HTTP recorded some values9472 returns the external http detailed store9473 with multiple requests9474 returns a payload containing a limited set of slow requests9475 #request9476 tracks external HTTP request count9477 tracks external HTTP duration9478 tracks external HTTP exceptions9479 stores per-request counters9480 stores a portion of events into the detail store9481 when the performance bar is not enabled9482 does not capture detail store9483IncidentManagement::PagerDuty::ProcessIncidentWorker9484 # order random9485 #perform9486 with valid incident payload9487 creates a GitLab issue9488 with invalid incident payload9489 does not create a GitLab issue9490 logs a warning9491DeclarativeEnum9492 .key9493 when the argument is set9494 changes the key9495 when the argument is `nil`9496 is expected to eq :my_enum9497 .name9498 when the argument is set9499 changes the name9500 when the argument is `nil`9501 is expected to eq "MyEnumName"9502 .description9503 when the argument is set9504 changes the description9505 when the argument is `nil`9506 is expected to eq "Enum description"9507 .define9508 when there is a block given9509 when the given block tries to register the same key9510 raises a `KeyCollisionError`9511 when the given block does not try to register the same key9512 appends the new definition9513 when there is no block given9514 raises a LocalJumpError9515 .definition9516 is expected to eq {:bar=>{:description=>"description of bar", :value=>1}, :foo=>{:description=>"description of foo", :value=>0}}9517 extending the enum module9518 extends the values of the base enum module9519#<GitlabSettings::Settings:0x00007959d76a4898>9520 #ldap9521 can be accessed with dot syntax all the way down9522 can be accessed in a very specific way that breaks without reassigning each element9523 #host_without_www9524 URL with protocol9525 returns the host9526 URL without protocol9527 returns the host9528 URL with user/port9529 returns the host9530 #weak_passwords_digest_set9531 is a Set9532 contains 4500 password digests9533 includes 8 char weak password digest9534 includes 16 char weak password digest9535 includes long char weak password digest9536 does not include 7 char weak password digest9537 does not include plaintext9538ObjectPool::DestroyWorker9539 #perform9540 when no pool is in the database9541 doesn't raise an error9542 when a pool is present9543 requests Gitaly to remove the object pool9544 destroys the pool9545Gitlab::X509::Tag9546 #signature9547 signed tag9548 is expected not to be nil9549 is expected to eq :unverified9550 is expected to have attributes {:email => "r.meier@siemens.com", :serial_number => 3664232660, :subject => "CN=Meier Roger,O=Siemens,SN=Me...r=Z000NWDH", :subject_key_identifier => "21:7E:82:45:29:5D:0E:B1:19:CD:24:45:65:EE:0C:5C:73:03:5E:33"}9551 is expected to have attributes {:crl_url => "http://ch.siemens.com/pki?ZZZZZZA6.crl", :subject => "CN=Siemens Issuing CA Medium Strength...ayern,C=DE", :subject_key_identifier => "F8:15:5D:47:0C:6C:77:7B:72:C4:02:17:91:68:A2:B6:F7:6A:09:44"}9552Banzai::Filter::FrontMatterFilter9553 allows for `encoding:` before the front matter9554 converts YAML front matter to a fenced code block9555 converts TOML frontmatter to a fenced code block9556 converts JSON front matter to a fenced code block9557 converts arbitrary front matter to a fenced code block9558 source position mapping9559 keeps spaces before and after9560 keeps an empty line in place of the encoding9561 on content without front matter9562 returns the content unmodified9563 on front matter without content9564 converts YAML front matter to a fenced code block9565 protects against malicious backtracking9566 fails fast for strings with many spaces9567 fails fast for strings with many newlines9568 fails fast for strings with many `coding:`9569Gitlab::RequestContext9570 is expected to have attributes {:client_ip => nil, :request_start_time => nil, :start_thread_cpu_time => nil}9571 .start_request_context9572 sets the client IP9573 sets the spam params9574 sets the request start time9575 .start_thread_context9576 sets the thread cpu time9577 sets the thread memory allocations9578 #request_deadline9579 sets the time to 57 seconds in the future9580 returns nil if there is no start time9581 #ensure_request_deadline_not_exceeded!9582 does not raise an error when there was no deadline9583 does not raise an error if the deadline is in the future9584 raises an error when the deadline is in the past9585Gitlab::Usage::Metrics::Instrumentations::JiraImportsTotalImportedIssuesCountMetric9586 behaves like a correct instrumented metric value and query9587 behaves like a correct instrumented metric value9588 has correct value9589 behaves like a correct instrumented metric query9590 has correct generate query9591Resolvers::BlameResolver9592 # order random9593 #resolve9594 when unauthorized9595 generates an error9596 when authorized9597 when feature is disabled9598 returns nothing9599 when feature is enabled9600 returns blame object9601 when from_line is below 19602 behaves like argument error9603 raises an ArgumentError9604 when to_line is below 19605 behaves like argument error9606 raises an ArgumentError9607 when to_line less than from_line9608 returns blame object9609BulkImports::Groups::Loaders::GroupLoader9610 #load9611 when path is missing9612 raises an error9613 when destination namespace is not a group9614 raises an error9615 when there are other group errors9616 raises an error with those errors9617 when user can create group9618 when there is no parent group9619 calls Group Create Service to create a new group9620 when there is parent group9621 calls Group Create Service to create a new group9622 when user does not have 2FA enabled9623 when require_two_factor_authentication is not passed9624 calls Group Create Service to create a new group9625 when require_two_factor_authentication is false9626 calls Group Create Service to create a new group9627 when require_two_factor_authentication is true9628 does not create new group9629 when user cannot create group9630 when there is no parent group9631 does not create new group9632 when there is parent group9633 does not create new group9634Gitlab::Seeders::ProjectEnvironmentSeeder9635 # order random9636 #seed9637 creates environments for the project9638 creates environments with custom arguments9639ERROR: Project path is invalid.9640 skips seeding when project path is invalid9641WARNING: Project Environment 'ENV_96' already exists. Skipping to next CI variable...9642 skips environment creation if environment already exists9643Gitlab::Cache::JsonCache9644 # order random9645 #write9646 raises an error9647 #active?9648 when backend respond to active? method9649 delegates to the underlying cache implementation9650 when backend does not respond to active? method9651 returns true9652 #read9653 raises an error9654 #fetch9655 raises an error9656 #expire9657 calls delete from the backend on the cache_key9658 raises an error9659RuboCop::Cop::UsageData::DistinctCountByLargeForeignKey9660 # order random9661 when outside of an usage data file9662 does not register an offense9663 in an usage data file9664 when counting by disallowed key9665 registers an offense9666 does not register an offense when batch is false9667 registers an offense when batch is true9668 when calling by allowed key9669 does not register an offense with symbol9670 does not register an offense with string9671Gitlab::Prometheus::Internal9672 .uri9673 behaves like returns valid uri9674 is expected not to raise Exception9675 with non default prometheus address9676 behaves like returns valid uri9677 is expected not to raise Exception9678 with :9090 symbol9679 behaves like returns valid uri9680 is expected not to raise Exception9681 with 0.0.0.0:90909682 behaves like returns valid uri9683 is expected not to raise Exception9684 when server_address is nil9685 does not fail9686 when prometheus listen address is blank in gitlab.yml9687 does not configure prometheus9688 .prometheus_enabled?9689 returns correct value9690 when prometheus setting is disabled in gitlab.yml9691 returns correct value9692 when prometheus setting is not present in gitlab.yml9693 does not fail9694 .server_address9695 returns correct value9696 when prometheus setting is not present in gitlab.yml9697 does not fail9698Resolvers::Users::GroupCountResolver9699 #resolve9700 resolves group count for users9701 permissions9702 when current_user is an admin9703 is expected to eq [2, 1]9704 when current_user does not have access to the requested resource9705 is expected to equal nil9706 when current_user does not exist9707 is expected to equal nil9708Gitlab::SidekiqMiddleware::AdminMode::Server9709 yields block9710 job has no admin mode field9711 session is not bypassed9712 job has admin mode field9713 nil admin mode id9714 session is not bypassed9715 valid admin mode id9716 session is bypassed9717 admin mode setting disabled9718 yields block9719 session is not bypassed9720Banzai::Filter::SpacedLinkFilter9721 does not process malicious input9722 converts multiple URLs9723 ignores valid links contained inside 'a' element9724 ignores valid links contained inside 'code' element9725 ignores valid links contained inside 'kbd' element9726 ignores valid links contained inside 'pre' element9727 ignores valid links contained inside 'script' element9728 ignores valid links contained inside 'style' element9729 when a link is detected9730 converts slug with spaces to a link9731 converts slug with spaces and a title to a link9732 does nothing with empty text9733 does nothing with an empty slug9734 when an image is detected9735 converts slug with spaces to an iamge9736 converts slug with spaces and a title to an image9737RuboCop::Cop::Performance::ActiveRecordSubtransactionMethods9738 # order random9739 when the method uses a subtransaction9740 method: :safe_ensure_unique9741 registers an offense9742 method: :safe_find_or_create_by9743 registers an offense9744 method: :safe_find_or_create_by!9745 registers an offense9746 method: :with_fast_read_statement_timeout9747 registers an offense9748 method: :create_or_find_by9749 registers an offense9750 method: :create_or_find_by!9751 registers an offense9752projects/issues/show9753 when the issue is related to a sentry error9754 renders a stack trace9755 when the issue is not related to a sentry error9756 does not render a stack trace9757Stepable9758 stops after the first non success status9759 when all methods return success9760 calls all methods in order9761 merges variables returned by all steps9762 can modify results of previous steps9763 with multiple stepable classes9764 does not leak steps9765MailScheduler::NotificationServiceWorker9766 #perform9767 deserializes arguments from global IDs9768 when the arguments cannot be deserialized9769 when the arguments are not deserializeable9770 raises exception9771 when the arguments are deserializeable9772 does nothing9773 when the method is allowed9774 calls the method on NotificationService9775 when the method is not allowed9776 raises ArgumentError9777 .perform_async9778 serializes arguments as global IDs when scheduling9779 with ActiveController::Parameters9780 when permitted9781 serializes as a serializable Hash9782 when not permitted9783 fails to serialize9784Gitlab::Ci::Build::Credentials::Registry::DependencyProxy9785 contains valid dependency proxy credentials9786 .valid?9787 when dependency proxy is enabled9788 is expected to be truthy9789 when dependency proxy is disabled9790 is expected to be falsey9791Packages::CreatePackageFileService9792 #execute9793 with valid params9794 creates a new package file9795 behaves like assigns build to package file9796 with build info9797 assigns the pipeline to the package9798 creates a new PackageFileBuildInfo record9799 file is missing9800 raises an error9801Gitlab::Usage::Metrics::Instrumentations::CountPackagesMetric9802 # order random9803 with all time frame9804 behaves like a correct instrumented metric value and query9805 behaves like a correct instrumented metric value9806 has correct value9807 behaves like a correct instrumented metric query9808 has correct generate query9809 with 28d time frame9810 behaves like a correct instrumented metric value and query9811 behaves like a correct instrumented metric value9812 has correct value9813 behaves like a correct instrumented metric query9814 has correct generate query9815Projects::ReadmeRendererService#execute9816 renders the an ERB readme template9817 with a custom template9818 renders that template file9819 with path traversal in mind9820 template_name: "../path/traversal/bad", exception: [Gitlab::PathTraversal::PathTraversalAttackError, "Invalid path"], expected_path: nil9821 raises the expected exception on bad paths9822 template_name: "/bad/template", exception: [StandardError, "path /bad/template.md.tt is not allowed"], expected_path: nil9823 raises the expected exception on bad paths9824 template_name: "good/template", exception: nil, expected_path: "good/template.md.tt"9825 raises the expected exception on bad paths9826Tooling::Danger::CustomerSuccess9827 customer success danger9828 with data category changes to Ops and no Customer Success::Impact Check label9829 generates correct message9830 with data category changes and Customer Success::Impact Check label9831 generates correct message9832 with metric file changes and no data category changes9833 generates correct message9834 with data category changes from Ops9835 generates correct message9836 with data category removed9837 generates correct message9838 with data category added9839 generates correct message9840 with data category in uppercase9841 generates correct message9842JiraConnect::SyncBranchWorker9843 behaves like worker with data consistency9844 .get_data_consistency_feature_flag_enabled?9845 returns true9846 .get_data_consistency9847 returns correct data consistency9848 #perform9849 calls JiraConnect::SyncService#execute9850 without branch name9851 calls JiraConnect::SyncService#execute9852 without commits9853 calls JiraConnect::SyncService#execute9854 when project no longer exists9855 does not call JiraConnect::SyncService9856Mutations::Notes::RepositionImageDiffNote9857 #resolve9858 when the user does not have permission9859 raises an error if the resource is not accessible to the user9860 when the user has permission9861 mutates the note9862 when the note is a DiffNote, but not on an image9863 raises an error9864Mutations::Environments::Delete9865 # order random9866 #resolve9867 when destroying the environment succeeds9868 returns no errors9869 deletes the environment9870 when the mutation is not authorized9871 returns errors9872 when destroying the environment fails9873 returns errors9874 when user is reporter who does not have permission to access the environment9875 raises an error9876Noteable::NotesChannel9877 # order random9878 #subscribed9879 rejects the subscription when noteable params are missing9880 on an issue9881 behaves like handle subscription based on user access9882 subscribes to the noteable stream when user has access9883 rejects the subscription when the user does not have access9884 on a merge request9885 behaves like handle subscription based on user access9886 subscribes to the noteable stream when user has access9887 rejects the subscription when the user does not have access9888Gitlab::Ci::Build::Credentials::Registry::GitlabRegistry9889 contains valid DockerRegistry credentials9890 .valid?9891 when registry is enabled9892 is expected to be truthy9893 when registry is disabled9894 is expected to be falsey9895LegacyDiffNote9896 #to_ability_name9897 is expected to eq "note"9898 callbacks9899 #set_diff9900 when not importing9901 updates st_diff9902 when importing9903 does not update st_diff9904 when st_diff is blank9905 updates st_diff9906ActsAsTaggableOn::Tag9907 .find_or_create_all_with_like_by_name9908 creates a tag9909 returns the Tag record9910 some tags already existing9911 creates only the missing tag9912 returns the Tag records9913 all tags already existing9914 does not create new tags9915 returns the Tag records9916GoogleCloud::GetCloudsqlInstancesService9917 when project has no registered cloud sql instances9918 result is empty9919 when project has registered cloud sql instance9920 result is grouped by environment9921BaseCountService9922 #relation_for_count9923 raises NotImplementedError9924 #count9925 returns the number of values9926 #uncached_count9927 returns the uncached number of values9928 #refresh_cache9929 refreshes the cache9930 #delete_cache9931 deletes the cache9932 #raw?9933 returns false9934 #cache_key9935 raises NotImplementedError9936 #cache_options9937 returns the default in options9938Gitlab::BitbucketServerImport::ImportPullRequestNotesWorker9939 # order random9940 behaves like Gitlab::BitbucketServerImport::ObjectImporter9941 .sidekiq_retries_exhausted9942 notifies the waiter9943 #perform9944 when project does not exist9945 behaves like notifies the waiter9946 is expected to receive notify("key", anything, {:ttl=>604800}) 1 time9947 when project has import started9948 calls the importer9949 behaves like notifies the waiter9950 is expected to receive notify("key", anything, {:ttl=>604800}) 1 time9951 when project import has been cancelled9952 does not call the importer9953 behaves like notifies the waiter9954 is expected to receive notify("key", anything, {:ttl=>604800}) 1 time9955Tooling::ParallelRSpecRunner9956 #run9957 without filter_tests_file option9958 behaves like runs node tests9959 runs rspec with tests allocated for this node9960 given filter tests file9961 when filter_tests_file is empty9962 behaves like runs node tests9963 runs rspec with tests allocated for this node9964 when filter_tests_file does not exist9965 behaves like runs node tests9966 runs rspec with tests allocated for this node9967 when filter_tests_file is not empty9968 behaves like runs node tests9969 runs rspec with tests allocated for this node9970 with rspec args9971 behaves like runs node tests9972 runs rspec with tests allocated for this node9973shared/milestones/_issuable.html.haml9974 issue9975 links to the page for the issue9976 links to issues page for user9977 merge request9978 links to merge requests page for user9979 links to the page for the merge request9980Onboarding::IssueCreatedWorker#perform9981 # order random9982 behaves like an idempotent worker9983 is labeled as idempotent9984 performs multiple times sequentially without raising an exception9985 sets the onboarding progress action9986 behaves like records an onboarding progress action9987 is expected to receive execute({:action=>:issue_created}) 1 time9988 behaves like does not record an onboarding progress action9989 is expected not to receive new(*(any args)) 0 times9990Resolvers::WorkItems::TypesResolver9991 #resolve9992 when parent is a group9993 behaves like a work item type resolver9994 returns all default work item types9995 when requesting taskable types9996 returns only taskable types9997 when parent is a project9998 behaves like a work item type resolver9999 returns all default work item types10000 when requesting taskable types10001 returns only taskable types10002CaseSensitivity10003 .iwhere10004 finds a single instance by a single attribute regardless of case10005 finds multiple instances by a single attribute regardless of case10006 finds instances by multiple attributes10007 finds instances by custom Arel attributes10008 builds a query using LOWER10009FeatureFlagsUserListsFinder10010 #execute10011 returns user lists10012 with search10013 returns only matching user lists10014Gitlab::QuickActions::SpendTimeAndDateSeparator10015 #execute10016 invalid paramenter in arg line10017 empty arg line10018 behaves like arg line with invalid parameters10019 return nil10020 future date in arg line10021 behaves like arg line with invalid parameters10022 return nil10023 unparseable date(invalid mixes of delimiters)10024 behaves like arg line with invalid parameters10025 return nil10026 trash in arg line10027 return nil as time value10028 only time present in arg line10029 behaves like arg line with valid parameters10030 return time and date array10031 simple time with date in arg line10032 behaves like arg line with valid parameters10033 return time and date array10034 composite time with date in arg line10035 behaves like arg line with valid parameters10036 return time and date array10037ExportedProtectedBranch10038 Associations10039 is expected to have many push_access_levels10040 .push_access_levels10041 returns the correct push access levels10042Mutations::Achievements::Award10043 # order random10044 is expected to require graphql authorizations :award_achievement10045 #resolve10046 when the user does not have permission10047 raises an error10048 when the user has permission10049 creates user_achievement with correct values10050 when the params are invalid10051 returns the validation error10052Packages::Nuget::DependencyLinkMetadatum10053 relationships10054 is expected to belong to dependency_link required: false10055 validations10056 is expected to validate that :dependency_link cannot be empty/falsy10057 is expected to validate that :target_framework cannot be empty/falsy10058 #ensure_nuget_package_type10059 validates package of type nuget10060 validates package of type nuget with nil dependency_link10061RuboCop::Cop::Gitlab::EventStoreSubscriber10062 # order random10063 a non worker class10064 does not register an offense10065 when an event store subscriber does not implement #handle_event10066 registers an offense10067 when an event store subscriber overrides #perform10068 registers an offense10069 when an event store subscriber does not override #perform10070 does not register an offense10071 when a Sidekiq worker implements #handle_event10072 does not register an offense10073 when a Sidekiq worker overrides #perform10074 does not register an offense10075Gitlab::Usage::Metrics::Instrumentations::CountCiInternalPipelinesMetric10076 # order random10077 for monthly counts10078 behaves like a correct instrumented metric value10079 has correct value10080 behaves like a correct instrumented metric value10081 has correct value10082 on SaaS10083 behaves like a correct instrumented metric value10084 has correct value10085 behaves like a correct instrumented metric value10086 has correct value10087groups/_home_panel10088 renders the group ID10089 admin area link10090 renders admin area link for admin10091 does not render admin area link for non-admin10092 does not render admin area link for anonymous10093Members::InviteMemberBuilder10094 #execute10095 when user record found by email10096 returns member from existing members hash10097 builds a new member10098 when no existing users found by the email10099 finds existing member10100 builds a new member10101layouts/organization10102 # order random10103 navigation10104 when action is #index10105 renders your_work navigation10106 when action is #new10107 renders your_work navigation10108 when action is #show10109 renders organization navigation10110Gitlab::UsageDataCounters::DesignsCounter10111 behaves like a redis usage counter10112 .count(create)10113 increments the Designs create counter by 110114 .read(create)10115 returns the total number of create events10116 behaves like a redis usage counter10117 .count(update)10118 increments the Designs update counter by 110119 .read(update)10120 returns the total number of update events10121 behaves like a redis usage counter10122 .count(delete)10123 increments the Designs delete counter by 110124 .read(delete)10125 returns the total number of delete events10126 behaves like a redis usage counter with totals10127 totals10128 can report all totals10129 unknown events10130 cannot increment10131 cannot read10132Mutations::Clusters::AgentTokens::Revoke10133 is expected to eq "ClusterAgentTokenRevoke"10134 is expected to require graphql authorizations :admin_cluster10135 #resolve10136 user does not have permission10137 does not revoke the token10138 user has permission10139 revokes the token10140DependencyProxy::ImageTtlGroupPolicy10141 relationships10142 is expected to belong to group required: false10143 validations10144 is expected to validate that :group cannot be empty/falsy10145 #enabled10146************************************************************************10147Warning from shoulda-matchers:10148You are using `validate_inclusion_of` to assert that a boolean column10149allows boolean values and disallows non-boolean ones. Be aware that it10150is not possible to fully test this, as boolean columns will10151automatically convert non-boolean values to boolean ones. Hence, you10152should consider removing this test.10153************************************************************************10154 is expected to validate that :enabled is either ‹true› or ‹false›10155 #ttl10156 is expected to validate that :ttl looks like a number greater than 0 as long as it is not nil10157 .enabled10158 returns policies that are enabled10159Integrations::SlackOptions::UserSearchHandler10160 # order random10161 #execute10162 when user has permissions to read project members10163 returns the user matching the search term10164 when user does not have permissions to read project members10165 returns empty array10166Gitlab::UsageDataCounters10167 .usage_data_counters10168 is expected to all respond to #totals10169 is expected to all respond to #fallback_totals10170 .count10171 increases a view counter10172 when event_name is not defined10173 raises an exception10174Mutations::Ci::Runner::BulkDelete10175 #resolve10176 when user can delete runners10177 when runner IDs are missing10178 when admin mode is enabled10179 does not return an error10180 with runners specified by id10181 ignores unknown keys from service response payload10182 when admin mode is enabled10183 deletes runners10184 when the user cannot delete the runner10185 when user is admin and admin mode is not enabled10186 returns error10187Mutations::Pages::MarkOnboardingComplete10188 #resolve10189 when the current user has access to update pages10190 calls mark_pages_onboarding_complete on the project10191 returns onboarding_complete state10192 returns no errors10193 when the current user doesn't have access to update pages10194 raises an error10195Gitlab::Sanitizers::ExceptionMessage10196 .clean10197 when error is a URI::InvalidURIError10198 is expected to eq "bad URI(is not URI?): [FILTERED]"10199 when error is an Addressable::URI::InvalidURIError10200 uri: "http://foo:bar", result: "Invalid port number: [FILTERED]"10201 is expected to eq "Invalid port number: [FILTERED]"10202 uri: "http://foo:%eb", result: "Invalid encoding in port"10203 is expected to eq "Invalid encoding in port"10204 uri: "ht%0atp://foo", result: "Invalid scheme format: [FILTERED]"10205 is expected to eq "Invalid scheme format: [FILTERED]"10206 uri: "http:", result: "Absolute URI missing hierarchical segment: [FILTERED]"10207 is expected to eq "Absolute URI missing hierarchical segment: [FILTERED]"10208 uri: "::http", result: "Cannot assemble URI string with ambiguous path: [FILTERED]"10209 is expected to eq "Cannot assemble URI string with ambiguous path: [FILTERED]"10210 uri: "http://foo bar", result: "Invalid character in host: [FILTERED]"10211 is expected to eq "Invalid character in host: [FILTERED]"10212 with any other exception10213 is not invoked and does nothing10214MilestonesHelper10215 # order random10216 #milestone_header_class10217 primary: true, issuables: [nil], header_color: "gl-bg-blue-500 gl-text-white", header_border: ""10218 is expected to eq "gl-bg-blue-500 gl-text-white gl-display-flex"10219 primary: true, issuables: [], header_color: "gl-bg-blue-500 gl-text-white", header_border: "gl-border-bottom-0 gl-rounded-base"10220 is expected to eq "gl-bg-blue-500 gl-text-white gl-border-bottom-0 gl-rounded-base gl-display-flex"10221 primary: false, issuables: [], header_color: "", header_border: "gl-border-bottom-0 gl-rounded-base"10222 is expected to eq " gl-border-bottom-0 gl-rounded-base gl-display-flex"10223 primary: false, issuables: [nil], header_color: "", header_border: ""10224 is expected to eq " gl-display-flex"10225 #milestone_counter_class10226 when primary is set to true10227 is expected to eq "gl-text-white"10228 when primary is set to false10229 is expected to eq "gl-text-gray-500"10230TokenAuthenticatableStrategies::EncryptionHelper10231 .encrypt_token10232 adds nonce identifier on the beginning10233 adds nonce at the end10234 encrypts token10235 .decrypt_token10236 decrypts token with dynamic iv10237Gitlab::Ci::Trace::Metrics10238 #increment_trace_bytes10239 when incrementing by more than one10240 increments a single counter10241 #increment_error_counter10242 when the error reason is known10243 increments the counter10244 when the error reason is unknown10245 raises an exception10246RuboCop::Cop::Gitlab::DocUrl10247 # order random10248 when string literal is added without docs url prefix10249 when inlined10250 does not register an offense10251 when multilined10252 does not register an offense10253 with heredoc10254 does not register an offense10255 when string literal is added with docs url prefix10256 when inlined10257 registers an offense10258 when multilined10259 registers an offense10260 with heredoc10261 registers an offense10262WebauthnRegistration10263 relations10264 is expected to belong to user required: false10265 validations10266 is expected to validate that :credential_xid cannot be empty/falsy10267 is expected to validate that :public_key cannot be empty/falsy10268 is expected to validate that :counter cannot be empty/falsy10269 is expected to validate that the length of :name is at least 010270 is expected not to allow :name to be ‹nil›10271 is expected to validate that :counter looks like an integer greater than or equal to 0 and less than or equal to 429496729510272LfsPointersFinder10273 #execute10274 when path has no LFS files10275 is expected to eq []10276 when path points to LFS file10277 returns LFS blob ids10278 when path points to directory with LFS files10279 returns LFS blob ids10280 when repository is empty10281 is expected to eq []10282Deployments::DeploymentPresenter10283 # order random10284 #tags10285 is expected to eq [{:name=>"test", :path=>"tags/test"}]10286Mutations::Terraform::State::Delete10287 is expected to eq "TerraformStateDelete"10288 is expected to require graphql authorizations :admin_terraform_state10289 #resolve10290 user does not have permission10291 raises an error10292 user has permission10293 schedules the state for deletion10294 with invalid params10295 raises an error10296Ml::CandidatesCsvPresenter10297 # order random10298 .present10299 generates header row correctly10300 generates the first row correctly10301 generates the second row correctly10302CarrierWave::Storage::Fog::File10303 # order random10304 Azure10305 #copy_to10306 copies the file10307 #authenticated_url10308 has an authenticated URL10309 with custom expire_at10310 properly sets expires param10311 with content_disposition option10312 passes options10313 AWS10314 #copy_to10315 copies the file10316Resolvers::Projects::GrafanaIntegrationResolver10317 #resolve10318 when object is not a project10319 is expected to eq nil10320 when object is a project10321 is expected to eq #<GrafanaIntegration id: 1, project_id: 1421, created_at: "2023-10-20 09:02:52.328923504 +0000", upda...ken_iv: "bT6bZii2lsIUmpgm\n", grafana_url: "https://grafana.example.com", enabled: true, token: nil>10322 when object is nil10323 is expected to eq nil10324Pajamas::CheckboxTagComponent10325 with default options10326 renders unchecked checkbox with value of `1`10327 does not render help text10328 with custom options10329 renders checked checkbox with value of `yes`10330 adds CSS class to label10331 with `help_text` slot10332 renders unchecked checkbox with value of `1`10333 renders help text10334BulkImports::ArchiveExtractionService10335 #execute10336 extracts files from archive and removes symlinks10337 when dir is not in tmpdir10338 raises an error10339 when archive file is a symlink10340 raises an error10341 when archive file shares multiple hard links10342 raises an error10343 when filepath is being traversed10344 raises an error10345Analytics::CycleAnalytics::StageFinder10346 when looking up in-memory default stage by name exists10347 is expected not to be persisted10348 is expected to eq "issue"10349 when in-memory default stage cannot be found10350 is expected to raise ActiveRecord::RecordNotFound10351Gitlab::Ci::EnvironmentMatcher10352 # order random10353 #match?10354 when given pattern is a normal string10355 returns true on an exact match10356 returns false if not an exact match10357 when given pattern has a wildcard10358 returns true on wildcard matches10359 returns false when not a wildcard match10360 when given pattern is nil10361 always returns false10362 when given pattern is an empty string10363 always returns false10364RuboCop::Cop::QA::ElementWithPattern10365 # order random10366 when outside of a QA spec file10367 does not register an offense10368 in a QA file10369 registers an offense for elements with a pattern10370 does not register an offense for element without a pattern10371Releases::Evidence10372 filters out issues from summary json10373 associations10374 is expected to belong to release required: false10375RuboCop::Cop::CodeReuse::Serializer10376 # order random10377 flags the use of a Serializer in a Presenter10378 flags the use of a Serializer in a Service class10379 flags the use of a Serializer in a Finder10380 flags the use of a Serializer in a model instance method10381 flags the use of a Serializer in a model class method10382 flags the use of a Serializer in a worker10383 flags the use of a Serializer in a Serializer10384Integrations::ProjectEntity10385 as json10386 contains needed attributes10387Resolvers::WorkItemResolver10388 #resolve10389 when the user can read the work item10390 is expected to eq #<WorkItem id:207 namespace730/project-1646#1>10391 when the user can not read the work item10392 raises a resource not available error10393Gitlab::Middleware::WebhookRecursionDetection10394 #call10395 when the recursion detection header is present10396 sets the request UUID from the header10397 when recursion headers are not present10398 works without errors10399GoogleCloud::LoggingService::Logger10400 # order random10401 #log10402 when access token is available10403 generates access token and calls Gitlab::HTTP.post with correct parameters10404 when URI::InvalidURIError is raised10405 logs the exception10406 when access token is not available10407 does not call Gitlab::HTTP.post10408Gitlab::Ci::Config::Entry::Inherit::Variables10409 validations10410 config: true, valid: true10411 is expected to eq true10412 config: false, valid: true10413 is expected to eq true10414 config: ["A"], valid: true10415 is expected to eq true10416 config: ["A", "B"], valid: true10417 is expected to eq true10418 config: [:image], valid: true10419 is expected to eq true10420 config: [true], valid: false10421 is expected to eq false10422 config: "string", valid: false10423 is expected to eq false10424Gitlab::Usage::Metrics::Instrumentations::ServicePingFeaturesMetric10425 usage_ping_features_enabled: true, expected_value: true10426 behaves like a correct instrumented metric value10427 has correct value10428 usage_ping_features_enabled: false, expected_value: false10429 behaves like a correct instrumented metric value10430 has correct value10431CronjobQueue10432 disables retrying of failed jobs10433 automatically clears project, user and namespace from the context10434 gets scheduled with caller_id set to Cronjob10435 gets root_caller_id from the cronjob10436 does not set the caller_id if there was already one in the context10437Gitlab::Config::Entry::Validatable10438 .validator10439 returns validator10440 returns only one validator to mitigate leaks10441 when validating entry instance10442 when attribute is valid10443 instance of validator is valid10444 when attribute is not valid10445 instance of validator is invalid10446admin/application_settings/_repository_storage.html.haml10447 with storage weights configured10448 lists storages with weight10449 lists storages without weight10450 lists only configured storages10451Gitlab::Git::Patches::Collection10452 #size10453 combines the size of the patches10454 #valid_size?10455 is not valid if the total size is bigger than 2MB10456BulkImports::Projects::Pipelines::CommitNotesPipeline10457 # order random10458 #run10459 imports ci pipeline notes into destination project10460Ci::PipelineCreation::StartPipelineService10461 #execute10462 calls the pipeline process service10463 creates pipeline ref10464Gitlab::Changelog::Generator10465 #add10466 generates the Markdown for the first release10467 generates the Markdown for a newer release10468 generates the Markdown for a patch release10469 generates the Markdown for an old release10470Gitlab::Graphql::Tracers::TimerTracer10471 adds duration_s to the trace metadata10472 adds a duration_s even if the query failed10473Ci::VariableEntity10474 #as_json10475 contains required fields10476Gitlab::GithubImport::Stage::ImportAttachmentsWorker10477 # order random10478 behaves like Gitlab::GithubImport::StageMethods10479 .sidekiq_retries_exhausted10480 tracks the exception and marks the import as failed10481 #import10482 imports attachments10483 when stage is disabled10484 skips release attachments import and calls next stage10485admin/application_settings/ci_cd.html.haml10486 CI CD Runners10487 has the setting section10488 renders the correct setting section content10489API::Helpers::RateLimiter10490 #check_rate_limit!10491 calls ApplicationRateLimiter#throttled_request? with the right arguments10492 renders api error and logs request if throttled10493 when the bypass header is set10494 skips rate limit if set to "1"10495 does not skip rate limit if set to something else than "1"10496Gitlab::Patch::NodeLoader10497 # order random10498 #fetch_node_info10499 when only ip address is present10500 is expected to eq {"127.0.0.1:30001"=>"master", "127.0.0.1:30002"=>"master", "127.0.0.1:30003"=>"master", "127.0.0.1:30004"=>"slave", "127.0.0.1:30005"=>"slave", "127.0.0.1:30006"=>"slave"}10501 when hostname is present10502 is expected to eq {"host1:30004"=>"slave", "host2:30002"=>"master", "host3:30003"=>"master", "host4:30005"=>"slave", "host5:30006"=>"slave", "host6:30001"=>"master"}10503 when auxiliary fields are present10504 is expected to eq {"127.0.0.1:30001"=>"master", "127.0.0.1:30002"=>"master", "127.0.0.1:30003"=>"master", "127.0.0.1:30004"=>"slave", "127.0.0.1:30005"=>"slave", "127.0.0.1:30006"=>"slave"}10505 when hostname and auxiliary fields are present10506 is expected to eq {"host1:30004"=>"slave", "host2:30002"=>"master", "host3:30003"=>"master", "host4:30005"=>"slave", "host5:30006"=>"slave", "host6:30001"=>"master"}10507ResourceEvents::IssueAssignmentEvent10508 # order random10509 associations10510 is expected to belong to user required: false10511 is expected to belong to issue required: false10512 validations10513 is expected to be valid10514 is expected to validate that :issue cannot be empty/falsy10515Releases::Links::Params10516 # order random10517 #allowed_params10518 returns only allowed params10519 when deprecated filepath is used10520 uses filepath value10521 when both direct_asset_path and filepath are provided10522 uses direct_asset_path value10523ActivityPub::UserEntity10524 # order random10525 as json10526 has releases page as id10527 is a Person actor10528 provides project name10529 provides an url for web content10530Gitlab::BitbucketServerImport::Stage::FinishImportWorker10531 # order random10532 behaves like Gitlab::BitbucketServerImport::StageMethods10533 .sidekiq_retries_exhausted10534 tracks the import failure10535 #perform10536 finalises the import process10537NamespacePathValidator10538 .valid_path?10539 handles invalid utf810540 #validates_each10541 adds a message when the path is not in the correct format10542 adds a message when the path is reserved when creating10543 adds a message when the path is reserved when updating10544RuboCop::Cop::RSpec::FactoryBot::AvoidCreate10545 # order random10546 behaves like an offensive factory call10547 registers an offense for create(:user)10548 registers an offense for create_list(:user)10549 behaves like an offensive factory call10550 registers an offense for FactoryBot.create(:user)10551 registers an offense for FactoryBot.create_list(:user)10552API::Helpers::ImportGithubHelpers10553 # order random10554 #client10555 returns the new github client10556 #too_many_requests10557 raises an error10558 #provider_unauthorized10559 raises an error10560 #provider10561 is GitHub10562 #access_params10563 makes the passed in personal access token and extra tokens accessible10564PrometheusAdapter10565 #build_query_args10566 when active record models are included10567 serializes by id10568 when args are safe for serialization10569 does nothing10570Types::AccessLevelEnum10571 is expected to eq "AccessLevelEnum"10572 exposes all the existing access levels10573devise/confirmations/almost_there10574 # order random10575 register again prompt10576 is expected to have visible link "register again with a different email" with href "/users/sign_up"10577 confirmations text10578 when correct email10579 is expected to have text "Please check your email (こんにちは@test) to confirm your account"10580 when random text10581 is expected to have text "Please check your email to confirm your account"10582Integrations::SlackInteractions::BlockActionService10583 # order random10584 #execute10585 when action_id is incident_management_project10586 executes the correct handler10587 when action_id is not known10588 does not execute the handlers10589Gitlab::Ci::Pipeline::Expression::Lexeme::Null10590 .build10591 creates a new instance of the token10592 .type10593 is a value lexeme10594 #evaluate10595 always evaluates to `nil`10596profiles/notifications/show10597 when there is no database value for User#notification_email10598 displays the correct elements10599 when there is a database value for User#notification_email10600 displays the correct elements10601Gitlab::Pagination::OffsetHeaderBuilder10602 #execute10603 sets headers to request context10604 exclude total headers10605 does not set total headers to request context10606 pass data without counts10607 does not set total headers to request context10608Types::Projects::Services::BaseServiceType10609 is expected to eq "BaseService"10610 has basic expected fields10611 is expected to require graphql authorizations :admin_project10612Pajamas::Component10613 #filter_attribute10614 returns default value when no value is given10615 returns default value when invalid value is given10616 returns given value when it is part of allowed list10617 #format_options10618 merges CSS classes and additional options10619RuboCop::Cop::Graphql::ResourceNotAvailableError10620 # order random10621 does not flag unrelated exceptions10622 behaves like flagging and auto-correction10623 flags and auto-corrects `raise Gitlab::Graphql::Errors::ResourceNotAvailable`10624 behaves like flagging and auto-correction10625 flags and auto-corrects `raise ::Gitlab::Graphql::Errors::ResourceNotAvailable`10626Gitlab::Database::TablesSortedByForeignKeys10627 # order random10628 #execute10629 returns the tables sorted by the foreign keys dependency10630 returns both tables together if they are strongly connected10631SystemCheck::App::GitlabCableConfigExistsCheck10632 # order random10633 #check?10634 when config/cable.yml exists10635 is expected to eq true10636 when config/cable.yml does not exist10637 is expected to eq false10638RuboCop::Cop::Migration::BackgroundMigrations10639 # order random10640 when queue_background_migration_jobs_by_range_at_intervals is used10641 registers an offense10642 when migrate_in is used10643 registers an offense10644 when requeue_background_migration_jobs_by_range_at_intervals is used10645 registers an offense10646Types::MergeRequestStateEnum10647 is expected to eq "MergeRequestState"10648 exposes all the existing merge request states10649 behaves like issuable state10650 exposes all the existing issuable states10651Ci::StuckBuilds::DropRunningWorker10652 #perform10653 executes an instance of Ci::StuckBuilds::DropRunningService10654 behaves like an idempotent worker10655 is labeled as idempotent10656 performs multiple times sequentially without raising an exception10657Gitlab::Middleware::RackMultipartTempfileFactory10658 for a multipart request10659 immediately unlinks the temporary file10660 processes the request as normal10661 for a regular request10662 does nothing10663Sidebars::YourWork::Menus::OrganizationsMenu10664 # order random10665 #render?10666 when `ui_for_organizations` feature flag is enabled10667 when `current_user` is available10668 returns true10669 when `current_user` is not available10670 returns false10671 when `ui_for_organizations` feature flag is disabled10672 returns false10673TodosDestroyer::DestroyedDesignsWorker10674 calls the Todos::Destroy::DesignService with design_ids parameter10675Gitlab::Pages::RandomDomain10676 # order random10677 when project path is larger than 48 chars10678 behaves like random domain10679 is expected to eq 6310680 when project path is close to 48 chars10681 behaves like random domain10682 is expected to eq 6310683 when project path is less than 48 chars10684 behaves like random domain10685 is expected to eq 6310686KeyPresenter10687 # order random10688 #humanized_error_message10689 when public key is unsupported10690 returns the custom error message10691 when key is expired10692 returns Active Record error message10693Gitlab::SidekiqDeathHandler10694 .handler10695 when the job class has worker attributes10696 uses the attributes from the worker10697 when the job class does not have worker attributes10698 uses blank attributes10699Types::CiConfiguration::Sast::AnalyzersEntityInputType10700 is expected to eq "SastCiConfigurationAnalyzersEntityInput"10701 is expected to contain exactly "enabled", "name", and "variables"10702InstanceMetadataPolicy10703 for any logged-in user10704 is expected to be allowed :read_instance_metadata10705 for anonymous users10706 is expected not to be allowed :read_instance_metadata10707pwa/manifest10708 # order random10709 view caching10710 when appearance is unchanged10711 reuses the cached view10712 when appearance has changed10713 does not use the cached view10714Sidebars::Projects::SuperSidebarMenus::CodeMenu10715 # order random10716 has title and sprite_icon10717 defines list of NilMenuItem placeholders10718Types::CommitSignatures::VerificationStatusEnum10719 # order random10720 exposes all signature verification states10721 is expected to eq "VerificationStatus"10722RegistrationsHelper10723 #signup_username_data_attributes10724 has expected attributes10725 #register_omniauth_params10726 adds intent to register10727Types::IdeType10728 # order random10729 is expected to eq "Ide"10730 has the expected fields10731RuboCop::Cop::AvoidRouteRedirectLeadingSlash10732 # order random10733 registers an offense when redirect has a leading slash and corrects10734 does not register an offense when redirect does not have a leading slash10735ClickHouse::RecordSyncContext10736 # order random10737 sets the no more records flag10738 allows processing 3 records per batch10739Gitlab::Metrics::Transaction10740 #run10741 is expected to raise NotImplementedError10742Types::WorkItems::RelatedLinkTypeEnum10743 # order random10744 exposes all the existing access levels10745 is expected to eq "WorkItemRelatedLinkType"10746Types::Tree::TypeEnum10747 is expected to eq "EntryType"10748 exposes all tree entry types10749Gitlab::NetHttpAdapter10750 #connect10751 uses a Gitlab::BufferedIo instance as @socket10752Gitlab::Usage::Metrics::Instrumentations::CountCiRunnersInstanceTypeActiveOnlineMetric10753 # order random10754 behaves like a correct instrumented metric value10755 has correct value10756Environments::AutoStopCronWorker10757 executes Environments::AutoStopService10758help/show10759 Markdown rendering10760 renders Markdown10761Types::Packages::PackageGroupSortEnum10762 exposes all package group sort values10763Sidebars::Projects::Context10764 sets project attribute reader10765Types::Packages::PackageFileType10766 includes package file fields10767Evidences::ReleaseSerializer10768 represents an Evidence::ReleaseEntity entity10769WikiPages::BaseService10770 #increment_usage10771 the class implements usage_counter_action incorrectly10772 raises an error on unknown events10773Gitlab::GithubImport::Representation::LfsObject10774 #github_identifiers10775 returns a hash with needed identifiers10776Gitlab::Metrics::Exporter::GcRequestMiddleware10777 #call10778 runs a major GC after the next middleware is called10779IssuableBaseService10780 # order random10781 #constructor_container_arg10782 is expected to eq {:container=>"some-value"}10783Gitlab::Ci::Variables::Downstream::RawVariableGenerator10784 # order random10785 #for10786 returns an array containing the unexpanded raw variable10787ClickHouse::Models::AuditEvent10788 # order random10789 #by_author_username10790 builds the correct SQL10791 #by_entity_id10792 builds the correct SQL10793 method chaining10794 builds the correct SQL with chained methods10795 #by_entity_username10796 builds the correct SQL10797 class methods10798 .by_entity_type10799 calls the corresponding instance method10800 .by_entity_id10801 calls the corresponding instance method10802 .by_author_id10803 calls the corresponding instance method10804 .by_entity_username10805 calls the corresponding instance method10806 .by_author_username10807 calls the corresponding instance method10808 #by_author_id10809 builds the correct SQL10810 #by_entity_type10811 builds the correct SQL10812auto_explain log contains 2351 entries for main, writing to /builds/gitlab-org/gitlab/auto_explain/rspec-unit-pg14-3-24.329.main.ndjson.gz10813took 33.11387860310814auto_explain log contains 2352 entries for ci, writing to /builds/gitlab-org/gitlab/auto_explain/rspec-unit-pg14-3-24.329.ci.ndjson.gz10815took 30.74384028910816Knapsack report was generated. Preview:10818 "spec/models/project_spec.rb": 595.902609067,10819 "spec/lib/gitlab/error_tracking/error_repository/open_api_strategy_spec.rb": 117.38678950999974,10820 "spec/models/abuse_report_spec.rb": 88.51186605900011,10821 "spec/models/hooks/service_hook_spec.rb": 87.1823750120002,10822 "spec/lib/gitlab/database/migration_helpers/automatic_lock_writes_on_tables_spec.rb": 67.0451150859999,10823 "spec/services/system_notes/issuables_service_spec.rb": 52.67777560600007,10824 "spec/lib/object_storage/direct_upload_spec.rb": 29.491679687000214,10825 "spec/helpers/groups/group_members_helper_spec.rb": 48.19056370499993,10826 "spec/lib/gitlab/lets_encrypt/client_spec.rb": 48.00980894899976,10827 "spec/services/draft_notes/publish_service_spec.rb": 42.7031577089997,10828 "spec/models/integrations/jenkins_spec.rb": 33.288324443999954,10829 "spec/services/packages/npm/generate_metadata_service_spec.rb": 12.66660967000007,10830 "spec/presenters/projects/security/configuration_presenter_spec.rb": 26.033371516999978,10831 "spec/services/ci/create_pipeline_service/parent_child_pipeline_spec.rb": 28.297354101999645,10832 "spec/lib/gitlab/project_template_spec.rb": 17.94382912300034,10833 "spec/models/integrations/bamboo_spec.rb": 10.298252079000122,10834 "spec/services/projects/move_forks_service_spec.rb": 24.689964106999923,10835 "spec/services/snippets/create_service_spec.rb": 14.692103377999956,10836 "spec/models/integrations/every_integration_spec.rb": 3.9100514459996702,10837 "spec/lib/gitlab/redis/pubsub_spec.rb": 4.015281981000044,10838 "spec/db/production/settings_spec.rb": 23.11321357900033,10839 "spec/lib/users/internal_spec.rb": 12.47484700699988,10840 "spec/lib/gitlab/github_import/importer/pull_request_importer_spec.rb": 18.969060115000048,10841 "spec/services/system_notes/merge_requests_service_spec.rb": 16.557247967999956,10842 "spec/services/ci/pipeline_creation/cancel_redundant_pipelines_service_spec.rb": 14.972257389000333,10843 "spec/lib/gitlab/database/partitioning_migration_helpers/table_management_helpers_spec.rb": 6.497361254000225,10844 "spec/models/release_spec.rb": 10.31422677799992,10845 "spec/scripts/trigger-build_spec.rb": 3.350918389999606,10846 "spec/views/notify/pipeline_fixed_email.html.haml_spec.rb": 14.879538495999896,10847 "spec/models/dev_ops_report/metric_spec.rb": 3.4651834399996915,10848 "spec/serializers/environment_serializer_spec.rb": 13.261443018000136,10849 "spec/services/ci/create_pipeline_service/environment_spec.rb": 14.894564794999951,10850 "spec/services/merge_requests/conflicts/list_service_spec.rb": 14.454153457999837,10851 "spec/lib/api/helpers/packages/dependency_proxy_helpers_spec.rb": 4.3844831920000615,10852 "spec/services/system_notes/design_management_service_spec.rb": 11.524918266999975,10853 "spec/lib/banzai/filter/math_filter_spec.rb": 2.6156610540001566,10854 "spec/services/notes/build_service_spec.rb": 7.660017766999772,10855 "spec/helpers/members_helper_spec.rb": 11.048181872999976,10856 "spec/services/ci/pipeline_trigger_service_spec.rb": 11.221406829999978,10857 "spec/services/packages/conan/search_service_spec.rb": 10.622671041999638,10858 "spec/models/terraform/state_spec.rb": 10.549555045000034,10859 "spec/helpers/icons_helper_spec.rb": 2.6985733589999654,10860 "spec/services/projects/git_deduplication_service_spec.rb": 9.305365807000271,10861 "spec/services/issuable/discussions_list_service_spec.rb": 11.737280767999891,10862 "spec/lib/gitlab/checks/diff_check_spec.rb": 10.330146543999945,10863 "spec/uploaders/terraform/state_uploader_spec.rb": 7.709822408000036,10864 "spec/workers/projects/after_import_worker_spec.rb": 9.568766595999932,10865 "spec/workers/packages/nuget/extraction_worker_spec.rb": 7.994604514999992,10866 "spec/lib/banzai/filter/broadcast_message_sanitization_filter_spec.rb": 2.1887238100002833,10867 "spec/helpers/auth_helper_spec.rb": 3.9293236379999144,10868 "spec/lib/gitlab/ci/config/entry/cache_spec.rb": 2.5037132050001674,10869 "spec/graphql/mutations/issues/create_spec.rb": 7.445485209000253,10870 "spec/rubocop/cop/rspec/have_gitlab_http_status_spec.rb": 2.5524187610003537,10871 "spec/models/concerns/spammable_spec.rb": 3.1134957750000467,10872 "spec/lib/gitlab/i18n/po_linter_spec.rb": 2.475019436999901,10873 "spec/models/prometheus_alert_spec.rb": 5.600576520999766,10874 "spec/lib/gitlab/import_export/group/relation_factory_spec.rb": 6.312902123000185,10875 "spec/lib/gitlab/ci/status/build/stop_spec.rb": 6.452506822000032,10876 "spec/services/issues/referenced_merge_requests_service_spec.rb": 8.173089590000018,10877 "spec/graphql/resolvers/boards_resolver_spec.rb": 4.970953261999966,10878 "spec/lib/gitlab/legacy_github_import/issue_formatter_spec.rb": 4.124466261999714,10879 "spec/bin/feature_flag_spec.rb": 2.562838080000347,10880 "spec/models/pages_domain_acme_order_spec.rb": 6.7303847580001275,10881 "spec/lib/gitlab/ci/pipeline/duration_spec.rb": 5.13001056999974,10882 "spec/lib/generators/gitlab/partitioning/foreign_keys_generator_spec.rb": 8.510983111999849,10883 "spec/models/ml/model_spec.rb": 3.3838561029997436,10884 "spec/services/projects/container_repository/destroy_service_spec.rb": 3.643239691999952,10885 "spec/workers/auto_devops/disable_worker_spec.rb": 6.193195602999822,10886 "spec/services/ci/create_pipeline_service/cache_spec.rb": 6.042444793999948,10887 "spec/services/security/ci_configuration/sast_iac_create_service_spec.rb": 4.618312821000018,10888 "spec/lib/gitlab/git/conflict/parser_spec.rb": 1.8362338490001093,10889 "spec/models/integrations/slack_slash_commands_spec.rb": 3.4742415559999245,10890 "spec/lib/gitlab/ci/pipeline/chain/evaluate_workflow_rules_spec.rb": 6.024094085999877,10891 "spec/services/files/create_service_spec.rb": 6.656446304999918,10892 "spec/services/ci/create_pipeline_service/dry_run_spec.rb": 4.358901452999817,10893 "spec/workers/merge_request_mergeability_check_worker_spec.rb": 4.3127038369998445,10894 "spec/services/spam/akismet_service_spec.rb": 1.766200205000132,10895 "spec/lib/bulk_imports/projects/pipelines/issues_pipeline_spec.rb": 4.637647120000111,10896 "spec/graphql/resolvers/snippets_resolver_spec.rb": 2.9225301199999194,10897 "spec/lib/gitlab/metrics/methods_spec.rb": 1.1373669860004156,10898 "spec/lib/gitlab/cleanup/orphan_lfs_file_references_spec.rb": 4.890782298999966,10899 "spec/services/work_items/import_csv_service_spec.rb": 4.143663090000246,10900 "spec/services/ci/create_pipeline_service/rate_limit_spec.rb": 4.533730348000063,10901 "spec/lib/atlassian/jira_connect/serializers/deployment_entity_spec.rb": 4.062430736999886,10902 "spec/support_specs/helpers/html_escaped_helpers_spec.rb": 0.8068729239998902,10903 "spec/lib/gitlab/bitbucket_import/wiki_formatter_spec.rb": 5.635320387999855,10904 "spec/lib/atlassian/jira_connect/serializers/build_entity_spec.rb": 2.1302860149999105,10905 "spec/workers/packages/cleanup_package_registry_worker_spec.rb": 2.5161889840001095,10906 "spec/graphql/types/base_enum_spec.rb": 0.8577517600001556,10907 "spec/models/concerns/clusters/agents/authorizations/ci_access/config_scopes_spec.rb": 4.541483158000119,10908 "spec/lib/gitlab/ci/status/build/manual_spec.rb": 2.0532190510002692,10909 "spec/services/service_desk/custom_email_verifications/create_service_spec.rb": 3.961815615999967,10910 "spec/lib/generators/gitlab/analytics/internal_events_generator_spec.rb": 0.7954033050000362,10911 "spec/views/layouts/devise.html.haml_spec.rb": 2.9279119699999683,10912 "spec/lib/gitlab/ci/pipeline/seed/build/cache_spec.rb": 1.3096623530000215,10913 "spec/lib/gitlab/ci/matching/runner_matcher_spec.rb": 1.219362369999999,10914 "spec/services/releases/links/destroy_service_spec.rb": 3.31980430800013,10915 "spec/lib/gitlab/usage/metrics/instrumentations/count_imported_projects_total_metric_spec.rb": 2.492231345000164,10916 "spec/services/packages/create_event_service_spec.rb": 2.1871476110000003,10917 "spec/graphql/types/query_type_spec.rb": 0.8371948409999277,10918 "spec/graphql/resolvers/clusters/agents_resolver_spec.rb": 1.4790965900001538,10919 "spec/lib/gitlab/metrics/exporter/base_exporter_spec.rb": 0.9134293150000303,10920 "spec/graphql/resolvers/project_packages_resolver_spec.rb": 2.7595903340002224,10921 "spec/graphql/resolvers/group_members_resolver_spec.rb": 2.1657530120000956,10922 "spec/lib/gitlab/ci/parsers/security/sast_spec.rb": 3.975912994999817,10923 "spec/lib/gitlab/pagination/keyset/simple_order_builder_spec.rb": 0.9114810949999992,10924 "spec/lib/gitlab/ci/badge/coverage/template_spec.rb": 0.8803246380002747,10925 "spec/services/admin/abuse_reports/update_service_spec.rb": 1.157605875000172,10926 "spec/services/branches/validate_new_service_spec.rb": 2.5618529199996374,10927 "spec/services/work_items/widgets/current_user_todos_service/update_service_spec.rb": 3.3226589969999623,10928 "spec/models/group_deploy_key_spec.rb": 1.622671967000315,10929 "spec/lib/api/helpers/packages/npm_spec.rb": 2.0197117849997994,10930 "spec/views/projects/hooks/edit.html.haml_spec.rb": 3.6618797189998986,10931 "spec/graphql/mutations/environments/update_spec.rb": 1.6206447780000417,10932 "spec/lib/gitlab/slash_commands/issue_show_spec.rb": 2.580090788999769,10933 "spec/models/projects/triggered_hooks_spec.rb": 1.2013967109996884,10934 "spec/services/work_items/widgets/assignees_service/update_service_spec.rb": 2.6770765199999005,10935 "spec/lib/gitlab/ci/variables/builder/group_spec.rb": 1.286372935000145,10936 "spec/lib/gitlab/auth/result_spec.rb": 0.7694452360001378,10937 "spec/policies/packages/policies/group_policy_spec.rb": 2.103490668000177,10938 "spec/lib/gitlab/hook_data/user_builder_spec.rb": 0.9827119090000451,10939 "spec/lib/gitlab/database/partitioning/ci_sliding_list_strategy_spec.rb": 0.8580489199998738,10940 "spec/lib/gitlab/database/migration_helpers/convert_to_bigint_spec.rb": 0.6475692369999706,10941 "spec/graphql/resolvers/project_merge_requests_resolver_spec.rb": 2.293624182000258,10942 "spec/lib/gitlab/import/merge_request_helpers_spec.rb": 3.5150551619999533,10943 "spec/workers/ssh_keys/expired_notification_worker_spec.rb": 1.1540781949997836,10944 "spec/lib/gitlab/database/async_indexes_spec.rb": 0.8005283239999699,10945 "spec/lib/system_check/app/git_user_default_ssh_config_check_spec.rb": 0.6626986460000808,10946 "spec/lib/gitlab/graphql/loaders/lazy_relation_loader_spec.rb": 1.4573797110001578,10947 "spec/lib/gitlab/sidekiq_middleware/admin_mode/client_spec.rb": 0.8628445499998634,10948 "spec/lib/gitlab/dependency_linker/composer_json_linker_spec.rb": 0.6199114289997851,10949 "spec/rubocop/cop/migration/batch_migrations_post_only_spec.rb": 0.6671106650001093,10950 "spec/services/service_desk/custom_emails/destroy_service_spec.rb": 1.7979745729999195,10951 "spec/services/users/email_verification/validate_token_service_spec.rb": 1.213490610000008,10952 "spec/lib/gitlab/metrics/subscribers/external_http_spec.rb": 0.5482797649997337,10953 "spec/workers/incident_management/pager_duty/process_incident_worker_spec.rb": 1.705697500000042,10954 "spec/lib/declarative_enum_spec.rb": 0.5178921579999951,10955 "spec/initializers/settings_spec.rb": 0.5295471160002307,10956 "spec/workers/object_pool/destroy_worker_spec.rb": 1.4006864660000247,10957 "spec/lib/gitlab/x509/tag_spec.rb": 2.655320822000249,10958 "spec/lib/banzai/filter/front_matter_filter_spec.rb": 0.5577123240000219,10959 "spec/lib/gitlab/request_context_spec.rb": 0.4826408310000261,10960 "spec/lib/gitlab/usage/metrics/instrumentations/jira_imports_total_imported_issues_count_metric_spec.rb": 1.3154947819998597,10961 "spec/graphql/resolvers/blame_resolver_spec.rb": 1.1828541129998484,10962 "spec/lib/bulk_imports/groups/loaders/group_loader_spec.rb": 0.8924751869999454,10963 "spec/lib/gitlab/seeders/project_environment_seeder_spec.rb": 0.8860829069999454,10964 "spec/lib/gitlab/cache/json_cache_spec.rb": 0.3880897580002056,10965 "spec/rubocop/cop/usage_data/distinct_count_by_large_foreign_key_spec.rb": 0.3579588410002543,10966 "spec/lib/gitlab/prometheus/internal_spec.rb": 0.5630091140001241,10967 "spec/graphql/resolvers/users/group_count_resolver_spec.rb": 1.2433614370002033,10968 "spec/lib/gitlab/sidekiq_middleware/admin_mode/server_spec.rb": 0.46686492200024077,10969 "spec/lib/banzai/filter/spaced_link_filter_spec.rb": 0.6295842690001336,10970 "spec/rubocop/cop/performance/active_record_subtransaction_methods_spec.rb": 0.3597723699999733,10971 "spec/views/projects/issues/show.html.haml_spec.rb": 2.299794151000242,10972 "spec/models/concerns/stepable_spec.rb": 0.317171215000144,10973 "spec/workers/mail_scheduler/notification_service_worker_spec.rb": 0.7535670990000654,10974 "spec/lib/gitlab/ci/build/credentials/registry/dependency_proxy_spec.rb": 1.6840390610000213,10975 "spec/services/packages/create_package_file_service_spec.rb": 2.144762584000091,10976 "spec/lib/gitlab/usage/metrics/instrumentations/count_packages_metric_spec.rb": 1.1680493440003374,10977 "spec/services/projects/readme_renderer_service_spec.rb": 0.6552242359998672,10978 "spec/tooling/danger/customer_success_spec.rb": 0.40505652699994243,10979 "spec/workers/jira_connect/sync_branch_worker_spec.rb": 1.1335388269999385,10980 "spec/graphql/mutations/notes/reposition_image_diff_note_spec.rb": 1.4942859380003028,10981 "spec/graphql/mutations/environments/delete_spec.rb": 1.0803732819999823,10982 "spec/channels/noteable/notes_channel_spec.rb": 1.430924793000031,10983 "spec/lib/gitlab/ci/build/credentials/registry/gitlab_registry_spec.rb": 1.638224775999788,10984 "spec/models/legacy_diff_note_spec.rb": 1.5475078029999167,10985 "spec/initializers/1_acts_as_taggable_spec.rb": 0.4536418229999981,10986 "spec/services/google_cloud/get_cloudsql_instances_service_spec.rb": 1.0014434879999499,10987 "spec/services/base_count_service_spec.rb": 0.46192597200024466,10988 "spec/workers/gitlab/bitbucket_server_import/import_pull_request_notes_worker_spec.rb": 1.5509222030000274,10989 "spec/tooling/lib/tooling/parallel_rspec_runner_spec.rb": 0.33647308200033876,10990 "spec/views/shared/milestones/_issuable.html.haml_spec.rb": 1.5017081270002564,10991 "spec/workers/onboarding/issue_created_worker_spec.rb": 0.7590178979999109,10992 "spec/graphql/resolvers/work_items/types_resolver_spec.rb": 0.9788280000002487,10993 "spec/models/concerns/case_sensitivity_spec.rb": 0.3847648990004018,10994 "spec/finders/feature_flags_user_lists_finder_spec.rb": 0.9462068230000114,10995 "spec/lib/gitlab/quick_actions/spend_time_and_date_separator_spec.rb": 0.42631843500021205,10996 "spec/models/exported_protected_branch_spec.rb": 0.9025765269998374,10997 "spec/graphql/mutations/achievements/award_spec.rb": 0.9964240690001134,10998 "spec/models/packages/nuget/dependency_link_metadatum_spec.rb": 0.36513396999998804,10999 "spec/rubocop/cop/gitlab/event_store_subscriber_spec.rb": 0.4489976139998362,11000 "spec/lib/gitlab/usage/metrics/instrumentations/count_ci_internal_pipelines_metric_spec.rb": 1.3516114690000904,11001 "spec/views/groups/_home_panel.html.haml_spec.rb": 1.2032796910002617,11002 "spec/services/members/invite_member_builder_spec.rb": 0.9561887219997516,11003 "spec/views/layouts/organization.html.haml_spec.rb": 1.6275977559998864,11004 "spec/lib/gitlab/usage_data_counters/designs_counter_spec.rb": 0.5631008640002619,11005 "spec/graphql/mutations/clusters/agent_tokens/revoke_spec.rb": 1.116341478999857,11006 "spec/models/dependency_proxy/image_ttl_group_policy_spec.rb": 0.61765590899995,11007 "spec/services/integrations/slack_options/user_search_handler_spec.rb": 1.5150108459997682,11008 "spec/lib/gitlab/usage_data_counters_spec.rb": 0.30294446500010963,11009 "spec/graphql/mutations/ci/runner/bulk_delete_spec.rb": 1.0760297609999725,11010 "spec/graphql/mutations/pages/mark_onboarding_complete_spec.rb": 1.1153365989998747,11011 "spec/lib/gitlab/sanitizers/exception_message_spec.rb": 0.46297859199967206,11012 "spec/helpers/milestones_helper_spec.rb": 0.453950882999834,11013 "spec/models/concerns/token_authenticatable_strategies/encryption_helper_spec.rb": 0.32290189400009695,11014 "spec/lib/gitlab/ci/trace/metrics_spec.rb": 1.4216783630004102,11015 "spec/rubocop/cop/gitlab/doc_url_spec.rb": 0.39640031699991596,11016 "spec/models/webauthn_registration_spec.rb": 0.4515084839999872,11017 "spec/finders/lfs_pointers_finder_spec.rb": 0.8790528380000069,11018 "spec/presenters/deployments/deployment_presenter_spec.rb": 0.978262309999991,11019 "spec/graphql/mutations/terraform/state/delete_spec.rb": 0.8794546379999701,11020 "spec/presenters/ml/candidates_csv_presenter_spec.rb": 0.856071769999744,11021 "spec/initializers/carrierwave_s3_encryption_headers_patch_spec.rb": 0.3459988610002256,11022 "spec/graphql/resolvers/projects/grafana_integration_resolver_spec.rb": 0.6834561440000471,11023 "spec/components/pajamas/checkbox_tag_component_spec.rb": 0.3862964479999391,11024 "spec/services/bulk_imports/archive_extraction_service_spec.rb": 0.7020715729995572,11025 "spec/finders/analytics/cycle_analytics/stage_finder_spec.rb": 0.41513212600011684,11026 "spec/lib/gitlab/ci/environment_matcher_spec.rb": 0.4030119070002911,11027 "spec/rubocop/cop/qa/element_with_pattern_spec.rb": 0.27692706700008785,11028 "spec/models/releases/evidence_spec.rb": 0.9118007349998152,11029 "spec/rubocop/cop/code_reuse/serializer_spec.rb": 0.436446444000012,11030 "spec/serializers/integrations/project_entity_spec.rb": 0.5130065580001428,11031 "spec/graphql/resolvers/work_item_resolver_spec.rb": 1.1646745349999037,11032 "spec/lib/gitlab/middleware/webhook_recursion_detection_spec.rb": 1.0303815359998225,11033 "spec/lib/google_cloud/logging_service/logger_spec.rb": 0.8485070409997206,11034 "spec/lib/gitlab/ci/config/entry/inherit/variables_spec.rb": 0.43000053500009017,11035 "spec/lib/gitlab/usage/metrics/instrumentations/service_ping_features_metric_spec.rb": 0.23329284099963843,11036 "spec/workers/concerns/cronjob_queue_spec.rb": 0.3554204709998885,11037 "spec/lib/gitlab/config/entry/validatable_spec.rb": 0.2913570969999455,11038 "spec/views/admin/application_settings/_repository_storage.html.haml_spec.rb": 0.39012575800006744,11039 "spec/lib/gitlab/git/patches/collection_spec.rb": 0.24552403000006962,11040 "spec/lib/bulk_imports/projects/pipelines/commit_notes_pipeline_spec.rb": 1.0451518840000062,11041 "spec/services/ci/pipeline_creation/start_pipeline_service_spec.rb": 0.8939544069999101,11042 "spec/lib/gitlab/changelog/generator_spec.rb": 0.5978299110001899,11043 "spec/lib/gitlab/graphql/tracers/timer_tracer_spec.rb": 0.22283149100030641,11044 "spec/serializers/ci/variable_entity_spec.rb": 0.18399482499989972,11045 "spec/workers/gitlab/github_import/stage/import_attachments_worker_spec.rb": 0.6418392880000283,11046 "spec/views/admin/application_settings/ci_cd.html.haml_spec.rb": 0.6122500800001944,11047 "spec/lib/api/helpers/rate_limiter_spec.rb": 0.3355998020001607,11048 "spec/lib/gitlab/patch/node_loader_spec.rb": 0.3086031150000963,11049 "spec/models/resource_events/issue_assignment_event_spec.rb": 0.38961630800031344,11050 "spec/services/releases/links/params_spec.rb": 0.2780223570002818,11051 "spec/serializers/activity_pub/user_entity_spec.rb": 0.33376032200021655,11052 "spec/workers/gitlab/bitbucket_server_import/stage/finish_import_worker_spec.rb": 0.6129621089999091,11053 "spec/validators/namespace_path_validator_spec.rb": 0.4096045169999343,11054 "spec/rubocop/cop/rspec/factory_bot/avoid_create_spec.rb": 0.3478240009999354,11055 "spec/lib/api/helpers/import_github_helpers_spec.rb": 0.3535981109998829,11056 "spec/models/concerns/prometheus_adapter_spec.rb": 0.5861549619999096,11057 "spec/graphql/types/access_level_enum_spec.rb": 0.22625099099968793,11058 "spec/views/devise/confirmations/almost_there.html.haml_spec.rb": 0.4796499300000505,11059 "spec/services/integrations/slack_interactions/block_action_service_spec.rb": 0.5425537959999929,11060 "spec/lib/gitlab/ci/pipeline/expression/lexeme/null_spec.rb": 0.24565335999977833,11061 "spec/views/profiles/notifications/show.html.haml_spec.rb": 0.6241045990000202,11062 "spec/lib/gitlab/pagination/offset_header_builder_spec.rb": 0.24603350000006685,11063 "spec/graphql/types/projects/base_service_type_spec.rb": 0.2461285700001099,11064 "spec/components/pajamas/component_spec.rb": 0.26989435799987405,11065 "spec/rubocop/cop/graphql/resource_not_available_error_spec.rb": 0.2754564870001559,11066 "spec/lib/gitlab/database/tables_sorted_by_foreign_keys_spec.rb": 0.44863767300012114,11067 "spec/lib/system_check/app/gitlab_cable_config_exists_check_spec.rb": 0.22491616199977216,11068 "spec/rubocop/cop/migration/background_migrations_spec.rb": 0.31722257399997034,11069 "spec/graphql/types/merge_request_state_enum_spec.rb": 0.32936569299999974,11070 "spec/workers/ci/stuck_builds/drop_running_worker_spec.rb": 0.31191420400000425,11071 "spec/lib/gitlab/middleware/rack_multipart_tempfile_factory_spec.rb": 0.3177966840003137,11072 "spec/lib/sidebars/your_work/menus/organizations_menu_spec.rb": 0.2620603979999032,11073 "spec/workers/todos_destroyer/destroyed_designs_worker_spec.rb": 0.1841114649996598,11074 "spec/lib/gitlab/pages/random_domain_spec.rb": 0.2727951470001244,11075 "spec/presenters/key_presenter_spec.rb": 0.2466429099999914,11076 "spec/lib/gitlab/sidekiq_death_handler_spec.rb": 0.2202402519997122,11077 "spec/graphql/types/ci_configuration/sast/analyzers_entity_input_type_spec.rb": 0.26053177800031335,11078 "spec/policies/instance_metadata_policy_spec.rb": 0.3478063820002717,11079 "spec/views/pwa/manifest.json.erb_spec.rb": 0.26670942800001285,11080 "spec/lib/sidebars/projects/super_sidebar_menus/code_menu_spec.rb": 0.2099717529999907,11081 "spec/graphql/types/commit_signatures/verification_status_enum_spec.rb": 0.21041999200042483,11082 "spec/helpers/registrations_helper_spec.rb": 0.21425803300007829,11083 "spec/graphql/types/ide_type_spec.rb": 0.19867544300041118,11084 "spec/rubocop/cop/avoid_route_redirect_leading_slash_spec.rb": 0.20246092400020643,11085 "spec/lib/click_house/record_sync_context_spec.rb": 0.19028056400020432,11086 "spec/lib/gitlab/metrics/transaction_spec.rb": 0.17639525599997796,11087 "spec/graphql/types/work_items/related_link_type_enum_spec.rb": 0.20453455300003043,11088 "spec/graphql/types/tree/type_enum_spec.rb": 0.21014350299992657,11089 "spec/lib/gitlab/net_http_adapter_spec.rb": 0.16892003700013447,11090 "spec/lib/gitlab/usage/metrics/instrumentations/count_ci_runners_instance_type_active_online_metric_spec.rb": 0.2191264019998016,11091 "spec/workers/environments/auto_stop_cron_worker_spec.rb": 0.1745438349998949,11092 "spec/views/help/show.html.haml_spec.rb": 0.19372446399984256,11093 "spec/graphql/types/packages/package_group_sort_enum_spec.rb": 0.15676489700035745,11094 "spec/lib/sidebars/projects/context_spec.rb": 0.1768299250002201,11095 "spec/graphql/types/packages/package_file_type_spec.rb": 0.16876505599975644,11096 "spec/serializers/evidences/release_serializer_spec.rb": 0.16515432599999258,11097 "spec/services/wiki_pages/base_service_spec.rb": 0.16719870599990827,11098 "spec/lib/gitlab/github_import/representation/lfs_object_spec.rb": 0.1496787480000421,11099 "spec/lib/gitlab/metrics/exporter/gc_request_middleware_spec.rb": 0.15660506700032784,11100 "spec/services/issues/issuable_base_service_spec.rb": 0.17307221600003686,11101 "spec/lib/gitlab/ci/variables/downstream/raw_variable_generator_spec.rb": 0.16249683600017306,11102 "spec/lib/click_house/models/audit_event_spec.rb": 0.658780025999931211104Knapsack global time execution for tests: 33m 19s11105Pending: (Failures listed here are expected and do not affect your suite's status)11106 1) Gitlab::Database::MigrationHelpers::AutomaticLockWritesOnTables when executing create_table migrations when single database does not lock any newly created tables11107 # Skipping because database ci exists11108 # ./spec/lib/gitlab/database/migration_helpers/automatic_lock_writes_on_tables_spec.rb:10211109 2) Gitlab::Database::MigrationHelpers::AutomaticLockWritesOnTables when executing create_table migrations when multiple databases for creating a gitlab_geo table behaves like does not lock writes on table allows deleting records from the table11110 # No reason given11111 # ./spec/lib/gitlab/database/migration_helpers/automatic_lock_writes_on_tables_spec.rb:4311112 3) Gitlab::Database::MigrationHelpers::AutomaticLockWritesOnTables when reversing drop_table migrations when single database does not lock any newly created tables11113 # Skipping because database ci exists11114 # ./spec/lib/gitlab/database/migration_helpers/automatic_lock_writes_on_tables_spec.rb:31911115 4) Ci::CreatePipelineService#execute behaves like creating a pipeline with environment keyword with environment sets tags when build job11116 # No reason given11117 # ./spec/support/shared_examples/ci/create_pipeline_service_environment_shared_examples.rb:2211118Finished in 34 minutes 33 seconds (files took 1 minute 0.62 seconds to load)111195221 examples, 0 failures, 4 pending11120Randomized with seed 6017611121[TEST PROF INFO] Time spent in factories: 15:36.941 (44.98% of total time)11122RSpec exited with 0.11123No examples to retry, congrats!11125Running after script...11126$ echo -e "\e[0Ksection_start:`date +%s`:report_results_section[collapsed=true]\r\e[0KReport results"11130$ tooling/bin/push_job_metrics || true11131[job-metrics] Pushing job metrics file for the CI/CD job.11132[job-metrics] Pushed 4 CI job metric entries to InfluxDB.11134Not uploading cache ruby-gems-debian-bullseye-ruby-3.0-16 due to policy11136Uploading artifacts...11137auto_explain/: found 3 matching artifact files and directories 11138coverage/: found 5 matching artifact files and directories 11139crystalball/: found 2 matching artifact files and directories 11140deprecations/: found 5 matching artifact files and directories 11141knapsack/: found 4 matching artifact files and directories 11142rspec/: found 16 matching artifact files and directories 11143WARNING: tmp/capybara/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 11144log/*.log: found 21 matching artifact files and directories 11145WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/5336650776/artifacts?artifact_format=zip&artifact_type=archive&expire_in=31d new-url=https://gitlab.com11146WARNING: Retrying... context=artifacts-uploader error=request redirected11147Uploading artifacts as "archive" to coordinator... 201 Created id=5336650776 responseStatus=201 Created token=64_PWPXT11148Uploading artifacts...11149rspec/rspec-*.xml: found 1 matching artifact files and directories 11150WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/5336650776/artifacts?artifact_format=gzip&artifact_type=junit&expire_in=31d new-url=https://gitlab.com11151WARNING: Retrying... context=artifacts-uploader error=request redirected11152Uploading artifacts as "junit" to coordinator... 201 Created id=5336650776 responseStatus=201 Created token=64_PWPXT11154Job succeeded