package com.thoughtworks.calabash.android.unit;
import com.github.tomakehurst.wiremock.junit.WireMockRule;
import com.thoughtworks.calabash.android.CalabashHttpClient;
import com.thoughtworks.calabash.android.CalabashWrapper;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.mockito.Mock;
import static com.github.tomakehurst.wiremock.client.WireMock.*;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.when;
import static org.mockito.MockitoAnnotations.initMocks;
public class CalabashHttpClientTest {
public static final int DEFAULT_PORT = 34776;
@Rule
public WireMockRule wireMockRule = new WireMockRule(DEFAULT_PORT);
@Mock
public CalabashWrapper calabashWrapper;
@Before
public void setUp() throws Exception {
initMocks(this);
when(calabashWrapper.getTestServerPort()).thenReturn(String.valueOf(DEFAULT_PORT));
}
@Test
public void shouldFetchViewDump() {
final String expectedBody = "{\"foo\":\"bar\"}";
stubFor(get(urlEqualTo("/dump"))
.willReturn(aResponse()
.withStatus(200)
.withHeader("Content-Type", "application/json;charset=utf-8")
.withBody(expectedBody)));
final CalabashHttpClient calabashHttpClient = new CalabashHttpClient(calabashWrapper);
final String actualBody = calabashHttpClient.getViewDump();
assertEquals(expectedBody, actualBody);
}
@Test
public void shouldFetchEmptyIfNotSuccess() {
final String expectedBody = "{}";
stubFor(get(urlEqualTo("/dump"))
.willReturn(aResponse()
.withStatus(500)
.withHeader("Content-Type", "application/json;charset=utf-8")
));
final CalabashHttpClient calabashHttpClient = new CalabashHttpClient(calabashWrapper);
final String actualBody = calabashHttpClient.getViewDump();
assertEquals(expectedBody, actualBody);
}
}