public void setConfigAttributes(Object attributes, SecureKeyInfoProvider secureKeyInfoProvider) { this.clear(); Map attributesMap = (Map) attributes; for (Object o : attributesMap.values()) { Map configurationAttributeMap = (Map) o; ConfigurationProperty configurationProperty = new ConfigurationProperty(); configurationProperty.setConfigAttributes(configurationAttributeMap, secureKeyInfoProvider); this.add(configurationProperty); } }
public void addNewConfigurationWithValue(String key, String value, boolean isSecure) { if (isSecure) { add(new ConfigurationProperty(new ConfigurationKey(key), new EncryptedConfigurationValue(value))); } else { add(new ConfigurationProperty(new ConfigurationKey(key), new ConfigurationValue(value))); } }
public static ConfigurationProperty createKeyOnly(String key) { ConfigurationValue configurationValue = null; return new ConfigurationProperty(new ConfigurationKey(key), configurationValue); } }
@Test public void shouldGetEmptyValueWhenSecurePropertyValueIsNullOrEmpty() throws Exception { assertThat(new ConfigurationProperty(new ConfigurationKey("key"), null, new EncryptedConfigurationValue(""), cipher).getValue(), is("")); assertThat(new ConfigurationProperty(new ConfigurationKey("key"), null, new EncryptedConfigurationValue(null), cipher).getValue(), is("")); verify(cipher, never()).decrypt(anyString()); }
@Test public void shouldGetPropertyForFingerprint() { ConfigurationValue configurationValue = new ConfigurationValue("value"); ConfigurationKey configurationKey = new ConfigurationKey("key"); ConfigurationProperty configurationProperty = new ConfigurationProperty(configurationKey, configurationValue, null, null); assertThat(configurationProperty.forFingerprint(), is("key=value")); }
@Test public void shouldGetKeyValuePairForFingerPrintString() { ConfigurationValue configurationValue = new ConfigurationValue("value"); ConfigurationKey configurationKey = new ConfigurationKey("key"); ConfigurationProperty configurationProperty = new ConfigurationProperty(configurationKey, configurationValue, null, null); assertThat(configurationProperty.forFingerprint(), is("key=value")); }
@Test public void shouldCheckIfSecureValueFieldHasNoErrors() { EncryptedConfigurationValue encryptedValue = new EncryptedConfigurationValue("encrypted-value"); assertThat(new ConfigurationProperty(new ConfigurationKey("key"), null, encryptedValue, cipher).doesNotHaveErrorsAgainstConfigurationValue(), is(true)); encryptedValue.addError("value", "some-error"); assertThat(new ConfigurationProperty(new ConfigurationKey("key"), null, encryptedValue, cipher).doesNotHaveErrorsAgainstConfigurationValue(), is(false)); }
@Test public void shouldNotClearEncryptedValueWhenWhenNewValueNotProvided() { GoCipher goCipher = mock(GoCipher.class); ConfigurationProperty property = new ConfigurationProperty(new ConfigurationKey("secureKey"), null, new EncryptedConfigurationValue("secureValue"), goCipher); property.handleSecureValueConfiguration(true); assertThat(property.isSecure(), is(true)); assertThat(property.getConfigurationKey().getName(), is("secureKey")); assertThat(property.getConfigurationValue(), is(nullValue())); assertThat(property.getEncryptedConfigurationValue(), is(notNullValue())); assertThat(property.getEncryptedValue(), is("secureValue")); }
@Test public void shouldValidateKeyUniqueness(){ ConfigurationProperty property = new ConfigurationProperty(new ConfigurationKey("key"), new ConfigurationValue()); HashMap<String, ConfigurationProperty> map = new HashMap<>(); ConfigurationProperty original = new ConfigurationProperty(new ConfigurationKey("key"), new ConfigurationValue()); map.put("key", original); property.validateKeyUniqueness(map, "Repo"); assertThat(property.errors().isEmpty(), is(false)); assertThat(property.errors().getAllOn(ConfigurationProperty.CONFIGURATION_KEY).contains("Duplicate key 'key' found for Repo"), is(true)); assertThat(original.errors().isEmpty(), is(false)); assertThat(original.errors().getAllOn(ConfigurationProperty.CONFIGURATION_KEY).contains("Duplicate key 'key' found for Repo"), is(true)); }
@Test public void addConfigurations_shouldAddConfigurationsWithEncryptedValue() throws Exception { ConfigurationProperty property = new ConfigurationProperty(new ConfigurationKey("username"), new EncryptedConfigurationValue("some_name")); SecurityAuthConfig authConfig = new SecurityAuthConfig("id", "plugin_id"); authConfig.addConfigurations(Arrays.asList(property)); assertThat(authConfig.size(), is(1)); assertThat(authConfig, contains(new ConfigurationProperty(new ConfigurationKey("username"), new EncryptedConfigurationValue("some_name")))); }
@Test public void shouldNotAddFingerprintFieldErrorWhenPackageDefinitionWithSameFingerprintNotFound() throws Exception { PackageRepository repository = PackageRepositoryMother.create("repo1"); PackageDefinition packageDefinition = PackageDefinitionMother.create("1", "pkg1", new Configuration(new ConfigurationProperty(new ConfigurationKey("k1"), new ConfigurationValue("v1"))), repository); HashMap<String, Packages> map = new HashMap<>(); map.put(packageDefinition.getFingerprint(AbstractMaterialConfig.FINGERPRINT_DELIMITER), new Packages(packageDefinition)); packageDefinition.validateFingerprintUniqueness(map); assertThat(packageDefinition.errors().getAllOn(PackageDefinition.ID), is(nullValue())); } }
@Test public void shouldGetMaskedStringIfConfigurationPropertyIsSecure() { assertThat(new ConfigurationProperty(new ConfigurationKey("key"), new EncryptedConfigurationValue("value")).getDisplayValue(), is("****")); assertThat(new ConfigurationProperty(new ConfigurationKey("key"), new ConfigurationValue("value")).getDisplayValue(), is("value")); } }
@Test public void shouldGetConfigPropertyForGivenKey() { ConfigurationProperty property1 = new ConfigurationProperty(new ConfigurationKey("key1"), new ConfigurationValue("value1"), null, null); ConfigurationProperty property2 = new ConfigurationProperty(new ConfigurationKey("key2"), new ConfigurationValue("value2"), null, null); Configuration config = new Configuration(property1, property2); assertThat(config.getProperty("key2"), is(property2)); }
@Test public void addConfiguration_shouldIgnoreEncryptionInAbsenceOfCorrespondingConfigurationInStore() throws Exception { AuthorizationPluginInfo pluginInfo = new AuthorizationPluginInfo(pluginDescriptor("plugin_id"), new PluggableInstanceSettings(new ArrayList<>()), null, null, null); store.setPluginInfo(pluginInfo); SecurityAuthConfig authConfig = new SecurityAuthConfig("id", "plugin_id"); authConfig.addConfigurations(Arrays.asList(new ConfigurationProperty(new ConfigurationKey("password"), new ConfigurationValue("pass")))); assertThat(authConfig.size(), is(1)); assertFalse(authConfig.first().isSecure()); assertThat(authConfig, contains(new ConfigurationProperty(new ConfigurationKey("password"), new ConfigurationValue("pass")))); }
@Test public void postConstruct_shouldIgnoreEncryptionIfPluginInfoIsNotDefined() { ArtifactStore artifactStore = new ArtifactStore("id", "plugin_id", new ConfigurationProperty(new ConfigurationKey("password"), new ConfigurationValue("pass"))); artifactStore.encryptSecureConfigurations(); assertThat(artifactStore.size(), is(1)); assertFalse(artifactStore.first().isSecure()); }
@Test public void postConstruct_shouldIgnoreEncryptionIfPluginInfoIsNotDefined() throws Exception { SecurityAuthConfig authConfig = new SecurityAuthConfig("id", "plugin_id", new ConfigurationProperty(new ConfigurationKey("password"), new ConfigurationValue("pass"))); authConfig.encryptSecureConfigurations(); assertThat(authConfig.size(), is(1)); assertFalse(authConfig.first().isSecure()); }
@Test public void postConstruct_shouldEncryptSecureConfigurations() throws Exception { PluggableInstanceSettings profileSettings = new PluggableInstanceSettings(Arrays.asList(new PluginConfiguration("password", new Metadata(true, true)))); AuthorizationPluginInfo pluginInfo = new AuthorizationPluginInfo(pluginDescriptor("plugin_id"), profileSettings, null, null, null); store.setPluginInfo(pluginInfo); SecurityAuthConfig authConfig = new SecurityAuthConfig("id", "plugin_id", new ConfigurationProperty(new ConfigurationKey("password"), new ConfigurationValue("pass"))); authConfig.encryptSecureConfigurations(); assertThat(authConfig.size(), is(1)); assertTrue(authConfig.first().isSecure()); }
@Test public void postConstruct_shouldEncryptSecureConfigurations() { PluggableInstanceSettings profileSettings = new PluggableInstanceSettings(Arrays.asList(new PluginConfiguration("password", new Metadata(true, true)))); ElasticAgentPluginInfo pluginInfo = new ElasticAgentPluginInfo(pluginDescriptor("plugin_id"), profileSettings, null, null, null); store.setPluginInfo(pluginInfo); ElasticProfile profile = new ElasticProfile("id", "plugin_id", new ConfigurationProperty(new ConfigurationKey("password"), new ConfigurationValue("pass"))); profile.encryptSecureConfigurations(); assertThat(profile.size(), is(1)); assertTrue(profile.first().isSecure()); }
@Test public void addConfiguration_shouldEncryptASecureVariable() throws Exception { PluggableInstanceSettings profileSettings = new PluggableInstanceSettings(Arrays.asList(new PluginConfiguration("password", new Metadata(true, true)))); ElasticAgentPluginInfo pluginInfo = new ElasticAgentPluginInfo(pluginDescriptor("plugin_id"), profileSettings, null, null, null); store.setPluginInfo(pluginInfo); ElasticProfile profile = new ElasticProfile("id", "plugin_id"); profile.addConfigurations(Arrays.asList(new ConfigurationProperty(new ConfigurationKey("password"), new ConfigurationValue("pass")))); assertThat(profile.size(), is(1)); assertTrue(profile.first().isSecure()); }
public static JobPlan jobPlanWithAssociatedEntities(String jobName, long id, List<ArtifactPlan> artifactPlans, List<ArtifactPropertiesGenerator> artifactPropertiesGenerators) { ConfigurationProperty configurationProperty = new ConfigurationProperty(new ConfigurationKey("image"), new ConfigurationValue("elastic-agent")); ElasticProfile elasticProfile = new ElasticProfile("elastic", "plugin", configurationProperty); EnvironmentVariables variables = new EnvironmentVariables(); variables.add("some_var", "blah"); return new DefaultJobPlan(new Resources(new Resource("foo"), new Resource("bar")), artifactPlans, artifactPropertiesGenerators, id, defaultJobIdentifier(jobName), null, variables, new EnvironmentVariables(), elasticProfile); } }