rspec unit pg12 16/22
Passed Started
by
@splattael
Peter Leitzen
1 uses one of the allowed migration classes2 migration: #<struct ActiveRecord::MigrationProxy name="ScheduleMergeTopicsWithSameName", version=20220223124428, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220223124428_schedule_merge_topics_with_same_name.rb", scope="">3 uses one of the allowed migration classes4 migration: #<struct ActiveRecord::MigrationProxy name="AsyncBuildTraceExpireAtIndex", version=20220224000000, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220224000000_async_build_trace_expire_at_index.rb", scope="">5 uses one of the allowed migration classes6 migration: #<struct ActiveRecord::MigrationProxy name="RecreateIndexSecurityCiBuildsOnNameAndIdParserWithNewFeatures", version=20220224204415, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220224204415_recreate_index_security_ci_builds_on_name_and_id_parser_with_new_features.rb", scope="">7 uses one of the allowed migration classes8 migration: #<struct ActiveRecord::MigrationProxy name="CleanupBackfillCiQueuingTables", version=20220225133705, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220225133705_cleanup_backfill_ci_queuing_tables.rb", scope="">9 uses one of the allowed migration classes10 migration: #<struct ActiveRecord::MigrationProxy name="AddSecurityOrchestrationPolicyConfigurationNamespaceReference", version=20220301002101, filename="db/migrate/20220301002101_add_security_orchestration_policy_configuration_namespace_reference.rb", scope="">11 uses one of the allowed migration classes12 migration: #<struct ActiveRecord::MigrationProxy name="AddSecurityOrchestrationPolicyConfigurationNamespaceIndex", version=20220301003502, filename="db/migrate/20220301003502_add_security_orchestration_policy_configuration_namespace_index.rb", scope="">13 uses one of the allowed migration classes14 migration: #<struct ActiveRecord::MigrationProxy name="AddNotNullConstraintToSecurityPolicyConfigurations", version=20220301091503, filename="db/migrate/20220301091503_add_not_null_constraint_to_security_policy_configurations.rb", scope="">15 uses one of the allowed migration classes16 migration: #<struct ActiveRecord::MigrationProxy name="BackfillAllProjectNamespaces", version=20220301093434, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220301093434_backfill_all_project_namespaces.rb", scope="">17 uses one of the allowed migration classes18 migration: #<struct ActiveRecord::MigrationProxy name="ChangeSecurityOrchestrationPolicyConfigurationProjectIndex", version=20220301175104, filename="db/migrate/20220301175104_change_security_orchestration_policy_configuration_project_index.rb", scope="">19 uses one of the allowed migration classes20 migration: #<struct ActiveRecord::MigrationProxy name="CreateProjectBuildArtifactsSizeRefresh", version=20220301175426, filename="db/migrate/20220301175426_create_project_build_artifacts_size_refresh.rb", scope="">21 uses one of the allowed migration classes22 migration: #<struct ActiveRecord::MigrationProxy name="AddGroupFeaturesTable", version=20220302110724, filename="db/migrate/20220302110724_add_group_features_table.rb", scope="">23 uses one of the allowed migration classes24 migration: #<struct ActiveRecord::MigrationProxy name="BackfillGroupFeatures", version=20220302114046, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220302114046_backfill_group_features.rb", scope="">25 uses one of the allowed migration classes26 migration: #<struct ActiveRecord::MigrationProxy name="CreateIndexSecurityCiBuildsOnNameAndIdParserWithNewFeatures", version=20220302203410, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220302203410_create_index_security_ci_builds_on_name_and_id_parser_with_new_features.rb", scope="">27 uses one of the allowed migration classes28 migration: #<struct ActiveRecord::MigrationProxy name="AddCommentToDeploymentApprovals", version=20220303190555, filename="db/migrate/20220303190555_add_comment_to_deployment_approvals.rb", scope="">29 uses one of the allowed migration classes30 migration: #<struct ActiveRecord::MigrationProxy name="AddTextLimitToDeploymentApprovalsComment", version=20220303191047, filename="db/migrate/20220303191047_add_text_limit_to_deployment_approvals_comment.rb", scope="">31 uses one of the allowed migration classes32 migration: #<struct ActiveRecord::MigrationProxy name="RemoveNotNullContraintOnTitleFromSprints", version=20220304052335, filename="db/migrate/20220304052335_remove_not_null_contraint_on_title_from_sprints.rb", scope="">33 uses one of the allowed migration classes34 migration: #<struct ActiveRecord::MigrationProxy name="RemoveUniqueIndexForSprintsOnIterationsCadenceIdAndTitle", version=20220304061631, filename="db/migrate/20220304061631_remove_unique_index_for_sprints_on_iterations_cadence_id_and_title.rb", scope="">35 uses one of the allowed migration classes36 migration: #<struct ActiveRecord::MigrationProxy name="RemoveUniqueIndexForSprintsOnProjectIdAndTitle", version=20220304062107, filename="db/migrate/20220304062107_remove_unique_index_for_sprints_on_project_id_and_title.rb", scope="">37 uses one of the allowed migration classes38 migration: #<struct ActiveRecord::MigrationProxy name="AddDefaultToRequiredPythonOnPackagesPypiMetadata", version=20220304152729, filename="db/migrate/20220304152729_add_default_to_required_python_on_packages_pypi_metadata.rb", scope="">39 uses one of the allowed migration classes40 migration: #<struct ActiveRecord::MigrationProxy name="DropPartitionedForeignKeys", version=20220304165107, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220304165107_drop_partitioned_foreign_keys.rb", scope="">41 uses one of the allowed migration classes42 migration: #<struct ActiveRecord::MigrationProxy name="AddUniqueIndexOnSecurityTrainingProviders", version=20220304201847, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220304201847_add_unique_index_on_security_training_providers.rb", scope="">43 uses one of the allowed migration classes44 migration: #<struct ActiveRecord::MigrationProxy name="AddSecurityTrainingProviders", version=20220305223212, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220305223212_add_security_training_providers.rb", scope="">45 uses one of the allowed migration classes46 migration: #<struct ActiveRecord::MigrationProxy name="CreateIndexForRemoveDuplicateProjectTagReleases", version=20220307192534, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220307192534_create_index_for_remove_duplicate_project_tag_releases.rb", scope="">47 uses one of the allowed migration classes48 migration: #<struct ActiveRecord::MigrationProxy name="RemoveDuplicateProjectTagReleases", version=20220307192610, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220307192610_remove_duplicate_project_tag_releases.rb", scope="">49 uses one of the allowed migration classes50 migration: #<struct ActiveRecord::MigrationProxy name="RemoveIndexForRemoveDuplicateProjectTagReleases", version=20220307192645, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220307192645_remove_index_for_remove_duplicate_project_tag_releases.rb", scope="">51 uses one of the allowed migration classes52 migration: #<struct ActiveRecord::MigrationProxy name="CreateUniqueIndexReleaseTagProject", version=20220307192725, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220307192725_create_unique_index_release_tag_project.rb", scope="">53 uses one of the allowed migration classes54 migration: #<struct ActiveRecord::MigrationProxy name="RenameUserEmailLookupLimitSettingToSearchSettings", version=20220307203458, filename="db/migrate/20220307203458_rename_user_email_lookup_limit_setting_to_search_settings.rb", scope="">55 uses one of the allowed migration classes56 migration: #<struct ActiveRecord::MigrationProxy name="RenameUserEmailLookupLimitSettingToSearchSettingsCleanup", version=20220307203459, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220307203459_rename_user_email_lookup_limit_setting_to_search_settings_cleanup.rb", scope="">57 uses one of the allowed migration classes58 migration: #<struct ActiveRecord::MigrationProxy name="DropOldIndexSecurityCiBuildsOnNameAndIdParserFeatures", version=20220308000205, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220308000205_drop_old_index_security_ci_builds_on_name_and_id_parser_features.rb", scope="">59 uses one of the allowed migration classes60 migration: #<struct ActiveRecord::MigrationProxy name="ScheduleResetDuplicateCiRunnersTokenEncryptedValuesOnProjects", version=20220308115219, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220308115219_schedule_reset_duplicate_ci_runners_token_encrypted_values_on_projects.rb", scope="">61 uses one of the allowed migration classes62 migration: #<struct ActiveRecord::MigrationProxy name="ScheduleResetDuplicateCiRunnersTokenValuesOnProjects", version=20220308115502, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220308115502_schedule_reset_duplicate_ci_runners_token_values_on_projects.rb", scope="">63 uses one of the allowed migration classes64 migration: #<struct ActiveRecord::MigrationProxy name="RemoveExternalPullRequestTracking", version=20220309084838, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220309084838_remove_external_pull_request_tracking.rb", scope="">65 uses one of the allowed migration classes66 migration: #<struct ActiveRecord::MigrationProxy name="RemoveLeftoverExternalPullRequestDeletions", version=20220309084954, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220309084954_remove_leftover_external_pull_request_deletions.rb", scope="">67 uses one of the allowed migration classes68 migration: #<struct ActiveRecord::MigrationProxy name="AddTimeToRestoreServiceDoraMetric", version=20220309100648, filename="db/migrate/20220309100648_add_time_to_restore_service_dora_metric.rb", scope="">69 uses one of the allowed migration classes70 migration: #<struct ActiveRecord::MigrationProxy name="AddIndexOnIssuesClosedIncidents", version=20220309154855, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220309154855_add_index_on_issues_closed_incidents.rb", scope="">71 uses one of the allowed migration classes72 migration: #<struct ActiveRecord::MigrationProxy name="AddDatabaseGrafanaConfigToApplicationSettings", version=20220310011530, filename="db/migrate/20220310011530_add_database_grafana_config_to_application_settings.rb", scope="">73 uses one of the allowed migration classes74 migration: #<struct ActiveRecord::MigrationProxy name="AddTextLimitToDatabaseGrafanaApplicationSettings", version=20220310011613, filename="db/migrate/20220310011613_add_text_limit_to_database_grafana_application_settings.rb", scope="">75 uses one of the allowed migration classes76 migration: #<struct ActiveRecord::MigrationProxy name="AddAsyncIndexCiJobArtifactsProjectIdCreatedAt", version=20220310095341, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220310095341_add_async_index_ci_job_artifacts_project_id_created_at.rb", scope="">77 uses one of the allowed migration classes78 migration: #<struct ActiveRecord::MigrationProxy name="UpdateHolderNameLimit", version=20220310101118, filename="db/migrate/20220310101118_update_holder_name_limit.rb", scope="">79 uses one of the allowed migration classes80 migration: #<struct ActiveRecord::MigrationProxy name="AddIndexProjectIdAndReleasedAtAndIdOnReleases", version=20220310134207, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220310134207_add_index_project_id_and_released_at_and_id_on_releases.rb", scope="">81 uses one of the allowed migration classes82 migration: #<struct ActiveRecord::MigrationProxy name="RemoveDependencyListUsageDataFromRedis", version=20220310141349, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220310141349_remove_dependency_list_usage_data_from_redis.rb", scope="">83 uses one of the allowed migration classes84 migration: #<struct ActiveRecord::MigrationProxy name="CreateScanIdAndIdIndexOnSecurityFindings", version=20220311010352, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220311010352_create_scan_id_and_id_index_on_security_findings.rb", scope="">85 uses one of the allowed migration classes86 migration: #<struct ActiveRecord::MigrationProxy name="AddPackageRegistryAccessLevelIntoProjectFeatures", version=20220314094841, filename="db/migrate/20220314094841_add_package_registry_access_level_into_project_features.rb", scope="">87 uses one of the allowed migration classes88 migration: #<struct ActiveRecord::MigrationProxy name="MigrateVulnerabilityApprovalRules", version=20220314154235, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220314154235_migrate_vulnerability_approval_rules.rb", scope="">89 uses one of the allowed migration classes90 migration: #<struct ActiveRecord::MigrationProxy name="AddIndexCiJobArtifactsProjectIdCreatedAt", version=20220314162342, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220314162342_add_index_ci_job_artifacts_project_id_created_at.rb", scope="">91 uses one of the allowed migration classes92 migration: #<struct ActiveRecord::MigrationProxy name="CreateProtectedEnvironmentApprovalRules", version=20220314184009, filename="db/migrate/20220314184009_create_protected_environment_approval_rules.rb", scope="">93 uses one of the allowed migration classes94 migration: #<struct ActiveRecord::MigrationProxy name="AddUserFkToProtectedEnvironmentApprovalRules", version=20220314184109, filename="db/migrate/20220314184109_add_user_fk_to_protected_environment_approval_rules.rb", scope="">95 uses one of the allowed migration classes96 migration: #<struct ActiveRecord::MigrationProxy name="AddGroupFkToProtectedEnvironmentApprovalRules", version=20220314184209, filename="db/migrate/20220314184209_add_group_fk_to_protected_environment_approval_rules.rb", scope="">97 uses one of the allowed migration classes98 migration: #<struct ActiveRecord::MigrationProxy name="AddApprovalRuleIdToDeploymentApprovals", version=20220314194009, filename="db/migrate/20220314194009_add_approval_rule_id_to_deployment_approvals.rb", scope="">99 uses one of the allowed migration classes100 migration: #<struct ActiveRecord::MigrationProxy name="AddProjectCiSecureFilesToPlanLimits", version=20220314194149, filename="db/migrate/20220314194149_add_project_ci_secure_files_to_plan_limits.rb", scope="">101 uses one of the allowed migration classes102 migration: #<struct ActiveRecord::MigrationProxy name="AddApprovalRuleFkToDeploymentApprovals", version=20220314204009, filename="db/migrate/20220314204009_add_approval_rule_fk_to_deployment_approvals.rb", scope="">103 uses one of the allowed migration classes104 migration: #<struct ActiveRecord::MigrationProxy name="AddTmpIndexToSupportLeakyRegexCleanup", version=20220315171027, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220315171027_add_tmp_index_to_support_leaky_regex_cleanup.rb", scope="">105 uses one of the allowed migration classes106 migration: #<struct ActiveRecord::MigrationProxy name="CleanupDraftDataFromFaultyRegex", version=20220315171129, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220315171129_cleanup_draft_data_from_faulty_regex.rb", scope="">107 uses one of the allowed migration classes108 migration: #<struct ActiveRecord::MigrationProxy name="RemoveIssuesWorkItemTypeIdIndex", version=20220315181125, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220315181125_remove_issues_work_item_type_id_index.rb", scope="">109 uses one of the allowed migration classes110 migration: #<struct ActiveRecord::MigrationProxy name="AddTemporaryIssueTypeIndexForWorkItemTypes", version=20220315181130, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220315181130_add_temporary_issue_type_index_for_work_item_types.rb", scope="">111 uses one of the allowed migration classes112 migration: #<struct ActiveRecord::MigrationProxy name="BackfillWorkItemTypeIdOnIssues", version=20220315181136, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220315181136_backfill_work_item_type_id_on_issues.rb", scope="">113 uses one of the allowed migration classes114 migration: #<struct ActiveRecord::MigrationProxy name="AddIndexToVulnerabilityReads", version=20220315211043, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220315211043_add_index_to_vulnerability_reads.rb", scope="">115 uses one of the allowed migration classes116 migration: #<struct ActiveRecord::MigrationProxy name="AddCreatorIdToDeployTokens", version=20220316095126, filename="db/migrate/20220316095126_add_creator_id_to_deploy_tokens.rb", scope="">117 uses one of the allowed migration classes118 migration: #<struct ActiveRecord::MigrationProxy name="AddIndexToDeployTokensOnCreatorId", version=20220316102900, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220316102900_add_index_to_deploy_tokens_on_creator_id.rb", scope="">119 uses one of the allowed migration classes120 migration: #<struct ActiveRecord::MigrationProxy name="AddUserForeignKeyToDeployTokens", version=20220316102902, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220316102902_add_user_foreign_key_to_deploy_tokens.rb", scope="">121 uses one of the allowed migration classes122 migration: #<struct ActiveRecord::MigrationProxy name="UpdateOrganizationsNameIndexAddId", version=20220316112118, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220316112118_update_organizations_name_index_add_id.rb", scope="">123 uses one of the allowed migration classes124 migration: #<struct ActiveRecord::MigrationProxy name="AddContactsIndexOnGroupEmailAndId", version=20220316112206, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220316112206_add_contacts_index_on_group_email_and_id.rb", scope="">125 uses one of the allowed migration classes126 migration: #<struct ActiveRecord::MigrationProxy name="AddIndexToVulnerabilities", version=20220316165539, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220316165539_add_index_to_vulnerabilities.rb", scope="">127 uses one of the allowed migration classes128 migration: #<struct ActiveRecord::MigrationProxy name="AddMigrationPlanToContainerRepositories", version=20220316202200, filename="db/migrate/20220316202200_add_migration_plan_to_container_repositories.rb", scope="">129 uses one of the allowed migration classes130 migration: #<struct ActiveRecord::MigrationProxy name="AddTextLimitToContainerRepositoriesMigrationPlan", version=20220316202402, filename="db/migrate/20220316202402_add_text_limit_to_container_repositories_migration_plan.rb", scope="">131 uses one of the allowed migration classes132 migration: #<struct ActiveRecord::MigrationProxy name="PopulateContainerRepositoriesMigrationPlan", version=20220316202640, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220316202640_populate_container_repositories_migration_plan.rb", scope="">133 uses one of the allowed migration classes134 migration: #<struct ActiveRecord::MigrationProxy name="RemoveCiRunnersCiBuildsRunnerIdFk", version=20220317161914, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220317161914_remove_ci_runners_ci_builds_runner_id_fk.rb", scope="">135 uses one of the allowed migration classes136 migration: #<struct ActiveRecord::MigrationProxy name="AddNotificationLevelToNamespaceRootStorageStatistics", version=20220317170122, filename="db/migrate/20220317170122_add_notification_level_to_namespace_root_storage_statistics.rb", scope="">137 uses one of the allowed migration classes138 migration: #<struct ActiveRecord::MigrationProxy name="AddIndexesForPrimaryEmailSecondCleanupMigration", version=20220318111040, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220318111040_add_indexes_for_primary_email_second_cleanup_migration.rb", scope="">139 uses one of the allowed migration classes140 migration: #<struct ActiveRecord::MigrationProxy name="CleanupAfterFixingIssueWhenAdminChangedPrimaryEmail", version=20220318111729, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220318111729_cleanup_after_fixing_issue_when_admin_changed_primary_email.rb", scope="">141 uses one of the allowed migration classes142 migration: #<struct ActiveRecord::MigrationProxy name="DropTemporaryIndexesForPrimaryEmailMigrationSecondCleanup", version=20220318111949, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220318111949_drop_temporary_indexes_for_primary_email_migration_second_cleanup.rb", scope="">143 uses one of the allowed migration classes144 migration: #<struct ActiveRecord::MigrationProxy name="AddTargetPlatformsToProjectSetting", version=20220318120802, filename="db/migrate/20220318120802_add_target_platforms_to_project_setting.rb", scope="">145 uses one of the allowed migration classes146 migration: #<struct ActiveRecord::MigrationProxy name="AddPagesOnboardingState", version=20220318141037, filename="db/migrate/20220318141037_add_pages_onboarding_state.rb", scope="">147 uses one of the allowed migration classes148 migration: #<struct ActiveRecord::MigrationProxy name="AlterConstraintRemoteImportUrl", version=20220321025720, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220321025720_alter_constraint_remote_import_url.rb", scope="">149 uses one of the allowed migration classes150 migration: #<struct ActiveRecord::MigrationProxy name="AddStartedAtToBatchedBackgroundMigrationsTable", version=20220321150028, filename="db/migrate/20220321150028_add_started_at_to_batched_background_migrations_table.rb", scope="">151 uses one of the allowed migration classes152 migration: #<struct ActiveRecord::MigrationProxy name="RemoveUserEmailLookupLimit", version=20220321201912, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220321201912_remove_user_email_lookup_limit.rb", scope="">153 uses one of the allowed migration classes154 migration: #<struct ActiveRecord::MigrationProxy name="RemoveAllIssuableEscalationStatuses", version=20220321234317, filename="db/migrate/20220321234317_remove_all_issuable_escalation_statuses.rb", scope="">155 uses one of the allowed migration classes156 migration: #<struct ActiveRecord::MigrationProxy name="AddTmpIndexRoutesIdForProjectNamespaces", version=20220322023800, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220322023800_add_tmp_index_routes_id_for_project_namespaces.rb", scope="">157 uses one of the allowed migration classes158 migration: #<struct ActiveRecord::MigrationProxy name="AddMigrationPlanIndexToContainerRepositories", version=20220322035654, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220322035654_add_migration_plan_index_to_container_repositories.rb", scope="">159 uses one of the allowed migration classes160 migration: #<struct ActiveRecord::MigrationProxy name="FinalizeProjectNamespacesBackfill", version=20220322071127, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220322071127_finalize_project_namespaces_backfill.rb", scope="">161 uses one of the allowed migration classes162 migration: #<struct ActiveRecord::MigrationProxy name="RemoveWikiNotes", version=20220322094410, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220322094410_remove_wiki_notes.rb", scope="">163 uses one of the allowed migration classes164 migration: #<struct ActiveRecord::MigrationProxy name="UpdatePagesOnboardingState", version=20220322132242, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220322132242_update_pages_onboarding_state.rb", scope="">165 uses one of the allowed migration classes166 migration: #<struct ActiveRecord::MigrationProxy name="AddDoraIncidentsCount", version=20220322143441, filename="db/migrate/20220322143441_add_dora_incidents_count.rb", scope="">167 uses one of the allowed migration classes168 migration: #<struct ActiveRecord::MigrationProxy name="ChangeSearchRateLimitDefaultValues", version=20220322205004, filename="db/migrate/20220322205004_change_search_rate_limit_default_values.rb", scope="">169 uses one of the allowed migration classes170 migration: #<struct ActiveRecord::MigrationProxy name="ChangeSearchRateLimitValues", version=20220322205008, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220322205008_change_search_rate_limit_values.rb", scope="">171 uses one of the allowed migration classes172 migration: #<struct ActiveRecord::MigrationProxy name="BackfillNamespaceIdForProjectRoutes", version=20220323023800, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220323023800_backfill_namespace_id_for_project_routes.rb", scope="">173 uses one of the allowed migration classes174 migration: #<struct ActiveRecord::MigrationProxy name="AddTempIndexOnNullProjectNamespaceIds", version=20220323130000, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220323130000_add_temp_index_on_null_project_namespace_ids.rb", scope="">175 uses one of the allowed migration classes176 migration: #<struct ActiveRecord::MigrationProxy name="AddIndexOnVisibleDeployments", version=20220323152202, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220323152202_add_index_on_visible_deployments.rb", scope="">177 uses one of the allowed migration classes178 migration: #<struct ActiveRecord::MigrationProxy name="MigrateShimoConfluenceServiceCategory", version=20220324032250, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220324032250_migrate_shimo_confluence_service_category.rb", scope="">179 uses one of the allowed migration classes180 migration: #<struct ActiveRecord::MigrationProxy name="FixAndBackfillProjectNamespacesForProjectsWithDuplicateName", version=20220324081709, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220324081709_fix_and_backfill_project_namespaces_for_projects_with_duplicate_name.rb", scope="">181 uses one of the allowed migration classes182 migration: #<struct ActiveRecord::MigrationProxy name="AddEnforceAuthChecksOnUploadsToProjectSettings", version=20220324091224, filename="db/migrate/20220324091224_add_enforce_auth_checks_on_uploads_to_project_settings.rb", scope="">183 uses one of the allowed migration classes184 migration: #<struct ActiveRecord::MigrationProxy name="UntrackDeletionsOnCiJobArtifacts", version=20220324110247, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220324110247_untrack_deletions_on_ci_job_artifacts.rb", scope="">185 uses one of the allowed migration classes186 migration: #<struct ActiveRecord::MigrationProxy name="ScheduleBackfillProjectSettings", version=20220324165436, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220324165436_schedule_backfill_project_settings.rb", scope="">187 uses one of the allowed migration classes188 migration: #<struct ActiveRecord::MigrationProxy name="AddPublicGitLabRunnerReleasesUrlToApplicationSettings", version=20220324171254, filename="db/migrate/20220324171254_add_public_git_lab_runner_releases_url_to_application_settings.rb", scope="">189 uses one of the allowed migration classes190 migration: #<struct ActiveRecord::MigrationProxy name="AddTextLimitToPublicGitLabRunnerReleasesUrlApplicationSettings", version=20220324173554, filename="db/migrate/20220324173554_add_text_limit_to_public_git_lab_runner_releases_url_application_settings.rb", scope="">191 uses one of the allowed migration classes192 migration: #<struct ActiveRecord::MigrationProxy name="AddKeyDataToSecureFiles", version=20220324175325, filename="db/migrate/20220324175325_add_key_data_to_secure_files.rb", scope="">193 uses one of the allowed migration classes194 migration: #<struct ActiveRecord::MigrationProxy name="RemoveProjectPagesMetadataArtifactsArchiveIdColumn", version=20220324180717, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220324180717_remove_project_pages_metadata_artifacts_archive_id_column.rb", scope="">195 uses one of the allowed migration classes196 migration: #<struct ActiveRecord::MigrationProxy name="PrepareIndexForCiJobArtifactsUnlockedWithExpireAt", version=20220325000000, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220325000000_prepare_index_for_ci_job_artifacts_unlocked_with_expire_at.rb", scope="">197 uses one of the allowed migration classes198 migration: #<struct ActiveRecord::MigrationProxy name="FinalizeIndexForCiJobArtifactsUnlockedWithExpireAt", version=20220325000001, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220325000001_finalize_index_for_ci_job_artifacts_unlocked_with_expire_at.rb", scope="">199 uses one of the allowed migration classes200 migration: #<struct ActiveRecord::MigrationProxy name="DropIntegrationsTemplateColumn", version=20220325050642, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220325050642_drop_integrations_template_column.rb", scope="">201 uses one of the allowed migration classes202 migration: #<struct ActiveRecord::MigrationProxy name="StealBackgroundJobForFixingConflictingProjectNamesAndPaths", version=20220325155953, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220325155953_steal_background_job_for_fixing_conflicting_project_names_and_paths.rb", scope="">203 uses one of the allowed migration classes204 migration: #<struct ActiveRecord::MigrationProxy name="CreateUniqueIndexOnProjectsNameAndNamespaceId", version=20220325160153, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220325160153_create_unique_index_on_projects_name_and_namespace_id.rb", scope="">205 uses one of the allowed migration classes206 migration: #<struct ActiveRecord::MigrationProxy name="AddCascadeDeleteFkOnProjectNamespaceId", version=20220326161803, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220326161803_add_cascade_delete_fk_on_project_namespace_id.rb", scope="">207 uses one of the allowed migration classes208 migration: #<struct ActiveRecord::MigrationProxy name="AddNotNullContraintToProjectNamespaceId", version=20220326163653, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220326163653_add_not_null_contraint_to_project_namespace_id.rb", scope="">209 uses one of the allowed migration classes210 migration: #<struct ActiveRecord::MigrationProxy name="DeleteFailedResetDuplicateCiRunnersTokenMigrationRecords", version=20220328095848, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220328095848_delete_failed_reset_duplicate_ci_runners_token_migration_records.rb", scope="">211 uses one of the allowed migration classes212 migration: #<struct ActiveRecord::MigrationProxy name="Schedule20220328ResetDuplicateCiRunnersTokenEncryptedValuesOnProjects", version=20220328100456, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220328100456_schedule20220328_reset_duplicate_ci_runners_token_encrypted_values_on_projects.rb", scope="">213 uses one of the allowed migration classes214 migration: #<struct ActiveRecord::MigrationProxy name="Schedule20220328ResetDuplicateCiRunnersTokenValuesOnProjects", version=20220328100457, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220328100457_schedule20220328_reset_duplicate_ci_runners_token_values_on_projects.rb", scope="">215 uses one of the allowed migration classes216 migration: #<struct ActiveRecord::MigrationProxy name="AddRepositorySizeToPlanLimits", version=20220329061545, filename="db/migrate/20220329061545_add_repository_size_to_plan_limits.rb", scope="">217 uses one of the allowed migration classes218 migration: #<struct ActiveRecord::MigrationProxy name="AddPasswordCharsRequirementToApplicationSettings", version=20220329092245, filename="db/migrate/20220329092245_add_password_chars_requirement_to_application_settings.rb", scope="">219 uses one of the allowed migration classes220 migration: #<struct ActiveRecord::MigrationProxy name="AddThemeToBroadcastMessage", version=20220329095632, filename="db/migrate/20220329095632_add_theme_to_broadcast_message.rb", scope="">221 uses one of the allowed migration classes222 migration: #<struct ActiveRecord::MigrationProxy name="AddCiNamespaceMirrorsUnnestIndexOnTraversalIds", version=20220329110630, filename="db/migrate/20220329110630_add_ci_namespace_mirrors_unnest_index_on_traversal_ids.rb", scope="">223 uses one of the allowed migration classes224 migration: #<struct ActiveRecord::MigrationProxy name="RemoveLeftoverCiJobArtifactDeletions", version=20220329175119, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220329175119_remove_leftover_ci_job_artifact_deletions.rb", scope="">225 uses one of the allowed migration classes226 migration: #<struct ActiveRecord::MigrationProxy name="AddNotesNullDiscussionIdTempIndexAsync", version=20220331074722, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220331074722_add_notes_null_discussion_id_temp_index_async.rb", scope="">227 uses one of the allowed migration classes228 migration: #<struct ActiveRecord::MigrationProxy name="AddTitleToTopic", version=20220331125725, filename="db/migrate/20220331125725_add_title_to_topic.rb", scope="">229 uses one of the allowed migration classes230 migration: #<struct ActiveRecord::MigrationProxy name="AddTextLimitToTopicsTitle", version=20220331130726, filename="db/migrate/20220331130726_add_text_limit_to_topics_title.rb", scope="">231 uses one of the allowed migration classes232 migration: #<struct ActiveRecord::MigrationProxy name="ScheduleBackfillTopicsTitle", version=20220331133802, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220331133802_schedule_backfill_topics_title.rb", scope="">233 uses one of the allowed migration classes234 migration: #<struct ActiveRecord::MigrationProxy name="AddSubmitFieldToDastSiteProfiles", version=20220331174026, filename="db/migrate/20220331174026_add_submit_field_to_dast_site_profiles.rb", scope="">235 uses one of the allowed migration classes236 migration: #<struct ActiveRecord::MigrationProxy name="AddTextLimitToSubmitFieldDastSiteProfiles", version=20220331174459, filename="db/migrate/20220331174459_add_text_limit_to_submit_field_dast_site_profiles.rb", scope="">237 uses one of the allowed migration classes238 migration: #<struct ActiveRecord::MigrationProxy name="AddUserIdAndStateIndexToMergeRequestAssignees", version=20220401044858, filename="db/migrate/20220401044858_add_user_id_and_state_index_to_merge_request_assignees.rb", scope="">239 uses one of the allowed migration classes240 migration: #<struct ActiveRecord::MigrationProxy name="AddUserIdAndStateIndexToMergeRequestReviewers", version=20220401045116, filename="db/migrate/20220401045116_add_user_id_and_state_index_to_merge_request_reviewers.rb", scope="">241 uses one of the allowed migration classes242 migration: #<struct ActiveRecord::MigrationProxy name="RemoveStateIndexOnMergeRequestAssignees", version=20220401045621, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220401045621_remove_state_index_on_merge_request_assignees.rb", scope="">243 uses one of the allowed migration classes244 migration: #<struct ActiveRecord::MigrationProxy name="RemoveStateIndexOnMergeRequestReviewers", version=20220401045642, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220401045642_remove_state_index_on_merge_request_reviewers.rb", scope="">245 uses one of the allowed migration classes246 migration: #<struct ActiveRecord::MigrationProxy name="AddCampaignToInProductMarketingEmail", version=20220401071609, filename="db/migrate/20220401071609_add_campaign_to_in_product_marketing_email.rb", scope="">247 uses one of the allowed migration classes248 migration: #<struct ActiveRecord::MigrationProxy name="AddOnHoldUntilColumnForBatchedMigration", version=20220401110443, filename="db/migrate/20220401110443_add_on_hold_until_column_for_batched_migration.rb", scope="">249 uses one of the allowed migration classes250 migration: #<struct ActiveRecord::MigrationProxy name="AddRuntimeDataColumnsToVsaAggregations", version=20220401110511, filename="db/migrate/20220401110511_add_runtime_data_columns_to_vsa_aggregations.rb", scope="">251 uses one of the allowed migration classes252 migration: #<struct ActiveRecord::MigrationProxy name="AddCheckConstraintToVsaAggregationRuntimeDataColumns", version=20220401113123, filename="db/migrate/20220401113123_add_check_constraint_to_vsa_aggregation_runtime_data_columns.rb", scope="">253 uses one of the allowed migration classes254 migration: #<struct ActiveRecord::MigrationProxy name="AddLastRepositoryUpdatedAtToProjectRepositoryState", version=20220401151123, filename="db/migrate/20220401151123_add_last_repository_updated_at_to_project_repository_state.rb", scope="">255 uses one of the allowed migration classes256 migration: #<struct ActiveRecord::MigrationProxy name="AddContainerRegistrySizeToProjectStatistics", version=20220404114106, filename="db/migrate/20220404114106_add_container_registry_size_to_project_statistics.rb", scope="">257 uses one of the allowed migration classes258 migration: #<struct ActiveRecord::MigrationProxy name="AddIndexForNonRequestedNonInvitedAwaitingMembers", version=20220404170446, filename="db/migrate/20220404170446_add_index_for_non_requested_non_invited_awaiting_members.rb", scope="">259 uses one of the allowed migration classes260 migration: #<struct ActiveRecord::MigrationProxy name="AddForbiddenStateIndexToUsers", version=20220404183350, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220404183350_add_forbidden_state_index_to_users.rb", scope="">261 uses one of the allowed migration classes262 migration: #<struct ActiveRecord::MigrationProxy name="DropBroaderExpiredArtifactIndex", version=20220404184814, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220404184814_drop_broader_expired_artifact_index.rb", scope="">263 uses one of the allowed migration classes264 migration: #<struct ActiveRecord::MigrationProxy name="ReplaceWorkItemTypeBackfillNextBatchStrategy", version=20220404194649, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220404194649_replace_work_item_type_backfill_next_batch_strategy.rb", scope="">265 uses one of the allowed migration classes266 migration: #<struct ActiveRecord::MigrationProxy name="AddLicenseScanningActionToOnboardingProgresses", version=20220405061122, filename="db/migrate/20220405061122_add_license_scanning_action_to_onboarding_progresses.rb", scope="">267 uses one of the allowed migration classes268 migration: #<struct ActiveRecord::MigrationProxy name="ToggleVsaAggregationsEnable", version=20220405092619, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220405092619_toggle_vsa_aggregations_enable.rb", scope="">269 uses one of the allowed migration classes270 migration: #<struct ActiveRecord::MigrationProxy name="AddNonMigratedIndexToContainerRepositories", version=20220405125459, filename="db/migrate/20220405125459_add_non_migrated_index_to_container_repositories.rb", scope="">271 uses one of the allowed migration classes272 migration: #<struct ActiveRecord::MigrationProxy name="AddArkoseSettingsToApplicationSettings", version=20220405181814, filename="db/migrate/20220405181814_add_arkose_settings_to_application_settings.rb", scope="">273 uses one of the allowed migration classes274 migration: #<struct ActiveRecord::MigrationProxy name="AddTextLimitToArkoseVerifyUrlApplicationSettings", version=20220405203843, filename="db/migrate/20220405203843_add_text_limit_to_arkose_verify_url_application_settings.rb", scope="">275 uses one of the allowed migration classes276 migration: #<struct ActiveRecord::MigrationProxy name="AddInactiveProjectDeletionToApplicationSettings", version=20220406113217, filename="db/migrate/20220406113217_add_inactive_project_deletion_to_application_settings.rb", scope="">277 uses one of the allowed migration classes278 migration: #<struct ActiveRecord::MigrationProxy name="AddIndexOnStatusForBatchedBackgroundMigrations", version=20220406121831, filename="db/migrate/20220406121831_add_index_on_status_for_batched_background_migrations.rb", scope="">279 uses one of the allowed migration classes280 migration: #<struct ActiveRecord::MigrationProxy name="AddDelayedGroupDeletionToApplicationSettings", version=20220406133049, filename="db/migrate/20220406133049_add_delayed_group_deletion_to_application_settings.rb", scope="">281 uses one of the allowed migration classes282 migration: #<struct ActiveRecord::MigrationProxy name="AddEpicsRelativePosition", version=20220407135820, filename="db/migrate/20220407135820_add_epics_relative_position.rb", scope="">283 uses one of the allowed migration classes284 migration: #<struct ActiveRecord::MigrationProxy name="SchedulePurgingStaleSecurityScans", version=20220407163559, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220407163559_schedule_purging_stale_security_scans.rb", scope="">285 uses one of the allowed migration classes286 migration: #<struct ActiveRecord::MigrationProxy name="AddWorkItemTypeNameUniqueIndexNullNamespaces", version=20220408001450, filename="db/migrate/20220408001450_add_work_item_type_name_unique_index_null_namespaces.rb", scope="">287 uses one of the allowed migration classes288 migration: #<struct ActiveRecord::MigrationProxy name="UpdateIndexOnGreatedDoneAtOnContainerRepositories", version=20220408135815, filename="db/migrate/20220408135815_update_index_on_greated_done_at_on_container_repositories.rb", scope="">289 uses one of the allowed migration classes290 migration: #<struct ActiveRecord::MigrationProxy name="AddAsyncIndexForEventsFollowedUsers", version=20220409160628, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220409160628_add_async_index_for_events_followed_users.rb", scope="">291 uses one of the allowed migration classes292 migration: #<struct ActiveRecord::MigrationProxy name="CleanupOrphansApprovalProjectRules", version=20220411173544, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220411173544_cleanup_orphans_approval_project_rules.rb", scope="">293 uses one of the allowed migration classes294 migration: #<struct ActiveRecord::MigrationProxy name="FinalizeTraversalIdsBackgroundMigrations", version=20220412044906, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220412044906_finalize_traversal_ids_background_migrations.rb", scope="">295 uses one of the allowed migration classes296 migration: #<struct ActiveRecord::MigrationProxy name="AddNullifyBuildDataTriggerOnMergeRequestMetrics", version=20220412060931, filename="db/migrate/20220412060931_add_nullify_build_data_trigger_on_merge_request_metrics.rb", scope="">297 uses one of the allowed migration classes298 migration: #<struct ActiveRecord::MigrationProxy name="AddUniqueFingerprintSha256IndexToKey", version=20220412135446, filename="db/migrate/20220412135446_add_unique_fingerprint_sha256_index_to_key.rb", scope="">299 uses one of the allowed migration classes300 migration: #<struct ActiveRecord::MigrationProxy name="AddUniqueFingerprintSha256IndexToGroupDeployKey", version=20220412140446, filename="db/migrate/20220412140446_add_unique_fingerprint_sha256_index_to_group_deploy_key.rb", scope="">301 uses one of the allowed migration classes302 migration: #<struct ActiveRecord::MigrationProxy name="DropUniqueFingerprintMd5IndexFromKey", version=20220412140755, filename="db/migrate/20220412140755_drop_unique_fingerprint_md5_index_from_key.rb", scope="">303 uses one of the allowed migration classes304 migration: #<struct ActiveRecord::MigrationProxy name="DropUniqueFingerprintMd5IndexFromGroupDeployKey", version=20220412141020, filename="db/migrate/20220412141020_drop_unique_fingerprint_md5_index_from_group_deploy_key.rb", scope="">305 uses one of the allowed migration classes306 migration: #<struct ActiveRecord::MigrationProxy name="AddPartialIndexOnUnencryptedIntegrations", version=20220412143551, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220412143551_add_partial_index_on_unencrypted_integrations.rb", scope="">307 uses one of the allowed migration classes308 migration: #<struct ActiveRecord::MigrationProxy name="ConsumeRemainingEncryptIntegrationPropertyJobs", version=20220412143552, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220412143552_consume_remaining_encrypt_integration_property_jobs.rb", scope="">309 uses one of the allowed migration classes310 migration: #<struct ActiveRecord::MigrationProxy name="AddOtpSecretExpiresAt", version=20220412171810, filename="db/migrate/20220412171810_add_otp_secret_expires_at.rb", scope="">311 uses one of the allowed migration classes312 migration: #<struct ActiveRecord::MigrationProxy name="RemovePartialIndexOnUnencryptedIntegrations", version=20220413011328, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220413011328_remove_partial_index_on_unencrypted_integrations.rb", scope="">313 uses one of the allowed migration classes314 migration: #<struct ActiveRecord::MigrationProxy name="BackfillDelayedGroupDeletion", version=20220413054910, filename="db/migrate/20220413054910_backfill_delayed_group_deletion.rb", scope="">315 uses one of the allowed migration classes316 migration: #<struct ActiveRecord::MigrationProxy name="UpdateIndexOnPackagesBuildInfos", version=20220413075921, filename="db/migrate/20220413075921_update_index_on_packages_build_infos.rb", scope="">317 uses one of the allowed migration classes318 migration: #<struct ActiveRecord::MigrationProxy name="AddViewForPerTableAutovacuumStatus", version=20220413124200, filename="db/migrate/20220413124200_add_view_for_per_table_autovacuum_status.rb", scope="">319 uses one of the allowed migration classes320 migration: #<struct ActiveRecord::MigrationProxy name="RemoveMaxSeatsUsedIndices", version=20220413164146, filename="db/migrate/20220413164146_remove_max_seats_used_indices.rb", scope="">321 uses one of the allowed migration classes322 migration: #<struct ActiveRecord::MigrationProxy name="AddMaxSeatsUsedChangedAtToGitlabSubscriptions", version=20220413235818, filename="db/migrate/20220413235818_add_max_seats_used_changed_at_to_gitlab_subscriptions.rb", scope="">323 uses one of the allowed migration classes324 migration: #<struct ActiveRecord::MigrationProxy name="AddIndexForColumnsUserCustomAttribute", version=20220414203622, filename="db/migrate/20220414203622_add_index_for_columns_user_custom_attribute.rb", scope="">325 uses one of the allowed migration classes326 migration: #<struct ActiveRecord::MigrationProxy name="ReplaceIterationsCadenceDateRangeConstraint", version=20220415015143, filename="db/migrate/20220415015143_replace_iterations_cadence_date_range_constraint.rb", scope="">327 uses one of the allowed migration classes328 migration: #<struct ActiveRecord::MigrationProxy name="RemoveJobArtifactDeprecatedGeoFields", version=20220415124802, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220415124802_remove_job_artifact_deprecated_geo_fields.rb", scope="">329 uses one of the allowed migration classes330 migration: #<struct ActiveRecord::MigrationProxy name="RemoveJobArtifactDeletedEventTable", version=20220415124804, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220415124804_remove_job_artifact_deleted_event_table.rb", scope="">331 uses one of the allowed migration classes332 migration: #<struct ActiveRecord::MigrationProxy name="RemoveIntegrationsProperties", version=20220418180958, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220418180958_remove_integrations_properties.rb", scope="">333 uses one of the allowed migration classes334 migration: #<struct ActiveRecord::MigrationProxy name="AddArkoseNamespaceToApplicationSettings", version=20220419223906, filename="db/migrate/20220419223906_add_arkose_namespace_to_application_settings.rb", scope="">335 uses one of the allowed migration classes336 migration: #<struct ActiveRecord::MigrationProxy name="AddTextLimitToInProductMarketingEmailCampaign", version=20220420034519, filename="db/migrate/20220420034519_add_text_limit_to_in_product_marketing_email_campaign.rb", scope="">337 uses one of the allowed migration classes338 migration: #<struct ActiveRecord::MigrationProxy name="AddNotesNullDiscussionIdTempIndex", version=20220420061439, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220420061439_add_notes_null_discussion_id_temp_index.rb", scope="">339 uses one of the allowed migration classes340 migration: #<struct ActiveRecord::MigrationProxy name="BackfillNullNoteDiscussionIds", version=20220420061450, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220420061450_backfill_null_note_discussion_ids.rb", scope="">341 uses one of the allowed migration classes342 migration: #<struct ActiveRecord::MigrationProxy name="FixBatchedBackgroundMigrationDefaultArguments", version=20220420135245, filename="db/migrate/20220420135245_fix_batched_background_migration_default_arguments.rb", scope="">343 uses one of the allowed migration classes344 migration: #<struct ActiveRecord::MigrationProxy name="UpdateBatchedBackgroundMigrationArguments", version=20220420135946, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220420135946_update_batched_background_migration_arguments.rb", scope="">345 uses one of the allowed migration classes346 migration: #<struct ActiveRecord::MigrationProxy name="AddGroupInheritanceTypeToPeAuthorizable", version=20220420173247, filename="db/migrate/20220420173247_add_group_inheritance_type_to_pe_authorizable.rb", scope="">347 uses one of the allowed migration classes348 migration: #<struct ActiveRecord::MigrationProxy name="AddIdForCleanupIndexPackagesPackageFiles", version=20220420192542, filename="db/migrate/20220420192542_add_id_for_cleanup_index_packages_package_files.rb", scope="">349 uses one of the allowed migration classes350 migration: #<struct ActiveRecord::MigrationProxy name="ScheduleBackfillDraftStatusOnMergeRequestsCorrectedRegex", version=20220420214703, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220420214703_schedule_backfill_draft_status_on_merge_requests_corrected_regex.rb", scope="">351 uses one of the allowed migration classes352 migration: #<struct ActiveRecord::MigrationProxy name="MakeFingerprintNullableForGroupDeployKey", version=20220421114418, filename="db/migrate/20220421114418_make_fingerprint_nullable_for_group_deploy_key.rb", scope="">353 uses one of the allowed migration classes354 migration: #<struct ActiveRecord::MigrationProxy name="AddAllowedPlansToCiRunners", version=20220421141342, filename="db/migrate/20220421141342_add_allowed_plans_to_ci_runners.rb", scope="">355 uses one of the allowed migration classes356 migration: #<struct ActiveRecord::MigrationProxy name="ChangeDotenvPlanLimitsForOldPlans", version=20220421144758, filename="db/migrate/20220421144758_change_dotenv_plan_limits_for_old_plans.rb", scope="">357 uses one of the allowed migration classes358 migration: #<struct ActiveRecord::MigrationProxy name="AddLastCleanupDeletedTagsCountToContainerRepository", version=20220421180321, filename="db/migrate/20220421180321_add_last_cleanup_deleted_tags_count_to_container_repository.rb", scope="">359 uses one of the allowed migration classes360 migration: #<struct ActiveRecord::MigrationProxy name="AddAsyncIndexForGroupActivityEvents", version=20220422121443, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220422121443_add_async_index_for_group_activity_events.rb", scope="">361 uses one of the allowed migration classes362 migration: #<struct ActiveRecord::MigrationProxy name="FixViewForPerTableAutovacuumStatus", version=20220422200633, filename="db/migrate/20220422200633_fix_view_for_per_table_autovacuum_status.rb", scope="">363 uses one of the allowed migration classes364 migration: #<struct ActiveRecord::MigrationProxy name="RemoveTmpIndexSupportingLeakyRegexCleanup", version=20220422220507, filename="db/migrate/20220422220507_remove_tmp_index_supporting_leaky_regex_cleanup.rb", scope="">365 uses one of the allowed migration classes366 migration: #<struct ActiveRecord::MigrationProxy name="AddAsyncIndexForProjectActivityEvents", version=20220425111114, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220425111114_add_async_index_for_project_activity_events.rb", scope="">367 uses one of the allowed migration classes368 migration: #<struct ActiveRecord::MigrationProxy name="AddAsyncIndexToEventsOnGroupIdAndId", version=20220425111453, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220425111453_add_async_index_to_events_on_group_id_and_id.rb", scope="">369 uses one of the allowed migration classes370 migration: #<struct ActiveRecord::MigrationProxy name="CreatePackagesCleanupPolicies", version=20220425120604, filename="db/migrate/20220425120604_create_packages_cleanup_policies.rb", scope="">371 uses one of the allowed migration classes372 migration: #<struct ActiveRecord::MigrationProxy name="AddTemporaryIndexForBackfillIntegrationsEnableSslVerification", version=20220425121410, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220425121410_add_temporary_index_for_backfill_integrations_enable_ssl_verification.rb", scope="">373 uses one of the allowed migration classes374 migration: #<struct ActiveRecord::MigrationProxy name="BackfillIntegrationsEnableSslVerification", version=20220425121435, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220425121435_backfill_integrations_enable_ssl_verification.rb", scope="">375 uses one of the allowed migration classes376 migration: #<struct ActiveRecord::MigrationProxy name="AddMaxExportSizeToApplicationSettings", version=20220426130217, filename="db/migrate/20220426130217_add_max_export_size_to_application_settings.rb", scope="">377 uses one of the allowed migration classes378 migration: #<struct ActiveRecord::MigrationProxy name="BackfillDeploymentsFinishedAt", version=20220426185933, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220426185933_backfill_deployments_finished_at.rb", scope="">379 uses one of the allowed migration classes380 migration: #<struct ActiveRecord::MigrationProxy name="ScheduleExpireOAuthTokens", version=20220428133724, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220428133724_schedule_expire_o_auth_tokens.rb", scope="">381 uses one of the allowed migration classes382 migration: #<struct ActiveRecord::MigrationProxy name="CleanUpFixMergeRequestDiffCommitUsers", version=20220502015011, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220502015011_clean_up_fix_merge_request_diff_commit_users.rb", scope="">383 uses one of the allowed migration classes384 migration: #<struct ActiveRecord::MigrationProxy name="RecreateIndexForProjectGroupLinkWithGroupIdAndProjectId", version=20220502125053, filename="db/migrate/20220502125053_recreate_index_for_project_group_link_with_group_id_and_project_id.rb", scope="">385 uses one of the allowed migration classes386 migration: #<struct ActiveRecord::MigrationProxy name="AddSlackIntegrationsBotColumns", version=20220502150408, filename="db/migrate/20220502150408_add_slack_integrations_bot_columns.rb", scope="">387 uses one of the allowed migration classes388 migration: #<struct ActiveRecord::MigrationProxy name="AddSlackIntegrationsBotUserIdTextLimit", version=20220502152633, filename="db/migrate/20220502152633_add_slack_integrations_bot_user_id_text_limit.rb", scope="">389 uses one of the allowed migration classes390 migration: #<struct ActiveRecord::MigrationProxy name="ResetTooManyTagsSkippedRegistryImports", version=20220502173045, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220502173045_reset_too_many_tags_skipped_registry_imports.rb", scope="">391 uses one of the allowed migration classes392 migration: #<struct ActiveRecord::MigrationProxy name="AddGitlabSchemaToBatchedBackgroundMigrations", version=20220503035221, filename="db/migrate/20220503035221_add_gitlab_schema_to_batched_background_migrations.rb", scope="">393 uses one of the allowed migration classes394 migration: #<struct ActiveRecord::MigrationProxy name="AddTextLimitToBatchedBackgroundMigrationsGitlabSchema", version=20220503035437, filename="db/migrate/20220503035437_add_text_limit_to_batched_background_migrations_gitlab_schema.rb", scope="">395 uses one of the allowed migration classes396 migration: #<struct ActiveRecord::MigrationProxy name="RecreateIndexForGroupGroupLinkWithBothGroupIds", version=20220503073401, filename="db/migrate/20220503073401_recreate_index_for_group_group_link_with_both_group_ids.rb", scope="">397 uses one of the allowed migration classes398 migration: #<struct ActiveRecord::MigrationProxy name="AddNamespaceCiCdSettingsTable", version=20220503102855, filename="db/migrate/20220503102855_add_namespace_ci_cd_settings_table.rb", scope="">399 uses one of the allowed migration classes400 migration: #<struct ActiveRecord::MigrationProxy name="PrepareConfidentialNoteIndex", version=20220503114353, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220503114353_prepare_confidential_note_index.rb", scope="">401 uses one of the allowed migration classes402 migration: #<struct ActiveRecord::MigrationProxy name="RemoveRequirementsManagementTestReportsRequirementId", version=20220503134610, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220503134610_remove_requirements_management_test_reports_requirement_id.rb", scope="">403 uses one of the allowed migration classes404 migration: #<struct ActiveRecord::MigrationProxy name="AddSlackSigningKeyToApplicationSettings", version=20220504042847, filename="db/migrate/20220504042847_add_slack_signing_key_to_application_settings.rb", scope="">405 uses one of the allowed migration classes406 migration: #<struct ActiveRecord::MigrationProxy name="AddIndexesForPrimaryEmailPostRegressionCleanupMigration", version=20220504083348, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220504083348_add_indexes_for_primary_email_post_regression_cleanup_migration.rb", scope="">407 uses one of the allowed migration classes408 migration: #<struct ActiveRecord::MigrationProxy name="CleanupAfterFixingRegressionWithNewUsersEmails", version=20220504083836, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220504083836_cleanup_after_fixing_regression_with_new_users_emails.rb", scope="">409 uses one of the allowed migration classes410 migration: #<struct ActiveRecord::MigrationProxy name="DropTemporaryIndexesForPrimaryEmailPostRegressionCleanup", version=20220504084136, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220504084136_drop_temporary_indexes_for_primary_email_post_regression_cleanup.rb", scope="">411 uses one of the allowed migration classes412 migration: #<struct ActiveRecord::MigrationProxy name="AddContainerRegistrySizeToNamespaceRootStorageStatistics", version=20220504140036, filename="db/migrate/20220504140036_add_container_registry_size_to_namespace_root_storage_statistics.rb", scope="">413 uses one of the allowed migration classes414 migration: #<struct ActiveRecord::MigrationProxy name="AddIndexToDeploymentsOnCreatedAtClusterIdAndProjectId", version=20220505022001, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220505022001_add_index_to_deployments_on_created_at_cluster_id_and_project_id.rb", scope="">415 uses one of the allowed migration classes416 migration: #<struct ActiveRecord::MigrationProxy name="FixAutomaticIterationsCadencesStartDate", version=20220505044348, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220505044348_fix_automatic_iterations_cadences_start_date.rb", scope="">417 uses one of the allowed migration classes418 migration: #<struct ActiveRecord::MigrationProxy name="RemoveNamespacesIdParentIdInversePartialIndex", version=20220505053504, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220505053504_remove_namespaces_id_parent_id_inverse_partial_index.rb", scope="">419 uses one of the allowed migration classes420 migration: #<struct ActiveRecord::MigrationProxy name="RemoveNamespacesIdParentIdPartialIndex", version=20220505060011, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220505060011_remove_namespaces_id_parent_id_partial_index.rb", scope="">421 uses one of the allowed migration classes422 migration: #<struct ActiveRecord::MigrationProxy name="AddAllowStaleRunnerPruningIndexToNamespaceCiCdSettings", version=20220505092254, filename="db/migrate/20220505092254_add_allow_stale_runner_pruning_index_to_namespace_ci_cd_settings.rb", scope="">423 uses one of the allowed migration classes424 migration: #<struct ActiveRecord::MigrationProxy name="UpdateIndexOnAlertsToExcludeNullFingerprints", version=20220505174658, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220505174658_update_index_on_alerts_to_exclude_null_fingerprints.rb", scope="">425 uses one of the allowed migration classes426 migration: #<struct ActiveRecord::MigrationProxy name="AddNotNullConstraintToIssuesWorkItemType", version=20220505193512, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220505193512_add_not_null_constraint_to_issues_work_item_type.rb", scope="">427 uses one of the allowed migration classes428 migration: #<struct ActiveRecord::MigrationProxy name="AddNotNullConstraintWithoutValidationToRequirementsIssueId", version=20220506123922, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220506123922_add_not_null_constraint_without_validation_to_requirements_issue_id.rb", scope="">429 uses one of the allowed migration classes430 migration: #<struct ActiveRecord::MigrationProxy name="SchedulePopulateRequirementsIssueId", version=20220506124021, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220506124021_schedule_populate_requirements_issue_id.rb", scope="">431 uses one of the allowed migration classes432 migration: #<struct ActiveRecord::MigrationProxy name="AddIndexToVulnerabilityFeedbackFindingUuid", version=20220506180411, filename="db/migrate/20220506180411_add_index_to_vulnerability_feedback_finding_uuid.rb", scope="">433 uses one of the allowed migration classes434 migration: #<struct ActiveRecord::MigrationProxy name="RemoveDevopsAdoptionSecurityScanSucceededColumn", version=20220506201639, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220506201639_remove_devops_adoption_security_scan_succeeded_column.rb", scope="">435 uses one of the allowed migration classes436 migration: #<struct ActiveRecord::MigrationProxy name="AddSeparatedCachesOptionToProjectCiSettings", version=20220507204024, filename="db/migrate/20220507204024_add_separated_caches_option_to_project_ci_settings.rb", scope="">437 uses one of the allowed migration classes438 migration: #<struct ActiveRecord::MigrationProxy name="RemoveTmpEmptyTraversalIdsRootNamespaceIndex", version=20220510003916, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220510003916_remove_tmp_empty_traversal_ids_root_namespace_index.rb", scope="">439 uses one of the allowed migration classes440 migration: #<struct ActiveRecord::MigrationProxy name="RemoveTmpEmptyTraversalIdsChildNamespaceIndex", version=20220510004501, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220510004501_remove_tmp_empty_traversal_ids_child_namespace_index.rb", scope="">441 uses one of the allowed migration classes442 migration: #<struct ActiveRecord::MigrationProxy name="RemoveThreatMonitoringAlerts", version=20220510121338, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220510121338_remove_threat_monitoring_alerts.rb", scope="">443 uses one of the allowed migration classes444 migration: #<struct ActiveRecord::MigrationProxy name="IndexExpirableUnknownArtifactsForRemoval", version=20220510192117, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220510192117_index_expirable_unknown_artifacts_for_removal.rb", scope="">445 uses one of the allowed migration classes446 migration: #<struct ActiveRecord::MigrationProxy name="AddLastConsistencyCheckCursorsToVsaAggregations", version=20220511090324, filename="db/migrate/20220511090324_add_last_consistency_check_cursors_to_vsa_aggregations.rb", scope="">447 uses one of the allowed migration classes448 migration: #<struct ActiveRecord::MigrationProxy name="AddWorkItemParentChildTable", version=20220511144946, filename="db/migrate/20220511144946_add_work_item_parent_child_table.rb", scope="">449 uses one of the allowed migration classes450 migration: #<struct ActiveRecord::MigrationProxy name="AddExcludeFromFreeUserCapToNamespaceSettings", version=20220511151646, filename="db/migrate/20220511151646_add_exclude_from_free_user_cap_to_namespace_settings.rb", scope="">451 uses one of the allowed migration classes452 migration: #<struct ActiveRecord::MigrationProxy name="RemoveNotNullConstraintFromWorkItemType", version=20220511152439, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220511152439_remove_not_null_constraint_from_work_item_type.rb", scope="">453 uses one of the allowed migration classes454 migration: #<struct ActiveRecord::MigrationProxy name="AddRegistryMigrationGuardThresholdsToApplicationSettings", version=20220511191502, filename="db/migrate/20220511191502_add_registry_migration_guard_thresholds_to_application_settings.rb", scope="">455 uses one of the allowed migration classes456 migration: #<struct ActiveRecord::MigrationProxy name="AddPipelineCreateLimitPerProjectUserShaToApplicationSettings", version=20220511191503, filename="db/migrate/20220511191503_add_pipeline_create_limit_per_project_user_sha_to_application_settings.rb", scope="">457 uses one of the allowed migration classes458 migration: #<struct ActiveRecord::MigrationProxy name="AddIndexOnExpirableUnknownArtifactsForRemoval", version=20220511212620, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220511212620_add_index_on_expirable_unknown_artifacts_for_removal.rb", scope="">459 uses one of the allowed migration classes460 migration: #<struct ActiveRecord::MigrationProxy name="IndexBatchedMigrationsOnGitlabSchemaAndConfiguration", version=20220512020500, filename="db/migrate/20220512020500_index_batched_migrations_on_gitlab_schema_and_configuration.rb", scope="">461 uses one of the allowed migration classes462 migration: #<struct ActiveRecord::MigrationProxy name="RemoveWebHooksWebHookLogsWebHookIdFk", version=20220512190659, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220512190659_remove_web_hooks_web_hook_logs_web_hook_id_fk.rb", scope="">463 uses one of the allowed migration classes464 migration: #<struct ActiveRecord::MigrationProxy name="RescheduleExpireOAuthTokens", version=20220513043344, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220513043344_reschedule_expire_o_auth_tokens.rb", scope="">465 uses one of the allowed migration classes466 migration: #<struct ActiveRecord::MigrationProxy name="AddDingTalkIntoApplicationSettings", version=20220513093614, filename="db/migrate/20220513093614_add_ding_talk_into_application_settings.rb", scope="">467 uses one of the allowed migration classes468 migration: #<struct ActiveRecord::MigrationProxy name="AddDingTalkTrackerData", version=20220513093615, filename="db/migrate/20220513093615_add_ding_talk_tracker_data.rb", scope="">469 uses one of the allowed migration classes470 migration: #<struct ActiveRecord::MigrationProxy name="CreateTimelogCategories", version=20220513095545, filename="db/migrate/20220513095545_create_timelog_categories.rb", scope="">471 uses one of the allowed migration classes472 migration: #<struct ActiveRecord::MigrationProxy name="AddJiraConnectApplicationIdApplicationSetting", version=20220513114706, filename="db/migrate/20220513114706_add_jira_connect_application_id_application_setting.rb", scope="">473 uses one of the allowed migration classes474 migration: #<struct ActiveRecord::MigrationProxy name="AddTextLimitToJiraConnectApplicationIdApplicationSetting", version=20220513114850, filename="db/migrate/20220513114850_add_text_limit_to_jira_connect_application_id_application_setting.rb", scope="">475 uses one of the allowed migration classes476 migration: #<struct ActiveRecord::MigrationProxy name="TempIndexForProjectNamespaceMemberBackfill", version=20220516054002, filename="db/migrate/20220516054002_temp_index_for_project_namespace_member_backfill.rb", scope="">477 uses one of the allowed migration classes478 migration: #<struct ActiveRecord::MigrationProxy name="ScheduleBackfillProjectMemberNamespaceId", version=20220516054011, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220516054011_schedule_backfill_project_member_namespace_id.rb", scope="">479 uses one of the allowed migration classes480 migration: #<struct ActiveRecord::MigrationProxy name="AddGloballyAllowedIpsToApplicationSetting", version=20220516092207, filename="db/migrate/20220516092207_add_globally_allowed_ips_to_application_setting.rb", scope="">481 uses one of the allowed migration classes482 migration: #<struct ActiveRecord::MigrationProxy name="DropComplianceManagementFrameworksRegulated", version=20220516100652, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220516100652_drop_compliance_management_frameworks_regulated.rb", scope="">483 uses one of the allowed migration classes484 migration: #<struct ActiveRecord::MigrationProxy name="FinalizeRoutesBackfillingForProjects", version=20220516103353, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220516103353_finalize_routes_backfilling_for_projects.rb", scope="">485 uses one of the allowed migration classes486 migration: #<struct ActiveRecord::MigrationProxy name="AddTextLimitToGloballyAllowedIpsOnApplicationSettings", version=20220516123101, filename="db/migrate/20220516123101_add_text_limit_to_globally_allowed_ips_on_application_settings.rb", scope="">487 uses one of the allowed migration classes488 migration: #<struct ActiveRecord::MigrationProxy name="AddSecurityPolicyScanExecutionSchedulesToPlanLimits", version=20220516201245, filename="db/migrate/20220516201245_add_security_policy_scan_execution_schedules_to_plan_limits.rb", scope="">489 uses one of the allowed migration classes490 migration: #<struct ActiveRecord::MigrationProxy name="CreateConfidentialNotesIndexSynchronously", version=20220517101119, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220517101119_create_confidential_notes_index_synchronously.rb", scope="">491 uses one of the allowed migration classes492 migration: #<struct ActiveRecord::MigrationProxy name="MigrateFreeUserCapRemediation", version=20220517133753, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220517133753_migrate_free_user_cap_remediation.rb", scope="">493 uses one of the allowed migration classes494 migration: #<struct ActiveRecord::MigrationProxy name="RemoveVulnerabilityApprovalRules", version=20220517144749, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220517144749_remove_vulnerability_approval_rules.rb", scope="">495 uses one of the allowed migration classes496 migration: #<struct ActiveRecord::MigrationProxy name="CreateVulnerabilityStateTransition", version=20220517182529, filename="db/migrate/20220517182529_create_vulnerability_state_transition.rb", scope="">497 uses one of the allowed migration classes498 migration: #<struct ActiveRecord::MigrationProxy name="AddIndexToErrorTrackingClientKeys", version=20220518102414, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220518102414_add_index_to_error_tracking_client_keys.rb", scope="">499 uses one of the allowed migration classes500 migration: #<struct ActiveRecord::MigrationProxy name="CreateSshSignatures", version=20220518183504, filename="db/migrate/20220518183504_create_ssh_signatures.rb", scope="">501 uses one of the allowed migration classes502 migration: #<struct ActiveRecord::MigrationProxy name="AddProjectsRelationToSshSignatures", version=20220518183548, filename="db/migrate/20220518183548_add_projects_relation_to_ssh_signatures.rb", scope="">503 uses one of the allowed migration classes504 migration: #<struct ActiveRecord::MigrationProxy name="CreateClusterEnabledGrants", version=20220519013213, filename="db/migrate/20220519013213_create_cluster_enabled_grants.rb", scope="">505 uses one of the allowed migration classes506 migration: #<struct ActiveRecord::MigrationProxy name="BulkInsertClusterEnabledGrants", version=20220519045133, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220519045133_bulk_insert_cluster_enabled_grants.rb", scope="">507 uses one of the allowed migration classes508 migration: #<struct ActiveRecord::MigrationProxy name="AddJobArtifactIdOnRefreshStartToBuildArtifactsSizeRefresh", version=20220519141345, filename="db/migrate/20220519141345_add_job_artifact_id_on_refresh_start_to_build_artifacts_size_refresh.rb", scope="">509 uses one of the allowed migration classes510 migration: #<struct ActiveRecord::MigrationProxy name="DropIndexNamespacesOnName", version=20220520030504, filename="db/migrate/20220520030504_drop_index_namespaces_on_name.rb", scope="">511 uses one of the allowed migration classes512 migration: #<struct ActiveRecord::MigrationProxy name="ScheduleSetLegacyOpenSourceLicenseAvailableForNonPublicProjects", version=20220520040416, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220520040416_schedule_set_legacy_open_source_license_available_for_non_public_projects.rb", scope="">513 uses one of the allowed migration classes514 migration: #<struct ActiveRecord::MigrationProxy name="UnlockDelayedProjectRemoval", version=20220520122755, filename="db/migrate/20220520122755_unlock_delayed_project_removal.rb", scope="">515 uses one of the allowed migration classes516 migration: #<struct ActiveRecord::MigrationProxy name="AddKeysRelationToSshSignatures", version=20220520143105, filename="db/migrate/20220520143105_add_keys_relation_to_ssh_signatures.rb", scope="">517 uses one of the allowed migration classes518 migration: #<struct ActiveRecord::MigrationProxy name="AddRegistryMigrationPreImportTagsRateToApplicationSettings", version=20220520144821, filename="db/migrate/20220520144821_add_registry_migration_pre_import_tags_rate_to_application_settings.rb", scope="">519 uses one of the allowed migration classes520 migration: #<struct ActiveRecord::MigrationProxy name="AddWebHookCallsMedAndMaxToPlanLimits", version=20220523030804, filename="db/migrate/20220523030804_add_web_hook_calls_med_and_max_to_plan_limits.rb", scope="">521 uses one of the allowed migration classes522 migration: #<struct ActiveRecord::MigrationProxy name="AddWebHookCallsToPlanLimitsPaidTiers", version=20220523030805, filename="db/migrate/20220523030805_add_web_hook_calls_to_plan_limits_paid_tiers.rb", scope="">523 uses one of the allowed migration classes524 migration: #<struct ActiveRecord::MigrationProxy name="AddVulnerabilityReadsCastedClusterAgentColumn", version=20220523162734, filename="db/migrate/20220523162734_add_vulnerability_reads_casted_cluster_agent_column.rb", scope="">525 uses one of the allowed migration classes526 migration: #<struct ActiveRecord::MigrationProxy name="UpdateVulnerabilityReadsTriggerFunctions", version=20220523163734, filename="db/migrate/20220523163734_update_vulnerability_reads_trigger_functions.rb", scope="">527 uses one of the allowed migration classes528 migration: #<struct ActiveRecord::MigrationProxy name="AddForeignKeyToVulnerabilityReadsCastedClusterAgentId", version=20220523164734, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220523164734_add_foreign_key_to_vulnerability_reads_casted_cluster_agent_id.rb", scope="">529 uses one of the allowed migration classes530 migration: #<struct ActiveRecord::MigrationProxy name="AddIndexToVulnerabilityReadsCastedClusterAgentId", version=20220523165734, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220523165734_add_index_to_vulnerability_reads_casted_cluster_agent_id.rb", scope="">531 uses one of the allowed migration classes532 migration: #<struct ActiveRecord::MigrationProxy name="DropDeployTokensTokenColumn", version=20220523171107, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220523171107_drop_deploy_tokens_token_column.rb", scope="">533 uses one of the allowed migration classes534 migration: #<struct ActiveRecord::MigrationProxy name="AddDeletedAtToTerraformStates", version=20220524021855, filename="db/migrate/20220524021855_add_deleted_at_to_terraform_states.rb", scope="">535 uses one of the allowed migration classes536 migration: #<struct ActiveRecord::MigrationProxy name="FinalizeBackfillNullNoteDiscussionIds", version=20220524074947, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220524074947_finalize_backfill_null_note_discussion_ids.rb", scope="">537 uses one of the allowed migration classes538 migration: #<struct ActiveRecord::MigrationProxy name="CleanupOrphanedRoutes", version=20220524080944, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220524080944_cleanup_orphaned_routes.rb", scope="">539 uses one of the allowed migration classes540 migration: #<struct ActiveRecord::MigrationProxy name="RemoveNotesNullDiscussionIdTempIndex", version=20220524081955, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220524081955_remove_notes_null_discussion_id_temp_index.rb", scope="">541 uses one of the allowed migration classes542 migration: #<struct ActiveRecord::MigrationProxy name="PrepareJobArtifactProjectIdIndex", version=20220524132416, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220524132416_prepare_job_artifact_project_id_index.rb", scope="">543 uses one of the allowed migration classes544 migration: #<struct ActiveRecord::MigrationProxy name="CreateAuditEventsStreamingHeaders", version=20220524141800, filename="db/migrate/20220524141800_create_audit_events_streaming_headers.rb", scope="">545 uses one of the allowed migration classes546 migration: #<struct ActiveRecord::MigrationProxy name="AddApplicationSettingsContainerRegistryPreImportTagsRateConstraint", version=20220524191259, filename="db/migrate/20220524191259_add_application_settings_container_registry_pre_import_tags_rate_constraint.rb", scope="">547 uses one of the allowed migration classes548 migration: #<struct ActiveRecord::MigrationProxy name="DropIndexOnDeploymentsOnCreatedAtClusterIdAndProjectId", version=20220524202158, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220524202158_drop_index_on_deployments_on_created_at_cluster_id_and_project_id.rb", scope="">549 uses one of the allowed migration classes550 migration: #<struct ActiveRecord::MigrationProxy name="CreateIssuableResourceLinks", version=20220525082303, filename="db/migrate/20220525082303_create_issuable_resource_links.rb", scope="">551 uses one of the allowed migration classes552 migration: #<struct ActiveRecord::MigrationProxy name="AddRawToCiPipelineVariables", version=20220525123825, filename="db/migrate/20220525123825_add_raw_to_ci_pipeline_variables.rb", scope="">553 uses one of the allowed migration classes554 migration: #<struct ActiveRecord::MigrationProxy name="AddRawToCiGroupVariables", version=20220525123851, filename="db/migrate/20220525123851_add_raw_to_ci_group_variables.rb", scope="">555 uses one of the allowed migration classes556 migration: #<struct ActiveRecord::MigrationProxy name="AddRawToCiInstanceVariables", version=20220525123914, filename="db/migrate/20220525123914_add_raw_to_ci_instance_variables.rb", scope="">557 uses one of the allowed migration classes558 migration: #<struct ActiveRecord::MigrationProxy name="AddRawToCiJobVariables", version=20220525123940, filename="db/migrate/20220525123940_add_raw_to_ci_job_variables.rb", scope="">559 uses one of the allowed migration classes560 migration: #<struct ActiveRecord::MigrationProxy name="AddRawToCiPipelineScheduleVariables", version=20220525124104, filename="db/migrate/20220525124104_add_raw_to_ci_pipeline_schedule_variables.rb", scope="">561 uses one of the allowed migration classes562 migration: #<struct ActiveRecord::MigrationProxy name="AddRawToCiVariables", version=20220525124125, filename="db/migrate/20220525124125_add_raw_to_ci_variables.rb", scope="">563 uses one of the allowed migration classes564 migration: #<struct ActiveRecord::MigrationProxy name="CleanupBackfillIntegrationsEnableSslVerification", version=20220525131557, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220525131557_cleanup_backfill_integrations_enable_ssl_verification.rb", scope="">565 uses one of the allowed migration classes566 migration: #<struct ActiveRecord::MigrationProxy name="DropTemporaryIndexForBackfillIntegrationsEnableSslVerification", version=20220525131624, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220525131624_drop_temporary_index_for_backfill_integrations_enable_ssl_verification.rb", scope="">567 uses one of the allowed migration classes568 migration: #<struct ActiveRecord::MigrationProxy name="MigrateProjectServiceWorkerQueue", version=20220525141540, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220525141540_migrate_project_service_worker_queue.rb", scope="">569 uses one of the allowed migration classes570 migration: #<struct ActiveRecord::MigrationProxy name="MigrateIrkerWorkerQueue", version=20220525165334, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220525165334_migrate_irker_worker_queue.rb", scope="">571 uses one of the allowed migration classes572 migration: #<struct ActiveRecord::MigrationProxy name="MigrateClusterIntegrationWorkerQueues", version=20220525172001, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220525172001_migrate_cluster_integration_worker_queues.rb", scope="">573 uses one of the allowed migration classes574 migration: #<struct ActiveRecord::MigrationProxy name="RemoveGeoLfsObjectDeletedEventReferences", version=20220526042017, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220526042017_remove_geo_lfs_object_deleted_event_references.rb", scope="">575 uses one of the allowed migration classes576 migration: #<struct ActiveRecord::MigrationProxy name="RemoveGeoLfsObjectDeletedEventsTable", version=20220526044516, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220526044516_remove_geo_lfs_object_deleted_events_table.rb", scope="">577 uses one of the allowed migration classes578 migration: #<struct ActiveRecord::MigrationProxy name="AddIndexForVulnerabilityReadsLocationImage", version=20220530044712, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220530044712_add_index_for_vulnerability_reads_location_image.rb", scope="">579 uses one of the allowed migration classes580 migration: #<struct ActiveRecord::MigrationProxy name="AddProjectIdIndexToJobArtifacts", version=20220530074027, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220530074027_add_project_id_index_to_job_artifacts.rb", scope="">581 uses one of the allowed migration classes582 migration: #<struct ActiveRecord::MigrationProxy name="AddTraversalIdTypeGroupIndex", version=20220530082653, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220530082653_add_traversal_id_type_group_index.rb", scope="">583 uses one of the allowed migration classes584 migration: #<struct ActiveRecord::MigrationProxy name="AddCreatedAtAndIdIndexToDeploymentApprovals", version=20220530103023, filename="db/migrate/20220530103023_add_created_at_and_id_index_to_deployment_approvals.rb", scope="">585 uses one of the allowed migration classes586 migration: #<struct ActiveRecord::MigrationProxy name="AddTimestampsToComplianceFrameworks", version=20220530104431, filename="db/migrate/20220530104431_add_timestamps_to_compliance_frameworks.rb", scope="">587 uses one of the allowed migration classes588 migration: #<struct ActiveRecord::MigrationProxy name="AddIndexForVulnerabilityStateTransition", version=20220530170915, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220530170915_add_index_for_vulnerability_state_transition.rb", scope="">589 uses one of the allowed migration classes590 migration: #<struct ActiveRecord::MigrationProxy name="TrackClustersDeletions", version=20220531024142, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220531024142_track_clusters_deletions.rb", scope="">591 uses one of the allowed migration classes592 migration: #<struct ActiveRecord::MigrationProxy name="RemoveClustersDeploymentsClusterIdFk", version=20220531024143, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220531024143_remove_clusters_deployments_cluster_id_fk.rb", scope="">593 uses one of the allowed migration classes594 migration: #<struct ActiveRecord::MigrationProxy name="AddOperationsAccessLevelsToProjectFeature", version=20220531024905, filename="db/migrate/20220531024905_add_operations_access_levels_to_project_feature.rb", scope="">595 uses one of the allowed migration classes596 migration: #<struct ActiveRecord::MigrationProxy name="PopulateOperationVisibilityPermissions", version=20220531035113, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220531035113_populate_operation_visibility_permissions.rb", scope="">597 uses one of the allowed migration classes598 migration: #<struct ActiveRecord::MigrationProxy name="AddLicenseUsageDataExportedToApplicationSettings", version=20220531100920, filename="db/migrate/20220531100920_add_license_usage_data_exported_to_application_settings.rb", scope="">599 uses one of the allowed migration classes600 migration: #<struct ActiveRecord::MigrationProxy name="RemoveSseUsageDataFromRedis", version=20220531233600, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220531233600_remove_sse_usage_data_from_redis.rb", scope="">601 uses one of the allowed migration classes602 migration: #<struct ActiveRecord::MigrationProxy name="FinalizeBackfillIssueSearchData", version=20220601040233, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220601040233_finalize_backfill_issue_search_data.rb", scope="">603 uses one of the allowed migration classes604 migration: #<struct ActiveRecord::MigrationProxy name="AddSemverColumnToCiRunners", version=20220601091804, filename="db/migrate/20220601091804_add_semver_column_to_ci_runners.rb", scope="">605 uses one of the allowed migration classes606 migration: #<struct ActiveRecord::MigrationProxy name="AddTextLimitToCiRunnersSemver", version=20220601091805, filename="db/migrate/20220601091805_add_text_limit_to_ci_runners_semver.rb", scope="">607 uses one of the allowed migration classes608 migration: #<struct ActiveRecord::MigrationProxy name="AddIndexOnRunnerIdAndSemverColumns", version=20220601101800, filename="db/migrate/20220601101800_add_index_on_runner_id_and_semver_columns.rb", scope="">609 uses one of the allowed migration classes610 migration: #<struct ActiveRecord::MigrationProxy name="ScheduleBackfillCiRunnerSemver", version=20220601151900, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220601151900_schedule_backfill_ci_runner_semver.rb", scope="">611 uses one of the allowed migration classes612 migration: #<struct ActiveRecord::MigrationProxy name="AddVulnerabilityRelatedColumns", version=20220601223501, filename="db/migrate/20220601223501_add_vulnerability_related_columns.rb", scope="">613 uses one of the allowed migration classes614 migration: #<struct ActiveRecord::MigrationProxy name="QueueBackfillProjectFeaturePackageRegistryAccessLevel", version=20220602070502, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220602070502_queue_backfill_project_feature_package_registry_access_level.rb", scope="">615 uses one of the allowed migration classes616 migration: #<struct ActiveRecord::MigrationProxy name="PrepareIndexForOpenIssuesCount", version=20220602111923, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220602111923_prepare_index_for_open_issues_count.rb", scope="">617 uses one of the allowed migration classes618 migration: #<struct ActiveRecord::MigrationProxy name="AddNamespaceTypeIndex", version=20220602130306, filename="db/migrate/20220602130306_add_namespace_type_index.rb", scope="">619 uses one of the allowed migration classes620 migration: #<struct ActiveRecord::MigrationProxy name="DropCiBuildReportResultsBuildIdSequence", version=20220603095158, filename="db/migrate/20220603095158_drop_ci_build_report_results_build_id_sequence.rb", scope="">621 uses one of the allowed migration classes622 migration: #<struct ActiveRecord::MigrationProxy name="AddUrlVarsToWebHook", version=20220605170009, filename="db/migrate/20220605170009_add_url_vars_to_web_hook.rb", scope="">623 uses one of the allowed migration classes624 migration: #<struct ActiveRecord::MigrationProxy name="SetOnDeleteCascadeOnNamespaceIdOnRoutesTable", version=20220606060825, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220606060825_set_on_delete_cascade_on_namespace_id_on_routes_table.rb", scope="">625 uses one of the allowed migration classes626 migration: #<struct ActiveRecord::MigrationProxy name="AddNotNullConstraintOnRoutesNamespaceId", version=20220606060850, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220606060850_add_not_null_constraint_on_routes_namespace_id.rb", scope="">627 uses one of the allowed migration classes628 migration: #<struct ActiveRecord::MigrationProxy name="AddPhoneVerificationCodeEnabledToApplicationSettings", version=20220607011733, filename="db/migrate/20220607011733_add_phone_verification_code_enabled_to_application_settings.rb", scope="">629 uses one of the allowed migration classes630 migration: #<struct ActiveRecord::MigrationProxy name="DropCiPipelinesConfigPipelineIdSequence", version=20220607095219, filename="db/migrate/20220607095219_drop_ci_pipelines_config_pipeline_id_sequence.rb", scope="">631 uses one of the allowed migration classes632 migration: #<struct ActiveRecord::MigrationProxy name="DropCiJobArtifactStatesJobArtifactIdSequence", version=20220607115703, filename="db/migrate/20220607115703_drop_ci_job_artifact_states_job_artifact_id_sequence.rb", scope="">633 uses one of the allowed migration classes634 migration: #<struct ActiveRecord::MigrationProxy name="RemoveInvalidIntegrations", version=20220607140222, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220607140222_remove_invalid_integrations.rb", scope="">635 uses one of the allowed migration classes636 migration: #<struct ActiveRecord::MigrationProxy name="AddMaxRepositoryDownloadsLimitToApplicationSettings", version=20220608074738, filename="db/migrate/20220608074738_add_max_repository_downloads_limit_to_application_settings.rb", scope="">637 uses one of the allowed migration classes638 migration: #<struct ActiveRecord::MigrationProxy name="PrepareConfidentialNoteIndexOnId", version=20220608114734, filename="db/migrate/20220608114734_prepare_confidential_note_index_on_id.rb", scope="">639 uses one of the allowed migration classes640 migration: #<struct ActiveRecord::MigrationProxy name="AddPartialIndexOnSlackIntegrationsWithBotUserId", version=20220609150626, filename="db/migrate/20220609150626_add_partial_index_on_slack_integrations_with_bot_user_id.rb", scope="">641 uses one of the allowed migration classes642 migration: #<struct ActiveRecord::MigrationProxy name="RemoveDeploymentClustersClusterIdFk", version=20220609195803, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220609195803_remove_deployment_clusters_cluster_id_fk.rb", scope="">643 uses one of the allowed migration classes644 migration: #<struct ActiveRecord::MigrationProxy name="AddEpicIssueWeight", version=20220610074326, filename="db/migrate/20220610074326_add_epic_issue_weight.rb", scope="">645 uses one of the allowed migration classes646 migration: #<struct ActiveRecord::MigrationProxy name="AddEnabledGitAccessProtocolToNamespaceSettings", version=20220610125248, filename="db/migrate/20220610125248_add_enabled_git_access_protocol_to_namespace_settings.rb", scope="">647 uses one of the allowed migration classes648 migration: #<struct ActiveRecord::MigrationProxy name="ChangePublicProjectsCostFactor", version=20220610140605, filename="db/migrate/20220610140605_change_public_projects_cost_factor.rb", scope="">649 uses one of the allowed migration classes650 migration: #<struct ActiveRecord::MigrationProxy name="AddIndexOnAvailablePypiPackages", version=20220610223040, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220610223040_add_index_on_available_pypi_packages.rb", scope="">651 uses one of the allowed migration classes652 migration: #<struct ActiveRecord::MigrationProxy name="CreateConfidentialNotesIndexOnId", version=20220613095911, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220613095911_create_confidential_notes_index_on_id.rb", scope="">653 uses one of the allowed migration classes654 migration: #<struct ActiveRecord::MigrationProxy name="AddHasVulnerabilitiesToClusterAgents", version=20220614095912, filename="db/migrate/20220614095912_add_has_vulnerabilities_to_cluster_agents.rb", scope="">655 uses one of the allowed migration classes656 migration: #<struct ActiveRecord::MigrationProxy name="AddToggleOptInJwt", version=20220614120415, filename="db/migrate/20220614120415_add_toggle_opt_in_jwt.rb", scope="">657 uses one of the allowed migration classes658 migration: #<struct ActiveRecord::MigrationProxy name="AddCreatedAtIndexToComplianceManagementFrameworks", version=20220615091059, filename="db/migrate/20220615091059_add_created_at_index_to_compliance_management_frameworks.rb", scope="">659 uses one of the allowed migration classes660 migration: #<struct ActiveRecord::MigrationProxy name="AddIndexOnClustersAgentProjectIdAndHasVulnerabilitiesColumns", version=20220615105811, filename="db/migrate/20220615105811_add_index_on_clusters_agent_project_id_and_has_vulnerabilities_columns.rb", scope="">661 uses one of the allowed migration classes662 migration: #<struct ActiveRecord::MigrationProxy name="PrepareIndexIssuesOnProjectIdAndClosedAt", version=20220616092541, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220616092541_prepare_index_issues_on_project_id_and_closed_at.rb", scope="">663 uses one of the allowed migration classes664 migration: #<struct ActiveRecord::MigrationProxy name="CreateSbomComponents", version=20220616182001, filename="db/migrate/20220616182001_create_sbom_components.rb", scope="">665 uses one of the allowed migration classes666 migration: #<struct ActiveRecord::MigrationProxy name="CreateSbomComponentVersions", version=20220616182015, filename="db/migrate/20220616182015_create_sbom_component_versions.rb", scope="">667 uses one of the allowed migration classes668 migration: #<struct ActiveRecord::MigrationProxy name="RemoveCiSecureFilesPermissionsColumn", version=20220616222253, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220616222253_remove_ci_secure_files_permissions_column.rb", scope="">669 uses one of the allowed migration classes670 migration: #<struct ActiveRecord::MigrationProxy name="AddIndexForOpenIssuesCount", version=20220617073407, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220617073407_add_index_for_open_issues_count.rb", scope="">671 uses one of the allowed migration classes672 migration: #<struct ActiveRecord::MigrationProxy name="AddUniqueIndexOnProjectsOnRunnersToken", version=20220617123022, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220617123022_add_unique_index_on_projects_on_runners_token.rb", scope="">673 uses one of the allowed migration classes674 migration: #<struct ActiveRecord::MigrationProxy name="AddUniqueIndexOnProjectsOnRunnersTokenEncrypted", version=20220617123034, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220617123034_add_unique_index_on_projects_on_runners_token_encrypted.rb", scope="">675 uses one of the allowed migration classes676 migration: #<struct ActiveRecord::MigrationProxy name="DropIndexOnProjectsOnRunnersToken", version=20220617123105, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220617123105_drop_index_on_projects_on_runners_token.rb", scope="">677 uses one of the allowed migration classes678 migration: #<struct ActiveRecord::MigrationProxy name="DropIndexOnProjectsOnRunnersTokenEncrypted", version=20220617123113, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220617123113_drop_index_on_projects_on_runners_token_encrypted.rb", scope="">679 uses one of the allowed migration classes680 migration: #<struct ActiveRecord::MigrationProxy name="DropTempIndexOnProjectsOnIdAndRunnersToken", version=20220617123135, filename="db/migrate/20220617123135_drop_temp_index_on_projects_on_id_and_runners_token.rb", scope="">681 uses one of the allowed migration classes682 migration: #<struct ActiveRecord::MigrationProxy name="DropTempIndexOnProjectsOnIdAndRunnersTokenEncrypted", version=20220617123144, filename="db/migrate/20220617123144_drop_temp_index_on_projects_on_id_and_runners_token_encrypted.rb", scope="">683 uses one of the allowed migration classes684 migration: #<struct ActiveRecord::MigrationProxy name="CreateCiSecureFileStates", version=20220617141347, filename="db/migrate/20220617141347_create_ci_secure_file_states.rb", scope="">685 uses one of the allowed migration classes686 migration: #<struct ActiveRecord::MigrationProxy name="FinalizeOrphanedRoutesCleanup", version=20220620060633, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220620060633_finalize_orphaned_routes_cleanup.rb", scope="">687 uses one of the allowed migration classes688 migration: #<struct ActiveRecord::MigrationProxy name="UpdateLastRunDateForIterationsCadences", version=20220620132300, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220620132300_update_last_run_date_for_iterations_cadences.rb", scope="">689 uses one of the allowed migration classes690 migration: #<struct ActiveRecord::MigrationProxy name="AddIndexesIssuesOnProjectIdAndClosedAt", version=20220620151740, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220620151740_add_indexes_issues_on_project_id_and_closed_at.rb", scope="">691 uses one of the allowed migration classes692 migration: #<struct ActiveRecord::MigrationProxy name="BackfillImportedIssueSearchData", version=20220621040800, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220621040800_backfill_imported_issue_search_data.rb", scope="">693 uses one of the allowed migration classes694 migration: #<struct ActiveRecord::MigrationProxy name="RemoveTmpIndexOnRoutesNamespaceIdColumn", version=20220621082245, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220621082245_remove_tmp_index_on_routes_namespace_id_column.rb", scope="">695 uses one of the allowed migration classes696 migration: #<struct ActiveRecord::MigrationProxy name="ValidateNotNullConstraintOnRoutesNamespaceIdColumn", version=20220621092245, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220621092245_validate_not_null_constraint_on_routes_namespace_id_column.rb", scope="">697 uses one of the allowed migration classes698 migration: #<struct ActiveRecord::MigrationProxy name="AddPartialIndexOnOauthAccessTokensRevokedAt", version=20220621202616, filename="db/migrate/20220621202616_add_partial_index_on_oauth_access_tokens_revoked_at.rb", scope="">699 uses one of the allowed migration classes700 migration: #<struct ActiveRecord::MigrationProxy name="AddPostMigrateTestTable", version=20220627223041, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220627223041_add_post_migrate_test_table.rb", scope="">701 uses one of the allowed migration classes702 migration: #<struct ActiveRecord::MigrationProxy name="FinaliseProjectNamespaceMembers", version=20220628012902, filename="/builds/gitlab-org/gitlab/db/post_migrate/20220628012902_finalise_project_namespace_members.rb", scope="">703 uses one of the allowed migration classes704ContainerRepository705 behaves like having unique enum values706 has unique values in "status"707 has unique values in "expiration_policy_cleanup_status"708 has unique values in "migration_skipped_reason"709 associations710 belongs to the project711 validations712 is expected to validate that :migration_retries_count cannot be empty/falsy713 is expected to validate that :migration_retries_count looks like a number greater than or equal to 0714 is expected to validate that :migration_aborted_in_state is either ‹"pre_importing"›, ‹"importing"›, ‹"pre_import_done"›, or ‹"default"›715 is expected to allow :migration_aborted_in_state to be ‹nil›716 migration_state717 is expected to validate that :migration_state cannot be empty/falsy718 is expected to validate that :migration_state is either ‹"default"›, ‹"pre_import_done"›, ‹"import_done"›, ‹"import_aborted"›, ‹"import_skipped"›, ‹"pre_importing"›, or ‹"importing"›719 pre_importing720 validates expected attributes721 pre_import_done722 validates expected attributes723 importing724 validates expected attributes725 import_skipped726 validates expected attributes727 import_aborted728 validates expected attributes729 :migration_state state_machine730 #start_pre_import731 behaves like transitioning from allowed states732 when transitioning from default733 returns true734 when transitioning from pre_import_done735 returns false736 when transitioning from import_done737 returns false738 when transitioning from import_aborted739 returns true740 when transitioning from import_skipped741 returns false742 when transitioning from pre_importing743 returns true744 when transitioning from importing745 returns true746 behaves like transitioning to pre_importing747 behaves like no action when feature flag is disabled748 feature flag disabled749 is expected to eq false750 successful pre_import request751 sets migration_pre_import_started_at and resets migration_pre_import_done_at752 failed pre_import request753 sets migration_pre_import_started_at and resets migration_pre_import_done_at754 already imported755 finishes the import756 non-existing repository757 finishes the import758 #retry_pre_import759 behaves like transitioning from allowed states760 when transitioning from default761 returns false762 when transitioning from pre_import_done763 returns false764 when transitioning from import_done765 returns false766 when transitioning from import_aborted767 returns true768 when transitioning from import_skipped769 returns false770 when transitioning from pre_importing771 returns true772 when transitioning from importing773 returns true774 behaves like transitioning to pre_importing775 behaves like no action when feature flag is disabled776 feature flag disabled777 is expected to eq false778 successful pre_import request779 sets migration_pre_import_started_at and resets migration_pre_import_done_at780 failed pre_import request781 sets migration_pre_import_started_at and resets migration_pre_import_done_at782 already imported783 finishes the import784 non-existing repository785 finishes the import786 behaves like transitioning out of import_aborted787 resets migration_aborted_at and migration_aborted_in_state788 #finish_pre_import789 sets migration_pre_import_done_at790 behaves like transitioning from allowed states791 when transitioning from default792 returns false793 when transitioning from pre_import_done794 returns false795 when transitioning from import_done796 returns false797 when transitioning from import_aborted798 returns true799 when transitioning from import_skipped800 returns false801 when transitioning from pre_importing802 returns true803 when transitioning from importing804 returns true805 #start_import806 behaves like transitioning from allowed states807 when transitioning from default808 returns false809 when transitioning from pre_import_done810 returns true811 when transitioning from import_done812 returns false813 when transitioning from import_aborted814 returns true815 when transitioning from import_skipped816 returns false817 when transitioning from pre_importing818 returns true819 when transitioning from importing820 returns true821 behaves like transitioning to importing822 successful import request823 sets migration_import_started_at and resets migration_import_done_at824 failed import request825 sets migration_import_started_at and resets migration_import_done_at826 already imported827 finishes the import828 #retry_import829 behaves like transitioning from allowed states830 when transitioning from default831 returns false832 when transitioning from pre_import_done833 returns false834 when transitioning from import_done835 returns false836 when transitioning from import_aborted837 returns true838 when transitioning from import_skipped839 returns false840 when transitioning from pre_importing841 returns true842 when transitioning from importing843 returns true844 behaves like transitioning to importing845 successful import request846 sets migration_import_started_at and resets migration_import_done_at847 failed import request848 sets migration_import_started_at and resets migration_import_done_at849 already imported850 finishes the import851 behaves like no action when feature flag is disabled852 feature flag disabled853 is expected to eq false854 #finish_import855 sets migration_import_done_at and queues the next import856 behaves like transitioning from allowed states857 when transitioning from default858 returns true859 when transitioning from pre_import_done860 returns false861 when transitioning from import_done862 returns false863 when transitioning from import_aborted864 returns true865 when transitioning from import_skipped866 returns false867 when transitioning from pre_importing868 returns true869 when transitioning from importing870 returns true871 behaves like queueing the next import872 starts the worker873 #already_migrated874 sets migration_import_done_at875 behaves like transitioning from allowed states876 when transitioning from default877 returns true878 when transitioning from pre_import_done879 returns false880 when transitioning from import_done881 returns false882 when transitioning from import_aborted883 returns false884 when transitioning from import_skipped885 returns false886 when transitioning from pre_importing887 returns false888 when transitioning from importing889 returns false890 #abort_import891 sets migration_aborted_at and migration_aborted_at, increments the retry count, and queues the next import892 behaves like transitioning from allowed states893 when transitioning from default894 returns true895 when transitioning from pre_import_done896 returns true897 when transitioning from import_done898 returns false899 when transitioning from import_aborted900 returns false901 when transitioning from import_skipped902 returns false903 when transitioning from pre_importing904 returns true905 when transitioning from importing906 returns true907 behaves like queueing the next import908 starts the worker909 above the max retry limit910 skips the migration911 #skip_import912 sets migration_skipped_at and migration_skipped_reason913 raises and error if a reason is not given914 behaves like transitioning from allowed states915 when transitioning from default916 returns true917 when transitioning from pre_import_done918 returns true919 when transitioning from import_done920 returns false921 when transitioning from import_aborted922 returns true923 when transitioning from import_skipped924 returns false925 when transitioning from pre_importing926 returns true927 when transitioning from importing928 returns true929 behaves like queueing the next import930 starts the worker931 #finish_pre_import_and_start_import932 behaves like transitioning from allowed states933 when transitioning from default934 returns false935 when transitioning from pre_import_done936 returns false937 when transitioning from import_done938 returns false939 when transitioning from import_aborted940 returns true941 when transitioning from import_skipped942 returns false943 when transitioning from pre_importing944 returns true945 when transitioning from importing946 returns true947 behaves like transitioning to importing948 successful import request949 sets migration_import_started_at and resets migration_import_done_at950 failed import request951 sets migration_import_started_at and resets migration_import_done_at952 already imported953 finishes the import954 when triggering registry API requests955 when responding to a start_pre_import event956 behaves like a state machine configured with use_transactions: false957 executes the registry API request outside of a transaction958 when responding to a retry_pre_import event959 behaves like a state machine configured with use_transactions: false960 executes the registry API request outside of a transaction961 when responding to a start_import event962 behaves like a state machine configured with use_transactions: false963 executes the registry API request outside of a transaction964 when responding to a retry_import event965 behaves like a state machine configured with use_transactions: false966 executes the registry API request outside of a transaction967 #retry_aborted_migration968 when migration_state is not aborted969 does nothing970 when migration_state is aborted971 behaves like reconciling migration_state972 native response973 finishes the import974 import_in_progress response975 behaves like enforcing states coherence to976 leaves the repository in the expected migration_state977 import_complete response978 finishes the import979 import_canceled response980 behaves like retrying the import981 retries the import982 import_failed response983 behaves like retrying the import984 retries the import985 pre_import_in_progress response986 behaves like enforcing states coherence to987 leaves the repository in the expected migration_state988 pre_import_complete response989 finishes the pre_import and starts the import990 pre_import_canceled response991 behaves like retrying the pre_import992 retries the pre_import993 pre_import_failed response994 behaves like retrying the pre_import995 retries the pre_import996 error response997 migration_pre_import_done_at is NULL998 behaves like retrying the pre_import999 retries the pre_import1000 migration_pre_import_done_at is not NULL1001 behaves like retrying the import1002 retries the import1003 #reconcile_import_status1004 behaves like reconciling migration_state1005 native response1006 finishes the import1007 import_in_progress response1008 behaves like enforcing states coherence to1009 leaves the repository in the expected migration_state1010 import_complete response1011 finishes the import1012 import_canceled response1013 behaves like retrying the import1014 retries the import1015 import_failed response1016 behaves like retrying the import1017 retries the import1018 pre_import_in_progress response1019 behaves like enforcing states coherence to1020 leaves the repository in the expected migration_state1021 pre_import_complete response1022 finishes the pre_import and starts the import1023 pre_import_canceled response1024 behaves like retrying the pre_import1025 retries the pre_import1026 pre_import_failed response1027 behaves like retrying the pre_import1028 retries the pre_import1029 #tag1030 has a test tag1031 #path1032 when project path does not contain uppercase letters1033 returns a full path to the repository1034 when path contains uppercase letters1035 returns a full path without capital letters1036 #manifest1037 returns non-empty manifest1038 #valid?1039 is a valid repository1040 #tags1041 returns non-empty tags list1042 #tags_count1043 returns the count of tags1044 #has_tags?1045 has tags1046 #delete_tags!1047 when action succeeds1048 returns status that indicates success1049 when action fails1050 returns status that indicates failure1051 #delete_tag_by_name1052 when action succeeds1053 returns status that indicates success1054 when action fails1055 returns status that indicates failure1056 #location1057 when registry is running on a custom port1058 returns a full location of the repository1059 #root_repository?1060 when repository is a root repository1061 returns true1062 when repository is not a root repository1063 returns false1064 #start_expiration_policy!1065 sets the expiration policy started at to now1066 #size1067 supports gitlab api on .com with a recent repository1068 with a size_bytes field1069 is expected to eq 123451070 without a size_bytes field1071 is expected to eq nil1072 does not support gitlab api1073 is expected to eq nil1074 not on .com1075 is expected to eq nil1076 supports gitlab api on .com with an old repository1077 with migration_state import_done1078 is expected to eq 123451079 with migration_state not import_done1080 is expected to eq nil1081 registry migration1082 #migration_pre_import1083 behaves like handling the migration step1084 behaves like gitlab migration client request1085 returns the same response as the client1086 when the gitlab_api feature is not supported1087 returns :error1088 too many imports1089 raises an error when it receives too_many_imports as a response1090 #migration_import1091 behaves like handling the migration step1092 behaves like gitlab migration client request1093 returns the same response as the client1094 when the gitlab_api feature is not supported1095 returns :error1096 too many imports1097 raises an error when it receives too_many_imports as a response1098 #migration_cancel1099 behaves like gitlab migration client request1100 returns the same response as the client1101 when the gitlab_api feature is not supported1102 returns :error1103 #force_migration_cancel1104 successful cancellation1105 skips the migration1106 behaves like returning the same response as the client1107 returns the same response1108 failed cancellation1109 does not skip the migration1110 behaves like returning the same response as the client1111 returns the same response1112 when the gitlab_api feature is not supported1113 returns :error1114 .build_from_path1115 fabricates repository assigned to a correct project1116 fabricates repository with a correct name1117 is not persisted1118 .find_or_create_from_path1119 when received multi-level repository path1120 fabricates repository assigned to a correct project1121 fabricates repository with a correct name1122 when path is too long1123 does not create repository and raises error1124 when received multi-level repository with nested groups1125 fabricates repository assigned to a correct project1126 fabricates repository with a correct name1127 has path including a nested group1128 when received root repository path1129 fabricates repository assigned to a correct project1130 fabricates repository with an empty name1131 when repository already exists1132 returns the existing repository1133 when many of the same repository are created at the same time1134 does not throw validation errors and only creates one repository1135 retrieves a persisted repository for all concurrent calls1136 .find_by_path1137 when repository exists1138 finds the repository1139 when repository does not exist1140 returns nil1141 .find_by_path!1142 when repository exists1143 finds the repository1144 when repository does not exist1145 raises an exception1146 .build_root_repository1147 fabricates a root repository object1148 assignes it to the correct project1149 does not persist it1150 .for_group_and_its_subgroups1151 in a group1152 is expected to contain exactly #<ContainerRepository id: 154, project_id: 161, name: "my_image", created_at: "2022-06-29 20:05:41.78...efault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil>1153 with a subgroup1154 is expected to contain exactly #<ContainerRepository id: 157, project_id: 164, name: "my_image", created_at: "2022-06-29 20:05:43.14...efault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil> and #<ContainerRepository id: 155, project_id: 162, name: "my_image", created_at: "2022-06-29 20:05:42.46...efault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil>1155 group without container_repositories1156 is expected to eq []1157 .search_by_name1158 is expected to contain exactly #<ContainerRepository id: 159, project_id: 165, name: "my_image", created_at: "2022-06-29 20:05:44.12...efault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil>1159 .for_project_id1160 is expected to contain exactly #<ContainerRepository id: 160, project_id: 166, name: "my_image", created_at: "2022-06-29 20:05:44.89...efault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil>1161 .expiration_policy_started_at_nil_or_before1162 is expected to contain exactly #<ContainerRepository id: 161, project_id: 167, name: "test_image_97", created_at: "2022-06-29 20:05:...efault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil>, #<ContainerRepository id: 162, project_id: 168, name: "test_image_98", created_at: "2022-06-29 20:05:...efault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil>, and #<ContainerRepository id: 164, project_id: 170, name: "test_image_100", created_at: "2022-06-29 20:05...efault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil>1163 .with_migration_import_started_at_nil_or_before1164 is expected to contain exactly #<ContainerRepository id: 166, project_id: 172, name: "test_image_102", created_at: "2022-06-29 20:05...efault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil> and #<ContainerRepository id: 167, project_id: 173, name: "test_image_103", created_at: "2022-06-29 20:05...efault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil>1165 .with_migration_pre_import_started_at_nil_or_before1166 is expected to contain exactly #<ContainerRepository id: 169, project_id: 175, name: "test_image_105", created_at: "2022-06-29 20:05...efault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil> and #<ContainerRepository id: 170, project_id: 176, name: "test_image_106", created_at: "2022-06-29 20:05...efault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil>1167 .with_migration_pre_import_done_at_nil_or_before1168 is expected to contain exactly #<ContainerRepository id: 172, project_id: 178, name: "test_image_108", created_at: "2022-06-29 20:05...efault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil> and #<ContainerRepository id: 173, project_id: 179, name: "test_image_109", created_at: "2022-06-29 20:05...efault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil>1169 .with_stale_ongoing_cleanup1170 is expected to contain exactly #<ContainerRepository id: 174, project_id: 180, name: "test_image_110", created_at: "2022-06-29 20:05...efault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil> and #<ContainerRepository id: 176, project_id: 182, name: "test_image_112", created_at: "2022-06-29 20:05...efault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil>1171 .waiting_for_cleanup1172 is expected to contain exactly #<ContainerRepository id: 178, project_id: 184, name: "test_image_114", created_at: "2022-06-29 20:05...efault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil> and #<ContainerRepository id: 179, project_id: 185, name: "test_image_115", created_at: "2022-06-29 20:05...efault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil>1173 .exists_by_path?1174 returns true for known container repository paths1175 returns false for unknown container repository paths1176 .all_migrated?1177 with no repositories1178 is expected to be truthy1179 with only recent repositories1180 is expected to be truthy1181 with one old non migrated repository1182 is expected to be falsey1183 with one old migrated repository1184 is expected to be truthy1185 .with_enabled_policy1186 is expected to eq [#<ContainerRepository id: 184, project_id: 189, name: "test_image_119", created_at: "2022-06-29 20:0...fault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil>]1187 #migration_in_active_state?1188 when in default migration_state1189 is expected to eq false1190 when in pre_import_done migration_state1191 is expected to eq false1192 when in import_done migration_state1193 is expected to eq false1194 when in import_aborted migration_state1195 is expected to eq false1196 when in import_skipped migration_state1197 is expected to eq false1198 when in pre_importing migration_state1199 is expected to eq true1200 when in importing migration_state1201 is expected to eq true1202 #migration_importing?1203 when in default migration_state1204 is expected to eq false1205 when in pre_import_done migration_state1206 is expected to eq false1207 when in import_done migration_state1208 is expected to eq false1209 when in import_aborted migration_state1210 is expected to eq false1211 when in import_skipped migration_state1212 is expected to eq false1213 when in pre_importing migration_state1214 is expected to eq false1215 when in importing migration_state1216 is expected to eq true1217 #migration_pre_importing?1218 when in default migration_state1219 is expected to eq false1220 when in pre_import_done migration_state1221 is expected to eq false1222 when in import_done migration_state1223 is expected to eq false1224 when in import_aborted migration_state1225 is expected to eq false1226 when in import_skipped migration_state1227 is expected to eq false1228 when in pre_importing migration_state1229 is expected to eq true1230 when in importing migration_state1231 is expected to eq false1232 #try_import1233 successful request1234 is expected to eq true1235 TooManyImportsError1236 tries again exponentially and aborts the migration1237 not found response1238 completes the migration1239 other response1240 aborts the migration1241 with no block given1242 raises an error1243 #retried_too_many_times?1244 migration_retries_count is equal or greater than max_retries1245 is expected to eq true1246 migration_retries_count is lower than max_retries1247 is expected to eq false1248 #nearing_or_exceeded_retry_limit?1249 migration_retries_count is 1 less than max_retries1250 is expected to eq true1251 migration_retries_count is lower than max_retries1252 is expected to eq false1253 migration_retries_count equal to or higher than max_retries1254 is expected to eq true1255 with repositories1256 .requiring_cleanup1257 with next_run_at in the future1258 is expected to eq []1259 with next_run_at in the past1260 is expected to eq [#<ContainerRepository id: 213, project_id: 218, name: "test_image_143", created_at: "2022-06-29 20:0...fault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil>]1261 with repository cleanup started at after policy next run at1262 is expected to eq []1263 .with_unfinished_cleanup1264 is expected to eq []1265 with an unfinished repository1266 is expected to eq [#<ContainerRepository id: 213, project_id: 218, name: "test_image_143", created_at: "2022-06-29 20:0...fault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil>]1267 .recently_done_migration_step1268 returns completed imports by done_at date1269 .ready_for_import1270 works1271 #last_import_step_done_at1272 is expected to eq 2022-06-29 19:06:10.216743102 +00001273 #external_import_status1274 returns the response from the client1275 .with_stale_migration1276 is expected to contain exactly #<ContainerRepository id: 226, project_id: 231, name: "test_image_155", created_at: "2022-06-29 20:06...orting", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil>, #<ContainerRepository id: 227, project_id: 232, name: "test_image_156", created_at: "2022-06-29 20:06...orting", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil>, #<ContainerRepository id: 229, project_id: 234, name: "test_image_158", created_at: "2022-06-29 20:06...t_done", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil>, #<ContainerRepository id: 230, project_id: 235, name: "test_image_159", created_at: "2022-06-29 20:06...t_done", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil>, #<ContainerRepository id: 232, project_id: 237, name: "test_image_161", created_at: "2022-06-29 20:06...orting", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil>, and #<ContainerRepository id: 233, project_id: 238, name: "test_image_162", created_at: "2022-06-29 20:06...orting", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil>1277ProjectTeam1278 personal project1279 members collection1280 is expected to include #<User id:328 @user88>1281 is expected not to include #<User id:334 @user93>1282 is expected not to include #<User id:337 @user95>1283 is expected not to include #<User id:343 @user100>1284 access methods1285 is expected to be truthy1286 is expected to be falsey1287 is expected to be falsey1288 is expected to be falsey1289 is expected to be falsey1290 is expected to be truthy1291 is expected to be truthy1292 is expected to be falsey1293 is expected to be falsey1294 group project1295 members collection1296 is expected to include #<User id:386 @user133>1297 is expected to include #<User id:390 @user136>1298 is expected to include #<User id:397 @user142>1299 is expected not to include #<User id:401 @user145>1300 is expected not to include #<User id:408 @user151>1301 access methods1302 is expected to be truthy1303 is expected to be truthy1304 is expected to be truthy1305 is expected to be falsey1306 is expected to be falsey1307 is expected to be falsey1308 is expected to be truthy1309 is expected to be truthy1310 is expected to be falsey1311 is expected to be falsey1312 owner methods1313 personal project1314 is expected to contain exactly #<User id:462 @namespace278>1315 is expected to be truthy1316 group project1317 is expected to contain exactly #<User id:464 @user195> and #<User id:465 @user196>1318 is expected to be truthy1319 is expected to be truthy1320 #fetch_members1321 personal project1322 returns project members1323 returns project members of a specified level1324 returns invited members of a group1325 returns invited members of a group of a specified level1326 group project1327 returns project members1328 returns project members of a specified level1329 #find_member1330 personal project1331 is expected to be a kind of ProjectMember(id: integer, access_level: integer, source_id: integer, source_type: string, user_id: i...ean, override: boolean, state: integer, invite_email_success: boolean, member_namespace_id: integer)1332 is expected to be a kind of ProjectMember(id: integer, access_level: integer, source_id: integer, source_type: string, user_id: i...ean, override: boolean, state: integer, invite_email_success: boolean, member_namespace_id: integer)1333 is expected to be a kind of ProjectMember(id: integer, access_level: integer, source_id: integer, source_type: string, user_id: i...ean, override: boolean, state: integer, invite_email_success: boolean, member_namespace_id: integer)1334 is expected to be nil1335 is expected to be nil1336 group project1337 is expected to be a kind of GroupMember(id: integer, access_level: integer, source_id: integer, source_type: string, user_id: int...ean, override: boolean, state: integer, invite_email_success: boolean, member_namespace_id: integer)1338 is expected to be a kind of GroupMember(id: integer, access_level: integer, source_id: integer, source_type: string, user_id: int...ean, override: boolean, state: integer, invite_email_success: boolean, member_namespace_id: integer)1339 is expected to be a kind of GroupMember(id: integer, access_level: integer, source_id: integer, source_type: string, user_id: int...ean, override: boolean, state: integer, invite_email_success: boolean, member_namespace_id: integer)1340 is expected to be nil1341 is expected to be nil1342 #members_in_project_and_ancestors1343 group project1344 filters out users who are not members of the project1345 #members_with_access_levels1346 with access_levels1347 filters members who have given access levels1348 without access_levels1349 returns empty array1350 #add_users1351 add the given users to the team1352 when `tasks_to_be_done` and `tasks_project_id` are passed1353 creates a member_task with the correct attributes1354 #add_user1355 add the given user to the team1356 #human_max_access1357 returns Maintainer role1358 returns Owner role1359 #contributor?1360 when user is a member of project1361 is expected to equal false1362 is expected to equal false1363 is expected to equal false1364 when user has at least one merge request merged into default_branch1365 is expected to equal true1366 is expected to equal false1367 #max_member_access1368 personal project1369 when project is not shared with group1370 is expected to eq 401371 is expected to eq 201372 is expected to eq 101373 is expected to eq 01374 is expected to eq 01375 when project is shared with group1376 is expected to eq 301377 is expected to eq 201378 is expected to eq 01379 is expected to eq 01380 but share_with_group_lock is true1381 is expected to eq 01382 is expected to eq 01383 group project1384 is expected to eq 401385 is expected to eq 201386 is expected to eq 101387 is expected to eq 01388 is expected to eq 01389 #purge_member_access_cache_for_user_id1390 removes cached max access for user from store1391 #member?1392 returns false for no user1393 returns true for personal projects of the user1394 returns true for projects of groups the user is a member of1395 returns true for projects for which the user is a member of1396 returns true for projects shared on a group the user is a member of1397 checks for the correct minimum level access1398 #contribution_check_for_user_ids1399 does not perform extra queries when asked for users who have already been found1400 only requests the extra users when uncached users are passed1401 returns correct contributors1402 #max_member_access_for_user_ids1403 with RequestStore enabled1404 returns correct roles for different users1405 does not perform extra queries when asked for users who have already been found1406 only requests the extra users when uncached users are passed1407 with RequestStore disabled1408 returns correct roles for different users1409Gitlab::Git::Repository1410 Respond to1411 is expected to respond to #root_ref1412 is expected to respond to #tags1413 #root_ref1414 returns UTF-81415 gets the branch name from GitalyClient1416 behaves like wrapping gRPC errors1417 wraps gRPC not found error1418 wraps gRPC unknown error1419 #create_repository1420 behaves like wrapping gRPC errors1421 wraps gRPC not found error1422 wraps gRPC unknown error1423 #branch_names1424 has SeedRepo::Repo::BRANCHES.size elements1425 returns UTF-81426 is expected to include "master"1427 is expected not to include "branch-from-space"1428 gets the branch names from GitalyClient1429 behaves like wrapping gRPC errors1430 wraps gRPC not found error1431 wraps gRPC unknown error1432 #tag_names1433 is expected to be a kind of Array1434 has SeedRepo::Repo::TAGS.size elements1435 returns UTF-81436 is expected to include "v1.0.0"1437 is expected not to include "v5.0.0"1438 gets the tag names from GitalyClient1439 #last1440 is expected to eq "v1.2.1"1441 behaves like wrapping gRPC errors1442 wraps gRPC not found error1443 wraps gRPC unknown error1444 #tags1445 gets tags from GitalyClient1446 with sorting option1447 gets tags from GitalyClient1448 with pagination option1449 gets tags from GitalyClient1450 behaves like wrapping gRPC errors1451 wraps gRPC not found error1452 wraps gRPC unknown error1453 #archive_metadata1454 sets CommitId to the commit SHA1455 sets ArchivePrefix to the expected prefix1456 sets ArchivePath to the expected globally-unique path1457 path is set1458 appends the path to the prefix1459 append_sha varies archive path and filename1460 append_sha: true, ref: "master", expected_prefix: "gitlab-git-test-master-4b4918a572fa86f9771e5ba40fbd48e1eb03e2c6"1461 is expected to eq "gitlab-git-test-master-4b4918a572fa86f9771e5ba40fbd48e1eb03e2c6"1462 is expected to eq "/tmp/4b4918a572fa86f9771e5ba40fbd48e1eb03e2c6/@v2/gitlab-git-test-master-4b4918a572fa86f9771e5ba40fbd48e1eb03e2c6.tar.gz"1463 append_sha: true, ref: "4b4918a572fa86f9771e5ba40fbd48e1eb03e2c6", expected_prefix: "gitlab-git-test-4b4918a572fa86f9771e5ba40fbd48e1eb03e2c6-4b4918a572fa86f9771e5ba40fbd48e1eb03e2c6"1464 is expected to eq "gitlab-git-test-4b4918a572fa86f9771e5ba40fbd48e1eb03e2c6-4b4918a572fa86f9771e5ba40fbd48e1eb03e2c6"1465 is expected to eq "/tmp/4b4918a572fa86f9771e5ba40fbd48e1eb03e2c6/@v2/gitlab-git-test-4b4918a572fa86f9771e5ba40fbd48e1eb03e2c6-4b4918a572fa86f9771e5ba40fbd48e1eb03e2c6.tar.gz"1466 append_sha: false, ref: "master", expected_prefix: "gitlab-git-test-master"1467 is expected to eq "gitlab-git-test-master"1468 is expected to eq "/tmp/4b4918a572fa86f9771e5ba40fbd48e1eb03e2c6/@v2/gitlab-git-test-master.tar.gz"1469 append_sha: false, ref: "4b4918a572fa86f9771e5ba40fbd48e1eb03e2c6", expected_prefix: "gitlab-git-test-4b4918a572fa86f9771e5ba40fbd48e1eb03e2c6"1470 is expected to eq "gitlab-git-test-4b4918a572fa86f9771e5ba40fbd48e1eb03e2c6"1471 is expected to eq "/tmp/4b4918a572fa86f9771e5ba40fbd48e1eb03e2c6/@v2/gitlab-git-test-4b4918a572fa86f9771e5ba40fbd48e1eb03e2c6.tar.gz"1472 append_sha: nil, ref: "master", expected_prefix: "gitlab-git-test-master-4b4918a572fa86f9771e5ba40fbd48e1eb03e2c6"1473 is expected to eq "gitlab-git-test-master-4b4918a572fa86f9771e5ba40fbd48e1eb03e2c6"1474 is expected to eq "/tmp/4b4918a572fa86f9771e5ba40fbd48e1eb03e2c6/@v2/gitlab-git-test-master-4b4918a572fa86f9771e5ba40fbd48e1eb03e2c6.tar.gz"1475 append_sha: nil, ref: "4b4918a572fa86f9771e5ba40fbd48e1eb03e2c6", expected_prefix: "gitlab-git-test-4b4918a572fa86f9771e5ba40fbd48e1eb03e2c6"1476 is expected to eq "gitlab-git-test-4b4918a572fa86f9771e5ba40fbd48e1eb03e2c6"1477 is expected to eq "/tmp/4b4918a572fa86f9771e5ba40fbd48e1eb03e2c6/@v2/gitlab-git-test-4b4918a572fa86f9771e5ba40fbd48e1eb03e2c6.tar.gz"1478 format varies archive path and filename1479 format: nil, expected_extension: "tar.gz"1480 is expected to eq "gitlab-git-test-master-4b4918a572fa86f9771e5ba40fbd48e1eb03e2c6"1481 is expected to eq "/tmp/4b4918a572fa86f9771e5ba40fbd48e1eb03e2c6/@v2/gitlab-git-test-master-4b4918a572fa86f9771e5ba40fbd48e1eb03e2c6.tar.gz"1482 format: "madeup", expected_extension: "tar.gz"1483 is expected to eq "gitlab-git-test-master-4b4918a572fa86f9771e5ba40fbd48e1eb03e2c6"1484 is expected to eq "/tmp/4b4918a572fa86f9771e5ba40fbd48e1eb03e2c6/@v2/gitlab-git-test-master-4b4918a572fa86f9771e5ba40fbd48e1eb03e2c6.tar.gz"1485 format: "tbz2", expected_extension: "tar.bz2"1486 is expected to eq "gitlab-git-test-master-4b4918a572fa86f9771e5ba40fbd48e1eb03e2c6"1487 is expected to eq "/tmp/4b4918a572fa86f9771e5ba40fbd48e1eb03e2c6/@v2/gitlab-git-test-master-4b4918a572fa86f9771e5ba40fbd48e1eb03e2c6.tar.bz2"1488 format: "zip", expected_extension: "zip"1489 is expected to eq "gitlab-git-test-master-4b4918a572fa86f9771e5ba40fbd48e1eb03e2c6"1490 is expected to eq "/tmp/4b4918a572fa86f9771e5ba40fbd48e1eb03e2c6/@v2/gitlab-git-test-master-4b4918a572fa86f9771e5ba40fbd48e1eb03e2c6.zip"1491 #size1492 is expected to be < 21493 #to_s1494 is expected to eq "<Gitlab::Git::Repository: group/project>"1495 #object_directory_size1496 is expected to eq 20481497 #empty?1498 is expected not to be empty1499 #ref_names1500 is expected to be a kind of Array1501 #first1502 is expected to eq "feature"1503 #last1504 is expected to eq "v1.2.1"1505 #submodule_url_for1506 is expected to eq "git://github.com/randx/six.git"1507 is expected to eq "git://github.com/randx/six.git"1508 is expected to eq "git://github.com/randx/six.git"1509 is expected to eq nil1510 uncommitted submodule dir1511 is expected to eq nil1512 tags1513 is expected to eq "git://github.com/randx/six.git"1514 no .gitmodules at commit1515 is expected to eq nil1516 no gitlink entry1517 is expected to eq nil1518 #submodule_urls_for1519 returns url mappings for submodules1520 #commit_count1521 is expected to eq 251522 is expected to eq 91523 is expected to eq 01524 behaves like wrapping gRPC errors1525 wraps gRPC not found error1526 wraps gRPC unknown error1527 #diverging_commit_count1528 counts 0 for the same branch1529 max count does not truncate results1530 left: 1, right: 1, expected: [1, 1]1531 returns the correct count bounding at max_count1532 left: 4, right: 4, expected: [4, 4]1533 returns the correct count bounding at max_count1534 left: 2, right: 2, expected: [2, 2]1535 returns the correct count bounding at max_count1536 left: 2, right: 4, expected: [2, 4]1537 returns the correct count bounding at max_count1538 left: 4, right: 2, expected: [4, 2]1539 returns the correct count bounding at max_count1540 left: 10, right: 10, expected: [10, 10]1541 returns the correct count bounding at max_count1542 max count truncates results1543 left: 1, right: 1, max_count: 11544 returns the correct count bounding at max_count1545 left: 4, right: 4, max_count: 41546 returns the correct count bounding at max_count1547 left: 2, right: 2, max_count: 31548 returns the correct count bounding at max_count1549 left: 2, right: 4, max_count: 31550 returns the correct count bounding at max_count1551 left: 4, right: 2, max_count: 51552 returns the correct count bounding at max_count1553 left: 10, right: 10, max_count: 101554 returns the correct count bounding at max_count1555 behaves like wrapping gRPC errors1556 wraps gRPC not found error1557 wraps gRPC unknown error1558 #has_local_branches?1559 check for local branches1560 is expected to eq true1561 mutable1562 returns false when there are no branches1563 memoizes the value1564 returns true1565 #delete_refs1566 deletes the ref1567 deletes all refs1568 does not fail when deleting an empty list of refs1569 raises an error if it failed1570 #branch_names_contains_sha1571 displays that branch1572 #refs_hash1573 has as many entries as branches and tags1574 has valid commit ids as keys1575 does not error when dereferenced_target is nil1576 #fetch_remote1577 delegates to the gitaly RepositoryService1578 behaves like wrapping gRPC errors1579 wraps gRPC not found error1580 wraps gRPC unknown error1581 #search_files_by_content1582 has 2 items1583 has the correct matching line1584 #search_files_by_regexp1585 when sending a valid regexp1586 returns matched files1587 when sending an ivalid regexp1588 raises error1589 when the ref doesn't exist1590 returns an empty array1591 #find_remote_root_ref1592 gets the remote root ref from GitalyClient1593 returns UTF-81594 returns nil when remote name is nil1595 returns nil when remote name is empty1596 behaves like wrapping gRPC errors1597 wraps gRPC not found error1598 wraps gRPC unknown error1599 #log1600 when Gitaly find_commits feature is enabled1601 behaves like repository log1602 where 'follow' == true1603 and 'path' is a directory1604 does not follow renames1605 and 'path' is a file that matches the new filename1606 without offset1607 follows renames1608 with offset=11609 follows renames and skip the latest commit1610 with offset=1 and limit=11611 follows renames, skip the latest commit and return only one commit1612 with offset=1 and limit=21613 follows renames, skip the latest commit and return only two commits1614 with offset=21615 follows renames and skip the latest commit1616 with offset=2 and limit=11617 follows renames, skip the two latest commit and return only one commit1618 with offset=2 and limit=21619 follows renames, skip the two latest commit and return only one commit1620 and 'path' is a file that matches the old filename1621 does not follow renames1622 unknown ref1623 returns an empty array1624 where 'follow' == false1625 and 'path' is a directory1626 does not follow renames1627 and 'path' is a file that matches the new filename1628 does not follow renames1629 and 'path' is a file that matches the old filename1630 does not follow renames1631 and 'path' includes a directory that used to be a file1632 returns a list of commits1633 where provides 'after' timestamp1634 returns commits on or after that timestamp1635 where provides 'before' timestamp1636 returns commits on or before that timestamp1637 when multiple paths are provided1638 only returns commits matching at least one path1639 limit validation1640 limit: 01641 is expected to raise ArgumentError1642 limit: nil1643 is expected to raise ArgumentError1644 limit: ""1645 is expected to raise ArgumentError1646 limit: "foo"1647 is expected to raise ArgumentError1648 with all1649 returns a list of commits1650 #blobs1651 single revision1652 behaves like a blob enumeration1653 enumerates blobs1654 multiple revisions1655 behaves like a blob enumeration1656 enumerates blobs1657 pseudo revisions1658 behaves like a blob enumeration1659 enumerates blobs1660 blank revisions1661 behaves like a blob enumeration1662 enumerates blobs1663 partially blank revisions1664 behaves like a blob enumeration1665 enumerates blobs1666 #new_blobs1667 with a single revision1668 behaves like #new_blobs with revisions1669 enumerates new blobs1670 memoizes results1671 with a single-entry array1672 behaves like #new_blobs with revisions1673 enumerates new blobs1674 memoizes results1675 with multiple revisions1676 behaves like #new_blobs with revisions1677 enumerates new blobs1678 memoizes results1679 with partially blank revisions1680 behaves like #new_blobs with revisions1681 enumerates new blobs1682 memoizes results1683 with repeated revisions1684 behaves like #new_blobs with revisions1685 enumerates new blobs1686 memoizes results1687 with preexisting commits1688 behaves like #new_blobs with revisions1689 enumerates new blobs1690 memoizes results1691 with a single nil newrev1692 behaves like #new_blobs without revisions1693 returns an empty array1694 with a single zero newrev1695 behaves like #new_blobs without revisions1696 returns an empty array1697 with an empty array1698 behaves like #new_blobs without revisions1699 returns an empty array1700 with array containing only empty refs1701 behaves like #new_blobs without revisions1702 returns an empty array1703 #new_commits1704 enumerates commits1705 #count_commits_between1706 is expected to eq 171707 #raw_changes_between1708 initial commit1709 returns the changes1710 with an invalid rev1711 returns an error1712 with valid revs1713 returns the changes1714 #merge_base1715 from: "570e7b2abdd848b95f2f578043fc23bd6f6fd24d", to: "40f4a7a617393735a95a0bb67b08385bc1e7c66d", result: "570e7b2abdd848b95f2f578043fc23bd6f6fd24d"1716 is expected to eq "570e7b2abdd848b95f2f578043fc23bd6f6fd24d"1717 from: "40f4a7a617393735a95a0bb67b08385bc1e7c66d", to: "570e7b2abdd848b95f2f578043fc23bd6f6fd24d", result: "570e7b2abdd848b95f2f578043fc23bd6f6fd24d"1718 is expected to eq "570e7b2abdd848b95f2f578043fc23bd6f6fd24d"1719 from: "40f4a7a617393735a95a0bb67b08385bc1e7c66d", to: "foobar", result: nil1720 is expected to eq nil1721 from: "foobar", to: "40f4a7a617393735a95a0bb67b08385bc1e7c66d", result: nil1722 is expected to eq nil1723 #count_commits1724 extended commit counting1725 with after timestamp1726 returns the number of commits after timestamp1727 with before timestamp1728 returns the number of commits before timestamp1729 with max_count1730 returns the number of commits with path1731 with path1732 returns the number of commits with path1733 with option :from and option :to1734 returns the number of commits ahead for fix-mode..fix-blob-path1735 returns the number of commits ahead for fix-blob-path..fix-mode1736 with option :left_right1737 returns the number of commits for fix-mode...fix-blob-path1738 with max_count1739 returns the number of commits with path1740 with max_count1741 returns the number of commits up to the passed limit1742 with all1743 returns the number of commits in the whole repository1744 without all or ref being specified1745 raises an ArgumentError1746 #find_branch1747 returns a Branch for master1748 handles non-existent branch1749 #branches1750 with local and remote branches1751 returns the local and remote branches1752 behaves like wrapping gRPC errors1753 wraps gRPC not found error1754 wraps gRPC unknown error1755 #branch_count1756 returns the number of branches1757 with local and remote branches1758 returns the count of local branches1759 with Gitaly disabled1760 returns the count of local branches1761 #merged_branch_names1762 when branch names are passed1763 only returns the names we are asking1764 does not return unmerged branch names1765 when no root ref is available1766 returns empty list1767 when no branch names are specified1768 returns all merged branch names except for identical one1769 #diff_stats1770 returns a DiffStatsCollection1771 yields Gitaly::DiffStats objects1772 returns no Gitaly::DiffStats when SHAs are invalid1773 returns no Gitaly::DiffStats when there is a nil SHA1774 returns no Gitaly::DiffStats when there is a BLANK_SHA1775 #find_changed_paths1776 returns a list of paths1777 returns no paths when SHAs are invalid1778 returns a list of paths even when containing a blank ref1779 returns no paths when the commits are nil1780 #ls_files1781 read every file paths of master branch1782 reads full file paths of master branch1783 does not read submodule directory and empty directory of master branch1784 does not include 'nil'1785 returns empty array when not existed branch1786 returns valid utf-8 data1787 #copy_gitattributes1788 raises an error with invalid ref1789 when forcing encoding issues1790 doesn't raise with a valid unicode ref1791 with no .gitattrbutes1792 does not have an info/attributes1793 with .gitattrbutes1794 has an info/attributes1795 has the same content in info/attributes as .gitattributes1796 with updated .gitattrbutes1797 has an info/attributes1798 has the updated content in info/attributes1799 with no .gitattrbutes in HEAD but with previous info/attributes1800 does not have an info/attributes1801 #gitattribute1802 returns matching language attribute1803 returns matching language attribute with additional options1804 returns nil if nothing matches1805 without gitattributes file1806 returns nil1807 #ref_exists?1808 returns true for an existing tag1809 returns false for a non-existing tag1810 raises an ArgumentError for an empty string1811 raises an ArgumentError for an invalid ref1812 #tag_exists?1813 returns true for an existing tag1814 returns false for a non-existing tag1815 #branch_exists?1816 returns true for an existing branch1817 returns false for a non-existing branch1818 returns false when using an invalid branch name1819 #local_branches1820 returns the local branches1821 returns a Branch with UTF-8 fields1822 gets the branches from GitalyClient1823 behaves like wrapping gRPC errors1824 wraps gRPC not found error1825 wraps gRPC unknown error1826 #languages1827 returns exactly the expected results1828 uses the repository's HEAD when no ref is passed1829 #license_short_name1830 when no license file can be found1831 is expected to be nil1832 when an mit license is found1833 is expected to eq "mit"1834 #fetch_source_branch!1835 when the branch exists1836 when the commit does not exist locally1837 writes the ref1838 when the commit exists locally1839 writes the ref1840 when the branch does not exist1841 does not write the ref1842 #rm_branch1843 removes the branch from the repo1844 #write_ref1845 writes the HEAD1846 writes other refs1847 validations1848 ref_path: "foo bar", ref: "123"1849 raises ArgumentError1850 ref_path: "foobar", ref: "12\u00003"1851 raises ArgumentError1852 #list_refs1853 returns a list of branches with their head commit1854 #refs_by_oid1855 returns a list of refs from a OID1856 returns a single ref from a OID1857 returns empty for unknown ID1858 returns nil for an empty repo1859 #set_full_path1860 is given a path1861 writes it to disk1862 it is given an empty path1863 does not write it to disk1864 repository does not exist1865 raises NoRepository and does not call Gitaly WriteConfig1866 #merge_to_ref1867 generates a commit in the target_ref1868 does not change the right branch HEAD1869 #merge1870 can perform a merge1871 returns nil if there was a concurrent branch update1872 #ff_merge1873 calls Gitaly's OperationService1874 behaves like #ff_merge1875 performs a ff_merge1876 with a non-existing target branch1877 throws an ArgumentError1878 with a non-existing source commit1879 throws an ArgumentError1880 when the source sha is not a descendant of the branch head1881 doesn't perform the ff_merge1882 #delete_all_refs_except1883 deletes all refs except those with the specified prefixes1884 #bundle_to_disk1885 saves a bundle to disk1886 #create_from_bundle1887 creates a repo from a bundle file1888 raises an error if the bundle is an attempted malicious payload1889 #compare_source_branch1890 delegates to Gitlab::Git::CrossRepoComparer1891 #checksum1892 calculates the checksum for non-empty repo1893 returns 0000000000000000000000000000000000000000 for an empty repo1894 raises Gitlab::Git::Repository::InvalidRepository error for non-valid git repo1895 raises Gitlab::Git::Repository::NoRepository error when there is no repo1896 #replicas1897 gets the replica checksum through praefect1898 #squash1899 sparse checkout (PENDING: No reason given)1900 with an ASCII-8BIT diff (PENDING: No reason given)1901 with trailing whitespace in an invalid patch (PENDING: No reason given)1902 #disconnect_alternates1903 does not raise an error when disconnecting a non-linked repository1904 removes the alternates file1905 can still access objects in the object pool1906 #rename1907 moves the repository1908 #remove1909 removes the repository1910 when the repository does not exist1911 is idempotent1912 #import_repository1913 raises an error if a relative path is provided1914 raises an error if an absolute path is provided1915 delegates to Gitaly1916 behaves like wrapping gRPC errors1917 wraps gRPC not found error1918 wraps gRPC unknown error1919 #replicate1920 destination does not exist1921 mirrors the source repository1922 destination exists1923 mirrors the source repository1924 with keep-around refs1925 includes the temporary and keep-around refs1926Clusters::Applications::ElasticStack1927 is expected to belong to cluster required: false1928 is expected to validate that :cluster cannot be empty/falsy1929 #can_uninstall?1930 calls allowed_to_uninstall?1931 #name1932 is .application_name1933 is recorded in Clusters::Cluster::APPLICATIONS1934 .association_name1935 is expected to eq :application_elastic_stack1936 #helm_command_module1937 helm_major_version: 2, expected_helm_command_module: Gitlab::Kubernetes::Helm::V21938 is expected to eq Gitlab::Kubernetes::Helm::V21939 helm_major_version: 3, expected_helm_command_module: Gitlab::Kubernetes::Helm::V31940 is expected to eq Gitlab::Kubernetes::Helm::V31941 #status_states1942 returns a hash of state values1943 returns an integer for installed state value1944 .available1945 is expected to contain exactly #<Clusters::Applications::ElasticStack id: 1, created_at: "2022-06-29 20:09:22.812926083 +0000", upda...22-06-29 20:09:22.812926083 +0000", cluster_id: 12, status: 3, version: "3.0.0", status_reason: nil> and #<Clusters::Applications::ElasticStack id: 2, created_at: "2022-06-29 20:09:23.792205591 +0000", upda...22-06-29 20:09:23.792205591 +0000", cluster_id: 18, status: 5, version: "3.0.0", status_reason: nil>1946 status state machine1947 #make_installing1948 is installing1949 #make_installed1950 is installed1951 does not update the helm version1952 the cluster has no helm installed1953 runs without errors1954 application is updating1955 is updated1956 does not update the helm version1957 the cluster has no helm installed1958 runs without errors1959 #make_errored1960 is errored1961 application is updating1962 is update_errored1963 application is uninstalling1964 is uninstall_errored1965 #make_externally_installed1966 is installed1967 helm record does not exist1968 does not create a helm record1969 helm record exists1970 does not update helm version1971 application is updated1972 is installed1973 application is errored1974 is installed1975 clears #status_reason1976 #make_externally_uninstalled1977 is uninstalled1978 application is updated1979 is uninstalled1980 application is errored1981 is uninstalled1982 clears #status_reason1983 #make_scheduled1984 is scheduled1985 when installed1986 is scheduled1987 when was errored1988 clears #status_reason1989 when was updated_errored1990 clears #status_reason1991 when was uninstall_errored1992 clears #status_reason1993 #make_uninstalling1994 is uninstalling1995 #available?1996 trait: :not_installable, available: false1997 is expected not to be available1998 trait: :installable, available: false1999 is expected not to be available2000 trait: :scheduled, available: false2001 is expected not to be available2002 trait: :installing, available: false2003 is expected not to be available2004 trait: :installed, available: true2005 is expected to be available2006 trait: :updating, available: false2007 is expected not to be available2008 trait: :updated, available: true2009 is expected to be available2010 trait: :errored, available: false2011 is expected not to be available2012 trait: :update_errored, available: false2013 is expected not to be available2014 trait: :uninstalling, available: false2015 is expected not to be available2016 trait: :uninstall_errored, available: false2017 is expected not to be available2018 trait: :uninstalled, available: false2019 is expected not to be available2020 trait: :timed_out, available: false2021 is expected not to be available2022 trait: :externally_installed, available: true2023 is expected to be available2024 update_available?2025 version is not the same as VERSION2026 is expected to be truthy2027 version is the same as VERSION2028 is expected to be falsey2029 #make_installed2030 sets the correct version of the application2031 application is updating2032 updates the version of the application2033 #make_externally_installed2034 sets to a special version2035 #uninstall_command2036 is expected to be an instance of Gitlab::Kubernetes::Helm::V3::DeleteCommand2037 has files2038 is rbac2039 on a non rbac enabled cluster2040 is expected not to be rbac2041 #files2042 does not include cert files2043 when cluster does not have helm installed2044 does not include cert files2045 cluster.integration_elastic_stack state synchronization2046 after_destroy2047 disables the corresponding integration2048 on install2049 enables the corresponding integration2050 on uninstall2051 disables the corresponding integration2052 #install_command2053 is expected to be an instance of Gitlab::Kubernetes::Helm::V3::InstallCommand2054 is initialized with elastic stack arguments2055 within values.yaml2056 contains the disabled index lifecycle management2057 contains daily indices with respective template2058 on a non rbac enabled cluster2059 is expected not to be rbac2060 on versions older than 22061 includes a preinstall script2062 on versions older than 32063 includes a preinstall script2064 application failed to install previously2065 is initialized with the locked version2066 #chart_above_v2?2067 on v1.9.02068 is expected to be falsy2069 on v2.0.02070 is expected to be truthy2071 #chart_above_v3?2072 on v1.9.02073 is expected to be falsy2074 on v3.0.02075 is expected to be truthy2076 #uninstall_command2077 is expected to be an instance of Gitlab::Kubernetes::Helm::V3::DeleteCommand2078 is initialized with elastic stack arguments2079 specifies a post delete command to remove custom resource definitions2080 behaves like cluster-based #elasticsearch_client2081 #elasticsearch_client2082 cluster is nil2083 returns nil2084 cluster doesn't have kubeclient2085 returns nil2086 cluster has kubeclient2087 creates proxy elasticsearch_client2088 copies proxy_url, options and headers from kube client to elasticsearch_client2089 when cluster is not reachable2090 returns nil2091 when timeout is provided2092 sets timeout in elasticsearch_client2093gitlab:db:lock_writes2094 single database2095 when locking writes2096 does not add any triggers to the main schema tables (PENDING: Skipping because multiple databases are set up)2097 will be still able to modify tables that belong to the main two schemas (PENDING: Skipping because multiple databases are set up)2098 multiple databases2099 when locking writes2100 adds 3 triggers to the ci schema tables on the main database2101 adds 3 triggers to the main schema tables on the ci database2102 still allows writes on the tables with the correct connections2103 still allows writing to gitlab_shared schema on any connection2104 prevents writes on the main tables on the ci database2105 prevents writes on the ci tables on the main database2106 prevents truncating a ci table on the main database2107 retries again if it receives a statement_timeout a few number of times2108 raises the exception if it happened many times2109 when unlocking writes2110 removes the write protection triggers from the gitlab_main tables on the ci database2111 removes the write protection triggers from the gitlab_ci tables on the main database2112Gitlab::ProjectSearchResults2113 with a repository_ref2114 when empty2115 is expected to eq #<Project id:396 namespace391/project406>>2116 is expected to eq "hello world"2117 when set2118 is expected to eq #<Project id:396 namespace391/project406>>2119 is expected to eq "refs/heads/test"2120 is expected to eq "hello world"2121 #formatted_count2122 scope: "blobs", count_method: :limited_blobs_count, expected: "99+"2123 returns the expected formatted count2124 scope: "notes", count_method: :limited_notes_count, expected: "99+"2125 returns the expected formatted count2126 scope: "wiki_blobs", count_method: :wiki_blobs_count, expected: "1234"2127 returns the expected formatted count2128 scope: "commits", count_method: :commits_count, expected: "99+"2129 returns the expected formatted count2130 scope: "projects", count_method: :limited_projects_count, expected: "99+"2131 returns the expected formatted count2132 scope: "unknown", count_method: nil, expected: nil2133 returns the expected formatted count2134 blobs2135 limits the search to 100 items2136 wiki_blobs2137 limits the search to 100 items2138 blob search2139 behaves like general blob search2140 finds by name2141 loads all blobs for path matches in single batch2142 finds by content2143 when repository is disabled2144 hides blobs from members2145 hides blobs from non-members2146 when repository is internal2147 finds blobs for members2148 hides blobs from non-members2149 behaves like blob search repository ref2150 when repository_ref exists2151 uses it2152 when repository_ref is not present2153 uses project repository default reference2154 when repository_ref is blank2155 uses project repository default reference2156 behaves like blob search pagination2157 limits search results based on the first page2158 limits search results based on the second page2159 limits search results based on the third page2160 uses the per_page value when passed2161 wiki search2162 behaves like general blob search2163 finds by name2164 loads all blobs for path matches in single batch2165 finds by content2166 when wiki is disabled2167 hides wiki_blobs from members2168 hides wiki_blobs from non-members2169 when wiki is internal2170 finds wiki_blobs for members2171 hides wiki_blobs from non-members2172 behaves like blob search repository ref2173 when repository_ref exists2174 uses it2175 when repository_ref is not present2176 uses wiki repository default reference2177 when repository_ref is blank2178 uses wiki repository default reference2179 behaves like blob search pagination2180 limits search results based on the first page2181 limits search results based on the second page2182 limits search results based on the third page2183 uses the per_page value when passed2184 return type2185 returns list of FoundWikiPage type object2186 issues search2187 does not list issues on private projects2188 confidential issues2189 when the user is non-member2190 does not list project confidential issues for non project members2191 when the member is guest2192 does not list project confidential issues for project members with guest role2193 when the user is the author2194 lists project confidential issues2195 when the user is the assignee2196 lists project confidential issues for assignee2197 when the user is a developer2198 lists project confidential issues2199 when the user is admin2200 when admin mode is enabled2201 lists all project issues2202 when admin mode is disabled2203 does not list project confidential issues2204 filtering2205 state not provided2206 returns opened and closed results2207 all state2208 returns opened and closed results2209 closed state2210 returns only closed results2211 opened state2212 returns only opened results2213 unsupported state2214 returns only opened results2215 filter not provided (all behavior)2216 returns confidential and not confidential results2217 confidential filter2218 returns only confidential results2219 not confidential filter2220 returns not confidential results2221 merge requests search2222 filtering2223 state not provided2224 returns opened and closed results2225 all state2226 returns opened and closed results2227 closed state2228 returns only closed results2229 opened state2230 returns only opened results2231 unsupported state2232 returns only opened results2233 notes search2234 with a public project2235 lists notes2236 with private issues2237 doesn't list issue notes when access is restricted2238 with private merge requests2239 doesn't list merge_request notes when access is restricted2240 #limited_notes_count2241 when count_limit is lower than total amount2242 calls note finder once to get the limited amount of notes2243 when count_limit is higher than total amount2244 calls note finder multiple times to get the limited amount of notes2245 #commits_count2246 limits the number of commits requested2247 commit search2248 pagination2249 returns the correct results for each page2250 returns the correct number of pages2251 limiting requested commits2252 on page 12253 limits to 1002254 on subsequent pages2255 limits to 100 plus page offset2256 by commit message2257 finds commit by message2258 when there are not hits2259 handles when no commit match2260 when repository_ref is provided2261 searches in the specified ref2262 behaves like access restricted commits2263 when project is internal2264 searches if user is authenticated2265 when the user is not authenticated2266 does not search2267 when project is private2268 when the user is not authenticated2269 does not show commit to stranger2270 team access2271 when the user is the creator2272 is expected to contain exactly #<Commit id:59e29889be61e6e0e5e223bfa9ac2721d31605b8 private-project-author/project465@59e29889be61e6e0e5e223bfa9ac2721d31605b8>2273 when the user is a master2274 is expected to contain exactly #<Commit id:59e29889be61e6e0e5e223bfa9ac2721d31605b8 private-project-author/project466@59e29889be61e6e0e5e223bfa9ac2721d31605b8>2275 when the user is a reporter2276 is expected to contain exactly #<Commit id:59e29889be61e6e0e5e223bfa9ac2721d31605b8 private-project-author/project467@59e29889be61e6e0e5e223bfa9ac2721d31605b8>2277 by commit hash2278 shows commit by short hash id2279 shows commit by full hash id2280 handles not existing commit hash correctly2281 behaves like access restricted commits2282 when project is internal2283 searches if user is authenticated2284 when the user is not authenticated2285 does not search2286 when project is private2287 when the user is not authenticated2288 does not show commit to stranger2289 team access2290 when the user is the creator2291 is expected to contain exactly #<Commit id:0b4bc9a49b562e85de7cc9e834518ea6828729b9 private-project-author/project474@0b4bc9a49b562e85de7cc9e834518ea6828729b9>2292 when the user is a master2293 is expected to contain exactly #<Commit id:0b4bc9a49b562e85de7cc9e834518ea6828729b9 private-project-author/project475@0b4bc9a49b562e85de7cc9e834518ea6828729b9>2294 when the user is a reporter2295 is expected to contain exactly #<Commit id:0b4bc9a49b562e85de7cc9e834518ea6828729b9 private-project-author/project476@0b4bc9a49b562e85de7cc9e834518ea6828729b9>2296 user search2297 returns the user belonging to the project matching the search query2298 returns the user belonging to the group matching the search query2299 when multiple projects provided2300 returns users belonging to projects matching the search query2301Projects::Prometheus::Alerts::NotifyService2302 with valid payload2303 with environment specific clusters2304 without token2305 creates alerts and returns them in the payload2306 behaves like processes incident issues2307 is expected to be success2308 behaves like sends alert notification emails2309 is expected to receive prometheus_alerts_fired(*(any args)) 1 time2310 with token2311 behaves like alerts service responds with an error and takes no actions2312 is expected to eq :unauthorized2313 behaves like does not create an alert management alert2314 is expected not to change `AlertManagement::Alert.count`2315 behaves like does not create a system note for alert2316 is expected not to change `Note.count`2317 behaves like does not process incident issues2318 is expected not to receive perform_async(*(any args)) 0 times2319 behaves like does not send alert notification emails2320 is expected not to receive new(*(any args)) 0 times2321 with project specific cluster using prometheus integration2322 cluster_enabled: true, integration_enabled: true, configured_token: "token", token_input: "token", result: :success2323 creates alerts and returns them in the payload2324 behaves like processes incident issues2325 is expected to be success2326 behaves like sends alert notification emails2327 is expected to receive prometheus_alerts_fired(*(any args)) 1 time2328 cluster_enabled: true, integration_enabled: true, configured_token: nil, token_input: nil, result: :success2329 creates alerts and returns them in the payload2330 behaves like processes incident issues2331 is expected to be success2332 behaves like sends alert notification emails2333 is expected to receive prometheus_alerts_fired(*(any args)) 1 time2334 cluster_enabled: true, integration_enabled: true, configured_token: "token", token_input: "x", result: :failure2335 behaves like alerts service responds with an error and takes no actions2336 is expected to eq :unauthorized2337 behaves like does not create an alert management alert2338 is expected not to change `AlertManagement::Alert.count`2339 behaves like does not create a system note for alert2340 is expected not to change `Note.count`2341 behaves like does not process incident issues2342 is expected not to receive perform_async(*(any args)) 0 times2343 behaves like does not send alert notification emails2344 is expected not to receive new(*(any args)) 0 times2345 cluster_enabled: true, integration_enabled: true, configured_token: "token", token_input: nil, result: :failure2346 behaves like alerts service responds with an error and takes no actions2347 is expected to eq :unauthorized2348 behaves like does not create an alert management alert2349 is expected not to change `AlertManagement::Alert.count`2350 behaves like does not create a system note for alert2351 is expected not to change `Note.count`2352 behaves like does not process incident issues2353 is expected not to receive perform_async(*(any args)) 0 times2354 behaves like does not send alert notification emails2355 is expected not to receive new(*(any args)) 0 times2356 cluster_enabled: true, integration_enabled: false, configured_token: "token", token_input: "token", result: :failure2357 behaves like alerts service responds with an error and takes no actions2358 is expected to eq :unauthorized2359 behaves like does not create an alert management alert2360 is expected not to change `AlertManagement::Alert.count`2361 behaves like does not create a system note for alert2362 is expected not to change `Note.count`2363 behaves like does not process incident issues2364 is expected not to receive perform_async(*(any args)) 0 times2365 behaves like does not send alert notification emails2366 is expected not to receive new(*(any args)) 0 times2367 cluster_enabled: false, integration_enabled: true, configured_token: "token", token_input: "token", result: :failure2368 behaves like alerts service responds with an error and takes no actions2369 is expected to eq :unauthorized2370 behaves like does not create an alert management alert2371 is expected not to change `AlertManagement::Alert.count`2372 behaves like does not create a system note for alert2373 is expected not to change `Note.count`2374 behaves like does not process incident issues2375 is expected not to receive perform_async(*(any args)) 0 times2376 behaves like does not send alert notification emails2377 is expected not to receive new(*(any args)) 0 times2378 cluster_enabled: false, integration_enabled: nil, configured_token: nil, token_input: "token", result: :failure2379 behaves like alerts service responds with an error and takes no actions2380 is expected to eq :unauthorized2381 behaves like does not create an alert management alert2382 is expected not to change `AlertManagement::Alert.count`2383 behaves like does not create a system note for alert2384 is expected not to change `Note.count`2385 behaves like does not process incident issues2386 is expected not to receive perform_async(*(any args)) 0 times2387 behaves like does not send alert notification emails2388 is expected not to receive new(*(any args)) 0 times2389 without project specific cluster2390 behaves like alerts service responds with an error and takes no actions2391 is expected to eq :unauthorized2392 behaves like does not create an alert management alert2393 is expected not to change `AlertManagement::Alert.count`2394 behaves like does not create a system note for alert2395 is expected not to change `Note.count`2396 behaves like does not process incident issues2397 is expected not to receive perform_async(*(any args)) 0 times2398 behaves like does not send alert notification emails2399 is expected not to receive new(*(any args)) 0 times2400 with manual prometheus installation2401 alerting_setting: true, configured_token: "token", token_input: "token", result: :success2402 behaves like processes one firing and one resolved prometheus alerts2403 creates alerts and returns them in the payload2404 behaves like processes incident issues2405 is expected to be success2406 behaves like sends alert notification emails2407 is expected to receive prometheus_alerts_fired(*(any args)) 1 time2408 alerting_setting: true, configured_token: "token", token_input: "x", result: :failure2409 behaves like alerts service responds with an error and takes no actions2410 is expected to eq :unauthorized2411 behaves like does not create an alert management alert2412 is expected not to change `AlertManagement::Alert.count`2413 behaves like does not create a system note for alert2414 is expected not to change `Note.count`2415 behaves like does not process incident issues2416 is expected not to receive perform_async(*(any args)) 0 times2417 behaves like does not send alert notification emails2418 is expected not to receive new(*(any args)) 0 times2419 alerting_setting: true, configured_token: "token", token_input: nil, result: :failure2420 behaves like alerts service responds with an error and takes no actions2421 is expected to eq :unauthorized2422 behaves like does not create an alert management alert2423 is expected not to change `AlertManagement::Alert.count`2424 behaves like does not create a system note for alert2425 is expected not to change `Note.count`2426 behaves like does not process incident issues2427 is expected not to receive perform_async(*(any args)) 0 times2428 behaves like does not send alert notification emails2429 is expected not to receive new(*(any args)) 0 times2430 alerting_setting: false, configured_token: nil, token_input: nil, result: :success2431 behaves like processes one firing and one resolved prometheus alerts2432 creates alerts and returns them in the payload2433 behaves like processes incident issues2434 is expected to be success2435 behaves like sends alert notification emails2436 is expected to receive prometheus_alerts_fired(*(any args)) 1 time2437 alerting_setting: false, configured_token: nil, token_input: "token", result: :failure2438 behaves like alerts service responds with an error and takes no actions2439 is expected to eq :unauthorized2440 behaves like does not create an alert management alert2441 is expected not to change `AlertManagement::Alert.count`2442 behaves like does not create a system note for alert2443 is expected not to change `Note.count`2444 behaves like does not process incident issues2445 is expected not to receive perform_async(*(any args)) 0 times2446 behaves like does not send alert notification emails2447 is expected not to receive new(*(any args)) 0 times2448 with HTTP integration2449 active: :active, token: :valid, result: :success2450 behaves like processes one firing and one resolved prometheus alerts2451 creates alerts and returns them in the payload2452 behaves like processes incident issues2453 is expected to be success2454 behaves like sends alert notification emails2455 is expected to receive prometheus_alerts_fired(*(any args)) 1 time2456 active: :active, token: :invalid, result: :failure2457 behaves like alerts service responds with an error and takes no actions2458 is expected to eq :unauthorized2459 behaves like does not create an alert management alert2460 is expected not to change `AlertManagement::Alert.count`2461 behaves like does not create a system note for alert2462 is expected not to change `Note.count`2463 behaves like does not process incident issues2464 is expected not to receive perform_async(*(any args)) 0 times2465 behaves like does not send alert notification emails2466 is expected not to receive new(*(any args)) 0 times2467 active: :active, token: nil, result: :failure2468 behaves like alerts service responds with an error and takes no actions2469 is expected to eq :unauthorized2470 behaves like does not create an alert management alert2471 is expected not to change `AlertManagement::Alert.count`2472 behaves like does not create a system note for alert2473 is expected not to change `Note.count`2474 behaves like does not process incident issues2475 is expected not to receive perform_async(*(any args)) 0 times2476 behaves like does not send alert notification emails2477 is expected not to receive new(*(any args)) 0 times2478 active: :inactive, token: :valid, result: :failure2479 behaves like alerts service responds with an error and takes no actions2480 is expected to eq :unauthorized2481 behaves like does not create an alert management alert2482 is expected not to change `AlertManagement::Alert.count`2483 behaves like does not create a system note for alert2484 is expected not to change `Note.count`2485 behaves like does not process incident issues2486 is expected not to receive perform_async(*(any args)) 0 times2487 behaves like does not send alert notification emails2488 is expected not to receive new(*(any args)) 0 times2489 active: nil, token: nil, result: :failure2490 behaves like alerts service responds with an error and takes no actions2491 is expected to eq :unauthorized2492 behaves like does not create an alert management alert2493 is expected not to change `AlertManagement::Alert.count`2494 behaves like does not create a system note for alert2495 is expected not to change `Note.count`2496 behaves like does not process incident issues2497 is expected not to receive perform_async(*(any args)) 0 times2498 behaves like does not send alert notification emails2499 is expected not to receive new(*(any args)) 0 times2500 incident settings2501 behaves like processes one firing and one resolved prometheus alerts2502 creates alerts and returns them in the payload2503 behaves like processes incident issues2504 is expected to be success2505 behaves like sends alert notification emails2506 is expected to receive prometheus_alerts_fired(*(any args)) 1 time2507 when incident_management_setting does not exist2508 is expected to be success2509 is expected not to receive new(*(any args)) 0 times2510 is expected not to receive perform_async(*(any args)) 0 times2511 incident_management_setting.send_email is false2512 is expected to be success2513 is expected not to receive new(*(any args)) 0 times2514 incident_management_setting.create_issue is false2515 is expected to be success2516 is expected not to receive perform_async(*(any args)) 0 times2517 process Alert Management alerts2518 with multiple firing alerts and resolving alerts2519 processes Prometheus alerts2520 when payload exceeds max amount of processable alerts2521 with feature flag globally enabled2522 returns 200 but skips processing and logs a warning2523 with feature flag enabled on project2524 returns 200 but skips processing and logs a warning2525 with feature flag enabled on unrelated project2526 returns 200 and process alerts without warnings2527 with feature flag disabled2528 returns 200 and process alerts without warnings2529 with invalid payload2530 when payload is not processable2531 behaves like alerts service responds with an error and takes no actions2532 is expected to eq :unprocessable_entity2533 behaves like does not create an alert management alert2534 is expected not to change `AlertManagement::Alert.count`2535 behaves like does not create a system note for alert2536 is expected not to change `Note.count`2537 behaves like does not process incident issues2538 is expected not to receive perform_async(*(any args)) 0 times2539 behaves like does not send alert notification emails2540 is expected not to receive new(*(any args)) 0 times2541 when the payload is too big2542 behaves like alerts service responds with an error and takes no actions2543 is expected to eq :bad_request2544 behaves like does not create an alert management alert2545 is expected not to change `AlertManagement::Alert.count`2546 behaves like does not create a system note for alert2547 is expected not to change `Note.count`2548 behaves like does not process incident issues2549 is expected not to receive perform_async(*(any args)) 0 times2550 behaves like does not send alert notification emails2551 is expected not to receive new(*(any args)) 0 times2552 .processable?2553 with valid payload2554 is expected to eq true2555 containing unrelated keys2556 is expected to eq true2557 with invalid payload2558 missing_key: "version"2559 is expected to eq false2560 missing_key: "groupKey"2561 is expected to eq false2562 missing_key: "status"2563 is expected to eq false2564 missing_key: "receiver"2565 is expected to eq false2566 missing_key: "groupLabels"2567 is expected to eq false2568 missing_key: "commonLabels"2569 is expected to eq false2570 missing_key: "commonAnnotations"2571 is expected to eq false2572 missing_key: "externalURL"2573 is expected to eq false2574 missing_key: "alerts"2575 is expected to eq false2576 with unsupported version2577 is expected to eq false2578Ci::BuildPolicy2579 #rules2580 when user does not have access to the project2581 when public builds are enabled2582 does not include ability to read build2583 when public builds are disabled2584 does not include ability to read build2585 when anonymous user has access to the project2586 when public builds are enabled2587 includes ability to read build2588 when public builds are disabled2589 does not include ability to read build2590 when team member has access to the project2591 team member is a guest2592 when public builds are enabled2593 includes ability to read build2594 when public builds are disabled2595 does not include ability to read build2596 team member is a reporter2597 when public builds are enabled2598 includes ability to read build2599 when public builds are disabled2600 does not include ability to read build2601 when maintainer is allowed to push to pipeline branch2602 enables update_build if user is maintainer2603 rules for protected ref2604 when no one can push or merge to the branch2605 does not include ability to update build2606 when developers can push to the branch2607 includes ability to update build2608 when no one can create the tag2609 does not include ability to update build2610 when no one can create the tag but it is not a tag2611 includes ability to update build2612 rules for erase build2613 when a developer erases a build2614 when developers can push to the branch2615 when the build was created by the developer2616 when the build was created for a protected ref2617 is expected to be disallowed :erase_build2618 when the build was created for an unprotected ref2619 is expected to be allowed :erase_build2620 when the build was created by the other2621 is expected to be disallowed :erase_build2622 when no one can push or merge to the branch2623 is expected to be disallowed :erase_build2624 when a maintainer erases a build2625 when maintainers can push to the branch2626 when the build was created by the maintainer2627 is expected to be allowed :erase_build2628 when the build was created by the other2629 is expected to be allowed :erase_build2630 when no one can push or merge to the branch2631 is expected to be disallowed :erase_build2632 when an admin erases a build2633 when the build was created for a protected branch2634 is expected to be allowed :erase_build2635 when the build was created for a protected tag2636 is expected to be allowed :erase_build2637 when the build was created for an unprotected ref2638 is expected to be allowed :erase_build2639 manage a web ide terminal2640 when create_web_ide_terminal access enabled2641 with admin2642 when admin mode enabled2643 is expected to be allowed :create_build_service_proxy2644 when admin mode disabled2645 is expected not to be allowed :create_build_service_proxy2646 when build is not from a webide pipeline2647 is expected not to be allowed :create_build_service_proxy2648 when build has no runner terminal2649 when admin mode enabled2650 is expected to be allowed :update_web_ide_terminal2651 is expected not to be allowed :create_build_service_proxy2652 when admin mode disabled2653 is expected not to be allowed :update_web_ide_terminal2654 is expected not to be allowed :create_build_service_proxy2655 feature flag "build_service_proxy" is disabled2656 is expected not to be allowed :create_build_service_proxy2657 with owner2658 behaves like allowed build owner access2659 is expected not to be allowed :create_build_service_proxy2660 when user is the owner of the job2661 is expected to be allowed :create_build_service_proxy2662 with maintainer2663 behaves like allowed build owner access2664 is expected not to be allowed :create_build_service_proxy2665 when user is the owner of the job2666 is expected to be allowed :create_build_service_proxy2667 with developer2668 behaves like forbidden access2669 is expected not to be allowed :create_build_service_proxy2670 when user is the owner of the job2671 is expected not to be allowed :create_build_service_proxy2672 with reporter2673 behaves like forbidden access2674 is expected not to be allowed :create_build_service_proxy2675 when user is the owner of the job2676 is expected not to be allowed :create_build_service_proxy2677 with guest2678 behaves like forbidden access2679 is expected not to be allowed :create_build_service_proxy2680 when user is the owner of the job2681 is expected not to be allowed :create_build_service_proxy2682 with non member2683 behaves like forbidden access2684 is expected not to be allowed :create_build_service_proxy2685 when user is the owner of the job2686 is expected not to be allowed :create_build_service_proxy2687 ability :create_build_terminal2688 when user can update_build2689 when job has terminal2690 when current user is the job owner2691 is expected to be allowed :create_build_terminal2692 when current user is not the job owner2693 is expected not to be allowed :create_build_terminal2694 when job does not have terminal2695 is expected not to be allowed :create_build_terminal2696 when user cannot update build2697 is expected not to be allowed :create_build_terminal2698Resolvers::IssuesResolver2699 is expected to have nullable GraphQL type IssueConnection2700 increases field complexity based on arguments2701 with a project2702 #resolve2703 finds all issues2704 filters by state2705 filters by milestone2706 filters by two assignees2707 filters by assignee_id2708 filters by any assignee2709 filters by no assignee2710 filters by author2711 filters by labels2712 returns issues user can see2713 finds a specific issue with iid2714 batches queries that only include IIDs2715 finds a specific issue with iids2716 finds multiple issues with iids2717 finds only the issues within the project we are looking at2718 filtering by milestone wildcard id2719 returns issues with started milestone2720 returns issues with upcoming milestone2721 returns issues with any milestone2722 returns issues with no milestone2723 generates a mutually exclusive filter error when wildcard and title are provided2724 negated filtering2725 returns issues matching the searched title after applying a negated filter2726 returns issues excluding the ones with started milestone2727 returns issues excluding the ones with upcoming milestone2728 generates a mutually exclusive filter error when wildcard and title are provided as negated filters2729 filter by release2730 filter by release_tag2731 returns all issues associated with the specified tags2732 when release_tag_wildcard_id is also provided2733 generates a mutually eclusive argument error2734 filter by negated release_tag2735 returns all issues not associated with the specified tags2736 filter by release_tag_wildcard_id2737 when filtering by ANY2738 is expected to contain exactly #<Issue id:41 group78/project532#3>, #<Issue id:42 group78/project532#4>, and #<Issue id:43 group78/project532#5>2739 when filtering by NONE2740 is expected to contain exactly #<Issue id:30 group78/project532#1> and #<Issue id:31 group78/project532#2>2741 filters by assignee_username2742 filters by assignee_username2743 filters by assignee_usernames2744 when both assignee_username and assignee_usernames are provided2745 generates a mutually exclusive filter error2746 filters by created_at2747 filters by created_before2748 filters by created_after2749 filters by updated_at2750 filters by updated_before2751 filters by updated_after2752 filters by closed_at2753 filters by closed_before2754 filters by closed_after2755 filters by issue_type2756 filters by a single type2757 filters by a single type, negative assertion2758 filters by more than one type2759 ignores the filter if none given2760 filtering by reaction emoji2761 filters by reaction emoji2762 filters by reaction emoji wildcard "none"2763 filters by reaction emoji wildcard "any"2764 filters by negated reaction emoji2765 confidential issues2766 when user is allowed to view confidential issues2767 returns all viewable issues by default2768 returns only the non-confidential issues for the project when filter is set to false2769 returns only the confidential issues for the project when filter is set to true2770 when user is not allowed to see confidential issues2771 returns all viewable issues by default2772 does not return the confidential issues when filter is set to false2773 does not return the confidential issues when filter is set to true2774 when searching issues2775 returns correct issues2776 uses project search optimization2777 with anonymous user2778 with disable_anonymous_search enabled2779 generates an error2780 with disable_anonymous_search disabled2781 returns correct issues2782 filters by negated params2783 returns issues without the specified iids2784 returns issues without the specified label names2785 returns issues without the specified milestone2786 returns issues without the specified assignee_usernames2787 returns issues without the specified assignee_id2788 returns issues without the specified issue_type2789 when filtering by negated author2790 returns issues without the specified author_username2791 filtering by crm2792 contact2793 returns only the issues for the contact2794 organization2795 returns only the issues for the contact2796 sorting2797 when sorting by created2798 sorts issues ascending2799 sorts issues descending2800 when sorting by closed at2801 sorts issues ascending2802 sorts issues descending2803 when sorting by due date2804 sorts issues ascending2805 sorts issues descending2806 when sorting by relative position2807 sorts issues ascending2808 when sorting by priority2809 sorts issues ascending2810 sorts issues descending2811 when sorting by label priority2812 sorts issues ascending2813 sorts issues descending2814 when sorting by milestone due date2815 sorts issues ascending2816 sorts issues descending2817 when sorting by severity2818 sorts issues ascending2819 sorts issues descending2820 when sorting by popularity2821 sorts issues ascending (ties broken by id in desc order)2822 sorts issues descending (ties broken by id in desc order)2823 when sorting by escalation status2824 sorts issues ascending2825 sorts issues descending2826 sorts issues created_at2827 when sorting with non-stable cursors2828 uses offset-pagination when sorting by priority_asc2829 uses offset-pagination when sorting by priority_desc2830 uses offset-pagination when sorting by popularity_asc2831 uses offset-pagination when sorting by popularity_desc2832 uses offset-pagination when sorting by label_priority_asc2833 uses offset-pagination when sorting by label_priority_desc2834 uses offset-pagination when sorting by milestone_due_asc2835 uses offset-pagination when sorting by milestone_due_desc2836 uses offset-pagination when sorting by escalation_status_asc2837 uses offset-pagination when sorting by escalation_status_desc2838 when sorting by title2839 sorts issues ascending2840 sorts issues descending2841 when passing a non existent, batch loaded project2842 returns nil without breaking2843SearchHelper2844 search_autocomplete_opts2845 with no current user2846 returns nil2847 with a standard user2848 includes Help sections2849 includes default sections2850 does not include admin sections2851 does not allow regular expression in search term2852 includes the user's groups2853 includes nested group2854 includes the user's projects2855 includes the required project attrs2856 includes the required group attrs2857 includes the users recently viewed issues2858 includes the users recently viewed issues with the exact same name2859 includes the users recently viewed merge requests2860 does not include the public group2861 with a current project2862 returns repository related labels based on users abilities2863 when user does not have access to project2864 does not include issues by iid2865 when user has project access2866 includes issues by iid2867 with an admin user2868 includes admin sections2869 search_entries_info2870 raises an error for unrecognized scopes2871 scope: "blobs", label: "code result"2872 uses the correct singular label2873 uses the correct plural label2874 scope: "commits", label: "commit"2875 uses the correct singular label2876 uses the correct plural label2877 scope: "issues", label: "issue"2878 uses the correct singular label2879 uses the correct plural label2880 scope: "merge_requests", label: "merge request"2881 uses the correct singular label2882 uses the correct plural label2883 scope: "milestones", label: "milestone"2884 uses the correct singular label2885 uses the correct plural label2886 scope: "notes", label: "comment"2887 uses the correct singular label2888 uses the correct plural label2889 scope: "projects", label: "project"2890 uses the correct singular label2891 uses the correct plural label2892 scope: "snippet_titles", label: "snippet"2893 uses the correct singular label2894 uses the correct plural label2895 scope: "users", label: "user"2896 uses the correct singular label2897 uses the correct plural label2898 scope: "wiki_blobs", label: "wiki result"2899 uses the correct singular label2900 uses the correct plural label2901 search_entries_empty_message2902 global search2903 returns the formatted entry message2904 group search2905 returns the formatted entry message2906 project search2907 returns the formatted entry message2908 search_filter_input_options2909 project2910 includes id with type2911 includes project-id2912 includes project endpoints2913 includes autocomplete=off flag2914 group2915 does not includes project-id2916 includes group endpoints2917 dashboard2918 does not include group-id and project-id2919 includes dashboard endpoints2920 search_history_storage_prefix2921 project2922 returns project full_path2923 group2924 returns group full_path2925 dashboard2926 returns dashboard2927 search_md_sanitize2928 does not do extra sql queries for partial markdown rendering2929 search_filter_link2930 renders a search filter link for the current scope2931 renders a search filter link for another scope2932 merges in the current search params and given params2933 restricts the params2934 assigns given data attributes on the list container2935 #show_user_search_tab?2936 when project search2937 delegates to project_search_tabs?2938 when group search2939 when current_user can read_users_list2940 is expected to eq true2941 when current_user cannot read_users_list2942 is expected to eq false2943 when global search2944 when current_user can read_users_list2945 is expected to eq true2946 when global_search_user_tab feature flag is disabled2947 is expected to eq false2948 when current_user cannot read_users_list2949 is expected to eq false2950 #repository_ref2951 project_id: 123, ref: "ref-param", expected_ref: "ref-param"2952 returns expected_ref2953 project_id: 123, ref: nil, expected_ref: default_branch2954 returns expected_ref2955 project_id: 123, ref: 111111, expected_ref: "111111"2956 returns expected_ref2957 project_id: nil, ref: "ref-param", expected_ref: default_branch2958 returns expected_ref2959 #highlight_and_truncate_issuable2960 when description is not present2961 does nothing2962 when description present2963 description: "test", expected: "<span class=\"gl-text-gray-900 gl-font-weight-bold\">test</span>"2964 sanitizes, truncates, and highlights the search term2965 description: "<span style=\"color: blue;\">this test should not be blue</span>", expected: "this <span class=\"gl-text-gray-900 gl-font-weight-bold\">test</span> should not be blue"2966 sanitizes, truncates, and highlights the search term2967 description: "<a href=\"#\" onclick=\"alert('XSS')\">Click Me test</a>", expected: "<a href=\"#\">Click Me <span class=\"gl-text-gray-900 gl-font-weight-bold\">test</span></a>"2968 sanitizes, truncates, and highlights the search term2969 description: "<script type=\"text/javascript\">alert('Another XSS');</script> test", expected: " <span class=\"gl-text-gray-900 gl-font-weight-bold\">test</span>"2970 sanitizes, truncates, and highlights the search term2971 description: "Lorem test ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec.", expected: "Lorem <span class=\"gl-text-gray-900 gl-font-weight-bold\">test</span> ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Don..."2972 sanitizes, truncates, and highlights the search term2973 description: "<img src=\"https://random.foo.com/test.png\" width=\"128\" height=\"128\" />some image", expected: "some image"2974 sanitizes, truncates, and highlights the search term2975 #search_service2976 confidential: "0", expected: false2977 transforms confidentiality param2978 confidential: "1", expected: true2979 transforms confidentiality param2980 confidential: "yes", expected: true2981 transforms confidentiality param2982 confidential: "no", expected: false2983 transforms confidentiality param2984 confidential: true, expected: true2985 transforms confidentiality param2986 confidential: false, expected: false2987 transforms confidentiality param2988 #issuable_state_to_badge_class2989 with merge request2990 returns correct badge based on status2991 with an issue2992 returns correct badge based on status2993 #issuable_state_text2994 with merge request2995 returns correct badge based on status2996 with an issue2997 returns correct badge based on status2998 #search_sort_options2999 returns the correct data3000 #header_search_context3001 group data3002 when for_group? is true3003 adds the :group and :group_metadata correctly to hash3004 adds scope and code_search? correctly to hash3005 when for_group? is false3006 does not add the :group and :group_metadata to hash3007 does not add scope and code_search? to hash3008 project data3009 when for_project? is true3010 adds the :project and :project_metadata correctly to hash3011 adds scope and code_search? correctly to hash3012 when for_project? is false3013 does not add the :project and :project_metadata to hash3014 does not add scope and code_search? to hash3015 ref data3016 when user can? download project data3017 adds the :ref correctly to hash3018 when user cannot download project data3019 does not add the :ref to hash3020 snippets3021 when for_snippets? is true3022 adds :for_snippets correctly to hash3023 when for_snippets? is false3024 adds :for_snippets correctly to hash3025Integrations::UnifyCircuit3026 behaves like chat integration3027 Associations3028 is expected to belong to project required: false3029 is expected to have one service_hook3030 Validations3031 when integration is active3032 is expected to validate that :webhook cannot be empty/falsy3033 behaves like issue tracker integration URL attribute3034 is expected to allow :webhook to be ‹"https://example.com"›3035 is expected not to allow :webhook to be ‹"example.com"›3036 is expected not to allow :webhook to be ‹"ftp://example.com"›3037 is expected not to allow :webhook to be ‹"herp-and-derp"›3038 when integration is inactive3039 is expected not to validate that :webhook cannot be empty/falsy3040 .supported_events3041 does not support deployment_events3042 #execute3043 with push events3044 behaves like triggered Unify Circuit integration3045 calls Unify Circuit API3046 with default branch3047 when only default branch are to be notified3048 behaves like triggered Unify Circuit integration3049 calls Unify Circuit API3050 when only protected branches are to be notified3051 behaves like untriggered Unify Circuit integration3052 does not call Unify Circuit API3053 when default and protected branches are to be notified3054 behaves like triggered Unify Circuit integration3055 calls Unify Circuit API3056 when all branches are to be notified3057 behaves like triggered Unify Circuit integration3058 calls Unify Circuit API3059 with protected branch3060 when only default branch are to be notified3061 behaves like untriggered Unify Circuit integration3062 does not call Unify Circuit API3063 when only protected branches are to be notified3064 behaves like triggered Unify Circuit integration3065 calls Unify Circuit API3066 when default and protected branches are to be notified3067 behaves like triggered Unify Circuit integration3068 calls Unify Circuit API3069 when all branches are to be notified3070 behaves like triggered Unify Circuit integration3071 calls Unify Circuit API3072 with neither default nor protected branch3073 when only default branch are to be notified3074 behaves like untriggered Unify Circuit integration3075 does not call Unify Circuit API3076 when only protected branches are to be notified3077 behaves like untriggered Unify Circuit integration3078 does not call Unify Circuit API3079 when default and protected branches are to be notified3080 behaves like untriggered Unify Circuit integration3081 does not call Unify Circuit API3082 when all branches are to be notified3083 behaves like triggered Unify Circuit integration3084 calls Unify Circuit API3085 with issue events3086 behaves like triggered Unify Circuit integration3087 calls Unify Circuit API3088 with merge events3089 behaves like triggered Unify Circuit integration3090 calls Unify Circuit API3091 with wiki page events3092 behaves like triggered Unify Circuit integration3093 calls Unify Circuit API3094 with note events3095 with commit comment3096 behaves like triggered Unify Circuit integration3097 calls Unify Circuit API3098 with merge request comment3099 behaves like triggered Unify Circuit integration3100 calls Unify Circuit API3101 with issue comment3102 behaves like triggered Unify Circuit integration3103 calls Unify Circuit API3104 with snippet comment3105 behaves like triggered Unify Circuit integration3106 calls Unify Circuit API3107 with pipeline events3108 with failed pipeline3109 behaves like triggered Unify Circuit integration3110 calls Unify Circuit API3111 with succeeded pipeline3112 with default notify_only_broken_pipelines3113 does not call Unify Circuit API3114 when notify_only_broken_pipelines is false3115 behaves like triggered Unify Circuit integration3116 calls Unify Circuit API3117 with default branch3118 when only default branch are to be notified3119 behaves like triggered Unify Circuit integration3120 calls Unify Circuit API3121 when only protected branches are to be notified3122 behaves like untriggered Unify Circuit integration3123 does not call Unify Circuit API3124 when default and protected branches are to be notified3125 behaves like triggered Unify Circuit integration3126 calls Unify Circuit API3127 when all branches are to be notified3128 behaves like triggered Unify Circuit integration3129 calls Unify Circuit API3130 with protected branch3131 when only default branch are to be notified3132 behaves like untriggered Unify Circuit integration3133 does not call Unify Circuit API3134 when only protected branches are to be notified3135 behaves like triggered Unify Circuit integration3136 calls Unify Circuit API3137 when default and protected branches are to be notified3138 behaves like triggered Unify Circuit integration3139 calls Unify Circuit API3140 when all branches are to be notified3141 behaves like triggered Unify Circuit integration3142 calls Unify Circuit API3143 with neither default nor protected branch3144 when only default branch are to be notified3145 behaves like untriggered Unify Circuit integration3146 does not call Unify Circuit API3147 when only protected branches are to be notified3148 behaves like untriggered Unify Circuit integration3149 does not call Unify Circuit API3150 when default and protected branches are to be notified3151 behaves like untriggered Unify Circuit integration3152 does not call Unify Circuit API3153 when all branches are to be notified3154 behaves like triggered Unify Circuit integration3155 calls Unify Circuit API3156 deployment events3157 behaves like untriggered Unify Circuit integration3158 does not call Unify Circuit API3159EmailsOnPushWorker3160 #perform3161 when push is a new branch3162 sends a mail with the correct subject3163 sends the mail to the correct recipient3164 when push is a deleted branch3165 sends a mail with the correct subject3166 sends the mail to the correct recipient3167 when push is a force push to delete commits3168 sends a mail with the correct subject3169 mentions force pushing in the body3170 sends the mail to the correct recipient3171 when there are no errors in sending3172 sends a mail with the correct subject3173 does not mention force pushing in the body3174 sends the mail to the correct recipient3175 when there is an SMTP error3176 gracefully handles an input SMTP error3177 when there are multiple recipients3178 with mixed-case recipient3179 retains the case3180 when the recipient addresses are a list of email addresses3181 sends the mail to each of the recipients3182 only generates the mail once3183 when SMIME signing is enabled3184 does not sign the email multiple times3185 when recipients are invalid3186 ignores them3187 when the recipient addresses contains angle brackets and are separated by spaces3188 accepts emails separated by whitespace3189 when the recipient addresses contain a mix of emails with and without angle brackets3190 accepts both kind of emails3191 when the recipient addresses contains angle brackets and are separated by newlines3192 accepts emails separated by newlines3193 when the recipient addresses contains duplicates3194 deduplicates recipients while treating the domain part as case-insensitive3195Integrations::HangoutsChat3196 behaves like chat integration3197 Associations3198 is expected to belong to project required: false3199 is expected to have one service_hook3200 Validations3201 when integration is active3202 is expected to validate that :webhook cannot be empty/falsy3203 behaves like issue tracker integration URL attribute3204 is expected to allow :webhook to be ‹"https://example.com"›3205 is expected not to allow :webhook to be ‹"example.com"›3206 is expected not to allow :webhook to be ‹"ftp://example.com"›3207 is expected not to allow :webhook to be ‹"herp-and-derp"›3208 when integration is inactive3209 is expected not to validate that :webhook cannot be empty/falsy3210 .supported_events3211 does not support deployment_events3212 #execute3213 with push events3214 behaves like triggered Hangouts Chat integration3215 calls Hangouts Chat API3216 with default branch3217 when only default branch are to be notified3218 behaves like triggered Hangouts Chat integration3219 calls Hangouts Chat API3220 when only protected branches are to be notified3221 behaves like untriggered Hangouts Chat integration3222 does not call Hangouts Chat API3223 when default and protected branches are to be notified3224 behaves like triggered Hangouts Chat integration3225 calls Hangouts Chat API3226 when all branches are to be notified3227 behaves like triggered Hangouts Chat integration3228 calls Hangouts Chat API3229 with protected branch3230 when only default branch are to be notified3231 behaves like untriggered Hangouts Chat integration3232 does not call Hangouts Chat API3233 when only protected branches are to be notified3234 behaves like triggered Hangouts Chat integration3235 calls Hangouts Chat API3236 when default and protected branches are to be notified3237 behaves like triggered Hangouts Chat integration3238 calls Hangouts Chat API3239 when all branches are to be notified3240 behaves like triggered Hangouts Chat integration3241 calls Hangouts Chat API3242 with neither default nor protected branch3243 when only default branch are to be notified3244 behaves like untriggered Hangouts Chat integration3245 does not call Hangouts Chat API3246 when only protected branches are to be notified3247 behaves like untriggered Hangouts Chat integration3248 does not call Hangouts Chat API3249 when default and protected branches are to be notified3250 behaves like untriggered Hangouts Chat integration3251 does not call Hangouts Chat API3252 when all branches are to be notified3253 behaves like triggered Hangouts Chat integration3254 calls Hangouts Chat API3255 with issue events3256 behaves like triggered Hangouts Chat integration3257 calls Hangouts Chat API3258 with merge events3259 behaves like triggered Hangouts Chat integration3260 calls Hangouts Chat API3261 with wiki page events3262 behaves like triggered Hangouts Chat integration3263 calls Hangouts Chat API3264 with note events3265 with commit comment3266 behaves like triggered Hangouts Chat integration3267 calls Hangouts Chat API3268 with merge request comment3269 behaves like triggered Hangouts Chat integration3270 calls Hangouts Chat API3271 with issue comment3272 behaves like triggered Hangouts Chat integration3273 calls Hangouts Chat API3274 with snippet comment3275 behaves like triggered Hangouts Chat integration3276 calls Hangouts Chat API3277 with pipeline events3278 with failed pipeline3279 behaves like triggered Hangouts Chat integration3280 calls Hangouts Chat API3281 with succeeded pipeline3282 with default notify_only_broken_pipelines3283 does not call Hangouts Chat API3284 when notify_only_broken_pipelines is false3285 behaves like triggered Hangouts Chat integration3286 calls Hangouts Chat API3287 with default branch3288 when only default branch are to be notified3289 behaves like triggered Hangouts Chat integration3290 calls Hangouts Chat API3291 when only protected branches are to be notified3292 behaves like untriggered Hangouts Chat integration3293 does not call Hangouts Chat API3294 when default and protected branches are to be notified3295 behaves like triggered Hangouts Chat integration3296 calls Hangouts Chat API3297 when all branches are to be notified3298 behaves like triggered Hangouts Chat integration3299 calls Hangouts Chat API3300 with protected branch3301 when only default branch are to be notified3302 behaves like untriggered Hangouts Chat integration3303 does not call Hangouts Chat API3304 when only protected branches are to be notified3305 behaves like triggered Hangouts Chat integration3306 calls Hangouts Chat API3307 when default and protected branches are to be notified3308 behaves like triggered Hangouts Chat integration3309 calls Hangouts Chat API3310 when all branches are to be notified3311 behaves like triggered Hangouts Chat integration3312 calls Hangouts Chat API3313 with neither default nor protected branch3314 when only default branch are to be notified3315 behaves like untriggered Hangouts Chat integration3316 does not call Hangouts Chat API3317 when only protected branches are to be notified3318 behaves like untriggered Hangouts Chat integration3319 does not call Hangouts Chat API3320 when default and protected branches are to be notified3321 behaves like untriggered Hangouts Chat integration3322 does not call Hangouts Chat API3323 when all branches are to be notified3324 behaves like triggered Hangouts Chat integration3325 calls Hangouts Chat API3326 deployment events3327 behaves like untriggered Hangouts Chat integration3328 does not call Hangouts Chat API3329Gitlab::UsageDataCounters::HLLRedisCounter3330 migration to instrumentation classes data collection3331 Gitlab::UsageDataCounters::HLLRedisCounter::CATEGORIES_COLLECTED_FROM_METRICS_DEFINITIONS3332 includes only fully migrated categories3333 with not instrumented category3334 can detect not migrated category3335 .unique_events_data3336 with use_redis_hll_instrumentation_classes feature enabled3337 does not include instrumented categories3338 with use_redis_hll_instrumentation_classes feature disabled3339 includes instrumented categories3340 .categories3341 gets all unique category names3342 known_events3343 .events_for_category3344 gets the event names for given category3345 .track_event3346 with redis_hll_tracking3347 tracks the event when feature enabled3348 does not track the event with feature flag disabled3349 with event feature flag set3350 tracks the event when feature enabled3351 does not track the event with feature flag disabled3352 with no event feature flag set3353 tracks the event3354 when usage_ping is disabled3355 does not track the event3356 when usage_ping is enabled3357 tracks event when using symbol3358 tracks events with multiple values3359 raise error if metrics don't have same aggregation3360 raise error if metrics of unknown event3361 reports an error if Feature.enabled raise an error3362 for weekly events3363 sets the keys in Redis to expire automatically after the given expiry time3364 sets the keys in Redis to expire automatically after 6 weeks by default3365 for daily events3366 sets the keys in Redis to expire after the given expiry time3367 sets the keys in Redis to expire after 29 days by default3368 .track_event_in_context3369 with valid contex3370 increments context event counter3371 tracks events with multiple values3372 with empty context3373 does not increment a counter3374 when sending invalid context3375 does not increment a counter3376 .unique_events3377 returns 0 if there are no keys for the given events3378 raise error if metrics are not in the same slot3379 raise error if metrics are not in the same category3380 raise error if metrics don't have same aggregation3381 when data for the last complete week3382 is expected to eq 13383 when data for the last 4 complete weeks3384 is expected to eq 23385 when data for the week 4 weeks ago3386 is expected to eq 13387 when using symbol as parameter3388 is expected to eq 13389 when using daily aggregation3390 is expected to eq 23391 is expected to eq 33392 is expected to eq 13393 when no slot is set3394 is expected to eq 13395 when data crosses into new year3396 does not raise error3397 .weekly_redis_keys3398 returns 1 key for last for week3399 returns 4 key for last for weeks3400 start_date: "2020-12-21", end_date: "2020-12-21", keys: []3401 returns the correct keys3402 start_date: "2020-12-21", end_date: "2020-12-20", keys: []3403 returns the correct keys3404 start_date: "2020-12-21", end_date: "2020-11-21", keys: []3405 returns the correct keys3406 start_date: "2021-01-01", end_date: "2020-12-28", keys: []3407 returns the correct keys3408 start_date: "2020-12-21", end_date: "2020-12-28", keys: ["g_{compliance}_dashboard-2020-52"]3409 returns the correct keys3410 start_date: "2020-12-21", end_date: "2021-01-01", keys: ["g_{compliance}_dashboard-2020-52"]3411 returns the correct keys3412 start_date: "2020-12-27", end_date: "2021-01-01", keys: ["g_{compliance}_dashboard-2020-52"]3413 returns the correct keys3414 start_date: "2020-12-26", end_date: "2021-01-04", keys: ["g_{compliance}_dashboard-2020-52", "g_{compliance}_dashboard-2020-53"]3415 returns the correct keys3416 start_date: "2020-12-26", end_date: "2021-01-11", keys: ["g_{compliance}_dashboard-2020-52", "g_{compliance}_dashboard-2020-53", "g_{compliance}_dashboard-2021-01"]3417 returns the correct keys3418 start_date: "2020-12-26", end_date: "2021-01-17", keys: ["g_{compliance}_dashboard-2020-52", "g_{compliance}_dashboard-2020-53", "g_{compliance}_dashboard-2021-01"]3419 returns the correct keys3420 start_date: "2020-12-26", end_date: "2021-01-18", keys: ["g_{compliance}_dashboard-2020-52", "g_{compliance}_dashboard-2020-53", "g_{compliance}_dashboard-2021-01", "g_{compliance}_dashboard-2021-02"]3421 returns the correct keys3422 context level tracking3423 with correct arguments3424 event_names: ["event_name_1"], context: "default", value: 23425 is expected to eq 23426 event_names: ["event_name_1"], context: "", value: 03427 is expected to eq 03428 event_names: ["event_name_2"], context: "", value: 03429 is expected to eq 03430 with invalid context3431 raise error3432 unique_events_data3433 returns the number of unique events for all known events3434 .calculate_events_union3435 calculates union of given events3436 validates and raise exception if events has mismatched slot or aggregation3437 returns 0 if there are no keys for given events3438 .weekly_time_range3439 return hash with weekly time range boundaries3440 .monthly_time_range3441 return hash with monthly time range boundaries3442Ci::BuildRunnerPresenter3443 #artifacts3444 when option contains archive-type artifacts3445 presents correct hash3446 when untracked is specified3447 presents correct hash3448 when untracked and paths are missing3449 does not present hash3450 when artifacts exclude is defined3451 includes the list of excluded paths3452 when artifacts exclude is not defined3453 does not include an empty list of excluded paths3454 with reports3455 archive3456 presents correct hash3457 metadata3458 presents correct hash3459 trace3460 presents correct hash3461 metrics_referee3462 presents correct hash3463 network_referee3464 presents correct hash3465 junit3466 presents correct hash3467 accessibility3468 presents correct hash3469 codequality3470 presents correct hash3471 sast3472 presents correct hash3473 secret_detection3474 presents correct hash3475 dependency_scanning3476 presents correct hash3477 container_scanning3478 presents correct hash3479 cluster_image_scanning3480 presents correct hash3481 dast3482 presents correct hash3483 license_scanning3484 presents correct hash3485 performance3486 presents correct hash3487 browser_performance3488 presents correct hash3489 load_performance3490 presents correct hash3491 metrics3492 presents correct hash3493 lsif3494 presents correct hash3495 dotenv3496 presents correct hash3497 cobertura3498 presents correct hash3499 terraform3500 presents correct hash3501 cluster_applications3502 presents correct hash3503 requirements3504 presents correct hash3505 coverage_fuzzing3506 presents correct hash3507 api_fuzzing3508 presents correct hash3509 when a specific coverage_report type is given3510 presents the coverage report hash with the coverage format3511 when a specific coverage_report type is given with another report type3512 presents both reports3513 when option has both archive and reports specification3514 presents correct hash3515 when archive specifies 'expire_in' keyword3516 inherits expire_in from archive3517 when option has no artifact keywords3518 does not present hash3519 #ref_type3520 returns the correct ref type3521 when tag is false3522 returns the correct ref type3523 #git_depth3524 defaults to git depth setting for the project3525 when GIT_DEPTH variable is specified3526 returns its value3527 #refspecs3528 returns the correct refspecs3529 when ref is tag3530 returns the correct refspecs3531 when GIT_DEPTH is zero3532 returns the correct refspecs3533 when pipeline is detached merge request pipeline3534 returns the correct refspecs3535 when GIT_DEPTH is zero3536 returns the correct refspecs3537 when pipeline is legacy detached merge request pipeline3538 returns the correct refspecs3539 when persistent pipeline ref exists3540 exposes the persistent pipeline ref3541 #runner_variables3542 behaves like returns an array with the expected variables3543 returns an array3544 returns the expected variables3545 #runner_variables subset3546 with references in pipeline variables3547 returns expanded and sorted variables3548MergeRequests::AfterCreateService3549 #execute3550 creates a merge request open event3551 calls the merge request activity counter3552 creates a new merge request notification3553 writes diffs to the cache3554 creates cross references3555 creates a pipeline and updates the HEAD pipeline3556 increments the usage data counter of create event3557 tracks merge request creation in usage data3558 calls MergeRequests::LinkLfsObjectsService#execute3559 behaves like records an onboarding progress action3560 is expected to receive execute({:action=>:merge_request_created}) 1 time3561 when merge request is in unchecked state3562 does not change its state3563 when merge request is in preparing state3564 checks for mergeability3565 when preparing for mergeability fails3566 does not mark the merge request as unchecked3567 when preparing merge request fails3568 still checks for mergeability3569 with a milestone3570 deletes the cache key for milestone merge request counter3571 todos3572 does not creates todos3573 when merge request is assigned to someone3574 creates a todo for new assignee3575 when reviewer is assigned3576 creates a todo for new reviewer3577 when saving references to issues that the created merge request closes3578 creates a `MergeRequestsClosingIssues` record for each issue3579Integrations::HasDataFields3580 when data are stored in data_fields3581 behaves like data fields3582 #arg3583 returns the expected values3584 {arg}_changed?3585 returns false when the property has not been assigned a new value3586 returns true when the property has been assigned a different value3587 returns true when the property has been assigned a different value twice3588 returns false when the property has been re-assigned the same value3589 {arg}_touched?3590 returns false when the property has not been assigned a new value3591 returns true when the property has been assigned a different value3592 returns true when the property has been assigned a different value twice3593 returns true when the property has been re-assigned the same value3594 returns false when the property has been re-assigned the same value3595 data_fields_present?3596 returns true from the issue tracker integration3597 {arg}_was?3598 returns nil3599 when integration and data_fields are not persisted3600 data_fields_present?3601 returns true3602 when data are stored in properties3603 behaves like data fields3604 #arg3605 returns the expected values3606 {arg}_changed?3607 returns false when the property has not been assigned a new value3608 returns true when the property has been assigned a different value3609 returns true when the property has been assigned a different value twice3610 returns false when the property has been re-assigned the same value3611 {arg}_touched?3612 returns false when the property has not been assigned a new value3613 returns true when the property has been assigned a different value3614 returns true when the property has been assigned a different value twice3615 returns true when the property has been re-assigned the same value3616 returns false when the property has been re-assigned the same value3617 data_fields_present?3618 returns true from the issue tracker integration3619 {arg}_was?3620 returns nil when the property has not been assigned a new value3621 returns initial value when the property has been assigned a different value3622 returns initial value when the property has been re-assigned the same value3623 when data are stored in both properties and data_fields3624 behaves like data fields3625 #arg3626 returns the expected values3627 {arg}_changed?3628 returns false when the property has not been assigned a new value3629 returns true when the property has been assigned a different value3630 returns true when the property has been assigned a different value twice3631 returns false when the property has been re-assigned the same value3632 {arg}_touched?3633 returns false when the property has not been assigned a new value3634 returns true when the property has been assigned a different value3635 returns true when the property has been assigned a different value twice3636 returns true when the property has been re-assigned the same value3637 returns false when the property has been re-assigned the same value3638 data_fields_present?3639 returns true from the issue tracker integration3640 {arg}_was?3641 returns nil3642ContainerRepositoriesFinder3643 #execute3644 with authorized user3645 when subject_type is group3646 is expected to contain exactly #<ContainerRepository id: 235, project_id: 753, name: "my_image", created_at: "2022-06-29 20:18:58.89...efault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil> and #<ContainerRepository id: 236, project_id: 754, name: "test_repository2", created_at: "2022-06-29 20:...efault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil>3647 behaves like with name search3648 with name set to my_image3649 is expected to contain exactly #<ContainerRepository id: 235, project_id: 753, name: "my_image", created_at: "2022-06-29 20:18:58.89...efault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil>3650 is expected not to include #<ContainerRepository id: 237, project_id: 753, name: "foo_bar_baz", created_at: "2022-06-29 20:18:59...efault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil>3651 with name set to my_imag3652 is expected to contain exactly #<ContainerRepository id: 235, project_id: 753, name: "my_image", created_at: "2022-06-29 20:18:58.89...efault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil>3653 is expected not to include #<ContainerRepository id: 237, project_id: 753, name: "foo_bar_baz", created_at: "2022-06-29 20:18:59...efault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil>3654 with name set to _image3655 is expected to contain exactly #<ContainerRepository id: 235, project_id: 753, name: "my_image", created_at: "2022-06-29 20:18:58.89...efault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil>3656 is expected not to include #<ContainerRepository id: 237, project_id: 753, name: "foo_bar_baz", created_at: "2022-06-29 20:18:59...efault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil>3657 with name set to _imag3658 is expected to contain exactly #<ContainerRepository id: 235, project_id: 753, name: "my_image", created_at: "2022-06-29 20:18:58.89...efault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil>3659 is expected not to include #<ContainerRepository id: 237, project_id: 753, name: "foo_bar_baz", created_at: "2022-06-29 20:18:59...efault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil>3660 behaves like with sorting3661 with sort set to created_desc3662 is expected to eq [#<ContainerRepository id: 239, project_id: 755, name: "foo", created_at: "2022-06-29 19:19:03.688936...fault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil>]3663 with sort set to updated_asc3664 is expected to eq [#<ContainerRepository id: 239, project_id: 755, name: "foo", created_at: "2022-06-29 19:19:03.688936...fault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil>]3665 with sort set to name_desc3666 is expected to eq [#<ContainerRepository id: 239, project_id: 755, name: "foo", created_at: "2022-06-29 19:19:03.688936...fault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil>]3667 with sort set to created_asc3668 is expected to eq [#<ContainerRepository id: 238, project_id: 755, name: "bar", created_at: "2022-06-28 20:19:03.678578...fault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil>]3669 with sort set to updated_desc3670 is expected to eq [#<ContainerRepository id: 238, project_id: 755, name: "bar", created_at: "2022-06-28 20:19:03.678578...fault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil>]3671 with sort set to name_asc3672 is expected to eq [#<ContainerRepository id: 238, project_id: 755, name: "bar", created_at: "2022-06-28 20:19:03.678578...fault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil>]3673 when project has container registry disabled3674 is expected to contain exactly #<ContainerRepository id: 240, project_id: 756, name: "test_repository2", created_at: "2022-06-29 20:...efault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil>3675 when subject_type is project3676 is expected to contain exactly #<ContainerRepository id: 235, project_id: 753, name: "my_image", created_at: "2022-06-29 20:18:58.89...efault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil>3677 behaves like with name search3678 with name set to my_image3679 is expected to contain exactly #<ContainerRepository id: 235, project_id: 753, name: "my_image", created_at: "2022-06-29 20:18:58.89...efault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil>3680 is expected not to include #<ContainerRepository id: 241, project_id: 753, name: "foo_bar_baz", created_at: "2022-06-29 20:19:07...efault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil>3681 with name set to my_imag3682 is expected to contain exactly #<ContainerRepository id: 235, project_id: 753, name: "my_image", created_at: "2022-06-29 20:18:58.89...efault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil>3683 is expected not to include #<ContainerRepository id: 241, project_id: 753, name: "foo_bar_baz", created_at: "2022-06-29 20:19:07...efault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil>3684 with name set to _image3685 is expected to contain exactly #<ContainerRepository id: 235, project_id: 753, name: "my_image", created_at: "2022-06-29 20:18:58.89...efault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil>3686 is expected not to include #<ContainerRepository id: 241, project_id: 753, name: "foo_bar_baz", created_at: "2022-06-29 20:19:07...efault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil>3687 with name set to _imag3688 is expected to contain exactly #<ContainerRepository id: 235, project_id: 753, name: "my_image", created_at: "2022-06-29 20:18:58.89...efault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil>3689 is expected not to include #<ContainerRepository id: 241, project_id: 753, name: "foo_bar_baz", created_at: "2022-06-29 20:19:07...efault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil>3690 behaves like with sorting3691 with sort set to created_desc3692 is expected to eq [#<ContainerRepository id: 243, project_id: 757, name: "foo", created_at: "2022-06-29 19:19:10.020795...fault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil>]3693 with sort set to updated_asc3694 is expected to eq [#<ContainerRepository id: 243, project_id: 757, name: "foo", created_at: "2022-06-29 19:19:10.020795...fault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil>]3695 with sort set to name_desc3696 is expected to eq [#<ContainerRepository id: 243, project_id: 757, name: "foo", created_at: "2022-06-29 19:19:10.020795...fault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil>]3697 with sort set to created_asc3698 is expected to eq [#<ContainerRepository id: 242, project_id: 757, name: "bar", created_at: "2022-06-28 20:19:10.015238...fault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil>]3699 with sort set to updated_desc3700 is expected to eq [#<ContainerRepository id: 242, project_id: 757, name: "bar", created_at: "2022-06-28 20:19:10.015238...fault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil>]3701 with sort set to name_asc3702 is expected to eq [#<ContainerRepository id: 242, project_id: 757, name: "bar", created_at: "2022-06-28 20:19:10.015238...fault", migration_aborted_in_state: nil, migration_plan: nil, last_cleanup_deleted_tags_count: nil>]3703 when project has container registry disabled3704 is expected to equal nil3705 with invalid subject_type3706 is expected to raise Exception with "invalid subject_type"3707 with unauthorized user3708 when subject_type is group3709 is expected to equal nil3710 when subject_type is project3711 is expected to equal nil3712Packages::Npm::PackageFinder3713 #execute3714 with a project3715 behaves like finding packages by name3716 is expected to eq [#<Packages::Package id: 1, project_id: 758, created_at: "2022-06-29 20:19:13.691108000 +0000", updat...amespace729/package-1", version: "1.0.1", package_type: "npm", creator_id: 1826, status: "default">]3717 with unknown package name3718 is expected to be empty3719 with an uninstallable package3720 is expected to be empty3721 behaves like handling last_of_each_version3722 disabled3723 is expected to contain exactly #<Packages::Package id: 2, project_id: 758, created_at: "2022-06-29 20:19:14.029959948 +0000", update...48 +0000", name: "test", version: "1.2.3", package_type: "npm", creator_id: 1826, status: "default"> and #<Packages::Package id: 3, project_id: 758, created_at: "2022-06-29 20:19:14.062811945 +0000", update...45 +0000", name: "test", version: "1.2.3", package_type: "npm", creator_id: 1826, status: "default">3724 enabled3725 is expected to contain exactly #<Packages::Package id: 3, project_id: 758, created_at: "2022-06-29 20:19:14.062811945 +0000", update...45 +0000", name: "test", version: "1.2.3", package_type: "npm", creator_id: 1826, status: "default">3726 set to nil3727 is expected to be empty3728 with a namespace3729 behaves like accepting a namespace for3730 that is a group3731 behaves like finding packages by name3732 is expected to eq [#<Packages::Package id: 1, project_id: 758, created_at: "2022-06-29 20:19:13.691108000 +0000", updat...amespace729/package-1", version: "1.0.1", package_type: "npm", creator_id: 1826, status: "default">]3733 with unknown package name3734 is expected to be empty3735 with an uninstallable package3736 is expected to be empty3737 within another group3738 behaves like finding packages by name3739 is expected to eq [#<Packages::Package id: 1, project_id: 758, created_at: "2022-06-29 20:19:13.691108000 +0000", updat...amespace729/package-1", version: "1.0.1", package_type: "npm", creator_id: 1826, status: "default">]3740 with unknown package name3741 is expected to be empty3742 with an uninstallable package3743 is expected to be empty3744 that is a user namespace3745 behaves like finding packages by name3746 is expected to eq [#<Packages::Package id: 1, project_id: 758, created_at: "2022-06-29 20:19:13.691108000 +0000", updat...amespace729/package-1", version: "1.0.1", package_type: "npm", creator_id: 1826, status: "default">]3747 with unknown package name3748 is expected to be empty3749 with an uninstallable package3750 is expected to be empty3751 behaves like accepting a namespace for3752 that is a group3753 behaves like handling last_of_each_version3754 disabled3755 is expected to contain exactly #<Packages::Package id: 4, project_id: 758, created_at: "2022-06-29 20:19:17.564951421 +0000", update...21 +0000", name: "test", version: "1.2.3", package_type: "npm", creator_id: 1826, status: "default"> and #<Packages::Package id: 5, project_id: 758, created_at: "2022-06-29 20:19:17.585921329 +0000", update...29 +0000", name: "test", version: "1.2.3", package_type: "npm", creator_id: 1826, status: "default">3756 enabled3757 is expected to contain exactly #<Packages::Package id: 5, project_id: 758, created_at: "2022-06-29 20:19:17.585921329 +0000", update...29 +0000", name: "test", version: "1.2.3", package_type: "npm", creator_id: 1826, status: "default">3758 within another group3759 behaves like handling last_of_each_version3760 disabled3761 is expected to contain exactly #<Packages::Package id: 6, project_id: 758, created_at: "2022-06-29 20:19:18.156077043 +0000", update...43 +0000", name: "test", version: "1.2.3", package_type: "npm", creator_id: 1826, status: "default"> and #<Packages::Package id: 7, project_id: 758, created_at: "2022-06-29 20:19:18.176758541 +0000", update...41 +0000", name: "test", version: "1.2.3", package_type: "npm", creator_id: 1826, status: "default">3762 enabled3763 is expected to contain exactly #<Packages::Package id: 7, project_id: 758, created_at: "2022-06-29 20:19:18.176758541 +0000", update...41 +0000", name: "test", version: "1.2.3", package_type: "npm", creator_id: 1826, status: "default">3764 that is a user namespace3765 behaves like handling last_of_each_version3766 disabled3767 is expected to contain exactly #<Packages::Package id: 8, project_id: 758, created_at: "2022-06-29 20:19:19.195138868 +0000", update...68 +0000", name: "test", version: "1.2.3", package_type: "npm", creator_id: 1826, status: "default"> and #<Packages::Package id: 9, project_id: 758, created_at: "2022-06-29 20:19:19.229039546 +0000", update...46 +0000", name: "test", version: "1.2.3", package_type: "npm", creator_id: 1826, status: "default">3768 enabled3769 is expected to contain exactly #<Packages::Package id: 9, project_id: 758, created_at: "2022-06-29 20:19:19.229039546 +0000", update...46 +0000", name: "test", version: "1.2.3", package_type: "npm", creator_id: 1826, status: "default">3770 set to nil3771 is expected to be empty3772 #find_by_version3773 with a project3774 behaves like finding packages by version3775 is expected to eq #<Packages::Package id: 1, project_id: 758, created_at: "2022-06-29 20:19:13.691108000 +0000", update...namespace729/package-1", version: "1.0.1", package_type: "npm", creator_id: 1826, status: "default">3776 with unknown version3777 is expected to be nil3778 behaves like handling last_of_each_version3779 enabled3780 is expected to eq #<Packages::Package id: 11, project_id: 758, created_at: "2022-06-29 20:19:20.177345429 +0000", updat...29 +0000", name: "test", version: "1.2.3", package_type: "npm", creator_id: 1826, status: "default">3781 with a namespace3782 behaves like accepting a namespace for3783 that is a group3784 behaves like finding packages by version3785 is expected to eq #<Packages::Package id: 1, project_id: 758, created_at: "2022-06-29 20:19:13.691108000 +0000", update...namespace729/package-1", version: "1.0.1", package_type: "npm", creator_id: 1826, status: "default">3786 with unknown version3787 is expected to be nil3788 within another group3789 behaves like finding packages by version3790 is expected to eq #<Packages::Package id: 1, project_id: 758, created_at: "2022-06-29 20:19:13.691108000 +0000", update...namespace729/package-1", version: "1.0.1", package_type: "npm", creator_id: 1826, status: "default">3791 with unknown version3792 is expected to be nil3793 that is a user namespace3794 behaves like finding packages by version3795 is expected to eq #<Packages::Package id: 1, project_id: 758, created_at: "2022-06-29 20:19:13.691108000 +0000", update...namespace729/package-1", version: "1.0.1", package_type: "npm", creator_id: 1826, status: "default">3796 with unknown version3797 is expected to be nil3798 behaves like accepting a namespace for3799 that is a group3800 behaves like handling last_of_each_version3801 enabled3802 is expected to eq #<Packages::Package id: 13, project_id: 758, created_at: "2022-06-29 20:19:23.480505580 +0000", updat...80 +0000", name: "test", version: "1.2.3", package_type: "npm", creator_id: 1826, status: "default">3803 within another group3804 behaves like handling last_of_each_version3805 enabled3806 is expected to eq #<Packages::Package id: 15, project_id: 758, created_at: "2022-06-29 20:19:23.957843801 +0000", updat...01 +0000", name: "test", version: "1.2.3", package_type: "npm", creator_id: 1826, status: "default">3807 that is a user namespace3808 behaves like handling last_of_each_version3809 enabled3810 is expected to eq #<Packages::Package id: 17, project_id: 758, created_at: "2022-06-29 20:19:24.632036357 +0000", updat...57 +0000", name: "test", version: "1.2.3", package_type: "npm", creator_id: 1826, status: "default">3811 #last3812 with a project3813 behaves like finding package by last3814 is expected to eq #<Packages::Package id: 1, project_id: 758, created_at: "2022-06-29 20:19:13.691108000 +0000", update...namespace729/package-1", version: "1.0.1", package_type: "npm", creator_id: 1826, status: "default">3815 behaves like handling last_of_each_version3816 disabled3817 is expected to eq #<Packages::Package id: 19, project_id: 758, created_at: "2022-06-29 20:19:24.981930788 +0000", updat...88 +0000", name: "test", version: "1.2.3", package_type: "npm", creator_id: 1826, status: "default">3818 enabled3819 is expected to eq #<Packages::Package id: 19, project_id: 758, created_at: "2022-06-29 20:19:24.981930788 +0000", updat...88 +0000", name: "test", version: "1.2.3", package_type: "npm", creator_id: 1826, status: "default">3820 with a namespace3821 behaves like accepting a namespace for3822 that is a group3823 behaves like finding package by last3824 is expected to eq #<Packages::Package id: 1, project_id: 758, created_at: "2022-06-29 20:19:13.691108000 +0000", update...namespace729/package-1", version: "1.0.1", package_type: "npm", creator_id: 1826, status: "default">3825 within another group3826 behaves like finding package by last3827 is expected to eq #<Packages::Package id: 1, project_id: 758, created_at: "2022-06-29 20:19:13.691108000 +0000", update...namespace729/package-1", version: "1.0.1", package_type: "npm", creator_id: 1826, status: "default">3828 that is a user namespace3829 behaves like finding package by last3830 is expected to eq #<Packages::Package id: 1, project_id: 758, created_at: "2022-06-29 20:19:13.691108000 +0000", update...namespace729/package-1", version: "1.0.1", package_type: "npm", creator_id: 1826, status: "default">3831 behaves like accepting a namespace for3832 that is a group3833 behaves like handling last_of_each_version3834 disabled3835 is expected to eq #<Packages::Package id: 21, project_id: 758, created_at: "2022-06-29 20:19:26.615422595 +0000", updat...95 +0000", name: "test", version: "1.2.3", package_type: "npm", creator_id: 1826, status: "default">3836 enabled3837 is expected to eq #<Packages::Package id: 21, project_id: 758, created_at: "2022-06-29 20:19:26.615422595 +0000", updat...95 +0000", name: "test", version: "1.2.3", package_type: "npm", creator_id: 1826, status: "default">3838 within another group3839 behaves like handling last_of_each_version3840 disabled3841 is expected to eq #<Packages::Package id: 23, project_id: 758, created_at: "2022-06-29 20:19:27.441744958 +0000", updat...58 +0000", name: "test", version: "1.2.3", package_type: "npm", creator_id: 1826, status: "default">3842 enabled3843 is expected to eq #<Packages::Package id: 23, project_id: 758, created_at: "2022-06-29 20:19:27.441744958 +0000", updat...58 +0000", name: "test", version: "1.2.3", package_type: "npm", creator_id: 1826, status: "default">3844 that is a user namespace3845 behaves like handling last_of_each_version3846 disabled3847 is expected to eq #<Packages::Package id: 25, project_id: 758, created_at: "2022-06-29 20:19:28.478690244 +0000", updat...44 +0000", name: "test", version: "1.2.3", package_type: "npm", creator_id: 1826, status: "default">3848 enabled3849 is expected to eq #<Packages::Package id: 25, project_id: 758, created_at: "2022-06-29 20:19:28.478690244 +0000", updat...44 +0000", name: "test", version: "1.2.3", package_type: "npm", creator_id: 1826, status: "default">3850 with duplicate packages3851 is expected to eq #<Packages::Package id: 26, project_id: 759, created_at: "2022-06-29 20:19:29.320790666 +0000", updat...namespace729/package-1", version: "1.0.2", package_type: "npm", creator_id: 1833, status: "default">3852Gitlab::Ci::Status::External::Factory3853 when external status has a simple core status3854 when core status is created3855 fabricates a core status created3856 extends core status with common methods3857 when core status is waiting_for_resource3858 fabricates a core status waiting_for_resource3859 extends core status with common methods3860 when core status is preparing3861 fabricates a core status preparing3862 extends core status with common methods3863 when core status is pending3864 fabricates a core status pending3865 extends core status with common methods3866 when core status is running3867 fabricates a core status running3868 extends core status with common methods3869 when core status is success3870 fabricates a core status success3871 extends core status with common methods3872 when core status is failed3873 fabricates a core status failed3874 extends core status with common methods3875 when core status is canceled3876 fabricates a core status canceled3877 extends core status with common methods3878 when core status is skipped3879 fabricates a core status skipped3880 extends core status with common methods3881 when core status is manual3882 fabricates a core status manual3883 extends core status with common methods3884 when core status is scheduled3885 fabricates a core status scheduled3886 extends core status with common methods3887SystemNotes::MergeRequestsService3888 .merge_when_pipeline_succeeds3889 posts the 'merge when pipeline succeeds' system note3890 behaves like a system note3891 has the correct attributes3892 .cancel_merge_when_pipeline_succeeds3893 posts the 'merge when pipeline succeeds' system note3894 behaves like a system note3895 has the correct attributes3896 .abort_merge_when_pipeline_succeeds3897 posts the 'merge when pipeline succeeds' system note3898 behaves like a system note3899 has the correct attributes3900 .handle_merge_request_draft3901 adding draft note3902 sets the note text3903 behaves like a system note3904 has the correct attributes3905 removing draft note3906 sets the note text3907 behaves like a system note3908 has the correct attributes3909 .add_merge_request_draft_from_commit3910 posts the 'marked this merge request as draft from commit' system note3911 behaves like a system note3912 has the correct attributes3913 .resolve_all_discussions3914 sets the note text3915 behaves like a system note3916 has the correct attributes3917 .diff_discussion_outdated3918 behaves like a system note3919 has the correct attributes3920 when the change_position is valid for the discussion3921 creates a new note in the discussion3922 links to the diff in the system note3923 discussion is on an image3924 links to the diff in the system note3925 when the change_position does not point to a valid version3926 creates a new note in the discussion3927 does not create a link3928 .change_branch3929 behaves like a system note3930 has the correct attributes3931 when target branch name changed3932 on update3933 sets the note text3934 on delete3935 sets the note text3936 for invalid event_type3937 raises exception3938 .change_branch_presence3939 behaves like a system note3940 has the correct attributes3941 when source branch deleted3942 sets the note text3943 .new_issue_branch3944 branch_project is set3945 behaves like a system note for new issue branch3946 behaves like a system note3947 has the correct attributes3948 when a branch is created from the new branch button3949 sets the note text3950 branch_project is not set3951 behaves like a system note for new issue branch3952 behaves like a system note3953 has the correct attributes3954 when a branch is created from the new branch button3955 sets the note text3956 .new_merge_request3957 sets the new merge request note text3958 behaves like a system note3959 has the correct attributes3960 .picked_into_branch3961 posts the 'picked merge request' system note3962 links the merge request and the cherry-pick commit3963 behaves like a system note3964 has the correct attributes3965 #approve_mr3966 behaves like a system note3967 has the correct attributes3968 when merge request approved3969 sets the note text3970Gitlab::FakeApplicationSettings3971 defines methods for default attributes3972 defines predicate methods for boolean properties3973 does not define a predicate method for non-boolean properties3974 returns nil for undefined attributes3975 does not override an existing predicate method3976 behaves like application settings examples3977 predicate method changes when value is updated3978 restricted signup domains3979 behaves like string of domains3980 sets single domain3981 sets multiple domains with spaces3982 sets multiple domains with newlines and a space3983 sets multiple domains with commas3984 sets multiple domains with semicolon3985 sets multiple domains with mixture of everything3986 removes duplicates3987 does not fail with garbage values3988 does not raise error with nil3989 denied signup domains3990 sets multiple domain with file3991 behaves like string of domains3992 sets single domain3993 sets multiple domains with spaces3994 sets multiple domains with newlines and a space3995 sets multiple domains with commas3996 sets multiple domains with semicolon3997 sets multiple domains with mixture of everything3998 removes duplicates3999 does not fail with garbage values4000 does not raise error with nil4001 outbound_local_requests_whitelist4002 clears outbound_local_requests_allowlist_arrays memoization4003 behaves like string of domains4004 sets single domain4005 sets multiple domains with spaces4006 sets multiple domains with newlines and a space4007 sets multiple domains with commas4008 sets multiple domains with semicolon4009 sets multiple domains with mixture of everything4010 removes duplicates4011 does not fail with garbage values4012 does not raise error with nil4013 outbound_local_requests_allowlist_arrays4014 separates the IPs and domains4015 add_to_outbound_local_requests_whitelist4016 adds entry to outbound_local_requests_whitelist4017 clears outbound_local_requests_allowlist_arrays memoization4018 does not raise error with nil4019 does not raise error with nil4020 usage ping settings4021 when the usage ping is disabled in gitlab.yml4022 does not allow the usage ping to be configured4023 when the usage ping is disabled in the DB4024 returns false for usage_ping_enabled4025 when the usage ping is enabled in the DB4026 returns false for usage_ping_enabled4027 when the usage ping is enabled in gitlab.yml4028 allows the usage ping to be configured4029 when the usage ping is disabled in the DB4030 returns false for usage_ping_enabled4031 when the usage ping is enabled in the DB4032 returns true for usage_ping_enabled4033 #allowed_key_types4034 excludes disabled key types4035 in non-FIPS mode4036 includes all key types by default4037 in FIPS mode4038 excludes DSA from supported key types4039 #key_restriction_for4040 returns the restriction value for recognised types4041 allows types to be passed as a string4042 returns forbidden for unrecognised type4043 #allow_signup?4044 returns true4045 returns false if signup is disabled4046 returns false if password authentication is disabled for the web interface4047 #pick_repository_storage4048 chooses repository based on weight4049 #normalized_repository_storage_weights4050 config_storages: ["default", "backup"], storages: {"default"=>0, "backup"=>100}, normalized: {"default"=>0.0, "backup"=>1.0}4051 normalizes storage weights4052 config_storages: ["default", "backup"], storages: {"default"=>100, "backup"=>100}, normalized: {"default"=>0.5, "backup"=>0.5}4053 normalizes storage weights4054 config_storages: ["default", "backup"], storages: {"default"=>20, "backup"=>80}, normalized: {"default"=>0.2, "backup"=>0.8}4055 normalizes storage weights4056 config_storages: ["default", "backup"], storages: {"default"=>0, "backup"=>0}, normalized: {"default"=>0.0, "backup"=>0.0}4057 normalizes storage weights4058 config_storages: ["default"], storages: {"default"=>0, "backup"=>100}, normalized: {"default"=>0.0}4059 normalizes storage weights4060 config_storages: ["default"], storages: {"default"=>100, "backup"=>100}, normalized: {"default"=>1.0}4061 normalizes storage weights4062 config_storages: ["default"], storages: {"default"=>20, "backup"=>80}, normalized: {"default"=>1.0}4063 normalizes storage weights4064 #user_default_internal_regex_enabled?4065 user_default_external: false, user_default_internal_regex: nil, result: false4066 is expected to eq false4067 user_default_external: false, user_default_internal_regex: "", result: false4068 is expected to eq false4069 user_default_external: false, user_default_internal_regex: "^(?:(?!\\.ext@).)*$\\r?\\n?", result: false4070 is expected to eq false4071 user_default_external: true, user_default_internal_regex: "", result: false4072 is expected to eq false4073 user_default_external: true, user_default_internal_regex: nil, result: false4074 is expected to eq false4075 user_default_external: true, user_default_internal_regex: "^(?:(?!\\.ext@).)*$\\r?\\n?", result: true4076 is expected to eq true4077 #archive_builds_older_than4078 when the archive_builds_in_seconds is set4079 is expected to be within 60 of 2022-06-29 19:20:12.830689222 +00004080 when the archive_builds_in_seconds is set4081 is expected to be nil4082 #commit_email_hostname4083 when the value is provided4084 returns the provided value4085 when the value is not provided4086 returns the default from the class4087Gitlab::Ci::Parsers::Coverage::SaxDocument4088 #parse!4089 when data is Cobertura style XML4090 when there is no <sources>4091 behaves like ignoring sources, project_path, and worktree_paths4092 when there is no <class>4093 parses XML and returns empty coverage4094 when there is a single <class>4095 with no lines4096 parses XML and returns empty coverage4097 with a single line4098 parses XML and returns a single file with coverage4099 without a package parent4100 parses XML and returns a single file with coverage4101 with multiple lines and methods info4102 parses XML and returns a single file with coverage4103 when there are multiple packages4104 parses XML and returns coverage information per class4105 when there are multiple <class>4106 without a package parent4107 parses XML and returns coverage information per class4108 with the same filename and different lines4109 parses XML and returns a single file with merged coverage4110 with the same filename and lines4111 parses XML and returns a single file with summed-up coverage4112 with missing filename4113 parses XML and ignores class with missing name4114 with invalid line information4115 raises an error4116 when there is an empty <sources>4117 behaves like ignoring sources, project_path, and worktree_paths4118 when there is no <class>4119 parses XML and returns empty coverage4120 when there is a single <class>4121 with no lines4122 parses XML and returns empty coverage4123 with a single line4124 parses XML and returns a single file with coverage4125 without a package parent4126 parses XML and returns a single file with coverage4127 with multiple lines and methods info4128 parses XML and returns a single file with coverage4129 when there are multiple packages4130 parses XML and returns coverage information per class4131 when there are multiple <class>4132 without a package parent4133 parses XML and returns coverage information per class4134 with the same filename and different lines4135 parses XML and returns a single file with merged coverage4136 with the same filename and lines4137 parses XML and returns a single file with summed-up coverage4138 with missing filename4139 parses XML and ignores class with missing name4140 with invalid line information4141 raises an error4142 when there is a <sources>4143 and has a single source with a pattern for Go projects4144 behaves like ignoring sources, project_path, and worktree_paths4145 when there is no <class>4146 parses XML and returns empty coverage4147 when there is a single <class>4148 with no lines4149 parses XML and returns empty coverage4150 with a single line4151 parses XML and returns a single file with coverage4152 without a package parent4153 parses XML and returns a single file with coverage4154 with multiple lines and methods info4155 parses XML and returns a single file with coverage4156 when there are multiple packages4157 parses XML and returns coverage information per class4158 when there are multiple <class>4159 without a package parent4160 parses XML and returns coverage information per class4161 with the same filename and different lines4162 parses XML and returns a single file with merged coverage4163 with the same filename and lines4164 parses XML and returns a single file with summed-up coverage4165 with missing filename4166 parses XML and ignores class with missing name4167 with invalid line information4168 raises an error4169 and has multiple sources with a pattern for Go projects4170 behaves like ignoring sources, project_path, and worktree_paths4171 when there is no <class>4172 parses XML and returns empty coverage4173 when there is a single <class>4174 with no lines4175 parses XML and returns empty coverage4176 with a single line4177 parses XML and returns a single file with coverage4178 without a package parent4179 parses XML and returns a single file with coverage4180 with multiple lines and methods info4181 parses XML and returns a single file with coverage4182 when there are multiple packages4183 parses XML and returns coverage information per class4184 when there are multiple <class>4185 without a package parent4186 parses XML and returns coverage information per class4187 with the same filename and different lines4188 parses XML and returns a single file with merged coverage4189 with the same filename and lines4190 parses XML and returns a single file with summed-up coverage4191 with missing filename4192 parses XML and ignores class with missing name4193 with invalid line information4194 raises an error4195 and has a single source but already is at the project root path4196 behaves like ignoring sources, project_path, and worktree_paths4197 when there is no <class>4198 parses XML and returns empty coverage4199 when there is a single <class>4200 with no lines4201 parses XML and returns empty coverage4202 with a single line4203 parses XML and returns a single file with coverage4204 without a package parent4205 parses XML and returns a single file with coverage4206 with multiple lines and methods info4207 parses XML and returns a single file with coverage4208 when there are multiple packages4209 parses XML and returns coverage information per class4210 when there are multiple <class>4211 without a package parent4212 parses XML and returns coverage information per class4213 with the same filename and different lines4214 parses XML and returns a single file with merged coverage4215 with the same filename and lines4216 parses XML and returns a single file with summed-up coverage4217 with missing filename4218 parses XML and ignores class with missing name4219 with invalid line information4220 raises an error4221 and has multiple sources but already are at the project root path4222 behaves like ignoring sources, project_path, and worktree_paths4223 when there is no <class>4224 parses XML and returns empty coverage4225 when there is a single <class>4226 with no lines4227 parses XML and returns empty coverage4228 with a single line4229 parses XML and returns a single file with coverage4230 without a package parent4231 parses XML and returns a single file with coverage4232 with multiple lines and methods info4233 parses XML and returns a single file with coverage4234 when there are multiple packages4235 parses XML and returns coverage information per class4236 when there are multiple <class>4237 without a package parent4238 parses XML and returns coverage information per class4239 with the same filename and different lines4240 parses XML and returns a single file with merged coverage4241 with the same filename and lines4242 parses XML and returns a single file with summed-up coverage4243 with missing filename4244 parses XML and ignores class with missing name4245 with invalid line information4246 raises an error4247 and has a single source that is not at the project root path4248 when there is no <class>4249 parses XML and returns empty coverage4250 when there is a single <class>4251 with no lines4252 parses XML and returns empty coverage4253 with a single line but the filename cannot be determined based on extracted source and worktree paths4254 parses XML and returns empty coverage4255 with a single line4256 parses XML and returns a single file with the filename relative to project root4257 with multiple lines and methods info4258 parses XML and returns a single file with the filename relative to project root4259 when there are multiple <class>4260 with the same filename but the filename cannot be determined based on extracted source and worktree paths4261 parses XML and returns empty coverage4262 without a parent package4263 parses XML and returns coverage information with the filename relative to project root4264 with the same filename and different lines4265 parses XML and returns a single file with merged coverage, and with the filename relative to project root4266 with the same filename and lines4267 parses XML and returns a single file with summed-up coverage, and with the filename relative to project root4268 with missing filename4269 parses XML and ignores class with missing name4270 with filename that cannot be determined based on extracted source and worktree paths4271 parses XML and ignores class with undetermined filename4272 with invalid line information4273 raises an error4274 and has multiple sources that are not at the project root path4275 and a class filename is available under multiple extracted sources4276 parses XML and returns the files with the filename relative to project root4277 and a class filename is available under one of the extracted sources4278 parses XML and returns a single file with the filename relative to project root using the extracted source where it is first found under4279 and a class filename is not found under any of the extracted sources4280 parses XML and returns empty coverage4281 and a class filename is not found under any of the extracted sources within the iteratable limit4282 parses XML and returns empty coverage4283 when project_path is not present4284 behaves like non-smart parsing4285 parses XML and returns filenames unchanged just as how they are found in the class node4286 when worktree_paths is not present4287 behaves like non-smart parsing4288 parses XML and returns filenames unchanged just as how they are found in the class node4289 when data is not Cobertura style XML4290 raises an error4291Projects::LfsPointers::LfsDownloadService4292 #execute4293 when file download succeeds4294 has the same oid4295 has the same size4296 stores the content4297 streams the download4298 skips read_total_timeout4299 behaves like lfs object is created4300 creates and associate the LFS object to project4301 returns success result4302 behaves like lfs temporal file is removed4303 is expected to equal false4304 when file download fails4305 raise StandardError exception4306 behaves like no lfs object is created4307 is expected not to change `LfsObject.count`4308 returns error result4309 an error is logged4310 behaves like lfs temporal file is removed4311 is expected to equal false4312 when file download returns a redirect4313 correctly stores lfs object4314 behaves like lfs object is created4315 creates and associate the LFS object to project4316 returns success result4317 behaves like lfs temporal file is removed4318 is expected to equal false4319 when downloaded lfs file has a different size4320 raise SizeError exception4321 behaves like no lfs object is created4322 is expected not to change `LfsObject.count`4323 returns error result4324 an error is logged4325 behaves like lfs temporal file is removed4326 is expected to equal false4327 when downloaded lfs file has a different oid4328 raise OidError exception4329 behaves like no lfs object is created4330 is expected not to change `LfsObject.count`4331 returns error result4332 an error is logged4333 behaves like lfs temporal file is removed4334 is expected to equal false4335 when an lfs object with the same oid already exists4336 does not update the file attached to the existing LfsObject4337 behaves like no lfs object is created4338 is expected not to change `LfsObject.count`4339 returns error result4340 an error is logged4341 behaves like lfs temporal file is removed4342 is expected to equal false4343 when credentials present4344 the request adds authorization headers4345 when Authorization header is present4346 request uses the header auth4347 when localhost requests are allowed4348 behaves like lfs object is created4349 creates and associate the LFS object to project4350 returns success result4351 behaves like lfs temporal file is removed4352 is expected to equal false4353 when a bad URL is used4354 download_link: "/etc/passwd"4355 does not download the file4356 download_link: "ftp://example.com"4357 does not download the file4358 download_link: "http://127.0.0.2"4359 does not download the file4360 download_link: "http://192.168.2.120"4361 does not download the file4362 when the URL points to a redirected URL4363 that is blocked4364 redirect_link: "ftp://example.com"4365 behaves like no lfs object is created4366 is expected not to change `LfsObject.count`4367 returns error result4368 an error is logged4369 behaves like lfs temporal file is removed4370 is expected to equal false4371 redirect_link: "http://127.0.0.2"4372 behaves like no lfs object is created4373 is expected not to change `LfsObject.count`4374 returns error result4375 an error is logged4376 behaves like lfs temporal file is removed4377 is expected to equal false4378 redirect_link: "http://192.168.2.120"4379 behaves like no lfs object is created4380 is expected not to change `LfsObject.count`4381 returns error result4382 an error is logged4383 behaves like lfs temporal file is removed4384 is expected to equal false4385 that is not blocked4386 behaves like lfs object is created4387 creates and associate the LFS object to project4388 returns success result4389 behaves like lfs temporal file is removed4390 is expected to equal false4391 when the lfs object attributes are invalid4392 does not download the file4393 behaves like no lfs object is created4394 is expected not to change `LfsObject.count`4395 returns error result4396 an error is logged4397 behaves like lfs temporal file is removed4398 is expected to equal false4399 when a large lfs object with the same oid already exists4400 and first fragments are the same4401 returns success4402 links existing lfs object to the project4403 when lfs_link_existing_object feature flag disabled4404 does not call link_existing_lfs_object!4405 and first fragments diverges4406 raises oid mismatch error4407 does not change lfs objects4408Clusters::UpdateService4409 #execute4410 when correct params4411 when enabled is true4412 enables cluster4413 when enabled is false4414 disables cluster4415 when namespace is specified4416 updates namespace4417 when service token is empty4418 does not update the token4419 when service token is not empty4420 updates the token4421 when invalid params4422 returns false4423 when cluster is provided by GCP4424 does not change cluster name4425 when cluster is being created4426 rejects changes4427 when params includes :management_project_id4428 management_project is non-existent4429 does not update management_project_id4430 project cluster4431 user is authorized to adminster manangement_project4432 updates management_project_id4433 user is not authorized to adminster manangement_project4434 does not update management_project_id4435 cluster already has a management project set4436 unsets management_project_id4437 manangement_project is outside of the namespace scope4438 does not update management_project_id4439 group cluster4440 user is authorized to adminster manangement_project4441 updates management_project_id4442 user is not authorized to adminster manangement_project4443 does not update management_project_id4444 cluster already has a management project set4445 unsets management_project_id4446 manangement_project is outside of the namespace scope4447 does not update management_project_id4448 instance cluster4449 user is authorized to adminster manangement_project4450 updates management_project_id4451 user is not authorized to adminster manangement_project4452 does not update management_project_id4453 cluster already has a management project set4454 unsets management_project_id4455ExternalDiffUploader4456 behaves like builds correct paths4457 #store_dir4458 behaves like matches the method pattern4459 is expected to match /merge_request_diffs\/mr-\d+/4460 #cache_dir4461 behaves like matches the method pattern4462 is expected to match /\/external-diffs\/tmp\/cache/4463 #work_dir4464 behaves like matches the method pattern4465 is expected to match /\/external-diffs\/tmp\/work/4466 #upload_path4467 behaves like matches the method pattern4468 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4469 #relative_path4470 is relative (PENDING: Path not set, skipping.)4471 .absolute_path4472 behaves like matches the method pattern4473 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4474 .base_dir4475 behaves like matches the method pattern4476 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4477 path traversal exploits4478 throws an exception4479 object store is REMOTE4480 behaves like builds correct paths4481 #store_dir4482 behaves like matches the method pattern4483 is expected to match /merge_request_diffs\/mr-\d+/4484 #cache_dir4485 behaves like matches the method pattern4486 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4487 #work_dir4488 behaves like matches the method pattern4489 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4490 #upload_path4491 behaves like matches the method pattern4492 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4493 #relative_path4494 is relative (PENDING: Path not set, skipping.)4495 .absolute_path4496 behaves like matches the method pattern4497 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4498 .base_dir4499 behaves like matches the method pattern4500 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4501 path traversal exploits4502 throws an exception4503 migration to object storage4504 with object storage disabled4505 is skipped4506 with object storage enabled4507 is scheduled to run after creation4508 remote file4509 with object storage enabled4510 can store file remotely4511Clusters::Integrations::Prometheus4512 associations4513 is expected to belong to cluster class_name => Clusters::Cluster required: false4514 validations4515 is expected to validate that :cluster cannot be empty/falsy4516 is expected not to allow :enabled to be ‹nil›4517 after_destroy4518 deactivates prometheus_integration4519 after_save4520 when no change to enabled status4521 does not touch project integrations4522 when enabling4523 activates prometheus_integration4524 when disabling4525 activates prometheus_integration4526 #prometheus_client4527 cluster is nil4528 returns nil4529 cluster doesn't have kubeclient4530 returns nil4531 cluster has kubeclient4532 creates proxy prometheus_client4533 merges proxy_url, options and headers from kube client with prometheus_client options4534 when cluster is not reachable4535 behaves like exception caught for prometheus client4536 returns nil4537 when there is a socket error while contacting cluster4538 behaves like exception caught for prometheus client4539 returns nil4540 behaves like exception caught for prometheus client4541 returns nil4542 when the network is unreachable4543 behaves like exception caught for prometheus client4544 returns nil4545 #configured?4546 when a kubenetes client is present4547 is expected to be truthy4548 when it is disabled4549 is expected to be falsey4550 when the kubernetes URL is blocked4551 is expected to be falsey4552 when a kubenetes client is not present4553 is expected to be falsy4554WikiPage::Meta4555 Associations4556 is expected to belong to project required: false4557 is expected to have many slugs4558 is expected to have many events4559 can find slugs4560 Validations4561 is expected to validate that :project_id cannot be empty/falsy4562 is expected to validate that the length of :title is at most 2554563 is expected not to allow :title to be ‹nil›4564 is forbidden to have two records for the same project with the same canonical_slug4565 #canonical_slug4566 can be set on initialization4567 there are no slugs4568 is expected to have attributes {:canonical_slug => (be nil)}4569 we have some non-canonical slugs4570 is expected to have attributes {:canonical_slug => (be nil)}4571 issues at most one query4572 issues no queries if we already know the slug4573 we have a canonical slug4574 has the correct value4575 canonical_slug=4576 the slug is not known to us4577 changes it to the correct value4578 ensures the slug is in the db4579 issues at most N queries4580 issues fewer queries if we already know the current slug4581 the slug is already in the DB (but not canonical)4582 changes it to the correct value4583 ensures the slug is in the db4584 issues at most N queries4585 issues fewer queries if we already know the current slug4586 the slug is already in the DB (and canonical)4587 changes it to the correct value4588 ensures the slug is in the db4589 issues at most N queries4590 issues fewer queries if we already know the current slug4591 the slug is up to date and in the DB4592 changes it to the correct value4593 ensures the slug is in the db4594 issues at most N queries4595 issues fewer queries if we already know the current slug4596 .find_or_create4597 there are problems4598 the slug is too long4599 raises an error4600 a conflicting record exists4601 raises an error4602 the wiki page is not valid4603 raises an error4604 no existing record exists4605 establishes the correct state4606 makes a reasonable number of DB queries4607 the commit happened a day ago4608 establishes the correct state4609 makes a reasonable number of DB queries4610 the last_known_slug is the same as the current slug, as on creation4611 establishes the correct state4612 makes a reasonable number of DB queries4613 a record exists in the DB in the correct state4614 establishes the correct state4615 makes a reasonable number of DB queries4616 a record exists in the DB, but we need to update timestamps4617 establishes the correct state4618 makes a reasonable number of DB queries4619 we need to update the slug, but not the title4620 establishes the correct state4621 makes a reasonable number of DB queries4622 we need to update the title, but not the slug4623 establishes the correct state4624 makes a reasonable number of DB queries4625 we want to change the slug back to a previous version4626 establishes the correct state4627 makes a reasonable number of DB queries4628 we want to change the slug a bunch of times4629 establishes the correct state4630 makes a reasonable number of DB queries4631 we need to update the title and the slug4632 establishes the correct state4633 makes a reasonable number of DB queries4634Gitlab::Auth::Ldap::DN4635 #normalize_value4636 behaves like normalizes a DN attribute value4637 test_description: "strips extraneous whitespace", given: " John Smith ", expected: "john smith"4638 normalizes the DN attribute value4639 test_description: "unescapes non-reserved, non-special Unicode characters", given: "Sebasti\\c3\\a1n\\ C.\\20Smith", expected: "sebastián c. smith"4640 normalizes the DN attribute value4641 test_description: "downcases the whole string", given: "JoHn C. Smith", expected: "john c. smith"4642 normalizes the DN attribute value4643 test_description: "does not strip an escaped leading space in an attribute value", given: "\\ John Smith", expected: "\\ john smith"4644 normalizes the DN attribute value4645 test_description: "does not strip an escaped trailing space in an attribute value", given: "John Smith\\ ", expected: "john smith\\ "4646 normalizes the DN attribute value4647 test_description: "hex-escapes an escaped leading newline in an attribute value", given: "\\\nJohn Smith", expected: "\\0ajohn smith"4648 normalizes the DN attribute value4649 test_description: "hex-escapes and does not strip an escaped trailing newline in an attribute value", given: "John Smith\\\n", expected: "john smith\\0a"4650 normalizes the DN attribute value4651 test_description: "hex-escapes an unescaped leading newline (actually an invalid DN value?)", given: "\nJohn Smith", expected: "\\0ajohn smith"4652 normalizes the DN attribute value4653 test_description: "strips an unescaped trailing newline (actually an invalid DN value?)", given: "John Smith\n", expected: "john smith"4654 normalizes the DN attribute value4655 test_description: "does not strip if no extraneous whitespace", given: "John Smith", expected: "john smith"4656 normalizes the DN attribute value4657 test_description: "does not modify an escaped equal sign in an attribute value", given: " foo \\= bar", expected: "foo \\= bar"4658 normalizes the DN attribute value4659 test_description: "converts an escaped hex equal sign to an escaped equal sign in an attribute value", given: " foo \\3D bar", expected: "foo \\= bar"4660 normalizes the DN attribute value4661 test_description: "does not modify an escaped comma in an attribute value", given: "San Francisco\\, CA", expected: "san francisco\\, ca"4662 normalizes the DN attribute value4663 test_description: "converts an escaped hex comma to an escaped comma in an attribute value", given: "San Francisco\\2C CA", expected: "san francisco\\, ca"4664 normalizes the DN attribute value4665 test_description: "does not modify an escaped hex carriage return character in an attribute value", given: "San Francisco\\,\\0DCA", expected: "san francisco\\,\\0dca"4666 normalizes the DN attribute value4667 test_description: "does not modify an escaped hex line feed character in an attribute value", given: "San Francisco\\,\\0ACA", expected: "san francisco\\,\\0aca"4668 normalizes the DN attribute value4669 test_description: "does not modify an escaped hex CRLF in an attribute value", given: "San Francisco\\,\\0D\\0ACA", expected: "san francisco\\,\\0d\\0aca"4670 normalizes the DN attribute value4671 when the given DN is malformed4672 when ending with a comma4673 raises MalformedError4674 when given a BER encoded attribute value with a space in it4675 raises MalformedError4676 when given a BER encoded attribute value with a non-hex character in it4677 raises MalformedError4678 when given a BER encoded attribute value with a non-hex character in it4679 raises MalformedError4680 when given a hex pair with a non-hex character in it, inside double quotes4681 raises MalformedError4682 with an open (as opposed to closed) double quote4683 raises MalformedError4684 with an invalid escaped hex code4685 raises MalformedError4686 with a value ending with the escape character4687 raises MalformedError4688 #to_normalized_s4689 behaves like normalizes a DN4690 test_description: "strips extraneous whitespace", given: "uid =John Smith , ou = People, dc= example,dc =com", expected: "uid=john smith,ou=people,dc=example,dc=com"4691 normalizes the DN4692 test_description: "strips extraneous whitespace for a DN with a single RDN", given: "uid = John Smith", expected: "uid=john smith"4693 normalizes the DN4694 test_description: "unescapes non-reserved, non-special Unicode characters", given: "uid = Sebasti\\c3\\a1n\\ C.\\20Smith, ou=People (aka. \\22humans\\\") ,dc=example, dc=com", expected: "uid=sebastián c. smith,ou=people (aka. \\\"humans\\\"),dc=example,dc=com"4695 normalizes the DN4696 test_description: "downcases the whole string", given: "UID=John Smith,ou=People,dc=example,dc=com", expected: "uid=john smith,ou=people,dc=example,dc=com"4697 normalizes the DN4698 test_description: "for a null DN (empty string), returns empty string and does not error", given: "", expected: ""4699 normalizes the DN4700 test_description: "does not strip an escaped leading space in an attribute value", given: "uid=\\ John Smith,ou=People,dc=example,dc=com", expected: "uid=\\ john smith,ou=people,dc=example,dc=com"4701 normalizes the DN4702 test_description: "does not strip an escaped leading space in the last attribute value", given: "uid=\\ John Smith", expected: "uid=\\ john smith"4703 normalizes the DN4704 test_description: "does not strip an escaped trailing space in an attribute value", given: "uid=John Smith\\ ,ou=People,dc=example,dc=com", expected: "uid=john smith\\ ,ou=people,dc=example,dc=com"4705 normalizes the DN4706 test_description: "strips extraneous spaces after an escaped trailing space", given: "uid=John Smith\\ ,ou=People,dc=example,dc=com", expected: "uid=john smith\\ ,ou=people,dc=example,dc=com"4707 normalizes the DN4708 test_description: "strips extraneous spaces after an escaped trailing space at the end of the DN", given: "uid=John Smith,ou=People,dc=example,dc=com\\ ", expected: "uid=john smith,ou=people,dc=example,dc=com\\ "4709 normalizes the DN4710 test_description: "properly preserves escaped trailing space after unescaped trailing spaces", given: "uid=John Smith \\ ,ou=People,dc=example,dc=com", expected: "uid=john smith \\ ,ou=people,dc=example,dc=com"4711 normalizes the DN4712 test_description: "preserves multiple inner spaces in an attribute value", given: "uid=John Smith,ou=People,dc=example,dc=com", expected: "uid=john smith,ou=people,dc=example,dc=com"4713 normalizes the DN4714 test_description: "preserves inner spaces after an escaped space", given: "uid=John\\ Smith,ou=People,dc=example,dc=com", expected: "uid=john smith,ou=people,dc=example,dc=com"4715 normalizes the DN4716 test_description: "hex-escapes an escaped leading newline in an attribute value", given: "uid=\\\nJohn Smith,ou=People,dc=example,dc=com", expected: "uid=\\0ajohn smith,ou=people,dc=example,dc=com"4717 normalizes the DN4718 test_description: "hex-escapes and does not strip an escaped trailing newline in an attribute value", given: "uid=John Smith\\\n,ou=People,dc=example,dc=com", expected: "uid=john smith\\0a,ou=people,dc=example,dc=com"4719 normalizes the DN4720 test_description: "hex-escapes an unescaped leading newline (actually an invalid DN?)", given: "uid=\nJohn Smith,ou=People,dc=example,dc=com", expected: "uid=\\0ajohn smith,ou=people,dc=example,dc=com"4721 normalizes the DN4722 test_description: "strips an unescaped trailing newline (actually an invalid DN?)", given: "uid=John Smith\n,ou=People,dc=example,dc=com", expected: "uid=john smith,ou=people,dc=example,dc=com"4723 normalizes the DN4724 test_description: "does not strip if no extraneous whitespace", given: "uid=John Smith,ou=People,dc=example,dc=com", expected: "uid=john smith,ou=people,dc=example,dc=com"4725 normalizes the DN4726 test_description: "does not modify an escaped equal sign in an attribute value", given: "uid= foo \\= bar", expected: "uid=foo \\= bar"4727 normalizes the DN4728 test_description: "converts an escaped hex equal sign to an escaped equal sign in an attribute value", given: "uid= foo \\3D bar", expected: "uid=foo \\= bar"4729 normalizes the DN4730 test_description: "does not modify an escaped comma in an attribute value", given: "uid= John C. Smith, ou=San Francisco\\, CA", expected: "uid=john c. smith,ou=san francisco\\, ca"4731 normalizes the DN4732 test_description: "converts an escaped hex comma to an escaped comma in an attribute value", given: "uid= John C. Smith, ou=San Francisco\\2C CA", expected: "uid=john c. smith,ou=san francisco\\, ca"4733 normalizes the DN4734 test_description: "does not modify an escaped hex carriage return character in an attribute value", given: "uid= John C. Smith, ou=San Francisco\\,\\0DCA", expected: "uid=john c. smith,ou=san francisco\\,\\0dca"4735 normalizes the DN4736 test_description: "does not modify an escaped hex line feed character in an attribute value", given: "uid= John C. Smith, ou=San Francisco\\,\\0ACA", expected: "uid=john c. smith,ou=san francisco\\,\\0aca"4737 normalizes the DN4738 test_description: "does not modify an escaped hex CRLF in an attribute value", given: "uid= John C. Smith, ou=San Francisco\\,\\0D\\0ACA", expected: "uid=john c. smith,ou=san francisco\\,\\0d\\0aca"4739 normalizes the DN4740 test_description: "allows attribute type name OIDs", given: "0.9.2342.19200300.100.1.25=Example,0.9.2342.19200300.100.1.25=Com", expected: "0.9.2342.19200300.100.1.25=example,0.9.2342.19200300.100.1.25=com"4741 normalizes the DN4742 test_description: "strips extraneous whitespace from attribute type name OIDs", given: "0.9.2342.19200300.100.1.25 = Example, 0.9.2342.19200300.100.1.25 = Com", expected: "0.9.2342.19200300.100.1.25=example,0.9.2342.19200300.100.1.25=com"4743 normalizes the DN4744 when we do not support the given DN format4745 multivalued RDNs4746 without extraneous whitespace4747 raises UnsupportedError4748 with extraneous whitespace4749 around the phone number plus sign4750 raises UnsupportedError4751 not around the phone number plus sign4752 raises UnsupportedError4753 when the given DN is malformed4754 when ending with a comma4755 raises MalformedError4756 when given a BER encoded attribute value with a space in it4757 raises MalformedError4758 when given a BER encoded attribute value with a non-hex character in it4759 raises MalformedError4760 when given a BER encoded attribute value with a non-hex character in it4761 raises MalformedError4762 when given a hex pair with a non-hex character in it, inside double quotes4763 raises MalformedError4764 without a name value pair4765 raises MalformedError4766 with an open (as opposed to closed) double quote4767 raises MalformedError4768 with an invalid escaped hex code4769 raises MalformedError4770 with a value ending with the escape character4771 raises MalformedError4772 with an invalid OID attribute type name4773 raises MalformedError4774 with a period in a non-OID attribute type name4775 raises MalformedError4776 when starting with non-space, non-alphanumeric character4777 raises MalformedError4778 when given a UID with an escaped equal sign4779 raises MalformedError4780Gitlab::Metrics::Dashboard::Url4781 #metrics_regex4782 for /-/environments/:environment_id/metrics route4783 behaves like regex which matches url when expected4784 is expected to be a kind of Regexp4785 matches a metrics dashboard link with named params4786 does not match other gitlab urls that contain the term metrics4787 does not match other gitlab urls4788 does not match non-gitlab urls4789 for /-/metrics?environment=:environment_id route4790 behaves like regex which matches url when expected4791 is expected to be a kind of Regexp4792 matches a metrics dashboard link with named params4793 does not match other gitlab urls that contain the term metrics4794 does not match other gitlab urls4795 does not match non-gitlab urls4796 for metrics_dashboard route4797 behaves like regex which matches url when expected4798 is expected to be a kind of Regexp4799 matches a metrics dashboard link with named params4800 does not match other gitlab urls that contain the term metrics4801 does not match other gitlab urls4802 does not match non-gitlab urls4803 #clusters_regex4804 behaves like regex which matches url when expected4805 is expected to be a kind of Regexp4806 matches a metrics dashboard link with named params4807 does not match other gitlab urls that contain the term metrics4808 does not match other gitlab urls4809 does not match non-gitlab urls4810 for metrics_dashboard route4811 behaves like regex which matches url when expected4812 is expected to be a kind of Regexp4813 matches a metrics dashboard link with named params4814 does not match other gitlab urls that contain the term metrics4815 does not match other gitlab urls4816 does not match non-gitlab urls4817 #grafana_regex4818 behaves like regex which matches url when expected4819 is expected to be a kind of Regexp4820 matches a metrics dashboard link with named params4821 does not match other gitlab urls that contain the term metrics4822 does not match other gitlab urls4823 does not match non-gitlab urls4824 #alert_regex4825 behaves like regex which matches url when expected4826 is expected to be a kind of Regexp4827 matches a metrics dashboard link with named params4828 does not match other gitlab urls that contain the term metrics4829 does not match other gitlab urls4830 does not match non-gitlab urls4831 behaves like regex which matches url when expected4832 is expected to be a kind of Regexp4833 matches a metrics dashboard link with named params4834 does not match other gitlab urls that contain the term metrics4835 does not match other gitlab urls4836 does not match non-gitlab urls4837 #build_dashboard_url4838 builds the url for the dashboard endpoint4839Label4840 modules4841 is expected to includes the Referable module4842 is expected to includes the Subscribable module4843 associations4844 is expected to have many issues through label_links source => target4845 is expected to have many label_links dependent => destroy4846 is expected to have many lists dependent => destroy4847 is expected to have many priorities class_name => LabelPriority4848 validation4849 is expected to validate that :title is case-sensitively unique within the scope of :group_id and :project_id4850 validates color code4851 validates title4852 scopes4853 .on_board4854 returns only the board labels4855 #color4856 strips color4857 uses default color if color is missing4858 #text_color4859 uses default color if color is missing4860 #title4861 sanitizes title4862 strips title4863 #description4864 sanitizes description4865 accepts an empty string4866 priorization4867 #prioritize!4868 when label is not prioritized4869 creates a label priority4870 sets label priority4871 when label is prioritized4872 does not create a label priority4873 updates label priority4874 #unprioritize!4875 removes label priority4876 #priority4877 when label is not prioritized4878 returns nil4879 when label is prioritized4880 returns label priority4881 .search4882 returns labels with a partially matching title4883 returns labels with a partially matching description4884 returns nothing4885 .subscribed_by4886 returns subscribed labels4887 returns nothing4888 .top_labels_by_target4889 returns distinct labels, ordered by usage in the given target relation4890 excludes labels that are not assigned to any records in the given target relation4891 .optionally_subscribed_by4892 returns subscribed labels4893 returns all labels if user_id is nil4894 #templates4895 with invalid template labels4896 returns only valid template labels4897IssuablePolicy4898 #rules4899 when user is author of issuable4900 allows resolving notes4901 when user is able to read project4902 enables user to read and update issuables4903 Timeline events4904 allows non-members to read time line events4905 disallows reporters from managing timeline events4906 allows developers to manage timeline events4907 when project is private4908 disallows user from reading and updating issuables from that project4909 when user belongs to the projects team4910 enables user to read and update issuables4911 Timeline events4912 disallows non-members from reading timeline events4913 allows guests to read time line events4914 disallows reporters from managing timeline events4915 allows developers to manage timeline events4916 when discussion is locked for the issuable4917 when the user is not a project member4918 can not create a note nor award emojis4919 does not allow resolving note4920 when the user is a project member4921 can create a note and award emojis4922 allows resolving notes4923AtomicInternalId4924 #save!4925 when IID is provided4926 tracks the value4927 when importing4928 does not track the value4929 #track_project_iid!4930 tracks the present value4931 when value is set by ensure_project_iid!4932 does not track the value4933 tracks the iid for the scope that is actually present4934 #ensure_project_iid!4935 generates a new value if non is present4936 generates a new value if first set with iid= but later set to nil4937 #clear_scope_iid!4938 when no ensure_if condition is given4939 clears automatically set IIDs4940 does not clear manually set IIDS4941 when an ensure_if condition is given4942 when the ensure_if condition evaluates to true4943 clears automatically set IIDs4944 does not clear manually set IIDs4945 when the ensure_if condition evaluates to false4946 does not clear IIDs4947 #validate_scope_iid_exists!4948 when the presence flag is set4949 raises an error for blank iids on create4950 raises an error for blank iids on update4951 when the presence flag is not set4952 does not raise an error for blank iids on create4953 does not raise an error for blank iids on update4954 .with_project_iid_supply4955 supplies a stream of iid values4956Gitlab::Pagination::Keyset::Order4957 paginate over items correctly4958 when ordering by a distinct column4959 behaves like order examples4960 is expected to eq [{"id"=>9, "month"=>0, "year"=>0}, {"id"=>8, "month"=>0, "year"=>0}, {"id"=>7, "month"=>0, "year"=>0}..."id"=>3, "month"=>0, "year"=>0}, {"id"=>2, "month"=>0, "year"=>0}, {"id"=>1, "month"=>0, "year"=>0}]4961 when paginating forwards4962 is expected to eq [{"id"=>9, "month"=>0, "year"=>0}, {"id"=>8, "month"=>0, "year"=>0}, {"id"=>7, "month"=>0, "year"=>0}..."id"=>3, "month"=>0, "year"=>0}, {"id"=>2, "month"=>0, "year"=>0}, {"id"=>1, "month"=>0, "year"=>0}]4963 with different page size4964 is expected to eq [{"id"=>9, "month"=>0, "year"=>0}, {"id"=>8, "month"=>0, "year"=>0}, {"id"=>7, "month"=>0, "year"=>0}..."id"=>3, "month"=>0, "year"=>0}, {"id"=>2, "month"=>0, "year"=>0}, {"id"=>1, "month"=>0, "year"=>0}]4965 when using the conditions in an UNION query4966 is expected to eq [{"id"=>9, "month"=>0, "year"=>0}, {"id"=>8, "month"=>0, "year"=>0}, {"id"=>7, "month"=>0, "year"=>0}..."id"=>3, "month"=>0, "year"=>0}, {"id"=>2, "month"=>0, "year"=>0}, {"id"=>1, "month"=>0, "year"=>0}]4967 when the cursor attributes are SQL literals4968 is expected to eq [{"id"=>9, "month"=>0, "year"=>0}, {"id"=>8, "month"=>0, "year"=>0}, {"id"=>7, "month"=>0, "year"=>0}..."id"=>3, "month"=>0, "year"=>0}, {"id"=>2, "month"=>0, "year"=>0}, {"id"=>1, "month"=>0, "year"=>0}]4969 when using the conditions in an UNION query4970 is expected to eq [{"id"=>9, "month"=>0, "year"=>0}, {"id"=>8, "month"=>0, "year"=>0}, {"id"=>7, "month"=>0, "year"=>0}..."id"=>3, "month"=>0, "year"=>0}, {"id"=>2, "month"=>0, "year"=>0}, {"id"=>1, "month"=>0, "year"=>0}]4971 when paginating backwards4972 is expected to eq [{"id"=>2, "month"=>0, "year"=>0}, {"id"=>3, "month"=>0, "year"=>0}, {"id"=>4, "month"=>0, "year"=>0}..."id"=>7, "month"=>0, "year"=>0}, {"id"=>8, "month"=>0, "year"=>0}, {"id"=>9, "month"=>0, "year"=>0}]4973 when ordering by two non-nullable columns and a distinct column4974 uses the row comparison method4975 behaves like order examples4976 is expected to eq [{"id"=>3, "month"=>2, "year"=>2009}, {"id"=>6, "month"=>2, "year"=>2009}, {"id"=>1, "month"=>2, "yea..."month"=>1, "year"=>2011}, {"id"=>8, "month"=>4, "year"=>2012}, {"id"=>9, "month"=>5, "year"=>2013}]4977 when paginating forwards4978 is expected to eq [{"id"=>3, "month"=>2, "year"=>2009}, {"id"=>6, "month"=>2, "year"=>2009}, {"id"=>1, "month"=>2, "yea..."month"=>1, "year"=>2011}, {"id"=>8, "month"=>4, "year"=>2012}, {"id"=>9, "month"=>5, "year"=>2013}]4979 with different page size4980 is expected to eq [{"id"=>3, "month"=>2, "year"=>2009}, {"id"=>6, "month"=>2, "year"=>2009}, {"id"=>1, "month"=>2, "yea..."month"=>1, "year"=>2011}, {"id"=>8, "month"=>4, "year"=>2012}, {"id"=>9, "month"=>5, "year"=>2013}]4981 when using the conditions in an UNION query4982 is expected to eq [{"id"=>3, "month"=>2, "year"=>2009}, {"id"=>6, "month"=>2, "year"=>2009}, {"id"=>1, "month"=>2, "yea..."month"=>1, "year"=>2011}, {"id"=>8, "month"=>4, "year"=>2012}, {"id"=>9, "month"=>5, "year"=>2013}]4983 when the cursor attributes are SQL literals4984 is expected to eq [{"id"=>3, "month"=>2, "year"=>2009}, {"id"=>6, "month"=>2, "year"=>2009}, {"id"=>1, "month"=>2, "yea..."month"=>1, "year"=>2011}, {"id"=>8, "month"=>4, "year"=>2012}, {"id"=>9, "month"=>5, "year"=>2013}]4985 when using the conditions in an UNION query4986 is expected to eq [{"id"=>3, "month"=>2, "year"=>2009}, {"id"=>6, "month"=>2, "year"=>2009}, {"id"=>1, "month"=>2, "yea..."month"=>1, "year"=>2011}, {"id"=>8, "month"=>4, "year"=>2012}, {"id"=>9, "month"=>5, "year"=>2013}]4987 when paginating backwards4988 is expected to eq [{"id"=>8, "month"=>4, "year"=>2012}, {"id"=>5, "month"=>1, "year"=>2011}, {"id"=>4, "month"=>1, "yea..."month"=>2, "year"=>2010}, {"id"=>6, "month"=>2, "year"=>2009}, {"id"=>3, "month"=>2, "year"=>2009}]4989 when ordering by nullable columns and a distinct column4990 behaves like order examples4991 is expected to eq [{"id"=>7, "month"=>2, "year"=>2010}, {"id"=>11, "month"=>2, "year"=>2010}, {"id"=>1, "month"=>nil, "...onth"=>5, "year"=>nil}, {"id"=>3, "month"=>nil, "year"=>nil}, {"id"=>10, "month"=>nil, "year"=>nil}]4992 when paginating forwards4993 is expected to eq [{"id"=>7, "month"=>2, "year"=>2010}, {"id"=>11, "month"=>2, "year"=>2010}, {"id"=>1, "month"=>nil, "...onth"=>5, "year"=>nil}, {"id"=>3, "month"=>nil, "year"=>nil}, {"id"=>10, "month"=>nil, "year"=>nil}]4994 with different page size4995 is expected to eq [{"id"=>7, "month"=>2, "year"=>2010}, {"id"=>11, "month"=>2, "year"=>2010}, {"id"=>1, "month"=>nil, "...onth"=>5, "year"=>nil}, {"id"=>3, "month"=>nil, "year"=>nil}, {"id"=>10, "month"=>nil, "year"=>nil}]4996 when using the conditions in an UNION query4997 is expected to eq [{"id"=>7, "month"=>2, "year"=>2010}, {"id"=>11, "month"=>2, "year"=>2010}, {"id"=>1, "month"=>nil, "...onth"=>5, "year"=>nil}, {"id"=>3, "month"=>nil, "year"=>nil}, {"id"=>10, "month"=>nil, "year"=>nil}]4998 when the cursor attributes are SQL literals4999 is expected to eq [{"id"=>7, "month"=>2, "year"=>2010}, {"id"=>11, "month"=>2, "year"=>2010}, {"id"=>1, "month"=>nil, "...onth"=>5, "year"=>nil}, {"id"=>3, "month"=>nil, "year"=>nil}, {"id"=>10, "month"=>nil, "year"=>nil}]5000 when using the conditions in an UNION query5001 is expected to eq [{"id"=>7, "month"=>2, "year"=>2010}, {"id"=>11, "month"=>2, "year"=>2010}, {"id"=>1, "month"=>nil, "...onth"=>5, "year"=>nil}, {"id"=>3, "month"=>nil, "year"=>nil}, {"id"=>10, "month"=>nil, "year"=>nil}]5002 when paginating backwards5003 is expected to eq [{"id"=>3, "month"=>nil, "year"=>nil}, {"id"=>4, "month"=>5, "year"=>nil}, {"id"=>9, "month"=>2, "yea...nth"=>nil, "year"=>2010}, {"id"=>11, "month"=>2, "year"=>2010}, {"id"=>7, "month"=>2, "year"=>2010}]5004 when ordering by nullable columns with nulls first ordering and a distinct column5005 behaves like order examples5006 is expected to eq [{"id"=>3, "month"=>nil, "year"=>nil}, {"id"=>10, "month"=>nil, "year"=>nil}, {"id"=>9, "month"=>2, "..."month"=>2, "year"=>2011}, {"id"=>6, "month"=>2, "year"=>2011}, {"id"=>8, "month"=>2, "year"=>2012}]5007 when paginating forwards5008 is expected to eq [{"id"=>3, "month"=>nil, "year"=>nil}, {"id"=>10, "month"=>nil, "year"=>nil}, {"id"=>9, "month"=>2, "..."month"=>2, "year"=>2011}, {"id"=>6, "month"=>2, "year"=>2011}, {"id"=>8, "month"=>2, "year"=>2012}]5009 with different page size5010 is expected to eq [{"id"=>3, "month"=>nil, "year"=>nil}, {"id"=>10, "month"=>nil, "year"=>nil}, {"id"=>9, "month"=>2, "..."month"=>2, "year"=>2011}, {"id"=>6, "month"=>2, "year"=>2011}, {"id"=>8, "month"=>2, "year"=>2012}]5011 when using the conditions in an UNION query5012 is expected to eq [{"id"=>3, "month"=>nil, "year"=>nil}, {"id"=>10, "month"=>nil, "year"=>nil}, {"id"=>9, "month"=>2, "..."month"=>2, "year"=>2011}, {"id"=>6, "month"=>2, "year"=>2011}, {"id"=>8, "month"=>2, "year"=>2012}]5013 when the cursor attributes are SQL literals5014 is expected to eq [{"id"=>3, "month"=>nil, "year"=>nil}, {"id"=>10, "month"=>nil, "year"=>nil}, {"id"=>9, "month"=>2, "..."month"=>2, "year"=>2011}, {"id"=>6, "month"=>2, "year"=>2011}, {"id"=>8, "month"=>2, "year"=>2012}]5015 when using the conditions in an UNION query5016 is expected to eq [{"id"=>3, "month"=>nil, "year"=>nil}, {"id"=>10, "month"=>nil, "year"=>nil}, {"id"=>9, "month"=>2, "..."month"=>2, "year"=>2011}, {"id"=>6, "month"=>2, "year"=>2011}, {"id"=>8, "month"=>2, "year"=>2012}]5017 when paginating backwards5018 is expected to eq [{"id"=>6, "month"=>2, "year"=>2011}, {"id"=>2, "month"=>2, "year"=>2011}, {"id"=>11, "month"=>2, "ye...onth"=>2, "year"=>nil}, {"id"=>10, "month"=>nil, "year"=>nil}, {"id"=>3, "month"=>nil, "year"=>nil}]5019 when ordering by non-nullable columns with mixed directions and a distinct column5020 takes out a slice between two cursors5021 when ordering by the named function LOWER5022 uses downcased value for encoding and decoding a cursor5023 when the passed cursor values do not match with the order definition5024 when values are missing5025 raises error5026 when extra values are present5027 raises error5028 when values are missing and extra values are present5029 raises error5030 when no values are passed5031 returns empty array5032 extract and apply cursor attributes5033 when string attribute name is given5034 behaves like cursor attribute examples5035 #cursor_attributes_for_node5036 is expected to eq {"id"=>"100"}5037 #apply_cursor_conditions5038 when params with string keys are passed5039 is expected to include "\"projects\".\"id\" < 100)"5040 when params with symbol keys are passed5041 is expected to include "\"projects\".\"id\" < 100)"5042 when symbol attribute name is given5043 behaves like cursor attribute examples5044 #cursor_attributes_for_node5045 is expected to eq {"id"=>"100"}5046 #apply_cursor_conditions5047 when params with string keys are passed5048 is expected to include "\"projects\".\"id\" < 100)"5049 when params with symbol keys are passed5050 is expected to include "\"projects\".\"id\" < 100)"5051 with projections5052 when additional_projections is empty5053 has correct projections5054 when there are additional_projections5055 has correct projections5056 UNION optimization5057 when UNION optimization is off5058 returns items in the correct order5059 when UNION optimization is on5060 returns items in the correct order5061 calls Gitlab::SQL::Union5062 builds UNION query5063Backup::Repositories5064 #dump5065 avoids N+1 database queries5066 hashed storage5067 behaves like creates repository bundles5068 calls enqueue for each repository type5069 legacy storage5070 behaves like creates repository bundles5071 calls enqueue for each repository type5072 command failure5073 enqueue_project raises an error5074 project query raises an error5075 storages5076 calls enqueue for all repositories on the specified storage5077 paths5078 project path5079 calls enqueue for all repositories on the specified project5080 group path5081 calls enqueue for all repositories on all descendant projects5082 #restore5083 calls enqueue for each repository type5084 restoring object pools5085 schedules restoring of the pool5086 skips pools when no source project is found5087 cleanup snippets5088 shows the appropriate error5089 removes the snippets from the DB5090 removes the repository from disk5091 storages5092 calls enqueue for all repositories on the specified storage5093 paths5094 project path5095 calls enqueue for all repositories on the specified project5096 group path5097 calls enqueue for all repositories on all descendant projects5098Metrics::Dashboard::AnnotationPolicy5099 rules5100 environments annotation5101 behaves like metrics dashboard annotation policy5102 when guest5103 is expected to be disallowed :read_metrics_dashboard_annotation5104 is expected to be disallowed :create_metrics_dashboard_annotation5105 is expected to be disallowed :update_metrics_dashboard_annotation5106 is expected to be disallowed :delete_metrics_dashboard_annotation5107 when reporter5108 is expected to be allowed :read_metrics_dashboard_annotation5109 is expected to be disallowed :create_metrics_dashboard_annotation5110 is expected to be disallowed :update_metrics_dashboard_annotation5111 is expected to be disallowed :delete_metrics_dashboard_annotation5112 when developer5113 is expected to be allowed :read_metrics_dashboard_annotation5114 is expected to be allowed :create_metrics_dashboard_annotation5115 is expected to be allowed :update_metrics_dashboard_annotation5116 is expected to be allowed :delete_metrics_dashboard_annotation5117 when maintainer5118 is expected to be allowed :read_metrics_dashboard_annotation5119 is expected to be allowed :create_metrics_dashboard_annotation5120 is expected to be allowed :update_metrics_dashboard_annotation5121 is expected to be allowed :delete_metrics_dashboard_annotation5122 cluster annotation5123 behaves like metrics dashboard annotation policy5124 when guest5125 is expected to be disallowed :read_metrics_dashboard_annotation5126 is expected to be disallowed :create_metrics_dashboard_annotation5127 is expected to be disallowed :update_metrics_dashboard_annotation5128 is expected to be disallowed :delete_metrics_dashboard_annotation5129 when reporter5130 is expected to be allowed :read_metrics_dashboard_annotation5131 is expected to be disallowed :create_metrics_dashboard_annotation5132 is expected to be disallowed :update_metrics_dashboard_annotation5133 is expected to be disallowed :delete_metrics_dashboard_annotation5134 when developer5135 is expected to be allowed :read_metrics_dashboard_annotation5136 is expected to be allowed :create_metrics_dashboard_annotation5137 is expected to be allowed :update_metrics_dashboard_annotation5138 is expected to be allowed :delete_metrics_dashboard_annotation5139 when maintainer5140 is expected to be allowed :read_metrics_dashboard_annotation5141 is expected to be allowed :create_metrics_dashboard_annotation5142 is expected to be allowed :update_metrics_dashboard_annotation5143 is expected to be allowed :delete_metrics_dashboard_annotation5144Gitlab::UsageDataCounters::IssueActivityUniqueCounter5145 can return the count of actions per user deduplicated5146 for Issue title edit actions5147 behaves like a daily tracked issuable event5148 is expected to eq 25149 does not track edit actions if author is not present5150 for Issue description edit actions5151 behaves like a daily tracked issuable event5152 is expected to eq 25153 does not track edit actions if author is not present5154 for Issue assignee edit actions5155 behaves like a daily tracked issuable event5156 is expected to eq 25157 does not track edit actions if author is not present5158 for Issue make confidential actions5159 behaves like a daily tracked issuable event5160 is expected to eq 25161 does not track edit actions if author is not present5162 for Issue make visible actions5163 behaves like a daily tracked issuable event5164 is expected to eq 25165 does not track edit actions if author is not present5166 for Issue created actions5167 behaves like a daily tracked issuable event5168 is expected to eq 25169 does not track edit actions if author is not present5170 for Issue closed actions5171 behaves like a daily tracked issuable event5172 is expected to eq 25173 does not track edit actions if author is not present5174 for Issue reopened actions5175 behaves like a daily tracked issuable event5176 is expected to eq 25177 does not track edit actions if author is not present5178 for Issue label changed actions5179 behaves like a daily tracked issuable event5180 is expected to eq 25181 does not track edit actions if author is not present5182 for Issue cross-referenced actions5183 behaves like a daily tracked issuable event5184 is expected to eq 25185 does not track edit actions if author is not present5186 for Issue moved actions5187 behaves like a daily tracked issuable event5188 is expected to eq 25189 does not track edit actions if author is not present5190 for Issue cloned actions5191 behaves like a daily tracked issuable event5192 is expected to eq 25193 does not track edit actions if author is not present5194 for Issue relate actions5195 behaves like a daily tracked issuable event5196 is expected to eq 25197 does not track edit actions if author is not present5198 for Issue unrelate actions5199 behaves like a daily tracked issuable event5200 is expected to eq 25201 does not track edit actions if author is not present5202 for Issue marked as duplicate actions5203 behaves like a daily tracked issuable event5204 is expected to eq 25205 does not track edit actions if author is not present5206 for Issue locked actions5207 behaves like a daily tracked issuable event5208 is expected to eq 25209 does not track edit actions if author is not present5210 for Issue unlocked actions5211 behaves like a daily tracked issuable event5212 is expected to eq 25213 does not track edit actions if author is not present5214 for Issue designs added actions5215 behaves like a daily tracked issuable event5216 is expected to eq 25217 does not track edit actions if author is not present5218 for Issue designs modified actions5219 behaves like a daily tracked issuable event5220 is expected to eq 25221 does not track edit actions if author is not present5222 for Issue designs removed actions5223 behaves like a daily tracked issuable event5224 is expected to eq 25225 does not track edit actions if author is not present5226 for Issue due date changed actions5227 behaves like a daily tracked issuable event5228 is expected to eq 25229 does not track edit actions if author is not present5230 for Issue time estimate changed actions5231 behaves like a daily tracked issuable event5232 is expected to eq 25233 does not track edit actions if author is not present5234 for Issue time spent changed actions5235 behaves like a daily tracked issuable event5236 is expected to eq 25237 does not track edit actions if author is not present5238 for Issue comment added actions5239 behaves like a daily tracked issuable event5240 is expected to eq 25241 does not track edit actions if author is not present5242 for Issue comment edited actions5243 behaves like a daily tracked issuable event5244 is expected to eq 25245 does not track edit actions if author is not present5246 for Issue comment removed actions5247 behaves like a daily tracked issuable event5248 is expected to eq 25249 does not track edit actions if author is not present5250Mutations::Discussions::ToggleResolve5251 #resolve5252 when discussion is on a merge request5253 behaves like a working resolve method5254 when the user does not have permission5255 raises an error if the resource is not accessible to the user5256 when the user has permission5257 when discussion cannot be found5258 raises an error5259 when the `resolve` argument is true5260 returns a resolved discussion5261 returns empty errors5262 when the discussion is already resolved5263 returns a resolved discussion5264 returns empty errors5265 when the service raises an `ActiveRecord::RecordNotSaved` error5266 does not resolve the discussion5267 returns errors5268 when the `resolve` argument is false5269 when the discussion is resolved5270 returns an unresolved discussion5271 returns empty errors5272 when the service raises an `ActiveRecord::RecordNotSaved` error5273 does not unresolve the discussion5274 returns errors5275 when the discussion is already unresolved5276 returns an unresolved discussion5277 returns empty errors5278 when user is the author and discussion is locked5279 raises an error5280 when discussion is on a design5281 behaves like a working resolve method5282 when the user does not have permission5283 raises an error if the resource is not accessible to the user5284 when the user has permission5285 when discussion cannot be found5286 raises an error5287 when the `resolve` argument is true5288 returns a resolved discussion5289 returns empty errors5290 when the discussion is already resolved5291 returns a resolved discussion5292 returns empty errors5293 when the service raises an `ActiveRecord::RecordNotSaved` error5294 does not resolve the discussion5295 returns errors5296 when the `resolve` argument is false5297 when the discussion is resolved5298 returns an unresolved discussion5299 returns empty errors5300 when the service raises an `ActiveRecord::RecordNotSaved` error5301 does not unresolve the discussion5302 returns errors5303 when the discussion is already unresolved5304 returns an unresolved discussion5305 returns empty errors5306 when user is the author and discussion is locked5307 raises an error5308Packages::Npm::CreateTagService5309 #execute5310 with no existing tag name5311 behaves like it creates the tag5312 is expected to change `Packages::Tag.count` by 15313 is expected to eq "test-tag"5314 adds tag to the package5315 with exisiting tag name5316 on package with different name5317 behaves like it creates the tag5318 is expected to change `Packages::Tag.count` by 15319 is expected to eq "test-tag"5320 adds tag to the package5321 on different package type5322 behaves like it creates the tag5323 is expected to change `Packages::Tag.count` by 15324 is expected to eq "test-tag"5325 adds tag to the package5326 on same package with different version5327 is expected to not change `Packages::Tag.count`5328 is expected to eq "test-tag"5329 adds tag to the package5330Terraform::State5331 is expected to belong to project required: false5332 is expected to belong to locked_by_user class_name => User required: false5333 is expected to validate that :name cannot be empty/falsy5334 is expected to validate that :project_id cannot be empty/falsy5335 scopes5336 .ordered_by_name5337 is expected to eq ["state_a", "state_b", "state_c", "state_d"]5338 .with_name5339 is expected to contain exactly #<Terraform::State id: 9, project_id: 935, created_at: "2022-06-29 20:22:56.314931582 +0000", updated...c646881e1ca2b19aa22597efee2d968c", name: "matching-name", versioning_enabled: true, deleted_at: nil>5340 #latest_file5341 is expected to eq #<Terraform::StateUploader:0x00007fece949d210 @model=#<Terraform::StateVersion id: 5, terraform_state...0x00007fece949ce78 @uploader=#<Terraform::StateUploader:0x00007fece949d210 ...>, @cache_called=nil>>5342 but no version exists yet5343 is expected to be nil5344 #update_file!5345 versioning is enabled5346 creates a new version5347 versioning is disabled (migration to versioned in progress)5348 creates a new version, corrects the migrated version number, and marks the state as versioned5349 the current version cannot be determined5350 uses version - 1 to correct the migrated version number5351ObjectStorage::Config5352 #credentials5353 is expected to eq {:aws_access_key_id=>"AWS_ACCESS_KEY_ID", :aws_secret_access_key=>"AWS_SECRET_ACCESS_KEY", :provider=>"AWS", :region=>"us-east-1"}5354 #storage_options5355 is expected to eq {:server_side_encryption=>"AES256", :server_side_encryption_kms_key_id=>"arn:aws:12345"}5356 #enabled?5357 is expected to eq true5358 #bucket5359 is expected to eq "test-bucket"5360 #use_iam_profile5361 is expected to equal false5362 #use_path_style5363 is expected to equal false5364 with unconsolidated settings5365 consolidated_settings? returns false5366 is expected to equal false5367 with consolidated settings5368 consolidated_settings? returns true5369 is expected to equal true5370 with IAM profile configured5371 value: true, expected: true5372 coerces the value to a boolean5373 value: "true", expected: true5374 coerces the value to a boolean5375 value: "yes", expected: true5376 coerces the value to a boolean5377 value: false, expected: false5378 coerces the value to a boolean5379 value: "false", expected: false5380 coerces the value to a boolean5381 value: "no", expected: false5382 coerces the value to a boolean5383 value: nil, expected: false5384 coerces the value to a boolean5385 with path style configured5386 value: true, expected: true5387 coerces the value to a boolean5388 value: "true", expected: true5389 coerces the value to a boolean5390 value: "yes", expected: true5391 coerces the value to a boolean5392 value: false, expected: false5393 coerces the value to a boolean5394 value: "false", expected: false5395 coerces the value to a boolean5396 value: "no", expected: false5397 coerces the value to a boolean5398 value: nil, expected: false5399 coerces the value to a boolean5400 with hostname style access5401 #use_path_style? returns false5402 with AWS credentials5403 is expected to eq "AWS"5404 is expected to equal true5405 is expected to equal false5406 with Google credentials5407 is expected to eq "Google"5408 is expected to equal false5409 is expected to equal true5410 is expected to eq {}5411 with SSE-KMS enabled5412 is expected to equal true5413 is expected to eq "AES256"5414 is expected to eq "arn:aws:12345"5415 is expected to contain exactly "x-amz-server-side-encryption" and "x-amz-server-side-encryption-aws-kms-key-id"5416 with only server side encryption enabled5417 is expected to equal true5418 is expected to eq "AES256"5419 is expected to be nil5420 is expected to eq {"x-amz-server-side-encryption"=>"AES256"}5421 without encryption enabled5422 is expected to equal false5423 is expected to be nil5424 is expected to be nil5425 is expected to eq {}5426 with object storage disabled5427 is expected to equal false5428AnalyticsBuildEntity5429 build with an author5430 contains the URL5431 contains the author5432 contains the project path5433 contains the namespace full path5434 does not contain sensitive information5435 contains the right started at5436 contains the duration5437 no started at or finished at date5438 does not blow up5439 shows the right message5440 shows the right total time5441 no started at date5442 does not blow up5443 shows the right message5444 shows the right total time5445 no finished at date5446 does not blow up5447 shows the right message5448 shows the right total time5449Gitlab::GithubImport::Representation::PullRequest5450 .from_api_response5451 does not set the user if the response did not include a user5452 behaves like a PullRequest5453 returns an instance of PullRequest5454 the returned PullRequest5455 includes the pull request number5456 includes the pull request title5457 includes the pull request description5458 includes the source branch name5459 includes the source branch SHA5460 includes the target branch name5461 includes the target branch SHA5462 includes the milestone number5463 includes the user details5464 includes the assignee details5465 includes the created timestamp5466 includes the updated timestamp5467 includes the merged timestamp5468 includes the source repository ID5469 includes the target repository ID5470 includes the source repository owner name5471 includes the pull request state5472 .from_json_hash5473 does not convert the author if it was not specified5474 behaves like a PullRequest5475 returns an instance of PullRequest5476 the returned PullRequest5477 includes the pull request number5478 includes the pull request title5479 includes the pull request description5480 includes the source branch name5481 includes the source branch SHA5482 includes the target branch name5483 includes the target branch SHA5484 includes the milestone number5485 includes the user details5486 includes the assignee details5487 includes the created timestamp5488 includes the updated timestamp5489 includes the merged timestamp5490 includes the source repository ID5491 includes the target repository ID5492 includes the source repository owner name5493 includes the pull request state5494 #state5495 returns :opened for an open pull request5496 returns :closed for a closed pull request5497 returns :merged for a merged pull request5498 #cross_project?5499 returns false for a pull request submitted from the target project5500 returns true for a pull request submitted from a different project5501 returns true if no source repository is present5502 #formatted_source_branch5503 for a cross-project pull request5504 includes the owner name in the branch name5505 for a regular pull request5506 returns the source branch name5507 for a pull request with the same source and target branches5508 returns a generated source branch name5509 #truncated_title5510 truncates the title to 255 characters5511 does not truncate the title if it is shorter than 255 characters5512 #github_identifiers5513 returns a hash with needed identifiers5514Gitlab::Ci::Status::Build::Cancelable5515 #text5516 does not override status text5517 #icon5518 does not override status icon5519 #label5520 does not override status label5521 #group5522 does not override status group5523 #status_tooltip5524 does not override status status_tooltip5525 #badge_tooltip5526 returns the status5527 action details5528 #has_action?5529 when user is allowed to update build5530 is expected to have action5531 when user is not allowed to update build5532 is expected not to have action5533 #action_path5534 is expected to include "163/cancel"5535 #action_icon5536 is expected to eq "cancel"5537 #action_title5538 is expected to eq "Cancel"5539 #action_button_title5540 is expected to eq "Cancel this job"5541 .matches?5542 when build is cancelable5543 is a correct match5544 when build is not cancelable5545 does not match5546Enumerator#next patch fix5547 Enumerator5548 #next5549 normal yield5550 returns yielded value5551 end of iteration5552 does not fix up StopIteration5553 nested enum object5554 fixes up StopIteration thrown by another instance of #next5555 arguments error5556 does not fix up ArgumentError5557 error5558 fixes up StopIteration5559 fixes up ArgumentError5560 adds backtrace from other errors5561 #next_values5562 normal yield5563 returns yielded value5564 end of iteration5565 does not fix up StopIteration5566 nested enum object5567 fixes up StopIteration thrown by another instance of #next5568 arguments error5569 does not fix up ArgumentError5570 error5571 fixes up StopIteration5572 fixes up ArgumentError5573 adds backtrace from other errors5574 #peek5575 normal yield5576 returns yielded value5577 end of iteration5578 does not fix up StopIteration5579 nested enum object5580 fixes up StopIteration thrown by another instance of #next5581 arguments error5582 does not fix up ArgumentError5583 error5584 fixes up StopIteration5585 fixes up ArgumentError5586 adds backtrace from other errors5587 #peek_values5588 normal yield5589 returns yielded value5590 end of iteration5591 does not fix up StopIteration5592 nested enum object5593 fixes up StopIteration thrown by another instance of #next5594 arguments error5595 does not fix up ArgumentError5596 error5597 fixes up StopIteration5598 fixes up ArgumentError5599 adds backtrace from other errors5600DesignManagement::DesignPolicy5601 when DesignManagement is not enabled5602 behaves like design abilities not available5603 for owners5604 is expected to be disallowed :read_design, :create_design, :destroy_design, and :move_design5605 for admins5606 is expected to be disallowed :read_design, :create_design, :destroy_design, and :move_design5607 for maintainers5608 is expected to be disallowed :read_design, :create_design, :destroy_design, and :move_design5609 for developers5610 is expected to be disallowed :read_design, :create_design, :destroy_design, and :move_design5611 for reporters5612 is expected to be disallowed :read_design, :create_design, :destroy_design, and :move_design5613 for guests5614 is expected to be disallowed :read_design, :create_design, :destroy_design, and :move_design5615 for anonymous users5616 is expected to be disallowed :read_design, :create_design, :destroy_design, and :move_design5617 when the feature is available5618 behaves like design abilities available for members5619 for owners5620 is expected to be allowed :read_design, :create_design, :destroy_design, and :move_design5621 for admins5622 when admin mode enabled5623 is expected to be allowed :read_design, :create_design, :destroy_design, and :move_design5624 when admin mode disabled5625 behaves like read-only design abilities5626 is expected to be allowed :read_design5627 is expected to be disallowed :create_design, :destroy_design, and :move_design5628 for maintainers5629 is expected to be allowed :read_design, :create_design, :destroy_design, and :move_design5630 for developers5631 is expected to be allowed :read_design, :create_design, :destroy_design, and :move_design5632 for reporters5633 behaves like read-only design abilities5634 is expected to be allowed :read_design5635 is expected to be disallowed :create_design, :destroy_design, and :move_design5636 for guests in private projects5637 behaves like read-only design abilities5638 is expected to be allowed :read_design5639 is expected to be disallowed :create_design, :destroy_design, and :move_design5640 for anonymous users in public projects5641 behaves like read-only design abilities5642 is expected to be allowed :read_design5643 is expected to be disallowed :create_design, :destroy_design, and :move_design5644 when the issue is confidential5645 behaves like design abilities available for members5646 for owners5647 is expected to be allowed :read_design, :create_design, :destroy_design, and :move_design5648 for admins5649 when admin mode enabled5650 is expected to be allowed :read_design, :create_design, :destroy_design, and :move_design5651 when admin mode disabled5652 behaves like read-only design abilities5653 is expected to be allowed :read_design5654 is expected to be disallowed :create_design, :destroy_design, and :move_design5655 for maintainers5656 is expected to be allowed :read_design, :create_design, :destroy_design, and :move_design5657 for developers5658 is expected to be allowed :read_design, :create_design, :destroy_design, and :move_design5659 for reporters5660 behaves like read-only design abilities5661 is expected to be allowed :read_design5662 is expected to be disallowed :create_design, :destroy_design, and :move_design5663 for guests5664 is expected to be disallowed :read_design, :create_design, :destroy_design, and :move_design5665 for anonymous users5666 is expected to be disallowed :read_design, :create_design, :destroy_design, and :move_design5667 when the project is archived5668 behaves like read-only design abilities5669 is expected to be allowed :read_design5670 is expected to be disallowed :create_design, :destroy_design, and :move_design5671WikiPages::UpdateService5672 behaves like WikiPages::UpdateService#execute5673DEPRECATION WARNING: `.reorder(nil)` with `.first` / `.first!` no longer takes non-deterministic result in Rails 6.2. To continue taking non-deterministic result, use `.take` / `.take!` instead. (called from wiki_event at /builds/gitlab-org/gitlab/app/services/event_create_service.rb:151)5674 updates the wiki page5675 executes webhooks5676DEPRECATION WARNING: `.reorder(nil)` with `.first` / `.first!` no longer takes non-deterministic result in Rails 6.2. To continue taking non-deterministic result, use `.take` / `.take!` instead. (called from wiki_event at /builds/gitlab-org/gitlab/app/services/event_create_service.rb:151)5677 counts edit events5678 the page is at the top level5679DEPRECATION WARNING: `.reorder(nil)` with `.first` / `.first!` no longer takes non-deterministic result in Rails 6.2. To continue taking non-deterministic result, use `.take` / `.take!` instead. (called from wiki_event at /builds/gitlab-org/gitlab/app/services/event_create_service.rb:151)5680 adds a new wiki page activity event5681 the page is in a subsection5682DEPRECATION WARNING: `.reorder(nil)` with `.first` / `.first!` no longer takes non-deterministic result in Rails 6.2. To continue taking non-deterministic result, use `.take` / `.take!` instead. (called from wiki_event at /builds/gitlab-org/gitlab/app/services/event_create_service.rb:151)5683 adds a new wiki page activity event5684 when the options are bad5685 does not count an edit event5686 does not record the activity5687 reports the error5688 #execute5689 when wiki create fails due to git error5690 catches the thrown error and returns a ServiceResponse error5691Gitlab::X509::Signature5692 commit signature5693 verified signature5694 with trusted certificate store5695 behaves like a verified signature5696 returns a verified signature if email does match5697 returns an unverified signature if email does not match5698 returns an unverified signature if email does match and time is wrong5699 returns an unverified signature if certificate is revoked5700 if the email matches but isn't confirmed5701 returns an unverified signature5702 with the certificate defined by OpenSSL::X509::DEFAULT_CERT_FILE5703 behaves like a verified signature5704 returns a verified signature if email does match5705 returns an unverified signature if email does not match5706 returns an unverified signature if email does match and time is wrong5707 returns an unverified signature if certificate is revoked5708 if the email matches but isn't confirmed5709 returns an unverified signature5710 without trusted certificate within store5711 returns an unverified signature5712 invalid signature5713 returns nil5714 invalid commit message5715 returns nil5716 certificate_crl5717 valid crlDistributionPoints5718 creates an issuer5719 valid crlDistributionPoints providing multiple http URIs5720 extracts the first URI5721 email5722 subjectAltName with email, othername5723 extracts email5724 subjectAltName with othername, email5725 extracts email5726 #user5727 if email is not assigned to a user, return nil5728 if email is assigned to a user5729 returns user5730 tag signature5731 verified signature5732 with trusted certificate store5733 returns an unverified signature if the email matches but is not confirmed5734 when user email is confirmed5735 returns a verified signature if email does match5736 returns an unverified signature if email does not match5737 returns an unverified signature if email does match and time is wrong5738 returns an unverified signature if certificate is revoked5739 without trusted certificate within store5740 returns an unverified signature5741 invalid signature5742 returns nil5743 invalid message5744 returns nil5745bin/feature-flag5746 FeatureFlagCreator5747 properly creates a feature flag5748 when running on master5749 requires feature branch5750 validates feature flag name5751 argv: [".invalid.feature.flag"], ex: /Provide a name for the feature flag that is/5752 is expected to raise /Provide a name for the feature flag that is/5753 argv: ["existing-feature-flag"], ex: /already exists!/5754 is expected to raise /already exists!/5755 FeatureFlagOptionParser5756 .parse5757 missing feature flag name5758 parses -h5759 param: :name, argv: ["foo"], result: "foo"5760 is expected to eq "foo"5761 param: :amend, argv: ["foo", "--amend"], result: true5762 is expected to eq true5763 param: :force, argv: ["foo", "-f"], result: true5764 is expected to eq true5765 param: :force, argv: ["foo", "--force"], result: true5766 is expected to eq true5767 param: :ee, argv: ["foo", "-e"], result: true5768 is expected to eq true5769 param: :ee, argv: ["foo", "--ee"], result: true5770 is expected to eq true5771 param: :introduced_by_url, argv: ["foo", "-m", "https://url"], result: "https://url"5772 is expected to eq "https://url"5773 param: :introduced_by_url, argv: ["foo", "--introduced-by-url", "https://url"], result: "https://url"5774 is expected to eq "https://url"5775 param: :rollout_issue_url, argv: ["foo", "-i", "https://url"], result: "https://url"5776 is expected to eq "https://url"5777 param: :rollout_issue_url, argv: ["foo", "--rollout-issue-url", "https://url"], result: "https://url"5778 is expected to eq "https://url"5779 param: :dry_run, argv: ["foo", "-n"], result: true5780 is expected to eq true5781 param: :dry_run, argv: ["foo", "--dry-run"], result: true5782 is expected to eq true5783 param: :type, argv: ["foo", "-t", "development"], result: :development5784 is expected to eq :development5785 param: :type, argv: ["foo", "--type", "development"], result: :development5786 is expected to eq :development5787 param: :type, argv: ["foo", "-t", "invalid"], result: nil5788 is expected to eq nil5789 param: :type, argv: ["foo", "--type", "invalid"], result: nil5790 is expected to eq nil5791 param: :group, argv: ["foo", "-g", "group::memory"], result: "group::memory"5792 is expected to eq "group::memory"5793 param: :group, argv: ["foo", "--group", "group::memory"], result: "group::memory"5794 is expected to eq "group::memory"5795 param: :group, argv: ["foo", "-g", "invalid"], result: nil5796 is expected to eq nil5797 param: :group, argv: ["foo", "--group", "invalid"], result: nil5798 is expected to eq nil5799 .read_type5800 when there is only a single type defined5801 returns that type5802 when there is deprecated feature flag type5803 and deprecated type is given5804 shows error message and retries5805 when there are many types defined5806 reads type from stdin5807 when invalid type is given5808 shows error message and retries5809 .read_group5810 reads type from stdin5811 invalid group given5812 shows error message and retries5813 .read_introduced_by_url5814 reads type from stdin5815 empty URL given5816 skips entry5817 invalid URL given5818 shows error message and retries5819 .read_rollout_issue_url5820 reads type from stdin5821 invalid URL given5822 shows error message and retries5823 .read_ee_only5824 is expected to eq false5825Users::InProductMarketingEmail5826 associations5827 is expected to belong to user required: false5828 validations5829 is expected to validate that :user cannot be empty/falsy5830 for a track+series email5831 is expected to validate that :track cannot be empty/falsy5832 is expected to validate that :series cannot be empty/falsy5833 is expected to validate that :user_id is case-sensitively unique within the scope of :track and :series, producing a custom validation error on failure5834 for a campaign email5835 is expected to validate that :campaign cannot be empty/falsy5836 is expected not to validate that :track cannot be empty/falsy5837 is expected not to validate that :series cannot be empty/falsy5838 is expected to validate that :user_id is case-sensitively unique within the scope of :campaign, producing a custom validation error on failure5839 is expected to validate that :campaign is ‹"build_ios_app_guide"›5840 when mixing campaign and track+series5841 is not valid5842 .without_track_and_series5843 when given track and series already exists5844 is expected to be empty5845 when track does not exist5846 is expected to eq [#<User id:2246 @user1305>]5847 when series does not exist5848 is expected to eq [#<User id:2246 @user1305>]5849 when no track or series for a user exists5850 is expected to eq [#<User id:2247 @user1306>]5851 .without_campaign5852 when record for campaign already exists5853 is expected to contain exactly #<User id:2249 @user1308>5854 when record for campaign does not exist5855 is expected to contain exactly #<User id:2248 @user1307> and #<User id:2249 @user1308>5856 .for_user_with_track_and_series5857 when record for user with given track and series exists5858 is expected to eq #<Users::InProductMarketingEmail id: 16, user_id: 2250, cta_clicked_at: nil, track: "create", series:...2-06-29 20:23:44.965222681 +0000", updated_at: "2022-06-29 20:23:44.965222681 +0000", campaign: nil>5859 when user is different5860 is expected to be nil5861 when track is different5862 is expected to be nil5863 when series is different5864 is expected to be nil5865 .save_cta_click5866 when there is no record5867 does not error5868 when there is no record for the track and series5869 does not perform an update5870 when there is a record for the track and series5871 saves the cta click date5872 cta_clicked_at is already set5873 does not update5874 .ACTIVE_TRACKS5875 has an entry for every track5876 does not include INACTIVE_TRACK_NAMES5877WorkItems::TaskListReferenceRemovalService5878 #execute5879 when task mardown spans a single line5880 behaves like successful work item task reference removal service5881 is expected to be success5882 removes the task list item containing the task reference5883 creates system notes5884 when description does not contain a task5885 behaves like failing work item task reference removal service5886 is expected to be error5887 does not change the work item description5888 returns an error message5889 when description reference does not exactly match the task reference5890 behaves like failing work item task reference removal service5891 is expected to be error5892 does not change the work item description5893 returns an error message5894 when task mardown spans multiple lines5895 behaves like successful work item task reference removal service5896 is expected to be success5897 removes the task list item containing the task reference5898 creates system notes5899 when updating the work item fails5900 behaves like failing work item task reference removal service5901 is expected to be error5902 does not change the work item description5903 returns an error message5904 when description is empty5905 behaves like failing work item task reference removal service5906 is expected to be error5907 does not change the work item description5908 returns an error message5909 when line_number_start is lower than 15910 behaves like failing work item task reference removal service5911 is expected to be error5912 does not change the work item description5913 returns an error message5914 when line_number_end is lower than line_number_start5915 behaves like failing work item task reference removal service5916 is expected to be error5917 does not change the work item description5918 returns an error message5919 when lock_version is older than current5920 behaves like failing work item task reference removal service5921 is expected to be error5922 does not change the work item description5923 returns an error message5924 when work item is stale before updating5925 behaves like failing work item task reference removal service5926 is expected to be error5927 does not change the work item description5928 returns an error message5929Projects::LfsPointers::LfsObjectDownloadListService5930 #execute5931 when no lfs pointer is linked5932 retrieves all lfs pointers in the project repository5933 when no LFS objects exist5934 retrieves all LFS objects5935 when some LFS objects already exist5936 retrieves the download links of non-existent objects5937 when lfsconfig file exists5938 when url points to the same import url host5939 downloads lfs object using the new endpoint5940 when import url has credentials5941 adds the credentials to the new endpoint5942 when url has its own credentials5943 does not add the import url credentials5944 when url points to a third party service5945 disables lfs from the project5946 does not download anything5947 #default_endpoint_uri5948 adds suffix .git if the url does not have it5949Packages::Conan::Metadatum5950 relationships5951 is expected to belong to package required: false5952 validations5953 is expected to validate that :package cannot be empty/falsy5954 is expected to validate that :package_username cannot be empty/falsy5955 is expected to validate that :package_channel cannot be empty/falsy5956 #package_username5957 is expected to allow :package_username to be ‹"my-package+username"›5958 is expected to allow :package_username to be ‹"my_package.username"›5959 is expected to allow :package_username to be ‹"_my-package.username123"›5960 is expected to allow :package_username to be ‹"my"›5961 is expected not to allow :package_username to be ‹"+my_package"›5962 is expected not to allow :package_username to be ‹".my_package"›5963 is expected not to allow :package_username to be ‹"-my_package"›5964 is expected not to allow :package_username to be ‹"m"›5965 is expected not to allow :package_username to be ‹"f_af_af_af_af_af_af_af_af_af_af_af_af_af_af_af_af_a"›5966 is expected not to allow :package_username to be ‹"my/package"›5967 is expected not to allow :package_username to be ‹"my(package)"›5968 is expected not to allow :package_username to be ‹"my@package"›5969 #package_channel5970 is expected to allow :package_channel to be ‹"beta"›5971 is expected to allow :package_channel to be ‹"stable+1.0"›5972 is expected to allow :package_channel to be ‹"my"›5973 is expected to allow :package_channel to be ‹"my_channel.beta"›5974 is expected to allow :package_channel to be ‹"_my-channel.beta123"›5975 is expected not to allow :package_channel to be ‹"+my_channel"›5976 is expected not to allow :package_channel to be ‹".my_channel"›5977 is expected not to allow :package_channel to be ‹"-my_channel"›5978 is expected not to allow :package_channel to be ‹"m"›5979 is expected not to allow :package_channel to be ‹"f_af_af_af_af_af_af_af_af_af_af_af_af_af_af_af_af_a"›5980 is expected not to allow :package_channel to be ‹"my/channel"›5981 is expected not to allow :package_channel to be ‹"my(channel)"›5982 is expected not to allow :package_channel to be ‹"my@channel"›5983 #username_channel_none_values5984 username: "username", channel: "channel", valid: true5985 is expected to eq true5986 username: "username", channel: "_", valid: false5987 is expected to eq false5988 username: "_", channel: "channel", valid: false5989 is expected to eq false5990 username: "_", channel: "_", valid: true5991 is expected to eq true5992 #conan_package_type5993 will not allow a package with a different package_type5994 #recipe5995 returns the recipe5996 #recipe_url5997 returns the recipe url5998 .package_username_from5999 returns the username formatted package path6000 .full_path_from6001 returns the username formatted package path6002 .validate_username_and_channel6003 username: "username", channel: "channel", error_field: nil6004 does not yield the block when there is no error6005 username: "username", channel: "_", error_field: :channel6006 yields the block when there is an error6007 username: "_", channel: "channel", error_field: :username6008 yields the block when there is an error6009 username: "_", channel: "_", error_field: nil6010 does not yield the block when there is no error6011Gitlab::Git::Branch6012 is expected to be a kind of Array6013 is expected to eq 116014 .find6015 when finding branch via branch name6016 returns a branch object6017 when the branch is already a branch6018 returns a branch object6019 #cache_key6020 returns a cache key that changes based on changeable values6021 #size6022 is expected to eq 116023 first branch6024 is expected to eq "feature"6025 is expected to eq "0b4bc9a49b562e85de7cc9e834518ea6828729b9"6026 master branch6027 is expected to eq "4b4918a572fa86f9771e5ba40fbd48e1eb03e2c6"6028 with active, stale and future branches6029 examine if the branch is active or stale6030 #active?6031 is expected to be falsey6032 is expected to be truthy6033 is expected to be truthy6034 #stale?6035 is expected to be truthy6036 is expected to be falsey6037 is expected to be falsey6038 #state6039 is expected to eq :stale6040 is expected to eq :active6041 is expected to eq :active6042Atlassian::JiraConnect::Serializers::BuildEntity6043 when the pipeline does not belong to any Jira issue6044 #issue_keys6045 is empty6046 #to_json6047 can encode the object6048 is invalid, since it has no issue keys6049 when the pipeline does belong to a Jira issue6050 because it belongs to an MR with a jira_branch6051 #issue_keys6052 is not empty6053 #to_json6054 is valid according to the build info schema6055 because it belongs to an MR with a jira_title6056 #issue_keys6057 is not empty6058 #to_json6059 is valid according to the build info schema6060 because it belongs to an MR with a jira_description6061 #issue_keys6062 is not empty6063 #to_json6064 is valid according to the build info schema6065Gitlab::Chat::Responder::Mattermost6066 #send_response6067 sends a response back to Slack6068 #success6069 returns the output for a successful build6070 limits the output to a fixed size6071 does not send a response if the output is empty6072 #failure6073 returns the output for a failed build6074 #scheduled_output6075 returns the output for a scheduled build6076Reenqueuer6077 disables Sidekiq retries6078 behaves like reenqueuer6079 implements lease_timeout6080 uses the :none deduplication strategy6081 #perform6082 tries to obtain a lease6083 behaves like #perform is rate limited to 1 call per6084 when the work finishes in 0 seconds6085 sleeps exactly the minimum duration6086 when the work finishes in 10% of minimum duration6087 sleeps 90% of minimum duration6088 when the work finishes in 90% of minimum duration6089 sleeps 10% of minimum duration6090 when the work finishes exactly at minimum duration6091 does not sleep6092 when the work takes 10% longer than minimum duration6093 does not sleep6094 when the work takes twice as long as minimum duration6095 does not sleep6096 #perform6097 when the lease is available6098 does perform6099 when the lease is taken6100 does not perform6101 when #perform returns truthy6102 reenqueues the worker6103 returns the original value from #perform6104 when #perform returns falsey6105 does not reenqueue the worker6106 returns the original value from #perform6107Reenqueuer::ReenqueuerSleeper6108 behaves like #perform is rate limited to 1 call per6109 when the work finishes in 0 seconds6110 sleeps exactly the minimum duration6111 when the work finishes in 10% of minimum duration6112 sleeps 90% of minimum duration6113 when the work finishes in 90% of minimum duration6114 sleeps 10% of minimum duration6115 when the work finishes exactly at minimum duration6116 does not sleep6117 when the work takes 10% longer than minimum duration6118 does not sleep6119 when the work takes twice as long as minimum duration6120 does not sleep6121 #ensure_minimum_duration6122 when the block completes well before the minimum duration6123 sleeps until the minimum duration6124 when the block completes just before the minimum duration6125 sleeps until the minimum duration6126 when the block completes just after the minimum duration6127 does not sleep6128 when the block completes well after the minimum duration6129 does not sleep6130Grafana::Client6131 #get_dashboard6132 behaves like calls grafana api6133 calls grafana api6134 behaves like no redirects6135 does not follow redirects6136 behaves like handles exceptions6137 HTTParty::Error6138 is expected to raise Grafana::Client::Error with "Error when connecting to Grafana"6139 Net::OpenTimeout6140 is expected to raise Grafana::Client::Error with "Connection to Grafana timed out"6141 SocketError6142 is expected to raise Grafana::Client::Error with "Received SocketError when trying to connect to Grafana"6143 OpenSSL::SSL::SSLError6144 is expected to raise Grafana::Client::Error with "Grafana returned invalid SSL data"6145 Errno::ECONNREFUSED6146 is expected to raise Grafana::Client::Error with "Connection refused"6147 StandardError6148 is expected to raise Grafana::Client::Error with "Grafana request failed due to StandardError"6149 #get_datasource6150 behaves like calls grafana api6151 calls grafana api6152 behaves like no redirects6153 does not follow redirects6154 behaves like handles exceptions6155 HTTParty::Error6156 is expected to raise Grafana::Client::Error with "Error when connecting to Grafana"6157 Net::OpenTimeout6158 is expected to raise Grafana::Client::Error with "Connection to Grafana timed out"6159 SocketError6160 is expected to raise Grafana::Client::Error with "Received SocketError when trying to connect to Grafana"6161 OpenSSL::SSL::SSLError6162 is expected to raise Grafana::Client::Error with "Grafana returned invalid SSL data"6163 Errno::ECONNREFUSED6164 is expected to raise Grafana::Client::Error with "Connection refused"6165 StandardError6166 is expected to raise Grafana::Client::Error with "Grafana request failed due to StandardError"6167 #proxy_datasource6168 behaves like calls grafana api6169 calls grafana api6170 behaves like no redirects6171 does not follow redirects6172 behaves like handles exceptions6173 HTTParty::Error6174 is expected to raise Grafana::Client::Error with "Error when connecting to Grafana"6175 Net::OpenTimeout6176 is expected to raise Grafana::Client::Error with "Connection to Grafana timed out"6177 SocketError6178 is expected to raise Grafana::Client::Error with "Received SocketError when trying to connect to Grafana"6179 OpenSSL::SSL::SSLError6180 is expected to raise Grafana::Client::Error with "Grafana returned invalid SSL data"6181 Errno::ECONNREFUSED6182 is expected to raise Grafana::Client::Error with "Connection refused"6183 StandardError6184 is expected to raise Grafana::Client::Error with "Grafana request failed due to StandardError"6185MergeRequests::HandleAssigneesChangeService6186 #async_execute6187 performs MergeRequests::HandleAssigneesChangeWorker asynchronously6188 #execute6189 creates assignee note6190 sends email notifications to old and new assignees6191 creates pending todo for assignee6192 removes attention requested state6193 tracks users assigned event6194 tracks assignees changed event6195 when unassigning all users6196 creates assignee note6197 when execute_hooks option is set to true6198 executes hooks and integrations6199gitlab:web_hook namespace rake tasks6200 gitlab:web_hook:add6201 adds a web hook to all projects6202 adds a web hook to projects in the specified namespace6203 raises an error if an unknown namespace is specified6204 gitlab:web_hook:rm6205 removes a web hook from all projects by URL6206 removes a web hook from projects in the specified namespace by URL6207 raises an error if an unknown namespace is specified6208 gitlab:web_hook:list6209 lists all web hooks6210 lists web hooks in a particular namespace6211Spam::SpamActionService6212 constructor argument validation6213 when spam_params is nil6214 returns success with a messaage6215 #execute6216 when captcha response verification returns true6217 doesn't check with the SpamVerdictService6218 updates spam log6219 when captcha response verification returns false6220 when spammable attributes have not changed6221 does not create a spam log6222 when spammable attributes have changed6223 when allowlisted6224 does not perform spam check6225 when disallowed by the spam verdict service6226 marks as spam6227 behaves like creates a spam log6228 is expected to eq true6229 spam verdict service advises to block the user6230 marks as spam6231 behaves like creates a spam log6232 is expected to eq true6233 when spam verdict service conditionally allows6234 does not mark as spam6235 marks as needing reCAPTCHA6236 behaves like creates a spam log6237 is expected to eq true6238 when spam verdict service returns OVERRIDE_VIA_ALLOW_POSSIBLE_SPAM6239 does not mark as spam6240 does not mark as needing CAPTCHA6241 behaves like creates a spam log6242 is expected to eq true6243 when spam verdict service allows creation6244 does not create a spam log6245 clears spam flags6246 when spam verdict service returns noop6247 does not create a spam log6248 clears spam flags6249 with spam verdict service options6250 assembles the options with information from the request6251Clusters::AgentTokens::CreateService6252 #execute6253 does not create a new token due to user permissions6254 returns permission errors6255 with user permissions6256 creates a new token6257 returns success status6258 returns token information6259 creates an activity event6260 when params are invalid6261 does not create a new token6262 does not create an activity event6263 returns validation errors6264Gitlab::APIAuthentication::TokenResolver6265 .new6266 with a valid type6267 creates a new instance6268 with an invalid type6269 raises a validation error6270 #resolve6271 with :personal_access_token_with_username6272 with valid credentials6273 behaves like an authorized request6274 returns the correct token6275 with an invalid username6276 behaves like an unauthorized request6277 raises an error6278 with no username6279 behaves like an unauthorized request6280 raises an error6281 with :job_token_with_username6282 with valid credentials6283 behaves like an authorized request6284 returns the correct token6285 when the job is not running6286 behaves like an unauthorized request6287 raises an error6288 with the wrong username6289 behaves like an anoymous request6290 returns nil6291 with an invalid job token6292 behaves like an unauthorized request6293 raises an error6294 with :deploy_token_with_username6295 with a valid deploy token6296 behaves like an authorized request6297 returns the correct token6298 with an invalid username6299 behaves like an unauthorized request6300 raises an error6301 with :personal_access_token6302 with valid credentials6303 behaves like an authorized request6304 returns the correct token6305 with :job_token6306 with valid credentials6307 behaves like an authorized request6308 returns the correct token6309 when the job is not running6310 behaves like an unauthorized request6311 raises an error6312 with an invalid job token6313 behaves like an unauthorized request6314 raises an error6315 with :deploy_token6316 with a valid deploy token6317 behaves like an authorized request6318 returns the correct token6319 with :personal_access_token_from_jwt6320 with valid credentials6321 behaves like an authorized request6322 returns the correct token6323 with :deploy_token_from_jwt6324 with valid credentials6325 behaves like an authorized request6326 returns the correct token6327 with :job_token_from_jwt6328 with valid credentials6329 behaves like an authorized request6330 returns the correct token6331 when the job is not running6332 behaves like an unauthorized request6333 raises an error6334 with an invalid job token6335 behaves like an unauthorized request6336 raises an error6337DesignManagement::Action6338 relations6339 is expected to belong to design required: false6340 is expected to belong to version required: false6341 scopes6342 with 3 designs6343 .most_recent6344 finds the correct version for each design6345 .by_design6346 returns the actions by design_id6347 .with_version6348 preloads the version6349 .by_event6350 returns the actions by event type6351 .up_to_version6352 the version is nil6353 returns all design_versions6354 when given a Version instance6355 the version is the most current6356 is expected to have attributes {:size => 6}6357 the version is the oldest6358 is expected to have attributes {:size => 2}6359 the version is the middle one6360 is expected to have attributes {:size => 4}6361 when given a commit SHA6362 the version is the most current6363 is expected to have attributes {:size => 6}6364 the version is the oldest6365 is expected to have attributes {:size => 2}6366 the version is the middle one6367 is expected to have attributes {:size => 4}6368 when given a String that is not a commit SHA6369 is expected to raise ArgumentError6370Gitlab::Ci::Pipeline::Chain::EnsureEnvironments6371 #perform!6372 when a pipeline contains a deployment job6373 ensures environment existence for the job6374 when an environment has already been existed6375 ensures environment existence for the job6376 when an environment name contains an invalid character6377 sets the failure status6378 when a pipeline contains a teardown job6379 ensures environment existence for the job6380 when a pipeline does not contain a deployment job6381 does not create any environments6382Gitlab::Instrumentation::RedisClusterValidator6383 .validate!6384 Rails environments6385 env: "production", should_raise: false6386 is expected not to raise Exception6387 env: "staging", should_raise: false6388 is expected not to raise Exception6389 env: "development", should_raise: true6390 is expected to raise Gitlab::Instrumentation::RedisClusterValidator::CrossSlotError6391 env: "test", should_raise: true6392 is expected to raise Gitlab::Instrumentation::RedisClusterValidator::CrossSlotError6393 command: :rename, arguments: ["foo", "bar"], should_raise: true6394 is expected to raise Gitlab::Instrumentation::RedisClusterValidator::CrossSlotError6395 command: :RENAME, arguments: ["foo", "bar"], should_raise: true6396 is expected to raise Gitlab::Instrumentation::RedisClusterValidator::CrossSlotError6397 command: "rename", arguments: ["foo", "bar"], should_raise: true6398 is expected to raise Gitlab::Instrumentation::RedisClusterValidator::CrossSlotError6399 command: "RENAME", arguments: ["foo", "bar"], should_raise: true6400 is expected to raise Gitlab::Instrumentation::RedisClusterValidator::CrossSlotError6401 command: :rename, arguments: ["iaa", "ahy"], should_raise: false6402 is expected not to raise Exception6403 command: :rename, arguments: ["{foo}:1", "{foo}:2"], should_raise: false6404 is expected not to raise Exception6405 command: :rename, arguments: ["foo", "foo", "bar"], should_raise: false6406 is expected not to raise Exception6407 command: :mget, arguments: ["foo", "bar"], should_raise: true6408 is expected to raise Gitlab::Instrumentation::RedisClusterValidator::CrossSlotError6409 command: :mget, arguments: ["foo", "foo", "bar"], should_raise: true6410 is expected to raise Gitlab::Instrumentation::RedisClusterValidator::CrossSlotError6411 command: :mget, arguments: ["foo", "foo"], should_raise: false6412 is expected not to raise Exception6413 command: :blpop, arguments: ["foo", "bar", "1"], should_raise: true6414 is expected to raise Gitlab::Instrumentation::RedisClusterValidator::CrossSlotError6415 command: :blpop, arguments: ["foo", "foo", "1"], should_raise: false6416 is expected not to raise Exception6417 command: :mset, arguments: ["foo", "a", "bar", "a"], should_raise: true6418 is expected to raise Gitlab::Instrumentation::RedisClusterValidator::CrossSlotError6419 command: :mset, arguments: ["foo", "a", "foo", "a"], should_raise: false6420 is expected not to raise Exception6421 command: :del, arguments: ["foo", "bar"], should_raise: true6422 is expected to raise Gitlab::Instrumentation::RedisClusterValidator::CrossSlotError6423 command: :del, arguments: [["foo", "bar"]], should_raise: true6424 is expected to raise Gitlab::Instrumentation::RedisClusterValidator::CrossSlotError6425 command: :del, arguments: ["foo", "foo"], should_raise: false6426 is expected not to raise Exception6427 command: :hset, arguments: ["foo", "bar"], should_raise: false6428 is expected not to raise Exception6429 command: :mget, arguments: [], should_raise: false6430 is expected not to raise Exception6431 .allow_cross_slot_commands6432 does not raise for invalid arguments6433 allows nested invocation6434Projects::HashedStorage::RollbackAttachmentsService6435 #execute6436 works even when project validation fails6437 when succeeds6438 moves attachments to legacy storage layout6439 returns true6440 sets skipped to false6441 when original folder does not exist anymore6442 skips moving folders and go to next6443 returns true6444 sets skipped to true6445 when target folder already exists6446 raises AttachmentCannotMoveError6447 #old_disk_path6448 returns old disk_path for project6449 #new_disk_path6450 returns new disk_path for project6451Metrics::Dashboard::UpdateDashboardService6452 #execute6453 user does not have push right to repository6454 behaves like misconfigured dashboard service response with stepable6455 returns an appropriate message and status code6456 with rights to push to the repository6457 path traversal attack attempt6458 with a yml extension6459 behaves like misconfigured dashboard service response with stepable6460 returns an appropriate message and status code6461 without a yml extension6462 behaves like misconfigured dashboard service response with stepable6463 returns an appropriate message and status code6464 valid parameters6465 behaves like valid dashboard update process6466 delegates commit creation to Files::UpdateService6467 selected branch already exists6468 behaves like misconfigured dashboard service response with stepable6469 returns an appropriate message and status code6470 Files::UpdateService success6471 returns success6472 when the merge request does not succeed6473 returns an appropriate message and status code6474 with escaped characters in file name6475 escapes the special characters6476 when pushing to the default branch6477 does not create a merge request6478 Files::UpdateService fails6479 returns error6480Ci::DropPipelineService6481 #execute_async_for_all6482 drops only cancelable pipelines asynchronously6483 #execute6484 drops each cancelable build in the pipeline6485 avoids N+1 queries when reading data6486CacheableAttributes6487 .expire6488 wipes the cache6489 .current_without_cache6490 defaults to last6491 can be overridden6492 .cache_key6493 excludes cache attributes6494 .defaults6495 defaults to {}6496 with defaults defined6497 can be overridden6498 .build_from_defaults6499 without any attributes given6500 intializes a new object with the defaults6501 with attributes given6502 intializes a new object with the given attributes merged into the defaults6503 edge cases on concrete implementations6504 .build_from_defaults6505 without any attributes given6506 intializes all attributes even if they are nil6507 .current6508 uses RequestStore in addition to process memory cache6509 redis unavailable6510 in production environment6511 returns an uncached record and logs a warning6512 in other environments6513 returns an uncached record and logs a warning6514 when a record is not yet present6515 does not cache nil object6516 caches non-nil object6517 edge cases6518 caching behavior6519 retrieves upload fields properly6520 retrieves markdown fields properly6521 .cached6522 when cache is cold6523 returns nil6524 when cached is warm6525 retrieves the record from cache6526 #cache!6527 caches the attributes6528 edge cases6529 caches the attributes6530Gitlab::DiscussionsDiff::FileCollection6531 #load_highlight6532 writes uncached diffs highlight6533 does not write cache for already cached file6534 does not write cache for empty mapping6535 does not write cache for resolved notes6536 loaded diff files have highlighted lines loaded6537 not loaded diff files does not have highlighted lines loaded6538Gitlab::Ci::Config::Entry::Service6539 when configuration is a string6540 #valid?6541 is valid6542 #value6543 returns valid hash6544 #image6545 returns service's image name6546 #alias6547 returns service's alias6548 #command6549 returns service's command6550 #ports6551 returns service's ports6552 when configuration is a hash6553 #valid?6554 is valid6555 #value6556 returns valid hash6557 #image6558 returns service's image name6559 #alias6560 returns service's alias6561 #command6562 returns service's command6563 #entrypoint6564 returns service's entrypoint6565 #pull_policy6566 returns nil6567 when configuration has ports6568 when with_image_ports metadata is not enabled6569 #valid?6570 is not valid6571 when with_image_ports metadata is enabled6572 #valid?6573 is valid6574 when unknown port keys detected6575 is not valid6576 #ports6577 returns image's ports6578 when configuration has pull_policy6579 #valid?6580 is valid6581 when the feature flag ci_docker_image_pull_policy is disabled6582 is not valid6583 #value6584 returns value6585 when the feature flag ci_docker_image_pull_policy is disabled6586 is not valid6587 when entry value is not correct6588 #errors6589 saves errors6590 #valid?6591 is not valid6592 when unexpected key is specified6593 #errors6594 saves errors6595 #valid?6596 is not valid6597 when service has ports6598 alias field is mandatory6599 when service does not have ports6600 alias field is optional6601ProjectMemberPresenter6602 #can_resend_invite?6603 when project_member is invited6604 and user can admin_project_member6605 is expected to eq true6606 and user cannot admin_project_member6607 is expected to eq false6608 when project_member is not invited6609 and user can admin_project_member6610 is expected to eq false6611 and user cannot admin_project_member6612 is expected to eq false6613 #can_update?6614 when user can update_project_member6615 is expected to eq true6616 when user cannot update_project_member6617 is expected to eq false6618 #can_remove?6619 when user can destroy_project_member6620 is expected to eq true6621 when user cannot destroy_project_member6622 is expected to eq false6623 #can_approve?6624 when project_member has request an invite6625 and user can update_project_member6626 is expected to eq true6627 and user cannot update_project_member6628 is expected to eq false6629 when project_member did not request an invite6630 and user can update_project_member6631 is expected to eq false6632 and user cannot update_project_member6633 is expected to eq false6634 behaves like #valid_level_roles6635 returns all roles when no parent member is present6636 returns higher roles when a parent member is present6637Gitlab::Ci::RunnerUpgradeCheck6638 #check_runner_upgrade_status6639 with available_runner_releases configured up to 14.1.16640 with nil runner_version6641 returns :invalid6642 with invalid runner_version6643 returns :invalid6644 with Gitlab::VERSION set to 14.1.1236645 with a runner_version that is too recent6646 returns :not_available6647 with Gitlab::VERSION set to 14.0.16648 with valid params6649 runner_version: "v15.0.0", expected_result: :not_available6650 returns symbol representing expected upgrade status6651 runner_version: "v14.1.0-rc3", expected_result: :recommended6652 returns symbol representing expected upgrade status6653 runner_version: "v14.1.0~beta.1574.gf6ea9389", expected_result: :recommended6654 returns symbol representing expected upgrade status6655 runner_version: "v14.1.0/1.1.0", expected_result: :recommended6656 returns symbol representing expected upgrade status6657 runner_version: "v14.1.0", expected_result: :recommended6658 returns symbol representing expected upgrade status6659 runner_version: "v14.0.1", expected_result: :recommended6660 returns symbol representing expected upgrade status6661 runner_version: "v14.0.2", expected_result: :not_available6662 returns symbol representing expected upgrade status6663 runner_version: "v13.10.1", expected_result: :available6664 returns symbol representing expected upgrade status6665 runner_version: "v13.10.1~beta.1574.gf6ea9389", expected_result: :available6666 returns symbol representing expected upgrade status6667 runner_version: "v13.10.1/1.1.0", expected_result: :available6668 returns symbol representing expected upgrade status6669 runner_version: "v13.10.0", expected_result: :recommended6670 returns symbol representing expected upgrade status6671 runner_version: "v13.9.2", expected_result: :recommended6672 returns symbol representing expected upgrade status6673 runner_version: "v13.9.0", expected_result: :recommended6674 returns symbol representing expected upgrade status6675 runner_version: "v13.8.1", expected_result: :recommended6676 returns symbol representing expected upgrade status6677 runner_version: "v11.4.1", expected_result: :recommended6678 returns symbol representing expected upgrade status6679 with Gitlab::VERSION set to 13.9.06680 with valid params6681 runner_version: "v14.0.0", expected_result: :recommended6682 returns symbol representing expected upgrade status6683 runner_version: "v13.10.1", expected_result: :not_available6684 returns symbol representing expected upgrade status6685 runner_version: "v13.10.0", expected_result: :recommended6686 returns symbol representing expected upgrade status6687 runner_version: "v13.9.2", expected_result: :recommended6688 returns symbol representing expected upgrade status6689 runner_version: "v13.9.0", expected_result: :recommended6690 returns symbol representing expected upgrade status6691 runner_version: "v13.8.1", expected_result: :recommended6692 returns symbol representing expected upgrade status6693 runner_version: "v11.4.1", expected_result: :recommended6694 returns symbol representing expected upgrade status6695Spam::AkismetService6696 #spam?6697 behaves like no activity if Akismet is not enabled6698 is automatically false6699 performs no check6700 if Akismet is enabled6701 correctly transforms options for the akismet client, including spelling of referrer key6702 the text is spam6703 is expected to be truthy6704 the text is blatant spam6705 is expected to be truthy6706 the text is not spam6707 is expected to be falsey6708 error handling6709 StandardError other than ArgumentError is raised6710 is expected to be falsey6711 logs an error6712 ArgumentError is raised in dev6713 raises original error6714 #submit_ham6715 behaves like no activity if Akismet is not enabled6716 is automatically false6717 performs no check6718 behaves like false if Akismet is not available6719 if Akismet is not available6720 is expected to be falsey6721 logs an error6722 if Akismet is available6723 is expected to be truthy6724 #submit_spam6725 behaves like no activity if Akismet is not enabled6726 is automatically false6727 performs no check6728 behaves like false if Akismet is not available6729 if Akismet is not available6730 is expected to be falsey6731 logs an error6732 if Akismet is available6733 is expected to be truthy6734Gitlab::Ci::Parsers::Test::Junit6735 #parse!6736 when data is JUnit style XML6737 when there are no <testcases> in <testsuite>6738 ignores the case6739 when there are no <testcases> in <testsuites>6740 ignores the case6741 when there is only one <testsuite> in <testsuites>6742 parses XML and adds a test case to a suite6743 when there is <testcase>6744 and has failure6745 behaves like <testcase> XML parser6746 parses XML and adds a test case to the suite6747 and has failure with no message but has system-err6748 behaves like <testcase> XML parser6749 parses XML and adds a test case to the suite6750 and has error6751 behaves like <testcase> XML parser6752 parses XML and adds a test case to the suite6753 and has error with no message but has system-err6754 behaves like <testcase> XML parser6755 parses XML and adds a test case to the suite6756 and has skipped6757 behaves like <testcase> XML parser6758 parses XML and adds a test case to the suite6759 with an empty double-tag6760 behaves like <testcase> XML parser6761 parses XML and adds a test case to the suite6762 and has an unknown type6763 behaves like <testcase> XML parser6764 parses XML and adds a test case to the suite6765 and has no content6766 behaves like <testcase> XML parser6767 parses XML and adds a test case to the suite6768 PHPUnit6769 parses XML and adds a test case to a suite6770 when there are two test cases6771 parses XML and adds test cases to a suite6772 when there are two test suites6773 parses XML and adds test cases to a suite6774 when number of test cases exceeds the max_test_cases limit6775 and test cases are unique6776 behaves like rejecting too many test cases6777 attaches an error to the TestSuite object6778 and test cases are duplicates6779 behaves like rejecting too many test cases6780 attaches an error to the TestSuite object6781 when data is not JUnit style XML6782 attaches an error to the TestSuite object6783 when data is malformed JUnit XML6784 attaches an error to the TestSuite object6785 returns 0 tests cases6786 returns a failure status6787 when data is not XML6788 attaches an error to the TestSuite object6789 returns 0 tests cases6790 returns a failure status6791 when attachment is specified in failed test case6792 assigns correct attributes to the test case6793 when data contains multiple attachments tag6794 adds the first match attachment to a test case6795 when data does not match attachment tag regex6796 does not add attachment to a test case6797 when attachment is specified in test case with error6798 assigns correct attributes to the test case6799Metrics::UsersStarredDashboardsFinder6800 #execute6801 there are no starred dashboard records6802 returns empty array6803 with annotation records6804 user without read access to project6805 returns empty relation6806 user with read access to project6807 loads starred dashboards6808 when the dashboard_path filter is present6809 loads filtered starred dashboards6810ReleaseSerializer6811 #represent6812 when a single object is being serialized6813 serializes the label object6814 does not expose git-sha as sensitive information6815 when multiple objects are being serialized6816 serializes the array of releases6817gitlab:update_project_templates rake task6818 updates valid project templates6819Mutations::ContainerRepositories::DestroyTags6820 is expected to require graphql authorizations :destroy_container_image6821 #resolve6822 with valid id6823 user_role: :maintainer, shared_examples_name: "destroying container repository tags"6824 behaves like destroying container repository tags6825 destroys the container repository tags6826 creates a package event6827 user_role: :developer, shared_examples_name: "destroying container repository tags"6828 behaves like destroying container repository tags6829 destroys the container repository tags6830 creates a package event6831 user_role: :reporter, shared_examples_name: "denying access to container respository"6832 behaves like denying access to container respository6833 raises an error6834 user_role: :guest, shared_examples_name: "denying access to container respository"6835 behaves like denying access to container respository6836 raises an error6837 user_role: :anonymous, shared_examples_name: "denying access to container respository"6838 behaves like denying access to container respository6839 raises an error6840 with non-existing id6841 behaves like denying access to container respository6842 raises an error6843 with service error6844 is expected to eq {:deleted_tag_names=>[], :errors=>["could not delete tags"]}6845 does not create a package event6846Tooling::Graphql::Docs::Renderer6847 #contents6848 headings6849 contains the expected sections6850 when a field has a list type6851 is expected to include "### `ArrayTest`\n\n#### Fields\n\n| Name | Type | Description |\n| ---- | ---- | ----------- |\n| <a id=\"arraytestfoo\"></a>`foo` | [`[String!]!`](#string) | A description. |\n"6852 a top level query field6853 generates the query with arguments6854 when description does not end with `.`6855 adds the `.` to the end6856 when fields are not defined in alphabetical order6857 lists the fields in alphabetical order6858 when a field has a documentation reference6859 behaves like renders correctly as GraphQL documentation6860 contains the expected section6861 when an argument is deprecated6862 behaves like renders correctly as GraphQL documentation6863 contains the expected section6864 when a field is deprecated6865 behaves like renders correctly as GraphQL documentation6866 contains the expected section6867 when a Query.field is deprecated6868 behaves like renders correctly as GraphQL documentation6869 contains the expected section6870 when a field has an Enumeration type6871 behaves like renders correctly as GraphQL documentation6872 contains the expected section6873 when a field has a global ID type6874 section for IDTest6875 behaves like renders correctly as GraphQL documentation6876 contains the expected section6877 section for UserID6878 behaves like renders correctly as GraphQL documentation6879 contains the expected section6880 when there is a mutation6881 does not render the automatically generated payload type6882 does not render the automatically generated input type as its own section6883 behaves like renders correctly as GraphQL documentation6884 contains the expected section6885 when there is an input type6886 behaves like renders correctly as GraphQL documentation6887 contains the expected section6888 when there is an interface and a union6889 lists the fields correctly, and includes descriptions of all the types6890Import::GitlabProjects::CreateProjectService6891 validation6892 is expected to be valid6893 validates presence of path6894 validates presence of name6895 is invalid if the strategy is invalid6896 #execute6897 creates a project successfully6898 when the project creation raises an error6899 fails to create a project6900 when the validation fail6901 fails to create a project6902 when the project contains multilple errors6903 fails to create a project6904 when the strategy adds project parameters6905 merges the strategy project parameters6906Mutations::Issues::SetLocked6907 is expected to require graphql authorizations :update_issue6908 #resolve6909 behaves like permission level for issue mutation is correctly verified6910 when the user is not a project member6911 behaves like when the user does not have access to the resource6912 raises an error6913 even if assigned to the issue6914 does not modify issue6915 even if author of the issue6916 does not modify issue6917 when the user is a project member6918 with guest role6919 behaves like when the user does not have access to the resource6920 raises an error6921 even if assigned to the issue6922 does not modify issue6923 even if author of the issue6924 does not modify issue6925 when the user can update the issue6926 returns the issue as discussion locked6927 when passing locked as false6928 unlocks the discussion6929Gitlab::Metrics::BootTimeTracker6930 #track_boot_time!6931 when called on puma for the first time6932 set the startup_time6933 records the current process runtime6934 logs the application boot time6935 tracks boot time in a prometheus gauge6936 on subsequent calls6937 does nothing6938 when called on sidekiq for the first time6939 set the startup_time6940 records the current process runtime6941 logs the application boot time6942 tracks boot time in a prometheus gauge6943 on subsequent calls6944 does nothing6945 when called on console for the first time6946 set the startup_time6947 records the current process runtime6948 logs the application boot time6949 tracks boot time in a prometheus gauge6950 on subsequent calls6951 does nothing6952 when called on other runtimes6953 does nothing6954 #startup_time6955 returns 0 when boot time not tracked6956Mutations::ContainerRepositories::Destroy6957 is expected to require graphql authorizations :destroy_container_image6958 #resolve6959 with valid id6960 user_role: :maintainer, shared_examples_name: "destroying the container repository"6961 behaves like destroying the container repository6962 destroys the container repistory6963 user_role: :developer, shared_examples_name: "destroying the container repository"6964 behaves like destroying the container repository6965 destroys the container repistory6966 user_role: :reporter, shared_examples_name: "denying access to container respository"6967 behaves like denying access to container respository6968 raises an error6969 user_role: :guest, shared_examples_name: "denying access to container respository"6970 behaves like denying access to container respository6971 raises an error6972 user_role: :anonymous, shared_examples_name: "denying access to container respository"6973 behaves like denying access to container respository6974 raises an error6975Ci::ExternalPullRequests::CreatePipelineWorker6976 #perform6977 creates the pipeline6978 when the project not found6979 behaves like not calling service6980 does not call the service6981 when the user not found6982 behaves like not calling service6983 does not call the service6984 when the pull request not found6985 behaves like not calling service6986 does not call the service6987 when the pull request does not belong to the project6988 behaves like not calling service6989 does not call the service6990Projects::AlertManagementHelper6991 #alert_management_data6992 without alert_managements_setting6993 returns index page configuration6994 with prometheus integration6995 when manual prometheus integration is active6996 enables alert management6997 when prometheus service is inactive6998 disables alert management6999 with http integration7000 when integration is active7001 enables alert management7002 when integration is inactive7003 disables alert management7004 with an alert7005 enables alert management7006 when user does not have requisite enablement permissions7007 shows error tracking enablement as disabled7008 #alert_management_detail_data7009 returns detail page configuration7010 when user cannot update alert7011 shows error tracking enablement as disabled7012Gitlab::Git::Patches::CommitPatches7013 #commit7014 applies the patches7015 updates the branch cache7016 when the repository does not exist7017 raises the correct error7018 when the patch does not apply7019 raises the correct error7020BlobViewer::MetricsDashboardYml7021 with metrics_dashboard_exhaustive_validations feature flag on7022 when the definition is valid7023 #valid?7024 calls prepare! on the viewer7025 processes dashboard yaml and returns true7026 #errors7027 returns empty array7028 when definition is invalid7029 #valid?7030 returns false7031 #errors7032 returns validation errors7033 when YAML syntax is invalid7034 #valid?7035 returns false7036 #errors7037 returns validation errors7038 when YAML loader raises error7039 is invalid7040 returns validation errors7041 with metrics_dashboard_exhaustive_validations feature flag off7042 when the definition is valid7043 #valid?7044 calls prepare! on the viewer7045 processes dashboard yaml and returns true7046 #errors7047 returns empty array7048 when definition is invalid7049 #valid?7050 returns false7051 #errors7052 returns validation errors7053 when YAML syntax is invalid7054 #valid?7055 returns false7056 #errors7057 returns validation errors7058 when YAML loader raises error7059 is invalid7060 returns validation errors7061Resolvers::LabelsResolver7062 is expected to have nullable GraphQL type LabelConnection7063 #resolve7064 with unauthorized user7065 returns no labels7066 with authorized user7067 returns no labels7068 without parent7069 returns no labels7070 with a parent project7071 include_ancestor_groups: nil, search_term: nil, expected_labels: -> { [label1, label2, subgroup_label1, subgroup_label2] }7072 is expected to contain exactly #<ProjectLabel id:37 group128/group129/project1143~37>, #<ProjectLabel id:38 group128/group129/project1143~38>, #<GroupLabel id:41 ~41>, and #<GroupLabel id:42 ~42>7073 include_ancestor_groups: false, search_term: nil, expected_labels: -> { [label1, label2, subgroup_label1, subgroup_label2] }7074 is expected to contain exactly #<ProjectLabel id:37 group128/group129/project1143~37>, #<ProjectLabel id:38 group128/group129/project1143~38>, #<GroupLabel id:41 ~41>, and #<GroupLabel id:42 ~42>7075 include_ancestor_groups: true, search_term: nil, expected_labels: -> { [label1, label2, group_label1, group_label2, subgroup_label1, subgroup_label2] }7076 is expected to contain exactly #<ProjectLabel id:37 group128/group129/project1143~37>, #<ProjectLabel id:38 group128/group129/project1143~38>, #<GroupLabel id:39 ~39>, #<GroupLabel id:40 ~40>, #<GroupLabel id:41 ~41>, and #<GroupLabel id:42 ~42>7077 include_ancestor_groups: nil, search_term: "new", expected_labels: -> { [label2, subgroup_label2] }7078 is expected to contain exactly #<ProjectLabel id:38 group128/group129/project1143~38> and #<GroupLabel id:42 ~42>7079 include_ancestor_groups: false, search_term: "new", expected_labels: -> { [label2, subgroup_label2] }7080 is expected to contain exactly #<ProjectLabel id:38 group128/group129/project1143~38> and #<GroupLabel id:42 ~42>7081 include_ancestor_groups: true, search_term: "new", expected_labels: -> { [label2, group_label2, subgroup_label2] }7082 is expected to contain exactly #<ProjectLabel id:38 group128/group129/project1143~38>, #<GroupLabel id:40 ~40>, and #<GroupLabel id:42 ~42>7083gitlab:external_diffs rake tasks7084 force_object_storage task7085 forces externally stored merge request diffs to object storage7086 limits batches according to BATCH_SIZE, START_ID, and END_ID7087SentryIssueFinder7088 #execute7089 when the user is not part of the project7090 is expected to be nil7091 when the user is a project developer7092 is expected to eq #<SentryIssue id: 2, issue_id: 161, sentry_issue_identifier: 10000002>7093 when identifier is incorrect7094 is expected to be nil7095 when accessing another projects identifier7096 is expected to be nil7097MergeRequestMetricsHelper7098 #build_metrics7099 when closed and metrics exists7100 does not call the merge request metrics class7101 returns the metrics for the given merge request7102 when merged and metrics exists7103 does not call the merge request metrics class7104 returns the metrics for the given merge request7105 when merged and metrics do not exists7106 rebuilds the merge request metrics7107Packages::Generic::CreatePackageFileService7108 #execute7109 creates package file7110 with a status7111 updates an existing packages status7112 behaves like assigns build to package file7113 with build info7114 assigns the pipeline to the package7115 creates a new PackageFileBuildInfo record7116 with existing package7117 is expected to change `project.package_files.count` by 17118 when duplicates are not allowed7119 does not allow duplicates7120 when the package name matches the exception regex7121 is expected to change `project.package_files.count` by 17122 with multiple files for the same package and the same pipeline7123 creates the build info only once7124Resolvers::BaseResolver7125 .singular_type7126 for a connection of scalars7127 is expected to eq GraphQL::Types::Int7128 for a connection of objects7129 is expected to eq #<Class:0x00007fecdc691268>7130 for a list type7131 is expected to eq GraphQL::Types::String7132 for a scalar type7133 is expected to eq GraphQL::Types::Boolean7134 .single7135 returns a subclass from the resolver7136 has the correct (singular) type7137 returns the same subclass every time7138 returns a resolver that gives the first result from the original resolver7139 .when_single7140 does not apply the block to the resolver7141 applies the block to the single version of the resolver7142 multiple when_single blocks7143 applies both blocks to the single version of the resolver7144 inheritance7145 applies both blocks to the single version of the resolver7146 when the resolver returns early7147 runs correctly in our test framework7148 single selects the first early return value7149 last selects the last early return value7150 .last7151 returns a subclass from the resolver7152 returns the same subclass every time7153 returns a resolver that gives the last result from the original resolver7154 when field is a connection7155 increases complexity based on arguments7156 does not increase complexity when filtering by iids7157 #object7158 returns object7159 when object is a presenter7160 returns presented object7161 #offset_pagination7162 is sugar for OffsetPaginatedRelation.new7163notify/pipeline_failed_email.text.erb7164 when the pipeline contains a failed job7165 behaves like renders the pipeline failed email correctly7166 renders the email correctly7167 behaves like correct pipeline information for pipelines for merge requests7168 when pipeline for merge request7169 renders a source ref of the pipeline7170 when the latest failed job is a bridge job7171 behaves like renders the pipeline failed email correctly7172 renders the email correctly7173 behaves like correct pipeline information for pipelines for merge requests7174 when pipeline for merge request7175 renders a source ref of the pipeline7176JiraConnect::SyncProjectWorker7177 behaves like worker with data consistency7178 .get_data_consistency_feature_flag_enabled?7179 returns true7180 .get_data_consistency7181 returns correct data consistency7182 #perform7183 avoids N+1 database queries7184 sends the request with custom update_sequence_id7185 when the project is not found7186 does not raise an error7187 when the number of merge requests to sync is higher than the limit7188 syncs only the most recent merge requests within the limit7189Gitlab::Usage::ServicePing::PayloadKeysProcessor7190 with an object metric7191 returns the payload keys that have a metric definition7192 with a missing metric definition7193 returns the payload keys that have a metric definition7194 with array metric7195 returns the payload keys that have a metric definition7196 missing_instrumented_metrics_key_paths7197 returns the missing keys7198Ci::PendingBuilds::UpdateGroupWorker7199 #perform7200 when a group is not provided7201 does not call the service7202 when everything is ok7203 calls the service7204 is labeled as idempotent7205 performs multiple times sequentially without raising an exception7206 updates the pending builds7207RepositoryCleanupWorker7208 #perform7209 executes the cleanup service and sends a success notification7210 raises an error if the project cannot be found7211 raises an error if the user cannot be found7212 #sidekiq_retries_exhausted7213 does not send a failure notification for a RecordNotFound error7214 sends a failure notification7215 cleans up the attempt7216Packages::DependencyLink7217 relationships7218 is expected to belong to package required: false inverse_of => dependency_links7219 is expected to belong to dependency required: false inverse_of => dependency_links7220 is expected to have one nuget_metadatum inverse_of => dependency_link7221 validations7222 is expected to validate that :package cannot be empty/falsy7223 is expected to validate that :dependency cannot be empty/falsy7224 package_id and package_dependency_id uniqueness for dependency_type7225 is not valid7226 with multiple links7227 .with_dependency_type7228 returns links of the given type7229 .for_package7230 returns the link for the given package7231Gitlab::Ci::Reports::AccessibilityReportsComparer7232 #status7233 when head report has an error7234 returns status failed7235 when head reports does not have errors7236 returns status success7237 #errors_count7238 when head report has an error7239 returns the number of new errors7240 when head reports does not have an error7241 returns the number new errors7242 #resolved_count7243 when base reports has an error and head has a different error7244 returns the resolved count7245 when base reports has errors head has no errors7246 returns the resolved count7247 when base reports has errors and head has the same error7248 returns zero7249 when base reports does not have errors and head has errors7250 returns the number of resolved errors7251 #total_count7252 when base reports has an error7253 returns zero7254 when head report has an error7255 returns the total count7256 when base report has errors and head report has errors7257 returns the total count7258 when base report has errors and head report has the same error7259 returns the total count7260 #existing_errors7261 when base report has errors and head has a different error7262 returns an empty array7263 when base report does not have errors and head has errors7264 returns an empty array7265 when base report has errors and head report has the same error7266 returns the existing error7267 #new_errors7268 when base reports has errors and head has more errors7269 returns new errors between base and head reports7270 when base reports has an error and head has no errors7271 returns an empty array7272 when base reports does not have errors and head has errors7273 returns the new error7274 #resolved_errors7275 when base report has errors and head has more errors7276 returns an empty array7277 when base reports has errors and head has a different error7278 returns the resolved errors7279 when base reports does not have errors and head has errors7280 returns an empty array7281Ci::GenerateCoverageReportsService7282 #execute7283 when head pipeline has coverage reports7284 returns status and data7285 when head pipeline does not have a coverage report artifact7286 returns status and error message7287 when head pipeline has coverage reports and no merge request associated7288 returns status and error message7289Gitlab::Ci::Pipeline::Chain::Sequence7290 when one of steps breaks the chain7291 does not process the second step7292 returns a pipeline object7293 when all chains are executed correctly7294 iterates through entire sequence7295 returns a pipeline object7296 adds sequence duration to duration histogram7297 adds step sequence duration to duration histogram7298 records pipeline size by pipeline source in a histogram7299 records active jobs by pipeline plan in a histogram7300IdInOrdered7301 Issue7302 .id_in_ordered7303 returns issues matching the ids in the same order as the ids7304 when the ids are not an array of integers7305 raises ArgumentError7306 when an empty array is given7307 does not raise error7308LearnGitlabHelper7309 #learn_gitlab_enabled?7310 onboarding: true, learn_gitlab_available: true, result: true7311 when signed in7312 is expected to eq true7313 onboarding: true, learn_gitlab_available: false, result: false7314 when signed in7315 is expected to eq false7316 onboarding: false, learn_gitlab_available: true, result: false7317 when signed in7318 is expected to eq false7319 when not signed in7320 is expected to eq false7321 #learn_gitlab_data7322DEPRECATION WARNING: The asset "learn_gitlab/pipeline_created.svg" is not present in the asset pipeline.7323Falling back to an asset that may be in the public folder.7324This behavior is deprecated and will be removed.7325To bypass the asset pipeline and preserve this behavior,7326use the `skip_pipeline: true` option.7327 (called from block in onboarding_actions_data at /builds/gitlab-org/gitlab/app/helpers/learn_gitlab_helper.rb:37)7328DEPRECATION WARNING: The asset "learn_gitlab/trial_started.svg" is not present in the asset pipeline.7329Falling back to an asset that may be in the public folder.7330This behavior is deprecated and will be removed.7331To bypass the asset pipeline and preserve this behavior,7332use the `skip_pipeline: true` option.7333 (called from block in onboarding_actions_data at /builds/gitlab-org/gitlab/app/helpers/learn_gitlab_helper.rb:37)7334DEPRECATION WARNING: The asset "learn_gitlab/required_mr_approvals_enabled.svg" is not present in the asset pipeline.7335Falling back to an asset that may be in the public folder.7336This behavior is deprecated and will be removed.7337To bypass the asset pipeline and preserve this behavior,7338use the `skip_pipeline: true` option.7339 (called from block in onboarding_actions_data at /builds/gitlab-org/gitlab/app/helpers/learn_gitlab_helper.rb:37)7340DEPRECATION WARNING: The asset "learn_gitlab/code_owners_enabled.svg" is not present in the asset pipeline.7341Falling back to an asset that may be in the public folder.7342This behavior is deprecated and will be removed.7343To bypass the asset pipeline and preserve this behavior,7344use the `skip_pipeline: true` option.7345 (called from block in onboarding_actions_data at /builds/gitlab-org/gitlab/app/helpers/learn_gitlab_helper.rb:37)7346DEPRECATION WARNING: The asset "learn_gitlab/issue_created.svg" is not present in the asset pipeline.7347Falling back to an asset that may be in the public folder.7348This behavior is deprecated and will be removed.7349To bypass the asset pipeline and preserve this behavior,7350use the `skip_pipeline: true` option.7351 (called from block in onboarding_actions_data at /builds/gitlab-org/gitlab/app/helpers/learn_gitlab_helper.rb:37)7352DEPRECATION WARNING: The asset "learn_gitlab/git_write.svg" is not present in the asset pipeline.7353Falling back to an asset that may be in the public folder.7354This behavior is deprecated and will be removed.7355To bypass the asset pipeline and preserve this behavior,7356use the `skip_pipeline: true` option.7357 (called from block in onboarding_actions_data at /builds/gitlab-org/gitlab/app/helpers/learn_gitlab_helper.rb:37)7358DEPRECATION WARNING: The asset "learn_gitlab/merge_request_created.svg" is not present in the asset pipeline.7359Falling back to an asset that may be in the public folder.7360This behavior is deprecated and will be removed.7361To bypass the asset pipeline and preserve this behavior,7362use the `skip_pipeline: true` option.7363 (called from block in onboarding_actions_data at /builds/gitlab-org/gitlab/app/helpers/learn_gitlab_helper.rb:37)7364DEPRECATION WARNING: The asset "learn_gitlab/user_added.svg" is not present in the asset pipeline.7365Falling back to an asset that may be in the public folder.7366This behavior is deprecated and will be removed.7367To bypass the asset pipeline and preserve this behavior,7368use the `skip_pipeline: true` option.7369 (called from block in onboarding_actions_data at /builds/gitlab-org/gitlab/app/helpers/learn_gitlab_helper.rb:37)7370DEPRECATION WARNING: The asset "learn_gitlab/security_scan_enabled.svg" is not present in the asset pipeline.7371Falling back to an asset that may be in the public folder.7372This behavior is deprecated and will be removed.7373To bypass the asset pipeline and preserve this behavior,7374use the `skip_pipeline: true` option.7375 (called from block in onboarding_actions_data at /builds/gitlab-org/gitlab/app/helpers/learn_gitlab_helper.rb:37)7376 sets correct paths7377DEPRECATION WARNING: The asset "learn_gitlab/pipeline_created.svg" is not present in the asset pipeline.7378Falling back to an asset that may be in the public folder.7379This behavior is deprecated and will be removed.7380To bypass the asset pipeline and preserve this behavior,7381use the `skip_pipeline: true` option.7382 (called from block in onboarding_actions_data at /builds/gitlab-org/gitlab/app/helpers/learn_gitlab_helper.rb:37)7383DEPRECATION WARNING: The asset "learn_gitlab/trial_started.svg" is not present in the asset pipeline.7384Falling back to an asset that may be in the public folder.7385This behavior is deprecated and will be removed.7386To bypass the asset pipeline and preserve this behavior,7387use the `skip_pipeline: true` option.7388 (called from block in onboarding_actions_data at /builds/gitlab-org/gitlab/app/helpers/learn_gitlab_helper.rb:37)7389DEPRECATION WARNING: The asset "learn_gitlab/required_mr_approvals_enabled.svg" is not present in the asset pipeline.7390Falling back to an asset that may be in the public folder.7391This behavior is deprecated and will be removed.7392To bypass the asset pipeline and preserve this behavior,7393use the `skip_pipeline: true` option.7394 (called from block in onboarding_actions_data at /builds/gitlab-org/gitlab/app/helpers/learn_gitlab_helper.rb:37)7395DEPRECATION WARNING: The asset "learn_gitlab/code_owners_enabled.svg" is not present in the asset pipeline.7396Falling back to an asset that may be in the public folder.7397This behavior is deprecated and will be removed.7398To bypass the asset pipeline and preserve this behavior,7399use the `skip_pipeline: true` option.7400 (called from block in onboarding_actions_data at /builds/gitlab-org/gitlab/app/helpers/learn_gitlab_helper.rb:37)7401DEPRECATION WARNING: The asset "learn_gitlab/issue_created.svg" is not present in the asset pipeline.7402Falling back to an asset that may be in the public folder.7403This behavior is deprecated and will be removed.7404To bypass the asset pipeline and preserve this behavior,7405use the `skip_pipeline: true` option.7406 (called from block in onboarding_actions_data at /builds/gitlab-org/gitlab/app/helpers/learn_gitlab_helper.rb:37)7407DEPRECATION WARNING: The asset "learn_gitlab/git_write.svg" is not present in the asset pipeline.7408Falling back to an asset that may be in the public folder.7409This behavior is deprecated and will be removed.7410To bypass the asset pipeline and preserve this behavior,7411use the `skip_pipeline: true` option.7412 (called from block in onboarding_actions_data at /builds/gitlab-org/gitlab/app/helpers/learn_gitlab_helper.rb:37)7413DEPRECATION WARNING: The asset "learn_gitlab/merge_request_created.svg" is not present in the asset pipeline.7414Falling back to an asset that may be in the public folder.7415This behavior is deprecated and will be removed.7416To bypass the asset pipeline and preserve this behavior,7417use the `skip_pipeline: true` option.7418 (called from block in onboarding_actions_data at /builds/gitlab-org/gitlab/app/helpers/learn_gitlab_helper.rb:37)7419DEPRECATION WARNING: The asset "learn_gitlab/user_added.svg" is not present in the asset pipeline.7420Falling back to an asset that may be in the public folder.7421This behavior is deprecated and will be removed.7422To bypass the asset pipeline and preserve this behavior,7423use the `skip_pipeline: true` option.7424 (called from block in onboarding_actions_data at /builds/gitlab-org/gitlab/app/helpers/learn_gitlab_helper.rb:37)7425DEPRECATION WARNING: The asset "learn_gitlab/security_scan_enabled.svg" is not present in the asset pipeline.7426Falling back to an asset that may be in the public folder.7427This behavior is deprecated and will be removed.7428To bypass the asset pipeline and preserve this behavior,7429use the `skip_pipeline: true` option.7430 (called from block in onboarding_actions_data at /builds/gitlab-org/gitlab/app/helpers/learn_gitlab_helper.rb:37)7431 sets correct completion statuses7432 behaves like has all data7433DEPRECATION WARNING: The asset "learn_gitlab/pipeline_created.svg" is not present in the asset pipeline.7434Falling back to an asset that may be in the public folder.7435This behavior is deprecated and will be removed.7436To bypass the asset pipeline and preserve this behavior,7437use the `skip_pipeline: true` option.7438 (called from block in onboarding_actions_data at /builds/gitlab-org/gitlab/app/helpers/learn_gitlab_helper.rb:37)7439DEPRECATION WARNING: The asset "learn_gitlab/trial_started.svg" is not present in the asset pipeline.7440Falling back to an asset that may be in the public folder.7441This behavior is deprecated and will be removed.7442To bypass the asset pipeline and preserve this behavior,7443use the `skip_pipeline: true` option.7444 (called from block in onboarding_actions_data at /builds/gitlab-org/gitlab/app/helpers/learn_gitlab_helper.rb:37)7445DEPRECATION WARNING: The asset "learn_gitlab/required_mr_approvals_enabled.svg" is not present in the asset pipeline.7446Falling back to an asset that may be in the public folder.7447This behavior is deprecated and will be removed.7448To bypass the asset pipeline and preserve this behavior,7449use the `skip_pipeline: true` option.7450 (called from block in onboarding_actions_data at /builds/gitlab-org/gitlab/app/helpers/learn_gitlab_helper.rb:37)7451DEPRECATION WARNING: The asset "learn_gitlab/code_owners_enabled.svg" is not present in the asset pipeline.7452Falling back to an asset that may be in the public folder.7453This behavior is deprecated and will be removed.7454To bypass the asset pipeline and preserve this behavior,7455use the `skip_pipeline: true` option.7456 (called from block in onboarding_actions_data at /builds/gitlab-org/gitlab/app/helpers/learn_gitlab_helper.rb:37)7457DEPRECATION WARNING: The asset "learn_gitlab/issue_created.svg" is not present in the asset pipeline.7458Falling back to an asset that may be in the public folder.7459This behavior is deprecated and will be removed.7460To bypass the asset pipeline and preserve this behavior,7461use the `skip_pipeline: true` option.7462 (called from block in onboarding_actions_data at /builds/gitlab-org/gitlab/app/helpers/learn_gitlab_helper.rb:37)7463DEPRECATION WARNING: The asset "learn_gitlab/git_write.svg" is not present in the asset pipeline.7464Falling back to an asset that may be in the public folder.7465This behavior is deprecated and will be removed.7466To bypass the asset pipeline and preserve this behavior,7467use the `skip_pipeline: true` option.7468 (called from block in onboarding_actions_data at /builds/gitlab-org/gitlab/app/helpers/learn_gitlab_helper.rb:37)7469DEPRECATION WARNING: The asset "learn_gitlab/merge_request_created.svg" is not present in the asset pipeline.7470Falling back to an asset that may be in the public folder.7471This behavior is deprecated and will be removed.7472To bypass the asset pipeline and preserve this behavior,7473use the `skip_pipeline: true` option.7474 (called from block in onboarding_actions_data at /builds/gitlab-org/gitlab/app/helpers/learn_gitlab_helper.rb:37)7475DEPRECATION WARNING: The asset "learn_gitlab/user_added.svg" is not present in the asset pipeline.7476Falling back to an asset that may be in the public folder.7477This behavior is deprecated and will be removed.7478To bypass the asset pipeline and preserve this behavior,7479use the `skip_pipeline: true` option.7480 (called from block in onboarding_actions_data at /builds/gitlab-org/gitlab/app/helpers/learn_gitlab_helper.rb:37)7481DEPRECATION WARNING: The asset "learn_gitlab/security_scan_enabled.svg" is not present in the asset pipeline.7482Falling back to an asset that may be in the public folder.7483This behavior is deprecated and will be removed.7484To bypass the asset pipeline and preserve this behavior,7485use the `skip_pipeline: true` option.7486 (called from block in onboarding_actions_data at /builds/gitlab-org/gitlab/app/helpers/learn_gitlab_helper.rb:37)7487 has all actions7488DEPRECATION WARNING: The asset "learn_gitlab/pipeline_created.svg" is not present in the asset pipeline.7489Falling back to an asset that may be in the public folder.7490This behavior is deprecated and will be removed.7491To bypass the asset pipeline and preserve this behavior,7492use the `skip_pipeline: true` option.7493 (called from block in onboarding_actions_data at /builds/gitlab-org/gitlab/app/helpers/learn_gitlab_helper.rb:37)7494DEPRECATION WARNING: The asset "learn_gitlab/trial_started.svg" is not present in the asset pipeline.7495Falling back to an asset that may be in the public folder.7496This behavior is deprecated and will be removed.7497To bypass the asset pipeline and preserve this behavior,7498use the `skip_pipeline: true` option.7499 (called from block in onboarding_actions_data at /builds/gitlab-org/gitlab/app/helpers/learn_gitlab_helper.rb:37)7500DEPRECATION WARNING: The asset "learn_gitlab/required_mr_approvals_enabled.svg" is not present in the asset pipeline.7501Falling back to an asset that may be in the public folder.7502This behavior is deprecated and will be removed.7503To bypass the asset pipeline and preserve this behavior,7504use the `skip_pipeline: true` option.7505 (called from block in onboarding_actions_data at /builds/gitlab-org/gitlab/app/helpers/learn_gitlab_helper.rb:37)7506DEPRECATION WARNING: The asset "learn_gitlab/code_owners_enabled.svg" is not present in the asset pipeline.7507Falling back to an asset that may be in the public folder.7508This behavior is deprecated and will be removed.7509To bypass the asset pipeline and preserve this behavior,7510use the `skip_pipeline: true` option.7511 (called from block in onboarding_actions_data at /builds/gitlab-org/gitlab/app/helpers/learn_gitlab_helper.rb:37)7512DEPRECATION WARNING: The asset "learn_gitlab/issue_created.svg" is not present in the asset pipeline.7513Falling back to an asset that may be in the public folder.7514This behavior is deprecated and will be removed.7515To bypass the asset pipeline and preserve this behavior,7516use the `skip_pipeline: true` option.7517 (called from block in onboarding_actions_data at /builds/gitlab-org/gitlab/app/helpers/learn_gitlab_helper.rb:37)7518DEPRECATION WARNING: The asset "learn_gitlab/git_write.svg" is not present in the asset pipeline.7519Falling back to an asset that may be in the public folder.7520This behavior is deprecated and will be removed.7521To bypass the asset pipeline and preserve this behavior,7522use the `skip_pipeline: true` option.7523 (called from block in onboarding_actions_data at /builds/gitlab-org/gitlab/app/helpers/learn_gitlab_helper.rb:37)7524DEPRECATION WARNING: The asset "learn_gitlab/merge_request_created.svg" is not present in the asset pipeline.7525Falling back to an asset that may be in the public folder.7526This behavior is deprecated and will be removed.7527To bypass the asset pipeline and preserve this behavior,7528use the `skip_pipeline: true` option.7529 (called from block in onboarding_actions_data at /builds/gitlab-org/gitlab/app/helpers/learn_gitlab_helper.rb:37)7530DEPRECATION WARNING: The asset "learn_gitlab/user_added.svg" is not present in the asset pipeline.7531Falling back to an asset that may be in the public folder.7532This behavior is deprecated and will be removed.7533To bypass the asset pipeline and preserve this behavior,7534use the `skip_pipeline: true` option.7535 (called from block in onboarding_actions_data at /builds/gitlab-org/gitlab/app/helpers/learn_gitlab_helper.rb:37)7536DEPRECATION WARNING: The asset "learn_gitlab/security_scan_enabled.svg" is not present in the asset pipeline.7537Falling back to an asset that may be in the public folder.7538This behavior is deprecated and will be removed.7539To bypass the asset pipeline and preserve this behavior,7540use the `skip_pipeline: true` option.7541 (called from block in onboarding_actions_data at /builds/gitlab-org/gitlab/app/helpers/learn_gitlab_helper.rb:37)7542 has all section data7543DEPRECATION WARNING: The asset "learn_gitlab/pipeline_created.svg" is not present in the asset pipeline.7544Falling back to an asset that may be in the public folder.7545This behavior is deprecated and will be removed.7546To bypass the asset pipeline and preserve this behavior,7547use the `skip_pipeline: true` option.7548 (called from block in onboarding_actions_data at /builds/gitlab-org/gitlab/app/helpers/learn_gitlab_helper.rb:37)7549DEPRECATION WARNING: The asset "learn_gitlab/trial_started.svg" is not present in the asset pipeline.7550Falling back to an asset that may be in the public folder.7551This behavior is deprecated and will be removed.7552To bypass the asset pipeline and preserve this behavior,7553use the `skip_pipeline: true` option.7554 (called from block in onboarding_actions_data at /builds/gitlab-org/gitlab/app/helpers/learn_gitlab_helper.rb:37)7555DEPRECATION WARNING: The asset "learn_gitlab/required_mr_approvals_enabled.svg" is not present in the asset pipeline.7556Falling back to an asset that may be in the public folder.7557This behavior is deprecated and will be removed.7558To bypass the asset pipeline and preserve this behavior,7559use the `skip_pipeline: true` option.7560 (called from block in onboarding_actions_data at /builds/gitlab-org/gitlab/app/helpers/learn_gitlab_helper.rb:37)7561DEPRECATION WARNING: The asset "learn_gitlab/code_owners_enabled.svg" is not present in the asset pipeline.7562Falling back to an asset that may be in the public folder.7563This behavior is deprecated and will be removed.7564To bypass the asset pipeline and preserve this behavior,7565use the `skip_pipeline: true` option.7566 (called from block in onboarding_actions_data at /builds/gitlab-org/gitlab/app/helpers/learn_gitlab_helper.rb:37)7567DEPRECATION WARNING: The asset "learn_gitlab/issue_created.svg" is not present in the asset pipeline.7568Falling back to an asset that may be in the public folder.7569This behavior is deprecated and will be removed.7570To bypass the asset pipeline and preserve this behavior,7571use the `skip_pipeline: true` option.7572 (called from block in onboarding_actions_data at /builds/gitlab-org/gitlab/app/helpers/learn_gitlab_helper.rb:37)7573DEPRECATION WARNING: The asset "learn_gitlab/git_write.svg" is not present in the asset pipeline.7574Falling back to an asset that may be in the public folder.7575This behavior is deprecated and will be removed.7576To bypass the asset pipeline and preserve this behavior,7577use the `skip_pipeline: true` option.7578 (called from block in onboarding_actions_data at /builds/gitlab-org/gitlab/app/helpers/learn_gitlab_helper.rb:37)7579DEPRECATION WARNING: The asset "learn_gitlab/merge_request_created.svg" is not present in the asset pipeline.7580Falling back to an asset that may be in the public folder.7581This behavior is deprecated and will be removed.7582To bypass the asset pipeline and preserve this behavior,7583use the `skip_pipeline: true` option.7584 (called from block in onboarding_actions_data at /builds/gitlab-org/gitlab/app/helpers/learn_gitlab_helper.rb:37)7585DEPRECATION WARNING: The asset "learn_gitlab/user_added.svg" is not present in the asset pipeline.7586Falling back to an asset that may be in the public folder.7587This behavior is deprecated and will be removed.7588To bypass the asset pipeline and preserve this behavior,7589use the `skip_pipeline: true` option.7590 (called from block in onboarding_actions_data at /builds/gitlab-org/gitlab/app/helpers/learn_gitlab_helper.rb:37)7591DEPRECATION WARNING: The asset "learn_gitlab/security_scan_enabled.svg" is not present in the asset pipeline.7592Falling back to an asset that may be in the public folder.7593This behavior is deprecated and will be removed.7594To bypass the asset pipeline and preserve this behavior,7595use the `skip_pipeline: true` option.7596 (called from block in onboarding_actions_data at /builds/gitlab-org/gitlab/app/helpers/learn_gitlab_helper.rb:37)7597 has all project data7598Gitlab::Ci::Config::Entry::Needs7599 validations7600 when entry config value is correct7601 #valid?7602 is expected to be valid7603 when config value has wrong type7604 #valid?7605 is expected not to be valid7606 #errors7607 returns error about incorrect type7608 when wrong needs type is used7609 #valid?7610 is expected not to be valid7611 #errors7612 returns error about incorrect type7613 when wrong needs type is used7614 #valid?7615 is expected not to be valid7616 #errors7617 returns error about incorrect type7618 with too many cross pipeline dependencies7619 #valid?7620 is expected not to be valid7621 #errors7622 returns error about incorrect type7623 .compose!7624 when valid job entries composed7625 #value7626 returns key value7627 behaves like entry with descendant nodes7628 #descendants7629 creates valid descendant nodes7630 with complex job entries composed7631 #value7632 returns key value7633 behaves like entry with descendant nodes7634 #descendants7635 creates valid descendant nodes7636 with mixed job entries composed7637 #value7638 returns key value7639 behaves like entry with descendant nodes7640 #descendants7641 creates valid descendant nodes7642 with empty config7643 #value7644 returns empty value7645Routing::PseudonymizationHelper7646 when url has params to mask7647 with controller for MR7648 behaves like masked url7649 generates masked page url7650 with controller for issue7651 behaves like masked url7652 generates masked page url7653 with controller for groups with subgroups and project7654 behaves like masked url7655 generates masked page url7656 with controller for groups and subgroups7657 behaves like masked url7658 generates masked page url7659 with controller for blob with file path7660 behaves like masked url7661 generates masked page url7662 when assignee_username is present7663 behaves like masked url7664 generates masked page url7665 when author_username is present7666 behaves like masked url7667 generates masked page url7668 when some query params are not required to be masked7669 behaves like masked url7670 generates masked page url7671 when query string has keys with the same names as path params7672 behaves like masked url7673 generates masked page url7674 when url has no params to mask7675 returns unchanged url7676 when it raises exception7677 calls error tracking7678 sends error to sentry and returns nil7679 when feature flag is disabled7680 returns nil7681FileSizeValidator7682 options uses an integer7683 attachment exceeds maximum limit7684 attachment under maximum limit7685 options uses a symbol7686 attachment exceeds maximum limit7687 attachment under maximum limit7688Mutations::AlertManagement::PrometheusIntegration::Create7689 is expected to require graphql authorizations :admin_project7690 #resolve7691 user has access to project7692 when Prometheus Integration already exists7693 returns errors7694 when UpdateService responds with success7695 returns the integration with no errors7696 creates a corresponding token7697 when UpdateService responds with an error7698 returns errors7699 when resource is not accessible to the user7700 raises an error if the resource is not accessible to the user7701Types::QueryType7702 is called Query7703 has the expected fields7704 namespace field7705 finds namespaces by full path7706 project field7707 finds projects by full path7708 metadata field7709 returns metadata7710 issue field7711 finds an issue by it's gid7712 merge_request field7713 finds a merge_request by it's gid7714 usage_trends_measurements field7715 returns usage trends measurements7716 runner field7717 is expected to have graphql type Types::Ci::RunnerType7718 runners field7719 is expected to have graphql type #<Class:0x00007fed0b700968>7720 runner_platforms field7721 returns runner platforms7722 runner_setup field7723 returns runner setup instructions7724 container_repository field7725 is expected to have graphql type Types::ContainerRepositoryDetailsType7726 package field7727 is expected to have graphql type Types::Packages::PackageDetailsType7728 timelogs field7729 returns timelogs7730 boardList field7731 finds a board list by its gid7732MergeRequests::AddContextService7733 #execute7734 when admin mode is enabled7735 adds context commit7736 when admin mode is disabled7737 doesn't add context commit7738 when user doesn't have permission to update merge request7739 doesn't add context commit7740 when the commits array is empty7741 doesn't add context commit7742Gitlab::GlRepository7743 .parse7744 parses a project gl_repository7745 parses a project wiki gl_repository7746 parses a snippet gl_repository7747 parses a design gl_repository7748 throws an argument error on an invalid gl_repository type7749 throws an argument error on an invalid gl_repository id7750Participable7751 .participant7752 adds the participant attributes to the existing list7753 #participants7754 returns the list of participants7755 caches the list of filtered participants7756 supports attributes returning another Participable7757 when using a Proc as an attribute7758 calls the supplied Proc7759 participable is a personal snippet7760 returns the list of participants7761 #visible_participants7762 returns the list of participants7763 when Participable is not readable by the user7764 does not return unavailable participants7765 #participant?7766 returns whether the user is a participant7767 caches the list of raw participants7768 participable is a personal snippet7769 returns whether the user is a participant7770Gitlab::Auth::Crowd::Authentication7771 login7772 finds the user if authentication is successful7773 is false if the user does not exist7774 is false if the authentication fails7775 fails when crowd is disabled7776 fails if no login is supplied7777 fails if no password is supplied7778BlameHelper7779 #get_age_map_start_date7780 returns the earliest date from a blame group7781 returns the earliest date from a project7782 #age_map_class7783 returns blame-commit-age-9 when oldest7784 returns blame-commit-age-0 class when newest7785 when called on the same day as project creation7786 returns blame-commit-age-0 class7787Resolvers::Projects::JiraProjectsResolver7788 is expected to have nullable GraphQL type JiraProjectConnection7789 #resolve7790 when project has no Jira service7791 when user is a maintainer7792 behaves like no project service access7793 generates an error7794 when project has Jira service7795 when user is a developer7796 behaves like no project service access7797 generates an error7798 when user is a maintainer7799 when Jira connection is valid7800 returns Jira projects7801 when filtering projects by name7802 returns Jira projects7803 when Jira connection is not valid7804 generates a failure error7805Ci::CompareTestReportsService7806 #execute7807 when head pipeline has test reports7808 returns status and data7809 when base and head pipelines have test reports7810 returns status and data7811 when head pipeline has corrupted test reports7812 returns a parsed TestReports success status and failure on the individual suite7813 test failure history7814 loads recent failures on limited test cases to avoid building up a huge DB query7815UserPresenter7816 #web_path7817 is expected to eq "/user1457"7818 #web_url7819 is expected to eq "http://localhost/user1457"7820 Gitpod7821 Gitpod enabled for application7822 #preferences_gitpod_path7823 is expected to eq "/-/profile/preferences#user_gitpod_enabled"7824 #profile_enable_gitpod_path7825 is expected to eq "/-/profile?user%5Bgitpod_enabled%5D=true"7826 Gitpod disabled for application7827 #preferences_gitpod_path7828 is expected to eq nil7829 #profile_enable_gitpod_path7830 is expected to eq nil7831 #saved_replies7832 when feature is disabled7833 is expected to eq #<ActiveRecord::Relation []>7834 when feature is enabled7835 when user has no permission to read saved replies7836 is expected to eq #<ActiveRecord::Relation []>7837 when user has permission to read saved replies7838 is expected to eq [#<Users::SavedReply id: 1, user_id: 2547, created_at: "2022-06-29 20:27:16.993887207 +0000", updated_at: "2022-06-29 20:27:16.993887207 +0000", name: "saved_reply_1", content: [FILTERED]>]7839GitlabScriptTagHelper7840 external script tag7841DEPRECATION WARNING: The asset "test.js" is not present in the asset pipeline.7842Falling back to an asset that may be in the public folder.7843This behavior is deprecated and will be removed.7844To bypass the asset pipeline and preserve this behavior,7845use the `skip_pipeline: true` option.7846 (called from javascript_include_tag at /builds/gitlab-org/gitlab/app/helpers/gitlab_script_tag_helper.rb:10)7847 returns a script tag with defer=true and a nonce7848 inline script tag7849 returns a script tag with a nonce using block syntax7850 returns a script tag with a nonce using block syntax with options7851 returns a script tag with a nonce using argument syntax7852 returns a script tag with a nonce using argument syntax with options7853 returns a script tag with a nonce using argument and block syntax with options7854 #preload_link_tag7855 returns a link tag with a nonce7856Integrations::ChatMessage::WikiPageMessage7857 behaves like Integrations::ChatMessage7858 when input contains link markup7859 strips all link markup characters7860 without markdown7861 #pretext7862 when :action == "create"7863 returns a message that a new wiki page was created7864 when :action == "update"7865 returns a message that a wiki page was updated7866 #attachments7867 when :action == "create"7868 returns the commit message for a new wiki page7869 when :action == "update"7870 returns the commit message for an updated wiki page7871 with markdown7872 #pretext7873 when :action == "create"7874 returns a message that a new wiki page was created7875 when :action == "update"7876 returns a message that a wiki page was updated7877 #attachments7878 when :action == "create"7879 returns the commit message for a new wiki page7880 when :action == "update"7881 returns the commit message for an updated wiki page7882 #activity7883 when :action == "create"7884 returns the attachment for a new wiki page7885 when :action == "update"7886 returns the attachment for an updated wiki page7887BulkImports::CreatePipelineTrackersService7888 #execute!7889 when entity is group7890 creates trackers for group entity7891 when entity is project7892 creates trackers for project entity7893 when tracker configuration has a minimum version defined7894 when the source instance version is older than the tracker mininum version7895 creates trackers as skipped if version requirement does not meet7896 logs an info message for the skipped pipelines7897 when the source instance version is undefined7898 creates trackers as created7899 when tracker configuration has a maximum version defined7900 when the source instance version is older than the tracker maximum version7901 creates trackers as skipped if version requirement does not meet7902 when the source instance version is a patch version7903 creates trackers with the same status as the non-patch source version7904ResourceEvents::ChangeLabelsService7905 .change_labels7906 expires resource note etag cache7907 when adding a label7908 creates new label event7909 when removing a label7910 creates new label event7911 when both adding and removing labels7912 creates all label events in a single query7913 usage data7914 when resource is an issue7915 tracks changed labels7916 when resource is a merge request7917 does not track changed labels7918Packages::Debian::ProjectComponent7919 behaves like Debian Distribution Component7920 relationships7921 is expected to belong to distribution class_name => Packages::Debian::ProjectDistribution required: false inverse_of => components7922 is expected to have many files class_name => Packages::Debian::ProjectComponentFile inverse_of => component7923 validations7924 #distribution7925 is expected to validate that :distribution cannot be empty/falsy7926 #name7927 is expected to validate that :name cannot be empty/falsy7928 is expected to allow :name to be ‹"main"›7929 is expected to allow :name to be ‹"non-free"›7930 is expected to allow :name to be ‹"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"›7931 is expected not to allow :name to be ‹"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"›7932 is expected not to allow :name to be ‹"non/free"›7933 is expected not to allow :name to be ‹"hé"›7934 scopes7935 .ordered_by_name7936 sorts by name7937 .with_distribution7938 does not return other distributions7939 .with_name7940 does not return other distributions7941Atlassian::JiraConnect::Jwt::Symmetric7942 #iss_claim7943 is expected to eq "123"7944 invalid JWT7945 is expected to eq nil7946 #sub_claim7947 is expected to eq "123"7948 invalid JWT7949 is expected to eq nil7950 #valid?7951 invalid JWT7952 is expected to eq false7953 valid JWT7954 is expected to eq true7955 #verify_qsh_claim7956 is expected to eq true7957 qsh does not match7958 is expected to eq false7959 creating query string hash raises an error7960 is expected to eq false7961 #verify_context_qsh_claim7962 is expected to eq true7963 jwt does not contain a context qsh7964 is expected to eq false7965Gitlab::Pagination::OffsetHeaderBuilder7966 pagination7967 returns correct result for the first page7968 returns correct result for the second page7969 pagination heders7970 adds next page header7971 adds only the specified params to the lnk7972Gitlab::Database::BackgroundMigration::BatchedJobTransitionLog7973 is expected to be a kind of Gitlab::Database::SharedModel(abstract)7974 associations7975 is expected to belong to batched_job required: false7976 validations7977 is expected to validate that :previous_status cannot be empty/falsy7978 is expected to validate that :next_status cannot be empty/falsy7979 is expected to validate that :batched_job cannot be empty/falsy7980 is expected to validate that the length of :exception_class is at most 1007981 is expected to validate that the length of :exception_message is at most 10007982 is expected to define :previous_status as an enum backed by an integer with values ‹[:pending, :running, :failed, :succeeded]›, prefix: true7983 is expected to define :next_status as an enum backed by an integer with values ‹[:pending, :running, :failed, :succeeded]›, prefix: true7984Gitlab::ImportExport::Base::ObjectBuilder7985 #build7986 when object exists7987 when where_clauses are implemented7988 finds existing object instead of creating one7989 when where_clauses are not implemented7990 raises NotImplementedError7991 when object does not exist7992 creates new object7993Gitlab::GithubImport::Importer::DiffNoteImporter7994 #execute7995 when the merge request no longer exists7996 does not import anything7997 when the merge request exists7998 behaves like diff notes without suggestion7999 imports the note as legacy diff note8000 adds a "created by:" note when the author cannot be found8001 does not import the note when a foreign key error is raised8002 when the note has suggestions8003 imports the note as diff note8004 when the note diff file creation fails with DiffNoteCreationError due to outdated suggestion8005 falls back to the LegacyDiffNote8006 when the note diff file creation fails with NoteDiffFileCreationError8007 falls back to the LegacyDiffNote8008Gitlab::Ci::Pipeline::Chain::Helpers8009 .warning8010 when the warning includes malicious HTML8011 sanitizes8012 .error8013 when the error includes malicious HTML8014 sanitizes the error and removes the HTML tags8015 when given a drop reason8016 when config error is true8017 sets the yaml error and overrides the drop reason8018 behaves like error function8019 is expected to include "message"8020 when config error is false8021 does not set the yaml error or override the drop reason8022 behaves like error function8023 is expected to include "message"8024Gitlab::Git::PreReceiveError8025 uses the fallback message8026 uses the fallback message8027 error messages prefixed with GitLab:8028 accepts only errors lines with the prefix8029 makes its message HTML-friendly8030 prefers the original message over the fallback8031 error messages prefixed with GL-HOOK-ERR:8032 accepts only errors lines with the prefix8033 makes its message HTML-friendly8034 prefers the original message over the fallback8035Gitlab::Tracking::Destinations::SnowplowMicro8036 #hostname8037 when SNOWPLOW_MICRO_URI is set8038 returns hostname URI part8039 when SNOWPLOW_MICRO_URI is without protocol8040 returns hostname URI part8041 when SNOWPLOW_MICRO_URI is hostname only8042 returns hostname URI with default HTTP port8043 when SNOWPLOW_MICRO_URI is not set8044 returns localhost hostname8045 #options8046 includes protocol with the correct value8047 includes port with the correct value8048 includes forceSecureTracker with value false8049ReactiveCachingWorker8050 behaves like reactive cacheable worker8051 #perform8052 when reactive cache worker class is found8053 calls #exclusively_update_reactive_cache!8054 when ReactiveCaching::ExceededReactiveCacheLimit is raised8055 avoids failing the job and tracks via Gitlab::ErrorTracking8056 when reactive cache worker class is not found8057 raises no error8058 when reactive cache worker class is invalid8059 raises no error8060 worker context8061 sets the related class on the job8062 sets the related class on the job when it was passed as a class8063Resolvers::Ci::TestReportSummaryResolver8064 #resolve8065 when pipeline has build report results8066 returns test report summary data8067 when pipeline does not have build report results8068 renders test report summary data8069ContainerRepositoryEntity8070 exposes required informations8071 when project is not preset in the request8072 uses project from the object8073 when user can manage repositories8074 exposes destroy_path8075 when user cannot manage repositories8076 does not expose destroy_path8077WebHookWorker8078 #perform8079 delegates to WebHookService8080 does not error when the WebHook record cannot be found8081 retrieves recursion detection data and reinstates it8082 behaves like worker with data consistency8083 .get_data_consistency_feature_flag_enabled?8084 returns true8085 .get_data_consistency8086 returns correct data consistency8087Security::CiConfiguration::ContainerScanningCreateService8088 #execute8089 user does not belong to project8090 returns an error status8091 does not track a snowplow event8092 user belongs to project8093 does track the snowplow event8094 raises exception if the user does not have permission to create a new branch8095 when exception is raised8096 when branch was created8097 tries to rm branch8098 when branch was not created8099 does not try to rm branch8100 with no parameters8101 returns the path to create a new merge request8102 when the project has a non-default ci config file8103 does track the snowplow event8104Gitlab::ImportExport::RepoSaver8105 bundle a project Git repo8106 bundles the repo successfully8107 creates the directory for the repository8108 when the repo is empty8109 bundles the repo successfully8110Terraform::StatePolicy8111 rules8112 no access8113 is expected to be disallowed :read_terraform_state8114 is expected to be disallowed :admin_terraform_state8115 developer8116 is expected to be allowed :read_terraform_state8117 is expected to be disallowed :admin_terraform_state8118 maintainer8119 is expected to be allowed :read_terraform_state8120 is expected to be allowed :admin_terraform_state8121Resolvers::Ci::ProjectPipelineCountsResolver8122 #resolve8123 counts pipelines8124 counts by ref8125 counts by sha8126 counts by source8127Analytics::CycleAnalytics::StageEventHash8128 associations8129 is expected to have many cycle_analytics_project_stages8130 validations8131 is expected to validate that :hash_sha256 cannot be empty/falsy8132 .record_id_by_hash_sha2568133 returns an existing id8134 creates a new record8135 .cleanup_if_unused8136 removes the record8137 does not remove the record8138Discussions::UnresolveService8139 #execute8140 unresolves the discussion8141 counts the unresolve event8142ChatNames::AuthorizeUserService8143 #execute8144 when all parameters are valid8145 produces a valid HTTP URL8146 requests a new token8147 when there are missing parameters8148 does not produce a URL8149 does not request a new token8150Gitlab::Ci::Config::Entry::Inherit::Default8151 validations8152 config: true, valid: true8153 is expected to eq true8154 config: false, valid: true8155 is expected to eq true8156 config: ["image"], valid: true8157 is expected to eq true8158 config: ["unknown"], valid: false8159 is expected to eq false8160 config: [:image], valid: false8161 is expected to eq false8162 config: [true], valid: false8163 is expected to eq false8164 config: "string", valid: false8165 is expected to eq false8166 #inherit?8167 config: true, inherit: true8168 is expected to eq true8169 config: false, inherit: false8170 is expected to eq false8171 config: ["image"], inherit: true8172 is expected to eq true8173 config: ["before_script"], inherit: false8174 is expected to eq false8175Packages::Go::SyncPackagesService8176 #execute_async8177 schedules a package refresh8178 #initialize8179 without a project8180 raises an error8181 without a ref8182 raises an error8183 with an invalid ref8184 raises an error8185Gitlab::MailRoom::Authenticator8186 #verify_api_request8187 verify a valid token8188 returns the decoded payload8189 verify an invalid token8190 returns false8191 verify a valid token but wrong mailbox type8192 returns false8193 verify a valid token but wrong issuer8194 returns false8195 verify a valid token but expired8196 returns false8197 verify a valid token but wrong header field8198 returns false8199 verify headers for a disabled mailbox type8200 returns false8201 verify headers for a non-existing mailbox type8202 returns false8203 #secret8204 the secret is valid8205 returns the memorized secret from a file8206 the secret file is not configured8207 raises a SecretConfigurationError exception8208 the secret file not found8209 raises a SecretConfigurationError exception8210ResetProjectCacheService8211 when project cache_index is nil8212 sets project cache_index to one8213 when project cache_index is a numeric value8214 increments project cache index8215Gitlab::RepositoryCache::Preloader8216 #preload8217 when the values are already cached8218 prevents individual cache reads for cached methods8219 when values are not cached8220 reads and writes from cache individually8221RspecFlaky::Report8222 delegates to #flaky_examples using SimpleDelegator8223 .load8224 loads the report file8225 .load_json8226 loads the report file8227 #initialize8228 accepts a RspecFlaky::FlakyExamplesCollection8229 does not accept anything else8230 #write8231 when RspecFlaky::Config.generate_report? is false8232 does not write any report file8233 when RspecFlaky::Config.generate_report? is true8234 delegates the writes to RspecFlaky::Report8235 #prune_outdated8236 returns a new collection without the examples older than 30 days by default8237 accepts a given number of days8238Tooling::Danger::Specs8239 #add_suggestions_for_match_with_array8240 adds suggestions at the correct lines8241 #changed_specs_files8242 returns added, modified, and renamed_after files by default8243 with include_ee: :exclude8244 returns spec files without EE-specific files8245 with include_ee: :only8246 returns EE-specific spec files only8247 #added_line_matching_match_with_array8248 returns all lines using an array equality matcher8249StartupjsHelper8250 #page_startup_graphql_calls8251 returns an array containing GraphQL Page Startup Calls8252 #page_startup_graphql_headers8253 csrf_token: "abc", feature_category: "web_ide", expected: {"X-CSRF-Token"=>"abc", "x-gitlab-feature-category"=>"web_ide"}8254 returns hash of headers for GraphQL requests8255 csrf_token: "", feature_category: "", expected: {"X-CSRF-Token"=>"", "x-gitlab-feature-category"=>""}8256 returns hash of headers for GraphQL requests8257 csrf_token: "abc", feature_category: nil, expected: {"X-CSRF-Token"=>"abc", "x-gitlab-feature-category"=>""}8258 returns hash of headers for GraphQL requests8259 csrf_token: "something", feature_category: " ", expected: {"X-CSRF-Token"=>"something", "x-gitlab-feature-category"=>""}8260 returns hash of headers for GraphQL requests8261Gitlab::Ci::Pipeline::Expression::Lexeme::Variable8262 .build8263 creates a new instance of the token8264 .type8265 is a value lexeme8266 #evaluate8267 returns variable value if it is defined8268 allows to use a string as a variable key too8269 returns nil if it is not defined8270 returns an empty string if it is empty8271 does not call with_indifferent_access unnecessarily8272FeatureFlags::DestroyService8273 #execute8274 returns status success8275 destroys feature flag8276 creates audit log8277 when user is reporter8278 returns error status8279 when feature flag can not be destroyed8280 returns status error8281 does not create audit log8282API::Helpers::RateLimiter8283 #check_rate_limit!8284 calls ApplicationRateLimiter#throttled? with the right arguments8285 renders api error and logs request if throttled8286 when the bypass header is set8287 skips rate limit if set to "1"8288 does not skip rate limit if set to something else than "1"8289Gitlab::Ci::Status::Pending8290 #text8291 is expected to eq "pending"8292 #label8293 is expected to eq "pending"8294 #icon8295 is expected to eq "status_pending"8296 #favicon8297 is expected to eq "favicon_status_pending"8298 #group8299 is expected to eq "pending"8300 #details_path8301 is expected to be nil8302MergeRequests::AssignsMergeParams8303 raises an error when used from an instance that does not respond to #current_user8304 #assign_allowed_merge_params8305 only assigns known parameters to the merge request8306 returns a hash without the known merge params8307 the force_remove_source_branch param8308 assigns the param if the user is allowed to do that8309 only removes the param if the user is not allowed to do that8310Gitlab::Database::LoadBalancing::SrvResolver8311 #address_for8312 when additional section contains an A record8313 returns an IP4 address8314 when additional section contains an AAAA record8315Net::DNS unsupported record type: uninitialized constant Net::DNS::RR::OPT8316Did you mean? Net::DNS::OPT8317 returns an IP6 address8318 when additional section does not contain A nor AAAA records8319 when host resolves to an A record8320 returns an IP4 address8321 when host does resolves to an AAAA record8322Net::DNS unsupported record type: uninitialized constant Net::DNS::RR::OPT8323Did you mean? Net::DNS::OPT8324 returns an IP6 address8325ErrorTracking::StacktraceBuilder8326 #stacktrace8327 with full error context8328 generates a correct stacktrace in expected format8329 when error context is missing8330 generates a stacktrace without context8331 when exception payload is a list8332 extracts a stracktrace8333 with empty payload8334 is expected to eq []8335 without exception field8336 is expected to eq []8337 without exception.values field8338 is expected to eq []8339 without any exception.values[].stacktrace fields8340 is expected to eq []8341 without any exception.values[].stacktrace.frame fields8342 is expected to eq []8343Gitlab::Database::SimilarityScore8344 when passing empty values8345 when search is nil8346 orders by a constant 0 value8347 when rules are empty8348 orders by a constant 0 value8349 when similarity scoring based on the path8350 when searching for `git`8351 is expected to eq ["git", "gitlab", "gitaly"]8352 when searching for `gitlab`8353 is expected to eq ["gitlab", "gitlab-styles", "gitlab-danger"]8354 when searching for something unrelated8355 results have 0 similarity score8356 score multiplier8357 ranks `path` matches higher8358 annotation8359 annotates the generated SQL expression8360Clusters::Aws::ProvisionService8361 #execute8362 updates the provider status to :creating and configures the provider with credentials8363 creates a CloudFormation stack8364 schedules a worker to monitor creation status8365 error handling8366 invalid state transition8367 sets the status to :errored with an appropriate error message8368 AWS role is not configured8369 sets the status to :errored with an appropriate error message8370 AWS credentials are not configured8371 sets the status to :errored with an appropriate error message8372 Authentication failure8373 sets the status to :errored with an appropriate error message8374 CloudFormation failure8375 sets the status to :errored with an appropriate error message8376Gitlab::Ci::Variables::Builder::Group8377 #secret_variables8378 when the ref is not protected8379 contains only the CI variables8380 when the ref is protected8381 contains all the variables8382 when environment name is specified8383 when environment scope is exactly matched8384 is expected to contain exactly #<Gitlab::Ci::Variables::Collection::Item:0x00007fecca53cde8 @variable={:key=>"VARIABLE_1", :value=>"secret", :public=>false, :file=>false, :masked=>false, :raw=>false}>8385 when environment scope is matched by wildcard8386 is expected to contain exactly #<Gitlab::Ci::Variables::Collection::Item:0x00007fecca2b57a0 @variable={:key=>"VARIABLE_1", :value=>"secret", :public=>false, :file=>false, :masked=>false, :raw=>false}>8387 when environment scope does not match8388 is expected not to contain exactly #<Gitlab::Ci::Variables::Collection::Item:0x00007fecc9efff70 @variable={:key=>"VARIABLE_1", :value=>"secret", :public=>false, :file=>false, :masked=>false, :raw=>false}>8389 when environment scope has _8390 does not treat it as wildcard8391 when environment name contains underscore8392 matches literally for _8393 when environment scope has %8394 does not treat it as wildcard8395 when environment name contains a percent8396 matches literally for _8397 when variables with the same name have different environment scopes8398 orders the variables from least to most matched8399 when group has children8400 traversal queries8401 recursive8402 returns all variables belonging to the group and parent groups8403 linear8404 returns all variables belonging to the group and parent groups8405Gitlab::HealthChecks::Redis::SessionsCheck8406 #metrics8407 Check is passing8408 is expected to include (have attributes {:name => "redis_sessions_ping_success", :value => 1})8409 is expected to include (have attributes {:name => "redis_sessions_ping_timeout", :value => 0})8410 is expected to include (have attributes {:name => "redis_sessions_ping_latency_seconds", :value => (be >= 0)})8411 Check is misbehaving8412 is expected to include (have attributes {:name => "redis_sessions_ping_success", :value => 0})8413 is expected to include (have attributes {:name => "redis_sessions_ping_timeout", :value => 0})8414 is expected to include (have attributes {:name => "redis_sessions_ping_latency_seconds", :value => (be >= 0)})8415 Check is timeouting8416 is expected to include (have attributes {:name => "redis_sessions_ping_success", :value => 0})8417 is expected to include (have attributes {:name => "redis_sessions_ping_timeout", :value => 1})8418 is expected to include (have attributes {:name => "redis_sessions_ping_latency_seconds", :value => (be >= 0)})8419 #readiness8420 Check returns ok8421 is expected to have attributes {:success => true}8422 Check is misbehaving8423 is expected to have attributes {:message => "unexpected Sessions check result: error!", :success => false}8424 Check is timeouting8425 is expected to have attributes {:message => "Sessions check timed out", :success => false}8426 Check is raising an unhandled exception8427 is expected to have attributes {:message => "unexpected Sessions check result: unexpected error", :success => false}8428Gitlab::Database::Partitioning::SingleNumericListPartition8429 .from_sql8430 uses specified table name8431 uses specified partition name8432 parses the definition8433 #partition_name8434 is the explicit name if provided8435 defaults to the table name followed by the partition value8436 sorting8437 is incomparable if the tables do not match8438 sorts by the value when the tables match8439 sorts by numeric value rather than text value8440BulkImports::Projects::Pipelines::SnippetsPipeline8441 #run8442 imports snippet into destination project8443 with award_emoji8444 restores the award_emoji8445 with notes8446 restores the notes8447Ci::DownloadableArtifactEntity8448 #as_json8449 contains required fields8450 when user cannot read job artifact8451 returns only artifacts readable by user8452Gitlab::Auth::Otp::Strategies::FortiAuthenticator::PushOtp8453 successful validation8454 returns success8455 unsuccessful validation8456 returns error8457 unexpected error8458 returns error8459AlertManagement::HttpIntegrations::CreateService8460 #execute8461 when the current_user is anonymous8462 behaves like error response8463 has an informative message8464 when current_user does not have permission to create integrations8465 behaves like error response8466 has an informative message8467 when an integration already exists8468 behaves like error response8469 has an informative message8470 when an error occurs during update8471 behaves like error response8472 has an informative message8473 with valid params8474 successfully creates an integration8475Projects::ScheduleRefreshBuildArtifactsSizeStatisticsWorker8476 #perform8477 is labeled as idempotent8478 performs multiple times sequentially without raising an exception8479 schedules Projects::RefreshBuildArtifactsSizeStatisticsWorker to be performed with capacity8480SshKeys::ExpiringSoonNotificationWorker8481 uses a cronjob queue8482 #perform8483 with key expiring soon8484 invoke the notification service8485 updates notified column8486 is labeled as idempotent8487 performs multiple times sequentially without raising an exception8488 when key has expired in the past8489 does not update notified column8490 when key is not expiring soon8491 does not update notified column8492Gitlab::LegacyGithubImport::LabelFormatter8493 #attributes8494 returns formatted attributes8495 #create!8496 when label does not exist8497 creates a new label8498 when label exists8499 does not create a new label8500Gitlab::PhabricatorImport::Cache::Map8501 #get_gitlab_model8502 returns nil if there was nothing cached for the phabricator id8503 returns the object if it was set in redis8504 extends the TTL for the cache key8505 sets the object in redis once if a block was given and nothing was cached8506 does not cache `nil` objects8507 #set_gitlab_model8508 sets the class and id in redis with a ttl8509Mutations::WorkItems::UpdateWidgets8510 #resolve8511 when no work item matches the given id8512 raises an error8513 when user can access the requested work item8514 when `:work_items` is disabled for a project8515 returns an error8516 when resolved with an input for description widget8517 returns the updated work item8518PipelineHooksWorker8519 #perform8520 when pipeline exists8521 executes hooks for the pipeline8522 when pipeline does not exist8523 does not raise exception8524 when the user is blocked8525 returns early without executing8526 behaves like worker with data consistency8527 .get_data_consistency_feature_flag_enabled?8528 returns true8529 .get_data_consistency8530 returns correct data consistency8531WebIdeTerminalSerializer8532 represents WebIdeTerminalEntity entities8533 accepts WebIdeTerminal as a resource8534 when resource is a build8535 transforms it into a WebIdeTerminal resource8536AuthorizedProjectUpdate::UserRefreshOverUserRangeWorker8537 behaves like worker with data consistency8538 .get_data_consistency_feature_flag_enabled?8539 returns true8540 .get_data_consistency8541 returns correct data consistency8542 #perform8543 checks if project authorization update is required8544 checks if a project_authorization refresh is needed for each of the users8545 when there are project authorization records due for either removal or addition for a specific user8546 enqueues a new project authorization update job for the user8547 when there are no additions or removals to be made to project authorizations for a specific user8548 does not enqueue a new project authorization update job for the user8549PagesDomains::CreateAcmeOrderService8550 saves order to database before requesting validation8551 generates and saves private key: rsa8552 generates and saves private key: ec8553 properly saves order attributes8554 properly saves challenge attributes8555Types::Ci::JobNeedUnion8556 .resolve_type8557 when resolving a build need8558 resolves to a BuildNeedType8559 when resolving a build8560 resolves to a JobType8561 when resolving an unrelated object8562 raises a TypeNotSupportedError for string object8563 raises a TypeNotSupportedError for nil object8564 raises a TypeNotSupportedError for other CI object8565Todos::Destroy::DestroyedIssuableService8566 #execute8567 deletes todos for specified target ID and type8568 invalidates todos cache counts of todo users8569RuboCop::Cop::Scalability::FileUploads8570 with required params8571 detects File in types array8572 detects File as type argument8573 with optional params8574 detects File in types array8575 detects File as type argument8576Gitlab::UsageDataCounters::RedisCounter8577 .increment8578 when usage_ping is disabled8579 counter is not increased8580 when usage_ping is enabled8581 counter is increased8582 .increment_by8583 when usage_ping is disabled8584 counter is not increased8585 when usage_ping is enabled8586 counter is increased8587Gitlab::GithubImport::Stage::ImportPullRequestsWorker8588 raises an error8589 #import8590 imports all the pull requests8591Types::RootStorageStatisticsType8592 is expected to eq "RootStorageStatistics"8593 has all the required fields8594 is expected to require graphql authorizations :read_statistics8595Gitlab::ImportExport::Json::NdjsonReader8596 #exist?8597 given valid dir_path8598 is expected to equal true8599 given invalid dir_path8600 is expected to equal false8601 #legacy?8602 is expected to equal false8603 #consume_attributes8604 returns the whole root tree from parsed JSON8605 #consume_relation8606 given any key8607 returns an Enumerator8608 key has been consumed8609 yields nothing to the Enumerator8610 with mark_as_consumed: false8611 yields every relation value to the Enumerator8612 key has not been consumed8613 relation file does not exist8614 yields nothing to the Enumerator8615 relation file is empty8616 yields nothing to the Enumerator8617 relation file contains multiple lines8618 yields every relation value to the Enumerator8619Gitlab::SlashCommands::Presenters::Error8620 is expected to be a kind of Hash8621 shows the error message8622Gitlab::RepositorySizeErrorMessage8623 error messages8624 #commit_error8625 returns the correct message8626 #merge_error8627 returns the correct message8628 #push_error8629 with exceeded_limit value8630 returns the correct message8631 without exceeded_limit value8632 returns the correct message8633 #new_changes_error8634 when additional repo storage is available8635 returns the correct message8636 when no additional repo storage is available8637 returns the correct message8638PropagateIntegrationInheritDescendantWorker8639 behaves like an idempotent worker8640 is labeled as idempotent8641 performs multiple times sequentially without raising an exception8642 calls to BulkUpdateIntegrationService8643 with an invalid integration id8644 returns without failure8645RuboCop::Cop::Performance::ARExistsAndPresentBlank8646 when it is not haml file8647 does not flag it as an offense8648 when it is haml file8649 the same object uses exists? and present?8650 flags it as an offense8651 the same object uses exists? and blank?8652 flags it as an offense8653 the same object uses exists?, blank? and present?8654 flags it as an offense8655 behaves like different object uses exists? and present?/blank?8656 does not flag it as an offense8657 behaves like different object uses exists? and present?/blank?8658 does not flag it as an offense8659 behaves like Only using one present?/blank? without exists?8660 does not flag it as an offense8661 behaves like Only using one present?/blank? without exists?8662 does not flag it as an offense8663 when using many present?/empty? without exists?8664 does not flag it as an offense8665 when just using exists? without present?/blank?8666 does not flag it as an offense8667Resolvers::Metrics::DashboardResolver8668 #resolve8669 for environment8670 use ActiveModel class to find matching dashboard8671 without parent object8672 returns nil8673Gitlab::Utils::DelegatorOverride8674 .delegator_target8675 sets the delegator target to the validator8676 when the class does not inherit SimpleDelegator8677 raises an error8678 .delegator_override8679 adds the method name to the allowlist8680 .delegator_override_with8681 adds the method names of the module to the allowlist8682 .verify!8683 does not raise an error when an override is in allowlist8684 raises an error when there is an override8685Gitlab::GonHelper8686 #add_gon_variables8687 when HTTPS is enabled8688 sets the secure flag to true8689 when HTTP is enabled8690 sets the secure flag to false8691 #push_frontend_feature_flag8692 pushes a feature flag to the frontend8693 #push_force_frontend_feature_flag8694 pushes a feature flag to the frontend with the provided value8695 pushes a disabled feature flag if provided value is nil8696 #default_avatar_url8697 returns an absolute URL8698notify/changed_milestone_email.html.haml8699 milestone without start and due dates8700 renders without date range8701 milestone with start and due dates8702 renders with date range8703Gitlab::Analytics::UsageTrends::WorkersArgumentBuilder8704 when no measurement identifiers are given8705 returns empty array8706 when measurement identifiers are given8707 returns worker arguments8708 when bogus measurement identifiers are given8709 skips bogus measurement identifiers8710 when custom min and max queries are present8711 uses custom min/max for ids8712Banzai::Filter::TruncateSourceFilter8713 when markdown belongs to a blob8714 does nothing when limit is unspecified8715 truncates normally when limit specified8716 when markdown belongs to a field (non-blob)8717 does nothing when limit is greater8718 truncates to the default when limit is unspecified8719 prepends the user message8720 does nothing to a short-enough text8721 truncates UTF-8 text by bytes, on a character boundary8722notify/autodevops_disabled_email.text.erb8723 when the pipeline contains a failed job8724 renders the email correctly8725StatAnchorsHelper8726 #stat_anchor_attrs8727 when anchor is a link8728 returns the proper attributes8729 when anchor is not a link8730 when class_modifier is set8731 returns the proper attributes8732 when class_modifier is not set8733 returns the proper attributes8734 when itemprop is not set8735 returns the itemprop attributes8736 when itemprop is set set8737 returns the itemprop attributes8738 when data is not set8739 returns the data attributes8740 when itemprop is set8741 returns the data attributes8742Types::EventableType8743 exposes events field8744TokenWithIv8745 validations8746 is expected to validate that :hashed_token cannot be empty/falsy8747 is expected to validate that :iv cannot be empty/falsy8748 is expected to validate that :hashed_plaintext_token cannot be empty/falsy8749 .find_by_hashed_token8750 only includes matching record8751 .find_by_plaintext_token8752 only includes matching record8753SnippetInputActionCollection8754 is expected to delegate #empty? to the #actions object8755 is expected to delegate #any? to the #actions object8756 is expected to delegate #[] to the #actions object8757 #to_commit_actions8758 translates all actions to commit actions8759 #valid?8760 returns true8761 when any of the actions is invalid8762 returns false8763 when allowed_actions param is passed8764 builds SnippetInputAction with that param8765shared/_milestones_sort_dropdown.html.haml8766 render8767 when a sort option is not selected8768 renders a default sort option8769 when a sort option is selected8770 renders the selected sort option8771admin/application_settings/ci_cd.html.haml8772 CI CD Runner Registration8773 when feature flag is enabled8774 has the setting section8775 renders the correct setting section content8776 when feature flag is disabled8777 does not have the setting section8778 does not render the correct setting section content8779Types::Ci::Config::GroupType8780 is expected to eq "CiConfigGroup"8781 exposes the expected fields8782OauthAccessToken8783 returns unique owners8784BlobViewer::GitlabCiYml8785 #validation_message8786 calls prepare! on the viewer8787 when the configuration is valid8788 returns nil8789 when the configuration is invalid8790 returns the error message8791Banzai::CommitRenderer8792 .render8793 renders a commit description and title8794Gitlab::Ci::Reports::TestFailureHistory8795 #load!8796 sets the recent failures for each matching failed test case in all test suites8797Gitlab::Database::PartitioningMigrationHelpers::ForeignKeyHelpers8798 #add_concurrent_partitioned_foreign_key8799 when the foreign key does not exist on the parent table8800 creates the foreign key on each partition, and the parent table8801 when the foreign key exists on the parent table8802 does not attempt to create any foreign keys8803 when additional foreign key options are given8804 forwards them to the foreign key helper methods8805 when run inside a transaction block8806 raises an error8807WorkItems::Widgets::Base8808 .type8809 is expected to eq :base8810 #type8811 is expected to eq :base8812MergeRequestUserMention8813 associations8814 is expected to belong to merge_request required: false8815 is expected to belong to note required: false8816 behaves like has user mentions8817 #has_mentions?8818 when no mentions8819 returns false8820 when mentioned_users_ids not null8821 returns true8822 when mentioned projects8823 returns true8824 when mentioned groups8825 returns true8826NamespacePathValidator8827 .valid_path?8828 handles invalid utf88829 #validates_each8830 adds a message when the path is not in the correct format8831 adds a message when the path is reserved when creating8832 adds a message when the path is reserved when updating8833IssueUserMention8834 associations8835 is expected to belong to issue required: false8836 is expected to belong to note required: false8837 behaves like has user mentions8838 #has_mentions?8839 when no mentions8840 returns false8841 when mentioned_users_ids not null8842 returns true8843 when mentioned projects8844 returns true8845 when mentioned groups8846 returns true8847RuboCop::Cop::UsageData::InstrumentationSuperclass8848 with class definition8849 when inheriting from allowed superclass8850 does not register an offense8851 when inheriting from some other superclass8852 registers an offense8853 when not inheriting8854 does not register an offense8855 with dynamic class definition8856 when inheriting from allowed superclass8857 does not register an offense8858 when inheriting from some other superclass8859 registers an offense8860 when not inheriting8861 does not register an offense8862Gitlab::Ci::Config::Entry::Release::Assets8863 validation8864 when entry config value is correct8865 #value8866 returns assets configuration8867 #valid?8868 is valid8869 when entry value is not correct8870 #errors8871 when value of assets is invalid8872 reports error8873 when value of assets:links is empty8874 reports error8875 when there is an unknown key present8876 reports error8877Glfm::Shared8878 #run_external_cmd8879 works8880 when command fails8881 raises error8882 #output8883 has code coverage8884RuboCop::Cop::Gitlab::PolicyRuleBoolean8885 registers offense for &&8886 registers offense for ||8887 registers offense for if8888 registers offense for ternary operator8889 registers no offense for &8890 registers no offense for |8891Gitlab::EtagCaching::Router::Graphql8892 matches pipelines endpoint8893 has a valid feature category for every route8894 .cache_key8895 uses request path and headers as cache key8896 when the header is missing8897 does not raise errors8898Gitlab::I18n8899 .selectable_locales8900 does not return languages with low translation levels8901 .locale=8902 sets the locale based on current user preferred language8903 .use_default_locale8904 resets the locale to the default language8905Gitlab::HookData::SubgroupBuilder8906 #build8907 data8908 on create8909 is expected to eq "subgroup_create"8910 behaves like includes the required attributes8911 includes the required attributes8912 on destroy8913 is expected to eq "subgroup_destroy"8914 behaves like includes the required attributes8915 includes the required attributes8916Ci::CreateCrossProjectPipelineWorker8917 #perform8918 when bridge exists8919 calls cross project pipeline creation service8920 when bridge does not exist8921 does nothing8922Gitlab::AppLogger8923 builds a Gitlab::Logger object twice8924 logs info to AppLogger and AppJsonLogger8925 logs info to only the AppJsonLogger when unstructured logs are disabled8926Gitlab::Email::Message::InProductMarketing::TrialShort8927 public methods8928 returns value for series8929 #progress8930 on gitlab.com8931 is expected to eq "This is email 1 of 4 in the Trial series."8932 not on gitlab.com8933 is expected to include "This is email 1 of 4 in the Trial series" and "http://localhost/-/profile/notifications"8934Mattermost::Command8935 #create8936 for valid trigger word8937 returns a token8938 for error message8939 raises an error with message8940Types::ContainerRepositorySortEnum8941 is expected to eq "ContainerRepositorySort"8942 exposes all the existing issue sort values8943 behaves like common sort values8944 exposes all the existing common sort values8945Gitlab::PhabricatorImport::Conduit::Client8946 #get8947 performs and parses a request8948 wraps request errors in an `ApiError`8949 raises response error8950Gitlab::Emoji8951 .emoji_image_tag8952 returns emoji image tag8953 escapes emoji image attrs to prevent XSS8954 .gl_emoji_tag8955 returns gl emoji tag if emoji is found8956 returns nil if emoji is not found8957Clusters::Project8958 is expected to belong to cluster required: false8959 is expected to belong to project required: false8960 is expected to have many kubernetes_namespaces8961Types::CommitType8962 is expected to eq "Commit"8963 is expected to require graphql authorizations :download_code8964 is expected to include Types::TodoableInterface8965 contains attributes related to commit8966Experiments::RecordConversionEventWorker#perform8967 when the experiment is active8968 is labeled as idempotent8969 performs multiple times sequentially without raising an exception8970 records the event8971 when the experiment is not active8972 records the event8973Presentable8974 #present8975 returns a presenter8976 takes optional attributes8977BlobViewer::ServerSide8978 #prepare!8979 loads all blob data8980 #render_error8981 when the blob is stored externally8982 return :server_side_but_stored_externally8983RuboCop::Cop::Migration::RemoveConcurrentIndex8984 in migration8985 registers an offense when remove_concurrent_index is used inside a change method8986 registers no offense when remove_concurrent_index is used inside an up method8987 outside of migration8988 registers no offense8989Types::Ci::GroupType8990 is expected to eq "CiGroup"8991 exposes the expected fields8992Gitlab::ExternalAuthorization::Cache8993 #load8994 reads stored info from redis8995 #store8996 sets the values in redis8997Types::DesignManagement::DesignCollectionType8998 is expected to require graphql authorizations :read_design8999 has the expected fields9000Gitlab::Graphql::QueryAnalyzers::AST::RecursionAnalyzer9001 when recursion threshold not exceeded9002 returns the complexity, depth, duration, etc9003 when recursion threshold exceeded9004 returns error9005SystemCheck::BaseCheck9006 helpers on instance level9007 responds to SystemCheck::Helpers methods9008 responds to Gitlab::TaskHelpers methods9009PostgreSQL registered types9010 includes custom and standard OIDs9011 includes custom and standard types9012Gitlab::Database::ShaAttribute9013 #deserialize9014 converts the binary SHA to a String9015 #serialize9016 converts a SHA String to binary data9017Gitlab::SidekiqMiddleware::DuplicateJobs::Strategies::None9018 #schedule9019 yields without checking for duplicates9020 #perform9021 does not delete any locks before executing9022RuboCop::Cop::Gitlab::BulkInsert9023 flags the use of ApplicationRecord.legacy_bulk_insert9024 flags the use of ::ApplicationRecord.legacy_bulk_insert9025TodosDestroyer::ConfidentialIssueWorker9026 calls the Todos::Destroy::ConfidentialIssueService with issue_id parameter9027 calls the Todos::Destroy::ConfidentialIssueService with project_id parameter9028FasterCacheKeys9029 #cache_key9030 returns a String9031Types::Tree::TreeEntryType9032 is expected to eq "TreeEntry"9033 is expected to have graphql fields :id, :sha, :name, :type, :path, :flat_path, :web_url, and :web_path9034Gitlab::Ci::Parsers::Instrumentation9035 #parse!9036 sets metrics for duration of parsing9037Types::CiConfiguration::Sast::OptionsEntityType9038 is expected to eq "SastCiConfigurationOptionsEntity"9039 is expected to have graphql fields :label and :value9040Gitlab::Usage::Metrics::Instrumentations::CertBasedClustersFfMetric9041 with FF enabled9042 behaves like a correct instrumented metric value9043 has correct value9044 with FF disabled9045 behaves like a correct instrumented metric value9046 has correct value9047NamespaceCiCdSetting9048 associations9049 is expected to belong to namespace required: false inverse_of => ci_cd_settings9050Forever9051 .date9052 returns Postgresql future date9053Gitlab::InsecureKeyFingerprint9054 #fingerprint_sha2569055 generates the key's fingerprint9056Banzai::Filter::MermaidFilter9057 adds `js-render-mermaid` class to the `code` tag9058Sidebars::Groups::Menus::ScopeMenu9059 #extra_nav_link_html_options9060 is expected to match #<RSpec::Mocks::ArgumentMatchers::HashIncludingMatcher:0x00007fecca704d60 @expected={:class=>"context-header has-tooltip", :title=>"group148"}>9061Gitlab::Usage::Metrics::Instrumentations::CollectedDataCategoriesMetric9062 behaves like a correct instrumented metric value9063 has correct value9064DeployTokensHelper9065 #deploy_token_revoke_button_data9066 returns expected hash9067Types::Ci::JobKindEnum9068 exposes some job type values9069Knapsack report was generated. Preview:9070{9071 "spec/db/migration_spec.rb": 58.221672509999735,9072 "spec/models/container_repository_spec.rb": 144.1803830560002,9073 "spec/models/project_team_spec.rb": 140.37998995700036,9074 "spec/lib/gitlab/git/repository_spec.rb": 44.913664788999995,9075 "spec/models/clusters/applications/elastic_stack_spec.rb": 77.25913343800039,9076 "spec/tasks/gitlab/db/lock_writes_rake_spec.rb": 97.06771144100003,9077 "spec/lib/gitlab/project_search_results_spec.rb": 57.26778796000053,9078 "spec/services/projects/prometheus/alerts/notify_service_spec.rb": 35.772021888999916,9079 "spec/policies/ci/build_policy_spec.rb": 49.801952019000055,9080 "spec/graphql/resolvers/issues_resolver_spec.rb": 27.75749649499994,9081 "spec/helpers/search_helper_spec.rb": 33.84842739099986,9082 "spec/models/integrations/unify_circuit_spec.rb": 30.144501551999383,9083 "spec/workers/emails_on_push_worker_spec.rb": 39.94038687800003,9084 "spec/models/integrations/hangouts_chat_spec.rb": 32.21619246899991,9085 "spec/lib/gitlab/usage_data_counters/hll_redis_counter_spec.rb": 22.42994182200073,9086 "spec/presenters/ci/build_runner_presenter_spec.rb": 27.627394974999333,9087 "spec/services/merge_requests/after_create_service_spec.rb": 26.20137501499994,9088 "spec/models/concerns/integrations/has_data_fields_spec.rb": 21.529098797998813,9089 "spec/finders/container_repositories_finder_spec.rb": 15.281497743000727,9090 "spec/finders/packages/npm/package_finder_spec.rb": 16.134565208998538,9091 "spec/lib/gitlab/ci/status/external/factory_spec.rb": 20.630896953998672,9092 "spec/services/system_notes/merge_requests_service_spec.rb": 18.524046786000326,9093 "spec/lib/gitlab/fake_application_settings_spec.rb": 4.3511504369998875,9094 "spec/lib/gitlab/ci/parsers/coverage/sax_document_spec.rb": 6.121499852999477,9095 "spec/services/projects/lfs_pointers/lfs_download_service_spec.rb": 9.16854920500009,9096 "spec/services/clusters/update_service_spec.rb": 22.09126004599966,9097 "spec/uploaders/external_diff_uploader_spec.rb": 15.468619934001254,9098 "spec/models/clusters/integrations/prometheus_spec.rb": 15.798252796999805,9099 "spec/models/wiki_page/meta_spec.rb": 8.777700186999937,9100 "spec/lib/gitlab/auth/ldap/dn_spec.rb": 3.825597018998451,9101 "spec/lib/gitlab/metrics/dashboard/url_spec.rb": 2.630131476000315,9102 "spec/models/label_spec.rb": 14.515935090999847,9103 "spec/policies/issuable_policy_spec.rb": 9.485638718999326,9104 "spec/models/concerns/atomic_internal_id_spec.rb": 8.48330772099871,9105 "spec/lib/gitlab/pagination/keyset/order_spec.rb": 4.2437296450007125,9106 "spec/lib/backup/repositories_spec.rb": 13.577090946999306,9107 "spec/policies/metrics/dashboard/annotation_policy_spec.rb": 5.818072276999374,9108 "spec/lib/gitlab/usage_data_counters/issue_activity_unique_counter_spec.rb": 1.9764787000003707,9109 "spec/graphql/mutations/discussions/toggle_resolve_spec.rb": 7.409872098000051,9110 "spec/services/packages/npm/create_tag_service_spec.rb": 9.021259366998493,9111 "spec/models/terraform/state_spec.rb": 9.125358708999556,9112 "spec/lib/object_storage/config_spec.rb": 1.3766617080000287,9113 "spec/serializers/analytics_build_entity_spec.rb": 9.764861866000501,9114 "spec/lib/gitlab/github_import/representation/pull_request_spec.rb": 1.7480616670000018,9115 "spec/lib/gitlab/ci/status/build/cancelable_spec.rb": 6.430961287000173,9116 "spec/initializers/enumerator_next_patch_spec.rb": 1.86777348799842,9117 "spec/policies/design_management/design_policy_spec.rb": 3.9238318220013753,9118 "spec/services/wiki_pages/update_service_spec.rb": 9.569018592001157,9119 "spec/lib/gitlab/x509/signature_spec.rb": 6.377745040999798,9120 "spec/bin/feature_flag_spec.rb": 1.5984683999995468,9121 "spec/models/users/in_product_marketing_email_spec.rb": 2.465591330001189,9122 "spec/services/work_items/task_list_reference_removal_service_spec.rb": 6.700244835999911,9123 "spec/services/projects/lfs_pointers/lfs_object_download_list_service_spec.rb": 6.117797793000136,9124 "spec/models/packages/conan/metadatum_spec.rb": 5.749539422999078,9125 "spec/lib/gitlab/git/branch_spec.rb": 5.622156813000402,9126 "spec/lib/atlassian/jira_connect/serializers/build_entity_spec.rb": 7.896776767998745,9127 "spec/lib/gitlab/chat/responder/mattermost_spec.rb": 7.075857414998609,9128 "spec/workers/concerns/reenqueuer_spec.rb": 1.8753393679999135,9129 "spec/lib/grafana/client_spec.rb": 1.613398038998639,9130 "spec/services/merge_requests/handle_assignees_change_service_spec.rb": 6.071690687000228,9131 "spec/tasks/gitlab/web_hook_rake_spec.rb": 6.854797612999391,9132 "spec/services/spam/spam_action_service_spec.rb": 3.266909254998609,9133 "spec/services/clusters/agent_tokens/create_service_spec.rb": 5.785866039999746,9134 "spec/lib/gitlab/api_authentication/token_resolver_spec.rb": 2.1587082050009485,9135 "spec/models/design_management/action_spec.rb": 2.6965114410013484,9136 "spec/lib/gitlab/ci/pipeline/chain/ensure_environments_spec.rb": 6.182646197999929,9137 "spec/lib/gitlab/instrumentation/redis_cluster_validator_spec.rb": 1.4651053310008137,9138 "spec/services/projects/hashed_storage/rollback_attachments_service_spec.rb": 6.144312121001349,9139 "spec/services/metrics/dashboard/update_dashboard_service_spec.rb": 3.968792237999878,9140 "spec/services/ci/drop_pipeline_service_spec.rb": 5.4784976739993,9141 "spec/models/concerns/cacheable_attributes_spec.rb": 1.8928289870000299,9142 "spec/lib/gitlab/discussions_diff/file_collection_spec.rb": 6.161620299000788,9143 "spec/lib/gitlab/ci/config/entry/service_spec.rb": 0.8533261310003581,9144 "spec/presenters/project_member_presenter_spec.rb": 2.4379625919991668,9145 "spec/lib/gitlab/ci/runner_upgrade_check_spec.rb": 1.2605367870000919,9146 "spec/services/spam/akismet_service_spec.rb": 1.3428538909993222,9147 "spec/lib/gitlab/ci/parsers/test/junit_spec.rb": 1.4150693150004372,9148 "spec/finders/metrics/users_starred_dashboards_finder_spec.rb": 3.660267532999569,9149 "spec/serializers/release_serializer_spec.rb": 4.137903634000395,9150 "spec/tasks/gitlab/update_templates_rake_spec.rb": 5.679171948000658,9151 "spec/graphql/mutations/container_repositories/destroy_tags_spec.rb": 2.134619066000596,9152 "spec/tooling/graphql/docs/renderer_spec.rb": 1.4433318419996795,9153 "spec/services/import/gitlab_projects/create_project_service_spec.rb": 1.4935114790005173,9154 "spec/graphql/mutations/issues/set_locked_spec.rb": 2.348185778999323,9155 "spec/lib/gitlab/metrics/boot_time_tracker_spec.rb": 0.6309277389991621,9156 "spec/graphql/mutations/container_repositories/destroy_spec.rb": 1.6731399740001507,9157 "spec/workers/ci/external_pull_requests/create_pipeline_worker_spec.rb": 3.9746116569986043,9158 "spec/helpers/projects/alert_management_helper_spec.rb": 1.0971033009991515,9159 "spec/lib/gitlab/git/patches/commit_patches_spec.rb": 1.884237326999937,9160 "spec/models/blob_viewer/metrics_dashboard_yml_spec.rb": 0.8992664569996123,9161 "spec/graphql/resolvers/labels_resolver_spec.rb": 3.405032073000257,9162 "spec/tasks/gitlab/external_diffs_rake_spec.rb": 5.414540109999507,9163 "spec/finders/sentry_issue_finder_spec.rb": 3.696326669998598,9164 "spec/serializers/merge_request_metrics_helper_spec.rb": 4.3176438190002955,9165 "spec/services/packages/generic/create_package_file_service_spec.rb": 2.5682772109994403,9166 "spec/graphql/resolvers/base_resolver_spec.rb": 0.9424296039996989,9167 "spec/views/notify/pipeline_failed_email.text.erb_spec.rb": 4.7514870039995,9168 "spec/workers/jira_connect/sync_project_worker_spec.rb": 3.805091591000746,9169 "spec/lib/gitlab/usage/service_ping/payload_keys_processor_spec.rb": 0.3358695530005207,9170 "spec/workers/ci/pending_builds/update_group_worker_spec.rb": 3.569839839999986,9171 "spec/workers/repository_cleanup_worker_spec.rb": 4.098418777999541,9172 "spec/models/packages/dependency_link_spec.rb": 3.9119340929992177,9173 "spec/lib/gitlab/ci/reports/accessibility_reports_comparer_spec.rb": 1.091329640999902,9174 "spec/services/ci/generate_coverage_reports_service_spec.rb": 2.1703667029996723,9175 "spec/lib/gitlab/ci/pipeline/chain/sequence_spec.rb": 1.672536335001496,9176 "spec/models/concerns/id_in_ordered_spec.rb": 2.918944762999672,9177 "spec/helpers/learn_gitlab_helper_spec.rb": 1.8109660520003672,9178 "spec/lib/gitlab/ci/config/entry/needs_spec.rb": 1.0820639920002577,9179 "spec/helpers/routing/pseudonymization_helper_spec.rb": 2.1282572769996477,9180 "spec/lib/file_size_validator_spec.rb": 2.322942431001138,9181 "spec/graphql/mutations/alert_management/prometheus_integration/create_spec.rb": 2.197988550999071,9182 "spec/graphql/types/query_type_spec.rb": 1.1230053590006719,9183 "spec/services/merge_requests/add_context_service_spec.rb": 3.9552515390005283,9184 "spec/lib/gitlab/gl_repository_spec.rb": 1.015565317000437,9185 "spec/models/concerns/participable_spec.rb": 0.7858168660004594,9186 "spec/lib/gitlab/auth/crowd/authentication_spec.rb": 0.5900823509982729,9187 "spec/helpers/blame_helper_spec.rb": 0.3941034089984896,9188 "spec/graphql/resolvers/projects/jira_projects_resolver_spec.rb": 2.455534931001239,9189 "spec/services/ci/compare_test_reports_service_spec.rb": 3.065012281000236,9190 "spec/presenters/user_presenter_spec.rb": 0.6437895580002078,9191 "spec/helpers/gitlab_script_tag_helper_spec.rb": 0.46428160299910815,9192 "spec/models/integrations/chat_message/wiki_page_message_spec.rb": 0.4983748890008428,9193 "spec/services/bulk_imports/create_pipeline_trackers_service_spec.rb": 2.1344185670004663,9194 "spec/services/resource_events/change_labels_service_spec.rb": 1.622154007998688,9195 "spec/models/packages/debian/project_component_spec.rb": 2.122225838000304,9196 "spec/lib/atlassian/jira_connect/jwt/symmetric_spec.rb": 0.7796985460008727,9197 "spec/lib/gitlab/pagination/offset_header_builder_with_controller_spec.rb": 2.451804041000287,9198 "spec/lib/gitlab/database/background_migration/batched_job_transition_log_spec.rb": 0.48434553100014455,9199 "spec/lib/gitlab/import_export/base/object_builder_spec.rb": 1.8224031720001221,9200 "spec/lib/gitlab/github_import/importer/diff_note_importer_spec.rb": 1.818653712000014,9201 "spec/lib/gitlab/ci/pipeline/chain/helpers_spec.rb": 1.8557529790014087,9202 "spec/lib/gitlab/git/pre_receive_error_spec.rb": 0.38788750899948354,9203 "spec/lib/gitlab/tracking/destinations/snowplow_micro_spec.rb": 0.4001895469991723,9204 "spec/workers/reactive_caching_worker_spec.rb": 2.7675046949989337,9205 "spec/graphql/resolvers/ci/test_report_summary_resolver_spec.rb": 1.6473821670006146,9206 "spec/serializers/container_repository_entity_spec.rb": 1.1866410540005745,9207 "spec/workers/web_hook_worker_spec.rb": 0.958405772000333,9208 "spec/services/security/ci_configuration/container_scanning_create_service_spec.rb": 3.245135006000055,9209 "spec/lib/gitlab/import_export/repo_saver_spec.rb": 2.594381990000329,9210 "spec/policies/terraform/state_policy_spec.rb": 1.8167629330000636,9211 "spec/graphql/resolvers/ci/project_pipeline_counts_resolver_spec.rb": 1.5841271209992556,9212 "spec/models/analytics/cycle_analytics/stage_event_hash_spec.rb": 0.8113383050003904,9213 "spec/services/discussions/unresolve_service_spec.rb": 1.1631032950008375,9214 "spec/services/chat_names/authorize_user_service_spec.rb": 1.6789455430007365,9215 "spec/lib/gitlab/ci/config/entry/inherit/default_spec.rb": 0.584327652999491,9216 "spec/services/packages/go/sync_packages_service_spec.rb": 1.2386684889988828,9217 "spec/lib/gitlab/mail_room/authenticator_spec.rb": 0.7030606629996328,9218 "spec/services/reset_project_cache_service_spec.rb": 0.9299545550002222,9219 "spec/lib/gitlab/repository_cache/preloader_spec.rb": 1.8624132980003196,9220 "spec/tooling/rspec_flaky/report_spec.rb": 0.4659881220013631,9221 "spec/tooling/danger/specs_spec.rb": 0.40720332599994435,9222 "spec/helpers/startupjs_helper_spec.rb": 0.31361992500023916,9223 "spec/lib/gitlab/ci/pipeline/expression/lexeme/variable_spec.rb": 0.4068820069987851,9224 "spec/services/feature_flags/destroy_service_spec.rb": 1.1134125490007136,9225 "spec/lib/api/helpers/rate_limiter_spec.rb": 0.1872871049999958,9226 "spec/lib/gitlab/ci/status/pending_spec.rb": 0.20007739399989077,9227 "spec/services/concerns/merge_requests/assigns_merge_params_spec.rb": 0.27615140699890617,9228 "spec/lib/gitlab/database/load_balancing/srv_resolver_spec.rb": 0.24895398899934662,9229 "spec/lib/error_tracking/stacktrace_builder_spec.rb": 0.2775259379995987,9230 "spec/lib/gitlab/database/similarity_score_spec.rb": 0.21862067200163438,9231 "spec/services/clusters/aws/provision_service_spec.rb": 1.3332595319989196,9232 "spec/lib/gitlab/ci/variables/builder/group_spec.rb": 0.8265492629998334,9233 "spec/lib/gitlab/health_checks/redis/sessions_check_spec.rb": 0.3486848820011801,9234 "spec/lib/gitlab/database/partitioning/single_numeric_list_partition_spec.rb": 0.30786442499993427,9235 "spec/lib/bulk_imports/projects/pipelines/snippets_pipeline_spec.rb": 1.9790419889995974,9236 "spec/serializers/ci/downloadable_artifact_entity_spec.rb": 1.4015275260007911,9237 "spec/lib/gitlab/auth/otp/strategies/forti_authenticator/push_otp_spec.rb": 0.49188790100015467,9238 "spec/services/alert_management/http_integrations/create_service_spec.rb": 1.2187357210004848,9239 "spec/workers/projects/schedule_refresh_build_artifacts_size_statistics_worker_spec.rb": 0.6822202949988423,9240 "spec/workers/ssh_keys/expiring_soon_notification_worker_spec.rb": 0.6182052600015595,9241 "spec/lib/gitlab/legacy_github_import/label_formatter_spec.rb": 1.7244108399991092,9242 "spec/lib/gitlab/phabricator_import/cache/map_spec.rb": 0.6919121550017735,9243 "spec/graphql/mutations/work_items/update_widgets_spec.rb": 1.1323762889987847,9244 "spec/workers/pipeline_hooks_worker_spec.rb": 1.1259265379994758,9245 "spec/serializers/web_ide_terminal_serializer_spec.rb": 1.4517249719992833,9246 "spec/workers/authorized_project_update/user_refresh_over_user_range_worker_spec.rb": 0.8005584750007984,9247 "spec/services/pages_domains/create_acme_order_service_spec.rb": 1.4273213140004373,9248 "spec/graphql/types/ci/job_need_union_spec.rb": 1.2198193410004023,9249 "spec/services/todos/destroy/destroyed_issuable_service_spec.rb": 1.8118683929988038,9250 "spec/rubocop/cop/scalability/file_uploads_spec.rb": 0.32985307300077693,9251 "spec/lib/gitlab/usage_data_counters/redis_counter_spec.rb": 0.25260086900016177,9252 "spec/workers/gitlab/github_import/stage/import_pull_requests_worker_spec.rb": 0.3836893379993853,9253 "spec/graphql/types/root_storage_statistics_type_spec.rb": 0.11701113100025395,9254 "spec/lib/gitlab/import_export/json/ndjson_reader_spec.rb": 0.37270797900055186,9255 "spec/lib/gitlab/slash_commands/presenters/error_spec.rb": 0.10878293099995062,9256 "spec/lib/gitlab/repository_size_error_message_spec.rb": 0.22803676100011216,9257 "spec/workers/propagate_integration_inherit_descendant_worker_spec.rb": 0.6873183240004437,9258 "spec/rubocop/cop/performance/ar_exists_and_present_blank_spec.rb": 0.3170741449994239,9259 "spec/graphql/resolvers/metrics/dashboard_resolver_spec.rb": 1.1847534329990594,9260 "spec/lib/gitlab/utils/delegator_override_spec.rb": 0.7556563489997643,9261 "spec/lib/gitlab/gon_helper_spec.rb": 0.22078619199965033,9262 "spec/views/notify/changed_milestone_email.html.haml_spec.rb": 1.4042104559994186,9263 "spec/lib/gitlab/analytics/usage_trends/workers_argument_builder_spec.rb": 1.0839977720006573,9264 "spec/lib/banzai/filter/truncate_source_filter_spec.rb": 0.22535090200108243,9265 "spec/views/notify/autodevops_disabled_email.text.erb_spec.rb": 0.8681941400009237,9266 "spec/helpers/stat_anchors_helper_spec.rb": 0.2504502390002017,9267 "spec/graphql/types/eventable_type_spec.rb": 0.11353373100064346,9268 "spec/models/token_with_iv_spec.rb": 0.2526344899997639,9269 "spec/models/snippet_input_action_collection_spec.rb": 0.2152518319999217,9270 "spec/views/shared/_milestones_sort_dropdown.html.haml_spec.rb": 1.3856622269995569,9271 "spec/views/admin/application_settings/ci_cd.html.haml_spec.rb": 0.8842519489990082,9272 "spec/graphql/types/ci/config/group_type_spec.rb": 0.16026852700088057,9273 "spec/models/oauth_access_token_spec.rb": 1.4573360419999517,9274 "spec/models/blob_viewer/gitlab_ci_yml_spec.rb": 1.068488614000671,9275 "spec/lib/banzai/commit_renderer_spec.rb": 0.6803376450006908,9276 "spec/lib/gitlab/ci/reports/test_failure_history_spec.rb": 0.5338137269991421,9277 "spec/lib/gitlab/database/partitioning_migration_helpers/foreign_key_helpers_spec.rb": 0.363336980000895,9278 "spec/models/work_items/widgets/base_spec.rb": 0.397838088001663,9279 "spec/models/user_mentions/merge_request_user_mention_spec.rb": 0.19232545400154777,9280 "spec/validators/namespace_path_validator_spec.rb": 0.21386336300020048,9281 "spec/models/user_mentions/issue_user_mention_spec.rb": 0.19913220300077228,9282 "spec/rubocop/cop/usage_data/instrumentation_superclass_spec.rb": 0.19065573499938182,9283 "spec/lib/gitlab/ci/config/entry/release/assets_spec.rb": 0.3229327640001429,9284 "spec/scripts/lib/glfm/shared_spec.rb": 0.303218345001369,9285 "spec/rubocop/cop/gitlab/policy_rule_boolean_spec.rb": 0.3784189790003438,9286 "spec/lib/gitlab/etag_caching/router/graphql_spec.rb": 0.2828375170010986,9287 "spec/lib/gitlab/i18n_spec.rb": 0.491325949999009,9288 "spec/lib/gitlab/hook_data/subgroup_builder_spec.rb": 0.46476289199927123,9289 "spec/workers/ci/create_cross_project_pipeline_worker_spec.rb": 0.6988519629994698,9290 "spec/lib/gitlab/app_logger_spec.rb": 0.21464857200044207,9291 "spec/lib/gitlab/email/message/in_product_marketing/trial_short_spec.rb": 0.2750503679999383,9292 "spec/lib/mattermost/command_spec.rb": 0.21498244299982616,9293 "spec/graphql/types/container_repository_sort_enum_spec.rb": 0.23371329099973082,9294 "spec/lib/gitlab/phabricator_import/conduit/client_spec.rb": 0.29899575499985076,9295 "spec/lib/gitlab/emoji_spec.rb": 0.15660049799953413,9296 "spec/models/clusters/project_spec.rb": 0.2340610410010413,9297 "spec/graphql/types/commit_type_spec.rb": 0.1503758069993637,9298 "spec/workers/experiments/record_conversion_event_worker_spec.rb": 0.25170335000075283,9299 "spec/models/concerns/presentable_spec.rb": 0.20206546299959882,9300 "spec/models/blob_viewer/server_side_spec.rb": 0.3565946199996688,9301 "spec/rubocop/cop/migration/remove_concurrent_index_spec.rb": 0.20619723299932957,9302 "spec/graphql/types/ci/group_type_spec.rb": 0.14137924899841892,9303 "spec/lib/gitlab/external_authorization/cache_spec.rb": 0.17805252600010135,9304 "spec/graphql/types/design_management/design_collection_type_spec.rb": 0.1720142260001012,9305 "spec/lib/gitlab/graphql/query_analyzers/ast/recursion_analyzer_spec.rb": 0.16756053600147425,9306 "spec/lib/system_check/base_check_spec.rb": 0.12190327999996953,9307 "spec/initializers/0_postgresql_types_spec.rb": 0.1442075980012305,9308 "spec/lib/gitlab/database/sha_attribute_spec.rb": 0.23171067200019024,9309 "spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/strategies/none_spec.rb": 0.19886083399978816,9310 "spec/rubocop/cop/gitlab/bulk_insert_spec.rb": 0.1358547380004893,9311 "spec/workers/todos_destroyer/confidential_issue_worker_spec.rb": 0.1393634279993421,9312 "spec/models/concerns/faster_cache_keys_spec.rb": 0.1090554210004484,9313 "spec/graphql/types/tree/tree_entry_type_spec.rb": 0.14526919899981294,9314 "spec/lib/gitlab/ci/parsers/instrumentation_spec.rb": 0.0698924940006691,9315 "spec/graphql/types/ci_configuration/sast/options_entity_spec.rb": 0.12433573999987857,9316 "spec/lib/gitlab/usage/metrics/instrumentations/cert_based_clusters_ff_metric_spec.rb": 0.11771666999993613,9317 "spec/models/namespace_ci_cd_setting_spec.rb": 0.07058036400121637,9318 "spec/lib/forever_spec.rb": 0.06941282499974477,9319 "spec/lib/gitlab/insecure_key_fingerprint_spec.rb": 0.05404752499998722,9320 "spec/lib/banzai/filter/mermaid_filter_spec.rb": 0.16625854699850606,9321 "spec/lib/sidebars/groups/menus/scope_menu_spec.rb": 0.10868784099875484,9322 "spec/lib/gitlab/usage/metrics/instrumentations/collected_data_categories_metric_spec.rb": 0.10408898099922226,9323 "spec/helpers/deploy_tokens_helper_spec.rb": 0.13559028900090198,9324 "spec/graphql/types/ci/job_kind_enum_spec.rb": 0.084427793000941169325}9326Knapsack global time execution for tests: 25m 57s9327Pending: (Failures listed here are expected and do not affect your suite's status)9328 1) Gitlab::Git::Repository#squash sparse checkout9329 # No reason given9330 # ./spec/lib/gitlab/git/repository_spec.rb:22739331 2) Gitlab::Git::Repository#squash with an ASCII-8BIT diff9332 # No reason given9333 # ./spec/lib/gitlab/git/repository_spec.rb:23179334 3) Gitlab::Git::Repository#squash with trailing whitespace in an invalid patch9335 # No reason given9336 # ./spec/lib/gitlab/git/repository_spec.rb:23299337 4) gitlab:db:lock_writes single database when locking writes does not add any triggers to the main schema tables9338 # Skipping because multiple databases are set up9339 # ./spec/tasks/gitlab/db/lock_writes_rake_spec.rb:279340 5) gitlab:db:lock_writes single database when locking writes will be still able to modify tables that belong to the main two schemas9341 # Skipping because multiple databases are set up9342 # ./spec/tasks/gitlab/db/lock_writes_rake_spec.rb:359343 6) ExternalDiffUploader behaves like builds correct paths #upload_path behaves like matches the method pattern 9344 # No pattern provided, skipping.9345 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:89346 7) ExternalDiffUploader behaves like builds correct paths #relative_path is relative9347 # Path not set, skipping.9348 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:409349 8) ExternalDiffUploader behaves like builds correct paths .absolute_path behaves like matches the method pattern 9350 # No pattern provided, skipping.9351 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:89352 9) ExternalDiffUploader behaves like builds correct paths .base_dir behaves like matches the method pattern 9353 # No pattern provided, skipping.9354 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:89355 10) ExternalDiffUploader object store is REMOTE behaves like builds correct paths #cache_dir behaves like matches the method pattern 9356 # No pattern provided, skipping.9357 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:89358 11) ExternalDiffUploader object store is REMOTE behaves like builds correct paths #work_dir behaves like matches the method pattern 9359 # No pattern provided, skipping.9360 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:89361 12) ExternalDiffUploader object store is REMOTE behaves like builds correct paths #upload_path behaves like matches the method pattern 9362 # No pattern provided, skipping.9363 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:89364 13) ExternalDiffUploader object store is REMOTE behaves like builds correct paths #relative_path is relative9365 # Path not set, skipping.9366 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:409367 14) ExternalDiffUploader object store is REMOTE behaves like builds correct paths .absolute_path behaves like matches the method pattern 9368 # No pattern provided, skipping.9369 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:89370 15) ExternalDiffUploader object store is REMOTE behaves like builds correct paths .base_dir behaves like matches the method pattern 9371 # No pattern provided, skipping.9372 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:89373Finished in 26 minutes 3 seconds (files took 1 minute 8.21 seconds to load)93745479 examples, 0 failures, 15 pending9375RSpec exited with 0.9376No examples to retry, congrats!9378Not uploading cache ruby-gems-debian-bullseye-ruby-2.7-10 due to policy9379Not uploading cache gitaly-ruby-gems-debian-bullseye-ruby-2.7-10 due to policy9381Uploading artifacts...9382coverage/: found 5 matching files and directories 9383crystalball/: found 2 matching files and directories 9384deprecations/: found 12 matching files and directories 9385knapsack/: found 3 matching files and directories 9386rspec/: found 8 matching files and directories 9387WARNING: tmp/capybara/: no matching files. Ensure that the artifact path is relative to the working directory 9388log/*.log: found 19 matching files and directories 9389WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/2658553364/artifacts?artifact_format=zip&artifact_type=archive&expire_in=31d new-url=https://gitlab.com9390WARNING: Retrying... context=artifacts-uploader error=request redirected9391Uploading artifacts as "archive" to coordinator... 201 Created id=2658553364 responseStatus=201 Created token=SC6UoY2S9392Uploading artifacts...9393rspec/junit_rspec.xml: found 1 matching files and directories 9394WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/2658553364/artifacts?artifact_format=gzip&artifact_type=junit&expire_in=31d new-url=https://gitlab.com9395WARNING: Retrying... context=artifacts-uploader error=request redirected9396Uploading artifacts as "junit" to coordinator... 201 Created id=2658553364 responseStatus=201 Created token=SC6UoY2S9398Job succeeded