/*
* Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com
* The software in this package is published under the terms of the CPAL v1.0
* license, a copy of which has been included with this distribution in the
* LICENSE.txt file.
*/
package org.mule.runtime.core.config.artifact;
import static java.util.Collections.emptyMap;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertThat;
import static org.mule.tck.MuleTestUtils.testWithSystemProperty;
import org.mule.tck.junit4.AbstractMuleTestCase;
import com.google.common.collect.ImmutableMap;
import java.util.Map;
import org.junit.Test;
public class DefaultArtifactPropertiesTestCase extends AbstractMuleTestCase {
private static final String OVERRIDE_PROPERTY_KEY = "overrideProperty";
private static final String CONFIG_PROPERTY_OVERRIDE_VALUE = "configPropertyValue";
private static final String ARTIFACT_PROPERTY_OVERRIDE_VALUE = "artifactPropertyValue";
private static final String SPRING_PROPERTY_OVERRIDE_VALUE = "springPropertyValue";
private static final String SYSTEM_PROPERTY_OVERRIDE_VALUE = "systemPropertyValue";
private Map<Object, Object> configPropertiesOverriddenPropertyMap =
ImmutableMap.builder().put(OVERRIDE_PROPERTY_KEY, CONFIG_PROPERTY_OVERRIDE_VALUE).build();
private Map<Object, Object> artifactPropertiesOverriddenMap =
ImmutableMap.builder().put(OVERRIDE_PROPERTY_KEY, ARTIFACT_PROPERTY_OVERRIDE_VALUE).build();
private Map<Object, Object> springPropertiesOverriddenMap =
ImmutableMap.builder().put(OVERRIDE_PROPERTY_KEY, SPRING_PROPERTY_OVERRIDE_VALUE).build();
private DefaultArtifactProperties properties;
@Test
public void propertiesScopesOverride() throws Exception {
properties =
new DefaultArtifactProperties(configPropertiesOverriddenPropertyMap, emptyMap(), emptyMap());
assertThat(properties.getProperty(OVERRIDE_PROPERTY_KEY), is(CONFIG_PROPERTY_OVERRIDE_VALUE));
properties = new DefaultArtifactProperties(configPropertiesOverriddenPropertyMap, springPropertiesOverriddenMap, emptyMap());
assertThat(properties.getProperty(OVERRIDE_PROPERTY_KEY), is(SPRING_PROPERTY_OVERRIDE_VALUE));
properties = new DefaultArtifactProperties(configPropertiesOverriddenPropertyMap, springPropertiesOverriddenMap,
artifactPropertiesOverriddenMap);
assertThat(properties.getProperty(OVERRIDE_PROPERTY_KEY), is(ARTIFACT_PROPERTY_OVERRIDE_VALUE));
testWithSystemProperty(OVERRIDE_PROPERTY_KEY, SYSTEM_PROPERTY_OVERRIDE_VALUE, () -> {
properties = new DefaultArtifactProperties(configPropertiesOverriddenPropertyMap, springPropertiesOverriddenMap,
artifactPropertiesOverriddenMap);
assertThat(properties.getProperty(OVERRIDE_PROPERTY_KEY), is(SYSTEM_PROPERTY_OVERRIDE_VALUE));
});
}
@Test(expected = UnsupportedOperationException.class)
public void propertiesMapReturnsInmmutableMap() {
new DefaultArtifactProperties(emptyMap(), emptyMap(), emptyMap()).toImmutableMap().put("key", "value");
}
@Test(expected = IllegalArgumentException.class)
public void configMapCannotBeNull() {
new DefaultArtifactProperties(null, emptyMap(), emptyMap());
}
@Test(expected = IllegalArgumentException.class)
public void springPropertiesMapCannotBeNull() {
new DefaultArtifactProperties(emptyMap(), null, emptyMap());
}
@Test(expected = IllegalArgumentException.class)
public void artifactConfigMapCannotBeNull() {
new DefaultArtifactProperties(emptyMap(), emptyMap(), null);
}
}