package com.silverforge.webconnector.integration.async;
import com.silverforge.webconnector.BuildConfig;
import com.silverforge.webconnector.EndpointConnector;
import com.silverforge.webconnector.definition.HttpsTest;
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.instanceOf;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.notNullValue;
import static org.junit.Assert.assertThat;
@RunWith(RobolectricGradleTestRunner.class)
@Config(constants = BuildConfig.class, sdk = 21)
@Category(value = HttpsTest.class)
public class InvokeAsyncToHttpsEndpointTest {
private static final String ELASTIC_URL = "https://mgj.east-us.azr.facetflow.io";
private static final String ELASTIC_APIKEY = "wihIilbbekmCeppKlgQXDwpSZEUekkk0";
private EndpointConnector connector;
public InvokeAsyncToHttpsEndpointTest() {
ConnectorSettings settings = ConnectorSettings
.builder()
.baseUrl(ELASTIC_URL)
.userName(ELASTIC_APIKEY)
.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("/cities/_search").subscribe(testSubscriber);
testSubscriber.assertNoErrors();
testSubscriber.assertUnsubscribed();
List<String> responseList = testSubscriber.getOnNextEvents();
assertThat(responseList, notNullValue());
assertThat(responseList.size(), is(1));
}
// endregion
// region Sad path
@Test
public void invokeNoServerTest()
throws SettingsIsNullException, URISyntaxException {
ConnectorSettings settings = ConnectorSettings
.builder()
.baseUrl("https://www.almabarack.pre")
.build();
EndpointConnector conn = new EndpointConnector(settings);
TestSubscriber<String> testSubscriber = new TestSubscriber<>();
conn
.getAsync("")
.subscribe(testSubscriber);
testSubscriber.assertUnsubscribed();
List<Throwable> throwables = testSubscriber.getOnErrorEvents();
assertThat(throwables, notNullValue());
assertThat(throwables.size(), is(1));
assertThat(throwables.get(0), instanceOf(UnknownHostException.class));
}
// endregion
}