package com.tacitknowledge.slowlight.proxyserver.config.json; import com.tacitknowledge.slowlight.proxyserver.config.ServerConfig; import com.tacitknowledge.slowlight.proxyserver.config.SlowlightConfig; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Spy; import org.mockito.runners.MockitoJUnitRunner; import java.io.FileNotFoundException; import java.net.URL; import java.util.List; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.notNullValue; /** * @author Alexandr Donciu (adonciu@tacitknowledge.com) */ @RunWith(MockitoJUnitRunner.class) public class JSONConfigBuilderTest { private static final String CONFIG_FILE_NAME = "test-slowlight.config"; @Spy private final JSONConfigBuilder jsonConfigBuilder = new JSONConfigBuilder(); @Test public void configBuilderShouldLoadConfigFromConfigPath() { final URL url = Thread.currentThread().getContextClassLoader().getResource("test-slowlight.config"); final SlowlightConfig config = jsonConfigBuilder.getConfig(url.getPath()); assertValidConfig(config); } @Test public void configBuilderShouldLoadConfigFromClasspath() { final SlowlightConfig config = jsonConfigBuilder.getConfig("test-slowlight.config"); assertValidConfig(config); } @Test(expected = IllegalArgumentException.class) public void configBuilderShouldThrowExceptionIfConfigCannotBeFound() { jsonConfigBuilder.getConfig("unexistent-slowlight.config"); } private void assertValidConfig(final SlowlightConfig config) { assertThat(config, is(notNullValue())); final List<ServerConfig> serverConfigs = config.getServers(); assertThat(serverConfigs.size(), is(equalTo(2))); assertThat(serverConfigs.get(0).getHandlers().size(), is(1)); assertThat(serverConfigs.get(1).getHandlers().size(), is(2)); assertThat(serverConfigs.get(1).getHandlers().get(0).getBehaviorFunctions().size(), is(1)); assertThat(serverConfigs.get(0).getParams().size(), is(equalTo(0))); assertThat(serverConfigs.get(1).getParams().size(), is(equalTo(2))); } }