@Test public void testUnknownLengthContentToString() throws Exception { final byte[] bytes = "Message content".getBytes(StandardCharsets.ISO_8859_1); try (final BasicHttpEntity httpentity = new BasicHttpEntity()) { httpentity.setContent(new ByteArrayInputStream(bytes)); httpentity.setContentLength(-1L); final String s = EntityUtils.toString(httpentity, "ISO-8859-1"); Assert.assertEquals("Message content", s); }}
@Test public void testContent() throws Exception { final byte[] bytes = "Message content".getBytes(StandardCharsets.US_ASCII); final InputStream content = new ByteArrayInputStream(bytes); final BasicHttpEntity httpentity = new BasicHttpEntity(); try { httpentity.getContent(); Assert.fail("IllegalStateException should have been thrown"); } catch (final IllegalStateException ex) { // expected } httpentity.setContent(content); Assert.assertEquals(content, httpentity.getContent()); httpentity.setContent(null); try { httpentity.getContent(); Assert.fail("IllegalStateException should have been thrown"); } catch (final IllegalStateException ex) { // expected } }
@Test public void testBasics() throws Exception { final byte[] bytes = "Message content".getBytes(StandardCharsets.US_ASCII); final InputStream content = new ByteArrayInputStream(bytes); final BasicHttpEntity httpentity = new BasicHttpEntity(); httpentity.setContent(content); httpentity.setContentLength(bytes.length); Assert.assertEquals(bytes.length, httpentity.getContentLength()); Assert.assertFalse(httpentity.isRepeatable()); Assert.assertTrue(httpentity.isStreaming()); }
@Test public void testToString() throws Exception { final BasicHttpEntity httpentity = new BasicHttpEntity(); httpentity.setContentType("blah"); httpentity.setContentEncoding("yada"); httpentity.setContentLength(10); httpentity.setChunked(true); Assert.assertEquals("[Content-Type: blah,Content-Encoding: yada,Content-Length: 10,Chunked: true]", httpentity.toString()); }
@Test public void testContentWithContentTypeToString() throws Exception { final String content = constructString(RUSSIAN_HELLO); final byte[] bytes = content.getBytes(StandardCharsets.UTF_8); try (final BasicHttpEntity httpentity = new BasicHttpEntity()) { httpentity.setContent(new ByteArrayInputStream(bytes)); httpentity.setContentType("text/plain; charset=UTF-8"); final String s = EntityUtils.toString(httpentity, "ISO-8859-1"); Assert.assertEquals(content, s); }}
@Test(expected = UnsupportedCharsetException.class) public void testExtractInvalidCharset() throws Exception { try (final BasicHttpEntity httpentity = new BasicHttpEntity()) { httpentity.setContentType("text/plain; charset = stuff"); EntityUtils.getContentType(httpentity); }}
@Test public void testRequestsNotExpecting100ContinueBehaviorShouldNotSetExpectContinueHeader() throws Exception { final BasicClassicHttpRequest post = new BasicClassicHttpRequest("POST", "/"); post.setHeader("Content-Length", "128"); post.setEntity(new BasicHttpEntity()); final Capture<ClassicHttpRequest> reqCap = EasyMock.newCapture(); EasyMock.expect( mockExecChain.proceed( EasyMock.capture(reqCap), EasyMock.isA(ExecChain.Scope.class))).andReturn(originResponse); replayMocks(); execute(post); verifyMocks(); final ClassicHttpRequest forwarded = reqCap.getValue(); boolean foundExpect = false; final Iterator<HeaderElement> it = MessageSupport.iterate(forwarded, HttpHeaders.EXPECT); while (it.hasNext()) { final HeaderElement elt = it.next(); if ("100-continue".equalsIgnoreCase(elt.getName())) { foundExpect = true; break; } } Assert.assertFalse(foundExpect); }
@Test public void testRequestContentEntityUnknownLengthHTTP10() throws Exception { final HttpContext context = new BasicHttpContext(null); context.setProtocolVersion(HttpVersion.HTTP_1_0); final BasicClassicHttpRequest request = new BasicClassicHttpRequest("POST", "/"); final BasicHttpEntity entity = new BasicHttpEntity(); entity.setContentLength(-1); entity.setChunked(false); request.setEntity(entity); final RequestContent interceptor = new RequestContent(); try { interceptor.process(request, request.getEntity(), context); Assert.fail("ProtocolException should have been thrown"); } catch (final ProtocolException ex) { // expected } }
@Test public void testRequestContentTypeAndEncoding() throws Exception { final HttpContext context = new BasicHttpContext(null); final BasicClassicHttpRequest request = new BasicClassicHttpRequest("POST", "/"); final BasicHttpEntity entity = new BasicHttpEntity(); entity.setContentType("whatever"); entity.setContentEncoding("whatever"); request.setEntity(entity); final RequestContent interceptor = new RequestContent(); interceptor.process(request, request.getEntity(), context); final Header h1 = request.getFirstHeader(HttpHeaders.CONTENT_TYPE); Assert.assertNotNull(h1); Assert.assertEquals("whatever", h1.getValue()); final Header h2 = request.getFirstHeader(HttpHeaders.CONTENT_ENCODING); Assert.assertNotNull(h2); Assert.assertEquals("whatever", h2.getValue()); }
@Test public void testResponseConnControlEntityChunked() throws Exception { final HttpContext context = new BasicHttpContext(null); final ClassicHttpResponse response = new BasicClassicHttpResponse(HttpStatus.SC_OK, "OK"); final BasicHttpEntity entity = new BasicHttpEntity(); entity.setChunked(true); response.setEntity(entity); final ResponseConnControl interceptor = new ResponseConnControl(); interceptor.process(response, response.getEntity(), context); final Header header = response.getFirstHeader(HttpHeaders.CONNECTION); Assert.assertNull(header); }
@Test public void testWriteTo() throws Exception { final byte[] bytes = "Message content".getBytes(StandardCharsets.US_ASCII); final InputStream content = new ByteArrayInputStream(bytes); final BasicHttpEntity httpentity = new BasicHttpEntity(); httpentity.setContent(content); ByteArrayOutputStream out = new ByteArrayOutputStream(); httpentity.writeTo(out); final byte[] bytes2 = out.toByteArray(); Assert.assertNotNull(bytes2); Assert.assertEquals(bytes.length, bytes2.length); for (int i = 0; i < bytes.length; i++) { Assert.assertEquals(bytes[i], bytes2[i]); } httpentity.setContent(null); out = new ByteArrayOutputStream(); try { httpentity.writeTo(out); Assert.fail("IllegalStateException should have been thrown"); } catch (final IllegalStateException ex) { // expected } try { httpentity.writeTo(null); Assert.fail("IllegalArgumentException should have been thrown"); } catch (final IllegalArgumentException ex) { // expected } }
@Test public void testResponseContentEntityContentLenghtDelimited() throws Exception { final HttpContext context = new BasicHttpContext(null); final ClassicHttpResponse response = new BasicClassicHttpResponse(HttpStatus.SC_OK, "OK"); final BasicHttpEntity entity = new BasicHttpEntity(); entity.setContentLength (10); response.setEntity(entity); final ResponseContent interceptor = new ResponseContent(); interceptor.process(response, response.getEntity(), context); final Header h1 = response.getFirstHeader(HttpHeaders.CONTENT_LENGTH); Assert.assertNotNull(h1); Assert.assertEquals("10", h1.getValue()); final Header h2 = response.getFirstHeader(HttpHeaders.TRANSFER_ENCODING); Assert.assertNull(h2); }
@Test public void testDefaultCharsetContentToString() throws Exception { final String content = constructString(RUSSIAN_HELLO); final byte[] bytes = content.getBytes(Charset.forName("KOI8-R")); try (final BasicHttpEntity httpentity = new BasicHttpEntity()) { httpentity.setContent(new ByteArrayInputStream(bytes)); httpentity.setContentType("text/plain"); final String s = EntityUtils.toString(httpentity, "KOI8-R"); Assert.assertEquals(content, s); }}
@Test public void testExtractLenientNullContentType() throws Exception { try (final BasicHttpEntity httpentity = new BasicHttpEntity()) { httpentity.setContentType(null); Assert.assertNull(EntityUtils.getContentTypeLenient(httpentity)); }}
@Test public void testRequestsExpecting100ContinueBehaviorShouldSetExpectHeader() throws Exception { final BasicClassicHttpRequest post = new BasicClassicHttpRequest("POST", "/"); post.setHeader(HttpHeaders.EXPECT, HeaderElements.CONTINUE); post.setHeader("Content-Length", "128"); post.setEntity(new BasicHttpEntity()); final Capture<ClassicHttpRequest> reqCap = EasyMock.newCapture(); EasyMock.expect( mockExecChain.proceed( EasyMock.capture(reqCap), EasyMock.isA(ExecChain.Scope.class))).andReturn(originResponse); replayMocks(); execute(post); verifyMocks(); final ClassicHttpRequest forwarded = reqCap.getValue(); boolean foundExpect = false; final Iterator<HeaderElement> it = MessageSupport.iterate(forwarded, HttpHeaders.EXPECT); while (it.hasNext()) { final HeaderElement elt = it.next(); if ("100-continue".equalsIgnoreCase(elt.getName())) { foundExpect = true; break; } } Assert.assertTrue(foundExpect); }
@Test public void testRequestContentEntityUnknownLengthHTTP11() throws Exception { final HttpContext context = new BasicHttpContext(null); final BasicClassicHttpRequest request = new BasicClassicHttpRequest("POST", "/"); final BasicHttpEntity entity = new BasicHttpEntity(); entity.setContentLength(-1); entity.setChunked(false); request.setEntity(entity); final RequestContent interceptor = new RequestContent(); interceptor.process(request, request.getEntity(), context); final Header header = request.getFirstHeader(HttpHeaders.TRANSFER_ENCODING); Assert.assertNotNull(header); Assert.assertEquals("chunked", header.getValue()); Assert.assertNull(request.getFirstHeader(HttpHeaders.CONTENT_LENGTH)); }
@Test public void testResponseContentEntityContentTypeAndEncoding() throws Exception { final HttpContext context = new BasicHttpContext(null); final ClassicHttpResponse response = new BasicClassicHttpResponse(HttpStatus.SC_OK, "OK"); final BasicHttpEntity entity = new BasicHttpEntity(); entity.setContentEncoding("whatever"); entity.setContentType("whatever"); response.setEntity(entity); final ResponseContent interceptor = new ResponseContent(); interceptor.process(response, response.getEntity(), context); final Header h1 = response.getFirstHeader(HttpHeaders.CONTENT_TYPE); Assert.assertNotNull(h1); Assert.assertEquals("whatever", h1.getValue()); final Header h2 = response.getFirstHeader(HttpHeaders.CONTENT_ENCODING); Assert.assertNotNull(h2); Assert.assertEquals("whatever", h2.getValue()); }
@Test public void testResponseContentEntityChunkedHTTP10() throws Exception { final HttpContext context = new BasicHttpContext(null); context.setProtocolVersion(HttpVersion.HTTP_1_0); final BasicClassicHttpResponse response = new BasicClassicHttpResponse(HttpStatus.SC_OK, "OK"); final BasicHttpEntity entity = new BasicHttpEntity(); entity.setChunked(true); response.setEntity(entity); final ResponseContent interceptor = new ResponseContent(); interceptor.process(response, response.getEntity(), context); final Header h1 = response.getFirstHeader(HttpHeaders.TRANSFER_ENCODING); Assert.assertNull(h1); final Header h2 = response.getFirstHeader(HttpHeaders.CONTENT_LENGTH); Assert.assertNull(h2); }
@Test public void testKnownLengthContentToString() throws Exception { final byte[] bytes = "Message content".getBytes(StandardCharsets.ISO_8859_1); try (final BasicHttpEntity httpentity = new BasicHttpEntity()) { httpentity.setContent(new ByteArrayInputStream(bytes)); httpentity.setContentLength(bytes.length); final String s = EntityUtils.toString(httpentity, "ISO-8859-1"); Assert.assertEquals("Message content", s); }}
@Test public void testNoCharsetContentToString() throws Exception { final String content = constructString(SWISS_GERMAN_HELLO); final byte[] bytes = content.getBytes(StandardCharsets.ISO_8859_1); try (final BasicHttpEntity httpentity = new BasicHttpEntity()) { httpentity.setContent(new ByteArrayInputStream(bytes)); httpentity.setContentType("text/plain"); final String s = EntityUtils.toString(httpentity); Assert.assertEquals(content, s); }}