Skip to content

Commit

Permalink
Only override ConfigurationSourceProvider if explicitly provided (#2720)
Browse files Browse the repository at this point in the history
Fixes #2719
  • Loading branch information
Michael Zamani authored and joschi committed Apr 6, 2019
1 parent e5f99de commit 6c17257
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
import io.dropwizard.cli.Command;
import io.dropwizard.cli.ServerCommand;
import io.dropwizard.configuration.ConfigurationSourceProvider;
import io.dropwizard.configuration.FileConfigurationSourceProvider;
import io.dropwizard.configuration.YamlConfigurationFactory;
import io.dropwizard.lifecycle.Managed;
import io.dropwizard.setup.Bootstrap;
Expand Down Expand Up @@ -46,6 +45,7 @@ public class DropwizardTestSupport<C extends Configuration> {

@Nullable
protected final String configPath;
@Nullable
protected final ConfigurationSourceProvider configSourceProvider;
protected final Set<ConfigOverride> configOverrides;
@Nullable
Expand Down Expand Up @@ -80,7 +80,7 @@ public DropwizardTestSupport(Class<? extends Application<C>> applicationClass,

public DropwizardTestSupport(Class<? extends Application<C>> applicationClass,
@Nullable String configPath,
ConfigurationSourceProvider configSourceProvider,
@Nullable ConfigurationSourceProvider configSourceProvider,
ConfigOverride... configOverrides) {
this(applicationClass, configPath, configSourceProvider, null, configOverrides);
}
Expand All @@ -98,7 +98,7 @@ public DropwizardTestSupport(Class<? extends Application<C>> applicationClass,

public DropwizardTestSupport(Class<? extends Application<C>> applicationClass,
@Nullable String configPath,
ConfigurationSourceProvider configSourceProvider,
@Nullable ConfigurationSourceProvider configSourceProvider,
@Nullable String customPropertyPrefix,
ConfigOverride... configOverrides) {
this(applicationClass, configPath, configSourceProvider, customPropertyPrefix, ServerCommand::new, configOverrides);
Expand Down Expand Up @@ -128,12 +128,12 @@ public DropwizardTestSupport(Class<? extends Application<C>> applicationClass,
@Nullable String customPropertyPrefix,
Function<Application<C>, Command> commandInstantiator,
ConfigOverride... configOverrides) {
this(applicationClass, configPath, new FileConfigurationSourceProvider(), customPropertyPrefix, commandInstantiator, configOverrides);
this(applicationClass, configPath, null, customPropertyPrefix, commandInstantiator, configOverrides);
}

public DropwizardTestSupport(Class<? extends Application<C>> applicationClass,
@Nullable String configPath,
ConfigurationSourceProvider configSourceProvider,
@Nullable ConfigurationSourceProvider configSourceProvider,
@Nullable String customPropertyPrefix,
Function<Application<C>, Command> commandInstantiator,
ConfigOverride... configOverrides) {
Expand Down Expand Up @@ -180,7 +180,7 @@ public DropwizardTestSupport(Class<? extends Application<C>> applicationClass,
}
this.applicationClass = applicationClass;
this.configPath = "";
this.configSourceProvider = new FileConfigurationSourceProvider();
this.configSourceProvider = null;
this.configOverrides = Collections.emptySet();
this.customPropertyPrefix = null;
this.configuration = configuration;
Expand Down Expand Up @@ -288,7 +288,9 @@ public void run(C configuration, Environment environment) throws Exception {
};

getApplication().initialize(bootstrap);
bootstrap.setConfigurationSourceProvider(configSourceProvider);
if (configSourceProvider != null) {
bootstrap.setConfigurationSourceProvider(configSourceProvider);
}

if (explicitConfig) {
bootstrap.setConfigurationFactoryFactory((klass, validator, objectMapper, propertyPrefix) ->
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,21 @@
package io.dropwizard.testing;

import io.dropwizard.configuration.ResourceConfigurationSourceProvider;
import io.dropwizard.setup.Bootstrap;
import io.dropwizard.setup.Environment;
import io.dropwizard.testing.app.TestApplication;
import io.dropwizard.testing.app.TestConfiguration;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;

import java.io.IOException;
import java.io.InputStream;

import static org.assertj.core.api.Assertions.assertThat;

class DropwizardTestSupportWithResourceConfigProviderTest {
private static final TestResourceConfigurationSourceProvider TEST_CONFIG_SOURCE_PROVIDER =
new TestResourceConfigurationSourceProvider();
private static final DropwizardTestSupport<TestConfiguration> TEST_SUPPORT = new DropwizardTestSupport<>(
TestApplication.class, "test-config.yaml", new ResourceConfigurationSourceProvider());

Expand Down Expand Up @@ -41,4 +46,33 @@ void returnsEnvironment() {
final Environment environment = TEST_SUPPORT.getEnvironment();
assertThat(environment.getName()).isEqualTo("TestApplication");
}

@Test
void doesNotOverwriteConfigSourceProviderIfNotProvidedInConstructor() throws Exception {
DropwizardTestSupport<TestConfiguration> support = new DropwizardTestSupport<>(
TestApplication.class, "test-config.yaml");
try {
support.before();
assertThat(TEST_CONFIG_SOURCE_PROVIDER.openCalled).isTrue();
} finally {
support.after();
}
}

public static class TestResourceConfigurationSourceProvider extends ResourceConfigurationSourceProvider {
volatile boolean openCalled = false;

@Override
public InputStream open(String path) throws IOException {
openCalled = true;
return super.open(path);
}
}

public static class TestApplication extends io.dropwizard.testing.app.TestApplication {
@Override
public void initialize(Bootstrap<TestConfiguration> bootstrap) {
bootstrap.setConfigurationSourceProvider(TEST_CONFIG_SOURCE_PROVIDER);
}
}
}

0 comments on commit 6c17257

Please sign in to comment.