package org.zalando.riptide;
import org.junit.Test;
import org.springframework.http.HttpHeaders;
import org.springframework.http.client.ClientHttpResponse;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import static com.google.common.io.ByteStreams.toByteArray;
import static java.nio.charset.StandardCharsets.UTF_8;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.springframework.http.HttpStatus.OK;
public final class ForwardingClientHttpResponseTest {
@Test
public void shouldDelegateAccessors() throws IOException {
final ClientHttpResponse response = mock(ClientHttpResponse.class);
when(response.getRawStatusCode()).thenReturn(200);
when(response.getStatusCode()).thenReturn(OK);
when(response.getStatusText()).thenReturn("OK");
when(response.getBody()).thenReturn(new ByteArrayInputStream("Hello World!".getBytes(UTF_8)));
final HttpHeaders headers = new HttpHeaders();
when(response.getHeaders()).thenReturn(headers);
final ForwardingClientHttpResponse unit = new ForwardingClientHttpResponse() {
@Override
protected ClientHttpResponse delegate() {
return response;
}
};
assertThat(unit.getRawStatusCode(), is(200));
assertThat(unit.getStatusCode(), is(OK));
assertThat(unit.getStatusText(), is("OK"));
assertThat(new String(toByteArray(unit.getBody()), UTF_8), is("Hello World!"));
assertThat(unit.getHeaders(), is(headers));
}
@Test
public void shouldDelegateClose() {
final ClientHttpResponse response = mock(ClientHttpResponse.class);
final ForwardingClientHttpResponse unit = new ForwardingClientHttpResponse() {
@Override
protected ClientHttpResponse delegate() {
return response;
}
};
unit.close();
verify(response).close();
}
}