package org.robolectric.shadows.httpclient; import org.apache.http.Header; import org.apache.http.HeaderIterator; import org.apache.http.HttpResponse; import org.apache.http.message.BasicHeader; import org.junit.Test; import org.robolectric.shadows.httpclient.TestHttpResponse; import static org.assertj.core.api.Assertions.assertThat; public class TestHttpResponseTest { @Test public void shouldSupportGetFirstHeader() throws Exception { HttpResponse resp = new TestHttpResponse(304, "REDIRECTED", new BasicHeader("Location", "http://bar.com")); assertThat(resp.getFirstHeader("None")).isNull(); assertThat(new TestHttpResponse(200, "OK").getFirstHeader("Foo")).isNull(); for (String l : new String[] { "location", "Location" }) { assertThat(resp.getFirstHeader(l).getValue()).isEqualTo("http://bar.com"); } } @Test public void shouldSupportGetLastHeader() throws Exception { HttpResponse resp = new TestHttpResponse(304, "REDIRECTED", new BasicHeader("Location", "http://bar.com"), new BasicHeader("Location", "http://zombo.com")); assertThat(resp.getLastHeader("None")).isNull(); for (String l : new String[] { "location", "Location" }) { assertThat(resp.getLastHeader(l).getValue()).isEqualTo("http://zombo.com"); } } @Test public void shouldSupportContainsHeader() throws Exception { HttpResponse resp = new TestHttpResponse(304, "ZOMBO", new BasicHeader("X-Zombo-Com", "Welcome")); assertThat(resp.containsHeader("X-Zombo-Com")).isTrue(); assertThat(resp.containsHeader("Location")).isFalse(); } @Test public void shouldSupportHeaderIterator() throws Exception { HttpResponse resp = new TestHttpResponse(304, "REDIRECTED", new BasicHeader("Location", "http://bar.com"), new BasicHeader("Location", "http://zombo.com")); HeaderIterator it = resp.headerIterator(); assertThat(it.hasNext()).isTrue(); assertThat(it.nextHeader().getValue()).isEqualTo("http://bar.com"); assertThat(it.nextHeader().getValue()).isEqualTo("http://zombo.com"); assertThat(it.hasNext()).isFalse(); } @Test public void shouldSupportHeaderIteratorWithArg() throws Exception { HttpResponse resp = new TestHttpResponse(304, "REDIRECTED", new BasicHeader("Location", "http://bar.com"), new BasicHeader("X-Zombo-Com", "http://zombo.com"), new BasicHeader("Location", "http://foo.com")); HeaderIterator it = resp.headerIterator("Location"); assertThat(it.hasNext()).isTrue(); assertThat(it.nextHeader().getValue()).isEqualTo("http://bar.com"); assertThat(it.hasNext()).isTrue(); assertThat(it.nextHeader().getValue()).isEqualTo("http://foo.com"); assertThat(it.hasNext()).isFalse(); } @Test public void shouldSupportGetHeadersWithArg() throws Exception { HttpResponse resp = new TestHttpResponse(304, "REDIRECTED", new BasicHeader("Location", "http://bar.com"), new BasicHeader("X-Zombo-Com", "http://zombo.com"), new BasicHeader("Location", "http://foo.com")); Header[] headers = resp.getHeaders("Location"); assertThat(headers.length).isEqualTo(2); assertThat(headers[0].getValue()).isEqualTo("http://bar.com"); assertThat(headers[1].getValue()).isEqualTo("http://foo.com"); } @Test public void canAddNewBasicHeader() { TestHttpResponse response = new TestHttpResponse(200, "abc"); assertThat(response.getAllHeaders().length).isEqualTo(0); response.addHeader(new BasicHeader("foo", "bar")); assertThat(response.getAllHeaders().length).isEqualTo(1); assertThat(response.getHeaders("foo")[0].getValue()).isEqualTo("bar"); } @Test public void canOverrideExistingHeaderValue() { TestHttpResponse response = new TestHttpResponse(200, "abc", new BasicHeader("foo", "bar")); response.setHeader(new BasicHeader("foo", "bletch")); assertThat(response.getAllHeaders().length).isEqualTo(1); assertThat(response.getHeaders("foo")[0].getValue()).isEqualTo("bletch"); } @Test public void onlyOverridesFirstHeaderValue() { TestHttpResponse response = new TestHttpResponse(200, "abc", new BasicHeader("foo", "bar"), new BasicHeader("foo", "baz")); response.setHeader(new BasicHeader("foo", "bletch")); assertThat(response.getAllHeaders().length).isEqualTo(2); assertThat(response.getHeaders("foo")[0].getValue()).isEqualTo("bletch"); assertThat(response.getHeaders("foo")[1].getValue()).isEqualTo("baz"); } }