package com.hubspot.singularity.executor.config; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; import java.io.File; import java.lang.reflect.Field; import javax.validation.Validator; import org.junit.Test; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.base.Optional; import com.google.common.base.Throwables; import com.hubspot.singularity.runner.base.config.SingularityRunnerBaseModule; import com.hubspot.singularity.runner.base.config.SingularityRunnerConfigurationProvider; public class SingularityExecutorConfigurationTest { @Test public void itLoadsDockerAuthConfig() { SingularityExecutorConfiguration config = loadConfig("config/executor-conf-dockerauth.yaml"); assertThat(config.getDockerAuthConfig().isPresent()).isTrue(); assertThat(config.getDockerAuthConfig().get().getUsername()).isEqualTo("dockeruser"); assertThat(config.getDockerAuthConfig().get().getPassword()).isEqualTo("dockerpassword"); assertThat(config.getDockerAuthConfig().get().getServerAddress()).isEqualTo("https://private.docker.registry/path"); } private SingularityExecutorConfiguration loadConfig(String file) { try { ObjectMapper mapper = new SingularityRunnerBaseModule(null).providesYamlMapper(); Validator validator = mock(Validator.class); Field mapperField = SingularityRunnerConfigurationProvider.class.getDeclaredField("objectMapper"); mapperField.setAccessible(true); Field validatorField = SingularityRunnerConfigurationProvider.class.getDeclaredField("validator"); validatorField.setAccessible(true); SingularityRunnerConfigurationProvider<SingularityExecutorConfiguration> configProvider = new SingularityRunnerConfigurationProvider<>( SingularityExecutorConfiguration.class, Optional.of(new File(getClass().getClassLoader().getResource(file).toURI()).getAbsolutePath())); mapperField.set(configProvider, mapper); validatorField.set(configProvider, validator); return configProvider.get(); } catch(Exception e) { throw Throwables.propagate(e); } } }