package com.silverforge.webconnector; import com.silverforge.webconnector.exceptions.SettingsIsNullException; import com.silverforge.webconnector.model.ConnectorSettings; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricGradleTestRunner; import org.robolectric.annotation.Config; import java.net.URI; import java.net.URISyntaxException; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.notNullValue; import static org.junit.Assert.assertThat; import static org.junit.Assert.fail; @RunWith(RobolectricGradleTestRunner.class) @Config(constants = BuildConfig.class, sdk = 21) public class ConnectorTest { // region Happy path @Test public void getSettingsTest() { try { ConnectorSettings connectorSettings = ConnectorSettings .builder() .baseUrl("http://my.custom.org") .userName("myUserName") .password("myPassword") .readTimeout(1000) .connectTimeout(4000) .retryCount(4) .build(); Connector connector = new Connector(connectorSettings); ConnectorSettings retSettings = connector.getSettings(); assertThat(retSettings, notNullValue()); assertThat(retSettings.getUri(), equalTo(new URI("http://my.custom.org"))); assertThat(retSettings.getBaseUrl(), equalTo(connectorSettings.getBaseUrl())); assertThat(retSettings.getUserName(), equalTo(connectorSettings.getUserName())); assertThat(retSettings.getPassword(), equalTo(connectorSettings.getPassword())); assertThat(retSettings.getReadTimeout(), equalTo(connectorSettings.getReadTimeout())); assertThat(retSettings.getConnectTimeout(), equalTo(connectorSettings.getConnectTimeout())); assertThat(retSettings.getRetryCount(), equalTo(connectorSettings.getRetryCount())); } catch (SettingsIsNullException | URISyntaxException e) { e.printStackTrace(); fail(e.getMessage()); } } // endregion // region Sad path @Test(expected = SettingsIsNullException.class) public void getSettingsNullTest() throws SettingsIsNullException { try { new Connector(null); } catch (URISyntaxException e) { e.printStackTrace(); fail(e.getMessage()); } } @Test(expected = URISyntaxException.class) public void getSettingsBadUriTest() throws URISyntaxException { try { ConnectorSettings connectorSettings = ConnectorSettings .builder() .baseUrl("http://finance.yahoo.com/q/h?s=^IXIC") .userName("myUserName") .password("myPassword") .readTimeout(1000) .connectTimeout(4000) .retryCount(4) .build(); new Connector(connectorSettings); } catch (SettingsIsNullException e) { e.printStackTrace(); fail(e.getMessage()); } } @Test public void getSettingsEmptyTest() { try { String defaultUrl = "http://localhost"; String stringEmpty = ""; int defaultTimeout = 7000; int defaultRetryCount = 3; Connector connector = new Connector(ConnectorSettings.builder().build()); ConnectorSettings retSettings = connector.getSettings(); assertThat(retSettings, notNullValue()); assertThat(retSettings.getUri(), equalTo(new URI(defaultUrl))); assertThat(retSettings.getBaseUrl(), equalTo(defaultUrl)); assertThat(retSettings.getUserName(), equalTo(stringEmpty)); assertThat(retSettings.getPassword(), equalTo(stringEmpty)); assertThat(retSettings.getReadTimeout(), equalTo(defaultTimeout)); assertThat(retSettings.getConnectTimeout(), equalTo(defaultTimeout)); assertThat(retSettings.getRetryCount(), equalTo(defaultRetryCount)); } catch (SettingsIsNullException | URISyntaxException e) { e.printStackTrace(); fail(e.getMessage()); } } // endregion }