package com.silverforge.webconnector.integration.async; import com.silverforge.webconnector.BuildConfig; import com.silverforge.webconnector.EndpointConnector; import com.silverforge.webconnector.definition.HttpTest; import com.silverforge.webconnector.exceptions.SettingsIsNullException; import com.silverforge.webconnector.model.ConnectorSettings; import org.junit.Test; import org.junit.experimental.categories.Category; import org.junit.runner.RunWith; import org.robolectric.RobolectricGradleTestRunner; import org.robolectric.annotation.Config; import java.net.URISyntaxException; import java.net.UnknownHostException; import java.util.List; import rx.observers.TestSubscriber; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.greaterThan; import static org.hamcrest.Matchers.instanceOf; import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.not; import static org.hamcrest.Matchers.notNullValue; import static org.junit.Assert.assertThat; @RunWith(RobolectricGradleTestRunner.class) @Config(constants = BuildConfig.class, sdk = 21) @Category(value = HttpTest.class) public class InvokeAsyncToHttpEndpointTest { private EndpointConnector connector; public InvokeAsyncToHttpEndpointTest() { ConnectorSettings settings = ConnectorSettings .builder() .baseUrl("http://www.szerencsejatek.hu") .build(); try { connector = new EndpointConnector(settings); } catch (SettingsIsNullException | URISyntaxException e) { e.printStackTrace(); } } // region Happy path @Test public void invokeAsyncStringResultTest() { TestSubscriber<String> testSubscriber = new TestSubscriber<>(); connector .getAsync("/xls/otos.csv") .subscribe(testSubscriber); testSubscriber.assertNoErrors(); testSubscriber.assertUnsubscribed(); List<String> stringList = testSubscriber.getOnNextEvents(); assertThat(stringList, notNullValue()); assertThat(stringList.size(), is(1)); assertThat(stringList.get(0), notNullValue()); assertThat(stringList.get(0), not(equalTo(""))); } @Test public void invokeAsyncBinaryResultTest() { TestSubscriber<byte[]> testSubscriber = new TestSubscriber<>(); connector .readBinaryContentAsync("/xls/otos.xls") .subscribe(testSubscriber); testSubscriber.assertNoErrors(); testSubscriber.assertUnsubscribed(); List<byte[]> byteChunks = testSubscriber.getOnNextEvents(); assertThat(byteChunks, notNullValue()); assertThat(byteChunks.size(), greaterThan(0)); } // endregion // region Sad path @Test public void invokeAsyncNoServerTest() throws SettingsIsNullException, URISyntaxException { ConnectorSettings settings = ConnectorSettings .builder() .baseUrl("http://www.almabarack.pre") .build(); EndpointConnector conn = new EndpointConnector(settings); TestSubscriber<String> testSubscriber = new TestSubscriber<>(); conn .getAsync("") .subscribe(testSubscriber); testSubscriber.assertUnsubscribed(); List<Throwable> errorEvents = testSubscriber.getOnErrorEvents(); assertThat(errorEvents, notNullValue()); assertThat(errorEvents.size(), is(1)); assertThat(errorEvents.get(0), instanceOf(UnknownHostException.class)); } // endregion }