Skip to content

Commit

Permalink
Properly populate ConfigRoot instances with named maps.
Browse files Browse the repository at this point in the history
  • Loading branch information
radcortez committed Mar 24, 2021
1 parent f744fd7 commit a6eeafa
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 0 deletions.
Expand Up @@ -729,6 +729,9 @@ private Set<String> getAllProperties() {
for (ConfigSource configSource : config.getConfigSources()) {
properties.addAll(configSource.getPropertyNames());
}
for (String propertyName : config.getPropertyNames()) {
properties.add(propertyName);
}
return properties;
}
}
Expand Down
@@ -1,8 +1,11 @@
package io.quarkus.arc.test.config;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotNull;

import java.util.Map;

import javax.inject.Inject;

import org.eclipse.microprofile.config.Config;
Expand All @@ -13,14 +16,28 @@
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;

import io.quarkus.arc.deployment.ConfigPropertyBuildItem;
import io.quarkus.deployment.annotations.BuildProducer;
import io.quarkus.deployment.annotations.BuildStep;
import io.quarkus.runtime.annotations.ConfigItem;
import io.quarkus.runtime.annotations.ConfigPhase;
import io.quarkus.runtime.annotations.ConfigRoot;
import io.quarkus.test.QuarkusUnitTest;

public class ConfigDefaultValuesTest {
@RegisterExtension
static final QuarkusUnitTest TEST = new QuarkusUnitTest()
.setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class)
.addClass(ConfigDefaultValuesTest.class)
.addClass(MapBuildTimeConfig.class)
.addClass(MapBuildTimeConfigBuildStep.class)
.addAsResource(new StringAsset(MapBuildTimeConfig.class.getName()), "META-INF/quarkus-config-roots.list")
.addAsResource(new StringAsset(MapBuildTimeConfigBuildStep.class.getName()),
"META-INF/quarkus-build-steps.list")
.addAsResource(new StringAsset(
"config_ordinal=1000\n" +
"quarkus.map-test.names.naruto=uzumaki\n" +
"%test.quarkus.map-test.names.sasuke=uchiha\n" +
"my.prop=1234\n" +
"%prod.my.prop=1234\n" +
"%dev.my.prop=5678\n" +
Expand Down Expand Up @@ -55,6 +72,17 @@ void profileDefaultValues() {
assertEquals("1234", config.getValue("my.prop", String.class));
}

@Inject
MapBuildTimeConfig mapBuildTimeConfig;

@Test
void buildTimeConfigMap() {
assertFalse(mapBuildTimeConfig.names.isEmpty());
assertEquals(2, mapBuildTimeConfig.names.size());
assertEquals("uzumaki", mapBuildTimeConfig.names.get("naruto"));
assertEquals("uchiha", mapBuildTimeConfig.names.get("sasuke"));
}

private ConfigSource getConfigSourceByName(String name) {
for (ConfigSource configSource : config.getConfigSources()) {
if (configSource.getName().contains(name)) {
Expand All @@ -63,4 +91,22 @@ private ConfigSource getConfigSourceByName(String name) {
}
return null;
}

@ConfigRoot(phase = ConfigPhase.BUILD_AND_RUN_TIME_FIXED, name = "map-test")
public static class MapBuildTimeConfig {
/**
* Empty
*/
@ConfigItem
Map<String, String> names;
}

public static class MapBuildTimeConfigBuildStep {
@BuildStep
void validate(BuildProducer<ConfigPropertyBuildItem> configProperties, MapBuildTimeConfig mapBuildTimeConfig) {
assertEquals(2, mapBuildTimeConfig.names.size());
assertEquals("uzumaki", mapBuildTimeConfig.names.get("naruto"));
assertEquals("uchiha", mapBuildTimeConfig.names.get("sasuke"));
}
}
}

0 comments on commit a6eeafa

Please sign in to comment.