@Test public void callsPreDestroyMethodsForSingletonComponentsOnStop() throws Exception { EchoResource resource = new EchoResource(); Application application = mock(Application.class); when(application.getSingletons()).thenReturn(newHashSet(resource)); when(requestHandler.getResources()).thenReturn(mock(ResourceBinder.class)); everrestProcessor.addApplication(application); everrestProcessor.stop(); assertEquals(1, resource.preDestroyActionInvocationsCounter.get()); }
@Test public void setsUpApplicationContextBeforeCallToRequestHandler() throws Exception { ContainerRequest containerRequest = mockContainerRequest(); ContainerResponse containerResponse = mockContainerResponse(); EnvironmentContext environmentContext = mock(EnvironmentContext.class); ApplicationContext[] applicationContextThatRequestHandlerCalledWith = new ApplicationContext[1]; doAnswer( invocation -> { applicationContextThatRequestHandlerCalledWith[0] = ApplicationContext.getCurrent(); return null; }) .when(requestHandler) .handleRequest(containerRequest, containerResponse); everrestProcessor.process(containerRequest, containerResponse, environmentContext); assertNotNull(applicationContextThatRequestHandlerCalledWith[0]); assertSame( containerRequest, applicationContextThatRequestHandlerCalledWith[0].getContainerRequest()); assertSame( containerResponse, applicationContextThatRequestHandlerCalledWith[0].getContainerResponse()); assertSame( dependencySupplier, applicationContextThatRequestHandlerCalledWith[0].getDependencySupplier()); }
@Test public void resetsEnvironmentContextAlterCallToRequestHandler() throws Exception { ContainerRequest containerRequest = mockContainerRequest(); ContainerResponse containerResponse = mockContainerResponse(); EnvironmentContext environmentContext = mock(EnvironmentContext.class); everrestProcessor.process(containerRequest, containerResponse, environmentContext); EnvironmentContext environmentContextAfterCall = EnvironmentContext.getCurrent(); assertNull(environmentContextAfterCall); }
@Test public void overridesHttpMethodWhenXHTTPMethodOverrideHeaderIsSet() throws Exception { when(configuration.isHttpMethodOverride()).thenReturn(true); requestHeaders.putSingle(X_HTTP_METHOD_OVERRIDE, "PUT"); ContainerRequest containerRequest = mockContainerRequest(); ContainerResponse containerResponse = mockContainerResponse(); EnvironmentContext environmentContext = mock(EnvironmentContext.class); everrestProcessor.process(containerRequest, containerResponse, environmentContext); verify(containerRequest).setMethod("PUT"); }
@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()); }