@Test(dataProvider = "annotatedRequestHandlerData") public void testReadCollectionItemAnnotatedRequestHandler( Class<?> requestHandler, boolean collection, boolean create, boolean read, boolean update, boolean delete, boolean patch, boolean resourceAction, boolean collectionAction, boolean query) throws Exception { // Given Object provider = requestHandler.newInstance(); Connection connection = Resources.newInternalConnection(createHandler(collection, provider)); ReadRequest req = Requests.newReadRequest("/test/fred"); // When Promise<Resource, ResourceException> promise = connection.readAsync(new RootContext(), req); // Then if (read && collection) { assertThat(promise).succeeded().withId().isEqualTo("read-fred"); } else if (collection) { assertThat(promise).failedWithException().isInstanceOf(NotSupportedException.class); } else { assertThat(promise).failedWithException().isInstanceOf(NotFoundException.class); } }
@SuppressWarnings("unchecked") @Test(dataProvider = "testCollectionResourceProviderData") public void testCollectionResourceProvider(String resourcePath, String expectedId) throws Exception { CollectionResourceProvider collection = mock(CollectionResourceProvider.class); RequestHandler handler = Resources.newCollection(collection); Connection connection = Resources.newInternalConnection(handler); ReadRequest read = Requests.newReadRequest(resourcePath); connection.readAsync(new RootContext(), read); ArgumentCaptor<ReadRequest> captor = ArgumentCaptor.forClass(ReadRequest.class); verify(collection).readInstance(any(ServerContext.class), eq(expectedId), captor.capture()); Assertions.assertThat(captor.getValue().getResourcePath()).isEqualTo(""); }
@Test(dataProvider = "dataWithoutVersionHeader") @SuppressWarnings("unchecked") public void shouldRouteReadRequestsUsingDefaultVersionBehaviour( String resource, DefaultVersionBehaviour versionBehaviour, boolean expectException, RequestHandler provider) { // Given AcceptAPIVersionContext apiVersionContext = new AcceptAPIVersionContext( new RootContext(), "PROTOCOL_NAME", AcceptAPIVersion.newBuilder().withDefaultProtocolVersion("1.0").build()); ServerContext context = new ServerContext(apiVersionContext); ReadRequest request = Requests.newReadRequest(resource); ResultHandler<Resource> handler = mock(ResultHandler.class); setDefaultVersionBehaviour(router, versionBehaviour); // When router.handleRead(context, request, handler); // Then if (expectException) { ArgumentCaptor<ResourceException> exceptionCaptor = ArgumentCaptor.forClass(ResourceException.class); verify(handler).handleError(exceptionCaptor.capture()); assertThat(exceptionCaptor.getValue()).isInstanceOf(BadRequestException.class); verifyZeroInteractions( usersHandlerOne, usersHandlerTwo, usersHandlerThree, groupsHandlerOne, groupsHandlerTwo, groupsHandlerThree); } else { verify(provider) .handleRead( Matchers.<ServerContext>anyObject(), Matchers.<ReadRequest>anyObject(), eq(handler)); } }