/** * Creates a container request from the given input and delegates it to the * application. * * @param request * @param responseWriter * the response writer. * @param securityContext * the security context of the request. * @param containerRequestEnhancer * additional container request customizer. */ public void handleRequest(@Nonnull RequestT request, @Nonnull JRestlessResponseWriter responseWriter, @Nonnull SecurityContext securityContext, @Nonnull Consumer<ContainerRequest> containerRequestEnhancer) { requireNonNull(responseWriter, "responseWriter may not be null"); requireNonNull(containerRequestEnhancer, "containerRequestExtender may not be null"); ContainerRequest containerRequest = createContainerRequest(request, new JRestlessContainerResponseWriter(responseWriter), securityContext); containerRequestEnhancer.accept(containerRequest); handleRequest(containerRequest); }
public void createContainerRequest_NoRequestBaseUriGiven_ShouldPass() { JRestlessContainerRequest request = createAnyRequest(); when(request.getBaseUri()).thenReturn(null); container.createContainerRequest(request, mock(ContainerResponseWriter.class), mock(SecurityContext.class)); }
@Test public void createContainerRequest_NoRequestGiven_ShouldThrowNpe() { assertThrows(NullPointerException.class, () -> container.createContainerRequest(null, mock(ContainerResponseWriter.class), mock(SecurityContext.class))); }
@Test public void createContainerRequest_NoRequestHttpMethodGiven_ShouldThrowNpe() { JRestlessContainerRequest request = createAnyRequest(); when(request.getHttpMethod()).thenReturn(null); assertThrows(NullPointerException.class, () -> container.createContainerRequest(request, mock(ContainerResponseWriter.class), mock(SecurityContext.class))); }
@Test public void createContainerRequest_NoRequestEntityStreamGiven_ShouldThrowNpe() { JRestlessContainerRequest request = createAnyRequest(); when(request.getEntityStream()).thenReturn(null); assertThrows(NullPointerException.class, () -> container.createContainerRequest(request, mock(ContainerResponseWriter.class), mock(SecurityContext.class))); }
@Test public void createContainerRequest_NoRequestRequestUriGiven_ShouldThrowNpe() { JRestlessContainerRequest request = createAnyRequest(); when(request.getRequestUri()).thenReturn(null); assertThrows(NullPointerException.class, () -> container.createContainerRequest(request, mock(ContainerResponseWriter.class), mock(SecurityContext.class))); }
@Test public void createContainerRequest_NoRequestHeadersGiven_ShouldThrowNpe() { JRestlessContainerRequest request = createAnyRequest(); when(request.getHeaders()).thenReturn(null); assertThrows(NullPointerException.class, () -> container.createContainerRequest(request, mock(ContainerResponseWriter.class), mock(SecurityContext.class))); }
@Test public void createContainerRequest_NoSecurityContext_ShouldThrowNpe() { assertThrows(NullPointerException.class, () -> container.createContainerRequest(createAnyRequest(), mock(ContainerResponseWriter.class), null)); }
@Test public void createContainerRequest_NoContainerResponseWriterGiven_ShouldThrowNpe() { assertThrows(NullPointerException.class, () -> container.createContainerRequest(createAnyRequest(), null, mock(SecurityContext.class))); }
@Test public void createContainerRequest_RequestAndContainerResponseWriterAndSecurityContextGiven_ShouldCreateContainerRequestUsingValues() { URI baseUri = URI.create("/"); URI requestUri = URI.create("/entity"); String httpMethod = "POST"; ByteArrayInputStream entityStream = new ByteArrayInputStream(new byte[0]); MultivaluedMap<String, String> headers = new MultivaluedHashMap<>(); headers.add("hk0", "hv0_0"); headers.add("hk0", "hv0_1"); headers.add("hk1", "hv1_0"); JRestlessContainerRequest request = createRequest(baseUri, requestUri, httpMethod, entityStream, headers); ContainerResponseWriter containerResponseWriter = mock(ContainerResponseWriter.class); SecurityContext securityContext = mock(SecurityContext.class); ContainerRequest containerRequest = container.createContainerRequest(request, containerResponseWriter, securityContext); assertEquals(baseUri, containerRequest.getBaseUri()); assertEquals(requestUri, containerRequest.getRequestUri()); assertEquals(httpMethod, containerRequest.getMethod()); assertSame(entityStream, containerRequest.getEntityStream()); assertEquals(headers, containerRequest.getHeaders()); assertSame(containerResponseWriter, containerRequest.getResponseWriter()); assertSame(securityContext, containerRequest.getSecurityContext()); }