package pl.touk.sputnik.configuration; import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.Option; import org.junit.Test; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; public class ConfigurationBuilderTest { @Test(expected = IllegalArgumentException.class) public void shouldFailWhenConfigFilenameIsEmpty() { ConfigurationBuilder.initFromFile(""); } @Test(expected = RuntimeException.class) public void shouldFailWhenConfigFileDoesNotExist() { ConfigurationBuilder.initFromFile("wrong.properties"); } @Test public void shouldReadPropertiesFromFile() { Configuration config = ConfigurationBuilder.initFromResource("sample-test.properties"); assertThat(config.getProperty(GeneralOption.PORT)).isEqualTo("9999"); } @Test public void shouldOverrideSystemProperties() { System.setProperty(GeneralOption.USERNAME.getKey(), "userala"); Configuration config = ConfigurationBuilder.initFromResource("sample-test.properties"); assertThat(config.getProperty(GeneralOption.USERNAME)).isEqualTo("userala"); } @Test public void shouldReturnNotOverridedSystemProperties() { System.setProperty("some.system.property", "1234"); Configuration config = ConfigurationBuilder.initFromResource("sample-test.properties"); assertThat(config.getProperty(GeneralOption.PORT)).isEqualTo("9999"); } @Test public void shouldUpdateWithCliOptions() { Configuration config = ConfigurationBuilder.initFromResource("sample-test.properties"); CommandLine commandLineMock = buildCommandLine(); config.updateWithCliOptions(commandLineMock); assertThat(config.getProperty(CliOption.CHANGE_ID)).isEqualTo("99999"); } private CommandLine buildCommandLine() { CommandLine commandLineMock = mock(CommandLine.class); Option optionMock = mock(Option.class); when(optionMock.getArgName()).thenReturn("changeId"); when(optionMock.getValue()).thenReturn("99999"); when(commandLineMock.getOptions()).thenReturn(new Option[]{optionMock}); return commandLineMock; } }