From 7b635ddf7703fbf71caecdecc5d6d36ae15db1fd Mon Sep 17 00:00:00 2001 From: danikov Date: Thu, 8 Mar 2012 09:13:28 +0000 Subject: [PATCH] deleteGroup with tests --- .../v1_5/features/GroupAsyncClient.java | 37 ++++++++++++------- .../director/v1_5/features/GroupClient.java | 8 ++++ .../v1_5/features/GroupClientExpectTest.java | 13 +++++++ .../v1_5/features/GroupClientLiveTest.java | 34 ++++++++++++++++- 4 files changed, 77 insertions(+), 15 deletions(-) diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/GroupAsyncClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/GroupAsyncClient.java index 4dfdc75c96..4ede84e1d4 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/GroupAsyncClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/GroupAsyncClient.java @@ -21,6 +21,7 @@ package org.jclouds.vcloud.director.v1_5.features; import java.net.URI; import javax.ws.rs.Consumes; +import javax.ws.rs.DELETE; import javax.ws.rs.GET; import org.jclouds.rest.annotations.EndpointParam; @@ -32,21 +33,29 @@ import org.jclouds.vcloud.director.v1_5.filters.AddVCloudAuthorizationToRequest; import org.jclouds.vcloud.director.v1_5.functions.ThrowVCloudErrorOn4xx; import com.google.common.util.concurrent.ListenableFuture; - -/** - * @see GroupClient - * @author danikov - */ -@RequestFilters(AddVCloudAuthorizationToRequest.class) -public interface GroupAsyncClient { /** - * @see GroupClient#getGroup(URI) + * @see GroupClient + * @author danikov */ - @GET - @Consumes - @JAXBResponseParser - @ExceptionParser(ThrowVCloudErrorOn4xx.class) - ListenableFuture getGroup(@EndpointParam URI groupUri); - + @RequestFilters(AddVCloudAuthorizationToRequest.class) + public interface GroupAsyncClient { + + /** + * @see GroupClient#getGroup(URI) + */ + @GET + @Consumes + @JAXBResponseParser + @ExceptionParser(ThrowVCloudErrorOn4xx.class) + ListenableFuture getGroup(@EndpointParam URI groupUri); + + /** + * @see GroupClient#deleteGroup(URI) + */ + @DELETE + @Consumes + @JAXBResponseParser + @ExceptionParser(ThrowVCloudErrorOn4xx.class) + ListenableFuture deleteGroup(@EndpointParam URI groupRef); } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/GroupClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/GroupClient.java index f4b932ff33..877328c711 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/GroupClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/GroupClient.java @@ -45,4 +45,12 @@ public interface GroupClient { */ Group getGroup(URI groupUri); + /** + * Deletes a group. + * + *
+    * DELETE /admin/group/{id}
+    * 
+ */ + void deleteGroup(URI groupRef); } diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/GroupClientExpectTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/GroupClientExpectTest.java index ac9875602d..9877477f26 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/GroupClientExpectTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/GroupClientExpectTest.java @@ -64,4 +64,17 @@ public class GroupClientExpectTest extends BaseVCloudDirectorRestClientExpectTes .build(); } + + @Test + public void testDeleteGroup() { + VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, + new VcloudHttpRequestPrimer() + .apiCommand("DELETE", "/admin/group/???") + .acceptAnyMedia() + .httpRequestBuilder().build(), + new VcloudHttpResponsePrimer() + .httpResponseBuilder().statusCode(204).build()); + + client.getAdminCatalogClient().deleteCatalog(groupRef.getURI()); + } } diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/GroupClientLiveTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/GroupClientLiveTest.java index 59d0fc0ce7..0b8b2c2192 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/GroupClientLiveTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/GroupClientLiveTest.java @@ -21,9 +21,16 @@ package org.jclouds.vcloud.director.v1_5.features; import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.REF_REQ_LIVE; import static org.testng.Assert.assertNotNull; +import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.OBJ_DEL; +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertNull; +import static org.testng.Assert.fail; + import java.net.URI; import org.jclouds.vcloud.director.v1_5.domain.Checks; +import org.jclouds.vcloud.director.v1_5.VCloudDirectorException; +import org.jclouds.vcloud.director.v1_5.domain.Error; import org.jclouds.vcloud.director.v1_5.domain.Group; import org.jclouds.vcloud.director.v1_5.domain.Reference; import org.jclouds.vcloud.director.v1_5.domain.ReferenceType; @@ -57,7 +64,7 @@ public class GroupClientLiveTest extends BaseVCloudDirectorClientLiveTest { public void setupRequiredClients() { groupClient = context.getApi().getGroupClient(); groupRef = Reference.builder() - .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/catalog/???")) + .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/group/???")) .build(); } @@ -68,4 +75,29 @@ public class GroupClientLiveTest extends BaseVCloudDirectorClientLiveTest { Checks.checkGroup(group); } + + @Test(testName = "DELETE /admin/group/{id}", enabled = false ) + public void testDeleteCatalog() { + groupClient.deleteGroup(groupRef.getURI()); + + Error expected = Error.builder() + .message("???") + .majorErrorCode(403) + .minorErrorCode("ACCESS_TO_RESOURCE_IS_FORBIDDEN") + .build(); + + try { + group = groupClient.getGroup(groupRef.getURI()); + fail("Should give HTTP 403 error"); + } catch (VCloudDirectorException vde) { + assertEquals(vde.getError(), expected); + group = null; + } catch (Exception e) { + fail("Should have thrown a VCloudDirectorException"); + } + + if (group != null) { // guard against NPE on the .toStrings + assertNull(group, String.format(OBJ_DEL, GROUP, group.toString())); + } + } }