public boolean validateRepositoryConfiguration(final PackageRepository packageRepository) { if (!packageRepository.doesPluginExist()) { throw new RuntimeException(String.format("Plugin with id '%s' is not found.", packageRepository.getPluginConfiguration().getId())); } ValidationResult validationResult = packageRepositoryExtension.isRepositoryConfigurationValid(packageRepository.getPluginConfiguration().getId(), populateConfiguration(packageRepository.getConfiguration())); addErrorsToConfiguration(validationResult, packageRepository); return validationResult.isSuccessful(); }
@Test public void shouldTalkToPluginToCheckIfRepositoryConfigurationIsValid() throws Exception { String expectedRequestBody = "{\"repository-configuration\":{\"key-one\":{\"value\":\"value-one\"},\"key-two\":{\"value\":\"value-two\"}}}"; String expectedResponseBody = "[{\"key\":\"key-one\",\"message\":\"incorrect value\"},{\"message\":\"general error\"}]"; when(pluginManager.isPluginOfType(PACKAGE_MATERIAL_EXTENSION, PLUGIN_ID)).thenReturn(true); when(pluginManager.submitTo(eq(PLUGIN_ID), eq(PACKAGE_MATERIAL_EXTENSION), requestArgumentCaptor.capture())).thenReturn(DefaultGoPluginApiResponse.success(expectedResponseBody)); ValidationResult validationResult = extension.isRepositoryConfigurationValid(PLUGIN_ID, repositoryConfiguration); assertRequest(requestArgumentCaptor.getValue(), PACKAGE_MATERIAL_EXTENSION, "1.0", PackageRepositoryExtension.REQUEST_VALIDATE_REPOSITORY_CONFIGURATION, expectedRequestBody); assertValidationError(validationResult.getErrors().get(0), "key-one", "incorrect value"); assertValidationError(validationResult.getErrors().get(1), "", "general error"); }
void performPluginValidationsFor(final PackageRepository packageRepository) { if (!validatePluginId(packageRepository)) { return; } for (ConfigurationProperty configurationProperty : packageRepository.getConfiguration()) { String key = configurationProperty.getConfigurationKey().getName(); String pluginId = packageRepository.getPluginConfiguration().getId(); if (repositoryMetadataStore.hasOption(pluginId, key, PackageConfiguration.REQUIRED)) { if (configurationProperty.getValue().isEmpty()) { configurationProperty.addErrorAgainstConfigurationValue("This field is required"); } } } ValidationResult validationResult = packageRepositoryExtension.isRepositoryConfigurationValid(packageRepository.getPluginConfiguration().getId(), populateConfiguration(packageRepository.getConfiguration())); for (ValidationError error : validationResult.getErrors()) { packageRepository.addConfigurationErrorFor(error.getKey(), error.getMessage()); } }