@Override public void commit() { final ContainerResponse current = response; if (current != null) { if (HttpMethod.HEAD.equals(requestMethodName) && current.hasEntity()) { // for testing purposes: // need to also strip the object entity as it was stripped when writing to output current.setEntity(null); } super.set(current); } }
@Override public OutputStream writeResponseStatusAndHeaders( long contentLength, ContainerResponse response) throws ContainerException { this.response = response; if (contentLength >= 0) { response.getHeaders().putSingle(HttpHeaders.CONTENT_LENGTH, Long.toString(contentLength)); } return outputStream; }
@Test public void processesRequest() throws Exception { ContainerRequest containerRequest = mockContainerRequest(); ContainerResponse containerResponse = mockContainerResponse(); EnvironmentContext environmentContext = mock(EnvironmentContext.class); doAnswer( invocation -> { Response response = mock(Response.class); when(response.getStatus()).thenReturn(200); when(response.getEntity()).thenReturn("foo"); containerResponse.setResponse(response); return null; }) .when(requestHandler) .handleRequest(containerRequest, containerResponse); everrestProcessor.process(containerRequest, containerResponse, environmentContext); ArgumentCaptor<Response> argumentCaptor = ArgumentCaptor.forClass(Response.class); verify(containerResponse).setResponse(argumentCaptor.capture()); assertEquals(200, argumentCaptor.getValue().getStatus()); assertEquals("foo", argumentCaptor.getValue().getEntity()); }
private ContainerResponse mockContainerResponse() { ContainerResponse containerResponse = mock(ContainerResponse.class); when(containerResponse.getHttpHeaders()).thenReturn(new MultivaluedHashMap<>()); return containerResponse; }