ProductResource extends AbstractResource { @DELETE @Path("/{name}") public Response delete(@Auth final DbCredential credential, @PathParam("name") final String name){ if(!credential.getRoles().contains(DbCredential.AvailableRoles.DATA_DELETER)){ throw new WebApplicationException(Response.status(Response.Status.UNAUTHORIZED).build()); } LOG.info("Got a delete organization request."); getProductHandler().deleteProduct(name); return Response.ok("done").build(); } ProductResource(final RepositoryHandler repositoryHandler, final GrapesServerConfig configuration); @POST Response createProduct(@Auth final DbCredential credential, final String productName); @GET @Produces({MediaType.TEXT_HTML, MediaType.APPLICATION_JSON}) @Path(ServerAPI.GET_NAMES) Response getNames(); @GET @Produces({MediaType.TEXT_HTML, MediaType.APPLICATION_JSON}) @Path("/{name}") Response get(@PathParam("name") final String name); @DELETE @Path("/{name}") Response delete(@Auth final DbCredential credential, @PathParam("name") final String name); @GET @Path("/{name}" + ServerAPI.GET_MODULES) @Produces(MediaType.APPLICATION_JSON) Response getModuleNames(@PathParam("name") final String name); @POST @Path("/{name}" + ServerAPI.GET_MODULES) Response setModuleNames(@Auth final DbCredential credential, @PathParam("name") final String name, final List<String> moduleNames); @GET @Path("/{name}" + ServerAPI.GET_DELIVERIES) @Produces(MediaType.APPLICATION_JSON) Response getDeliveries(@PathParam("name") final String name); @POST @Path("/{name}" + ServerAPI.GET_DELIVERIES) Response createNewDelivery(@Auth final DbCredential credential, @PathParam("name") final String name, final Delivery delivery); @GET @Path("/{name}" + ServerAPI.GET_DELIVERIES+"/{commercialName}"+"/{commercialVersion}") @Produces(MediaType.APPLICATION_JSON) Response getDelivery(@PathParam("name") final String name, @PathParam("commercialName") final String commercialName, @PathParam("commercialVersion") final String commercialVersion); @DELETE @Path("/{name}" + ServerAPI.GET_DELIVERIES+"/{commercialName}"+"/{commercialVersion}") @Produces(MediaType.APPLICATION_JSON) Response deleteDelivery(@Auth final DbCredential credential, @PathParam("name") final String name, @PathParam("commercialName") final String commercialName, @PathParam("commercialVersion") final String commercialVersion); @POST @Path("/{name}" + ServerAPI.GET_DELIVERIES+"/{commercialName}"+"/{commercialVersion}") @Produces(MediaType.APPLICATION_JSON) Response setDeliveryDependency(@Auth final DbCredential credential,
                                          @PathParam("name") final String name,
                                          @PathParam("commercialName") final String commercialName,
                                          @PathParam("commercialVersion") final String commercialVersion,
                                          List<String> dependencies);  }
@Test public void deleteAProduct(){ final DbProduct product = new DbProduct(); product.setName("product1"); when(repositoryHandler.getProduct(product.getName())).thenReturn(product); client().addFilter(new HTTPBasicAuthFilter(GrapesTestUtils.USER_4TEST, GrapesTestUtils.PASSWORD_4TEST)); WebResource resource = client().resource("/" + ServerAPI.PRODUCT_RESOURCE + "/" + product.getName()); ClientResponse response = resource.accept(MediaType.APPLICATION_JSON).delete(ClientResponse.class); assertNotNull(response); assertEquals(HttpStatus.OK_200, response.getStatus()); ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class); verify(repositoryHandler, times(1)).deleteProduct(captor.capture()); assertEquals(product.getName(), captor.getValue()); }
@Test public void deleteAProductThatDoesNotExist(){ client().addFilter(new HTTPBasicAuthFilter(GrapesTestUtils.USER_4TEST, GrapesTestUtils.PASSWORD_4TEST)); WebResource resource = client().resource("/" + ServerAPI.PRODUCT_RESOURCE + "/doesNotExist" ); ClientResponse response = resource.accept(MediaType.APPLICATION_JSON).delete(ClientResponse.class); assertNotNull(response); assertEquals(HttpStatus.NOT_FOUND_404, response.getStatus()); }
@Test public void deleteAProductWithoutDeletionRights(){ final DbProduct product = new DbProduct(); product.setName("product1"); when(repositoryHandler.getProduct(product.getName())).thenReturn(product); client().addFilter(new HTTPBasicAuthFilter(GrapesTestUtils.WRONG_USER_4TEST, GrapesTestUtils.WRONG_PASSWORD_4TEST)); WebResource resource = client().resource("/" + ServerAPI.PRODUCT_RESOURCE + "/" + product.getName()); ClientResponse response = resource.accept(MediaType.APPLICATION_JSON).delete(ClientResponse.class); assertNotNull(response); assertEquals(HttpStatus.UNAUTHORIZED_401, response.getStatus()); }
@Test public void deleteDeliveryThatDoesNotExist(){ final DbProduct product = new DbProduct(); product.setName("product1"); when(repositoryHandler.getProduct(product.getName())).thenReturn(product); client().addFilter(new HTTPBasicAuthFilter(GrapesTestUtils.USER_4TEST, GrapesTestUtils.PASSWORD_4TEST)); WebResource resource = client().resource("/" + ServerAPI.PRODUCT_RESOURCE + "/" + product.getName() + ServerAPI.GET_DELIVERIES + "/delivery1/1.0.0" ); ClientResponse response = resource.type(MediaType.APPLICATION_JSON).delete(ClientResponse.class); assertNotNull(response); assertEquals(HttpStatus.NOT_FOUND_404, response.getStatus()); }
@Test public void deleteDeliveryFromProductThatDoesNotExist(){ client().addFilter(new HTTPBasicAuthFilter(GrapesTestUtils.USER_4TEST, GrapesTestUtils.PASSWORD_4TEST)); WebResource resource = client().resource("/" + ServerAPI.PRODUCT_RESOURCE + "/doesNotExist" + ServerAPI.GET_DELIVERIES + "/delivery1/1.0.0" ); ClientResponse response = resource.type(MediaType.APPLICATION_JSON).delete(ClientResponse.class); assertNotNull(response); assertEquals(HttpStatus.NOT_FOUND_404, response.getStatus()); }