public void validateKeyUniqueness(HashMap<String, ConfigurationProperty> map, String entity) { String name = configurationKey.getName().toLowerCase(); ConfigurationProperty propertyWithSameKey = map.get(name); if (propertyWithSameKey == null) { map.put(name, this); } else { String errorMessage = format("Duplicate key '%s' found for %s", configurationKey.getName(), entity); propertyWithSameKey.addError(ConfigurationProperty.CONFIGURATION_KEY, errorMessage); addError(ConfigurationProperty.CONFIGURATION_KEY, errorMessage); } }
@Override public void validate(ValidationContext validationContext) { try { getValue(); } catch (Exception e) { addError(ENCRYPTED_VALUE, format("Encrypted value for property with key '%s' is invalid. This usually happens when the cipher text is modified to have an invalid value.", configurationKey.getName())); } }
public void populateErrorMessageFor(String settingsKey, String errorMessage) { hasErrors = true; for (ConfigurationProperty configurationProperty : settingsMap) { if (configurationProperty.getConfigKeyName().equals(settingsKey)) { configurationProperty.addError(settingsKey, errorMessage); break; } } if (getErrorFor(settingsKey) == null) { addError(settingsKey, errorMessage); } }
public ConfigurationProperty deserialize(String name, String value, String encryptedValue) { setKey(new ConfigurationKey(name)); if (isNotBlank(value) && isNotBlank(encryptedValue)) { addError("value", "You may only specify `value` or `encrypted_value`, not both!"); addError(ENCRYPTED_VALUE, "You may only specify `value` or `encrypted_value`, not both!"); } if (isNotBlank(encryptedValue)) { setEncryptedValue(new EncryptedConfigurationValue(new GoCipher().maybeReEncryptForPostConstructWithoutExceptions(encryptedValue))); } if (isNotBlank(value)) { setConfigurationValue(new ConfigurationValue(value)); } return this; } }
configurationProperty.addError("configurationValue", "You may only specify `value` or `encrypted_value`, not both!"); configurationProperty.addError("encryptedValue", "You may only specify `value` or `encrypted_value`, not both!"); configurationProperty.addError("encryptedValue", "encrypted_value cannot be specified to a unsecured property."); configurationProperty.setEncryptedValue(new EncryptedConfigurationValue(encryptedValue));
@Test public void shouldReturnConfigWithErrorsAsMap() { ConfigurationProperty configurationProperty = ConfigurationPropertyMother.create("key", false, "value"); configurationProperty.addError("key", "invalid key"); Configuration configuration = new Configuration(configurationProperty); Map<String, Map<String, String>> configWithErrorsAsMap = configuration.getConfigWithErrorsAsMap(); HashMap<Object, Object> expectedMap = new HashMap<>(); HashMap<Object, Object> errorsMap = new HashMap<>(); errorsMap.put("value", "value"); ConfigErrors configErrors = new ConfigErrors(); configErrors.add("key", "invalid key"); errorsMap.put("errors", configErrors.getAll().toString()); expectedMap.put("key", errorsMap); assertThat(configWithErrorsAsMap, is(expectedMap)); }
private void addErrorsToConfiguration(ValidationResult validationResult, PackageRepository packageRepository) { for (ValidationError validationError : validationResult.getErrors()) { ConfigurationProperty property = packageRepository.getConfiguration().getProperty(validationError.getKey()); if (property != null) { property.addError(validationError.getKey(), validationError.getMessage()); } else { String validationErrorKey = StringUtils.isBlank(validationError.getKey()) ? PackageRepository.CONFIGURATION : validationError.getKey(); packageRepository.addError(validationErrorKey, validationError.getMessage()); } } }
private void addErrorsToConfiguration(ValidationResult validationResult, PackageDefinition packageDefinition) { for (ValidationError validationError : validationResult.getErrors()) { ConfigurationProperty property = packageDefinition.getConfiguration().getProperty(validationError.getKey()); if (property != null) { property.addError(validationError.getKey(), validationError.getMessage()); } else { String validationErrorKey = StringUtils.isBlank(validationError.getKey()) ? PackageDefinition.CONFIGURATION : validationError.getKey(); packageDefinition.addError(validationErrorKey, validationError.getMessage()); } } }
private void mapErrorsToConfiguration(ValidationResult result, Configuration configuration, Validatable validatableConfig) { for (ValidationError validationError : result.getErrors()) { ConfigurationProperty property = configuration.getProperty(validationError.getKey()); if (property == null) { validatableConfig.addError(validationError.getKey(), validationError.getMessage()); } else { property.addError(validationError.getKey(), validationError.getMessage()); } } } }
private void mapErrorsToConfiguration(ValidationResult result, PluggableTask task) { for (ValidationError validationError : result.getErrors()) { ConfigurationProperty property = task.getConfiguration().getProperty(validationError.getKey()); if (property != null) { property.addError(validationError.getKey(), validationError.getMessage()); } else { task.addError(validationError.getKey(), validationError.getMessage()); } } } }
private void addErrorsToConfiguration(ValidationResult result, PluginProfile newSecurityAuthConfig) { if (!result.isSuccessful()) { for (com.thoughtworks.go.plugin.api.response.validation.ValidationError validationError : result.getErrors()) { ConfigurationProperty property = newSecurityAuthConfig.getProperty(validationError.getKey()); if (property != null) { property.addError(validationError.getKey(), validationError.getMessage()); } else { newSecurityAuthConfig.addError(validationError.getKey(), validationError.getMessage()); } } } }
private void addErrorsToConfiguration(ValidationResult validationResult, SCM scmConfig) { for (ValidationError validationError : validationResult.getErrors()) { ConfigurationProperty property = scmConfig.getConfiguration().getProperty(validationError.getKey()); if (property != null) { property.addError(validationError.getKey(), validationError.getMessage()); } else { scmConfig.addError(validationError.getKey(), validationError.getMessage()); } } }
private void mapErrors(VerifyConnectionResponse response, SecurityAuthConfig authConfig) { com.thoughtworks.go.plugin.domain.common.ValidationResult validationResult = response.getValidationResult(); if (validationResult == null) { return; } for (ValidationError error : validationResult.getErrors()) { ConfigurationProperty property = authConfig.getProperty(error.getKey()); if (property == null) { authConfig.addNewConfiguration(error.getKey(), false); property = authConfig.getProperty(error.getKey()); } property.addError(error.getKey(), error.getMessage()); } }
@Test public void dataForViewShouldIncludeErrorsIfAny() throws Exception { ConfigurationProperty property1 = create("key1", false, "value1"); property1.addError("key1", "error msg"); ConfigurationProperty property2 = create("KEY2", false, "value2"); Configuration configuration = new Configuration(property1, property2); PluggableTask taskConfig = new PluggableTask(new PluginConfiguration("plugin-1", "2"), configuration); PluggableTaskViewModelFactory factory = new PluggableTaskViewModelFactory(); PluggableViewModel<PluggableTask> viewModel = factory.viewModelFor(taskConfig, "new"); String actualData = (String) viewModel.getParameters().get("data"); Gson gson = new Gson(); Map actual = gson.fromJson(actualData, Map.class); Map expected = gson.fromJson("{\"KEY2\":{\"value\": \"value2\"},\"key1\":{\"value\" : \"value1\", \"errors\" : \"error msg\"}}", Map.class); assertEquals(expected, actual); }
public void validate(PluginRoleConfig role, String pluginId) { try { ValidationResult result = authorizationExtension.validateRoleConfiguration(pluginId, role.getConfigurationAsMap(true)); if (!result.isSuccessful()) { for (ValidationError error : result.getErrors()) { ConfigurationProperty property = role.getProperty(error.getKey()); if (property == null) { role.addNewConfiguration(error.getKey(), false); property = role.getProperty(error.getKey()); } property.addError(error.getKey(), error.getMessage()); } } } catch (PluginNotFoundException e) { role.addError("pluginRole", String.format("Unable to validate `pluginRole` configuration, missing plugin: %s", pluginId)); } } }
public void validate(final SCM scmConfig) { final String pluginId = scmConfig.getPluginConfiguration().getId(); final SCMPropertyConfiguration configuration = getScmPropertyConfiguration(scmConfig); ValidationResult validationResult = scmExtension.isSCMConfigurationValid(pluginId, configuration); if (SCMMetadataStore.getInstance().hasPreferenceFor(pluginId)) { SCMConfigurations configurationMetadata = SCMMetadataStore.getInstance().getConfigurationMetadata(pluginId); for (SCMConfiguration scmConfiguration : configurationMetadata.list()) { String key = scmConfiguration.getKey(); boolean isRequired = SCMMetadataStore.getInstance().hasOption(pluginId, key, Property.REQUIRED); ConfigurationProperty property = scmConfig.getConfiguration().getProperty(key); String configValue = property == null ? null : property.getValue(); if (isRequired && StringUtils.isBlank(configValue)) { validationResult.addError(new ValidationError(key, "This field is required")); } } } for (ValidationError validationError : validationResult.getErrors()) { ConfigurationProperty property = scmConfig.getConfiguration().getProperty(validationError.getKey()); if (property != null) { property.addError(validationError.getKey(), validationError.getMessage()); } } }
@Test public void hasErrors_shouldBeTrueIfConfigurationPropertiesHasErrors() throws Exception { ConfigurationProperty property = new ConfigurationProperty(new ConfigurationKey("username"), new ConfigurationValue("view")); PluginRoleConfig roleConfig = new PluginRoleConfig("admin", "auth_id", property); property.addError("username", "username format is incorrect"); assertTrue(roleConfig.hasErrors()); assertTrue(roleConfig.errors().isEmpty()); }
public boolean validate(final PluggableTask modifiedTask) { final TaskConfig configuration = new TaskConfig(); for (ConfigurationProperty configurationProperty : modifiedTask.getConfiguration()) { configuration.add(new TaskConfigProperty(configurationProperty.getConfigurationKey().getName(), configurationProperty.getValue())); } final String pluginId = modifiedTask.getPluginConfiguration().getId(); ValidationResult validationResult = taskExtension.validate(pluginId, configuration); final TaskPreference preference = PluggableTaskConfigStore.store().preferenceFor(pluginId); if (PluggableTaskConfigStore.store().hasPreferenceFor(pluginId)) { for (ConfigurationProperty configurationProperty : modifiedTask.getConfiguration()) { String key = configurationProperty.getConfigurationKey().getName(); final Property property = preference.getConfig().get(key); if (property != null) { final Boolean required = property.getOption(Property.REQUIRED); if (required && StringUtils.isBlank(configurationProperty.getConfigValue())) validationResult.addError(new ValidationError(property.getKey(), "This field is required")); } } } for (ValidationError validationError : validationResult.getErrors()) { modifiedTask.getConfiguration().getProperty(validationError.getKey()).addError(validationError.getKey(), validationError.getMessage()); } return validationResult.isSuccessful(); }