deleteGroup with tests

This commit is contained in:
danikov 2012-03-08 09:13:28 +00:00
parent 3f8f28f0f9
commit 7b635ddf77
4 changed files with 77 additions and 15 deletions

View File

@ -21,6 +21,7 @@ package org.jclouds.vcloud.director.v1_5.features;
import java.net.URI; import java.net.URI;
import javax.ws.rs.Consumes; import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET; import javax.ws.rs.GET;
import org.jclouds.rest.annotations.EndpointParam; 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 org.jclouds.vcloud.director.v1_5.functions.ThrowVCloudErrorOn4xx;
import com.google.common.util.concurrent.ListenableFuture; 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 @RequestFilters(AddVCloudAuthorizationToRequest.class)
@Consumes public interface GroupAsyncClient {
@JAXBResponseParser
@ExceptionParser(ThrowVCloudErrorOn4xx.class) /**
ListenableFuture<Group> getGroup(@EndpointParam URI groupUri); * @see GroupClient#getGroup(URI)
*/
@GET
@Consumes
@JAXBResponseParser
@ExceptionParser(ThrowVCloudErrorOn4xx.class)
ListenableFuture<Group> getGroup(@EndpointParam URI groupUri);
/**
* @see GroupClient#deleteGroup(URI)
*/
@DELETE
@Consumes
@JAXBResponseParser
@ExceptionParser(ThrowVCloudErrorOn4xx.class)
ListenableFuture<Void> deleteGroup(@EndpointParam URI groupRef);
} }

View File

@ -45,4 +45,12 @@ public interface GroupClient {
*/ */
Group getGroup(URI groupUri); Group getGroup(URI groupUri);
/**
* Deletes a group.
*
* <pre>
* DELETE /admin/group/{id}
* </pre>
*/
void deleteGroup(URI groupRef);
} }

View File

@ -64,4 +64,17 @@ public class GroupClientExpectTest extends BaseVCloudDirectorRestClientExpectTes
.build(); .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());
}
} }

View File

@ -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.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.REF_REQ_LIVE;
import static org.testng.Assert.assertNotNull; 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 java.net.URI;
import org.jclouds.vcloud.director.v1_5.domain.Checks; 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.Group;
import org.jclouds.vcloud.director.v1_5.domain.Reference; import org.jclouds.vcloud.director.v1_5.domain.Reference;
import org.jclouds.vcloud.director.v1_5.domain.ReferenceType; import org.jclouds.vcloud.director.v1_5.domain.ReferenceType;
@ -57,7 +64,7 @@ public class GroupClientLiveTest extends BaseVCloudDirectorClientLiveTest {
public void setupRequiredClients() { public void setupRequiredClients() {
groupClient = context.getApi().getGroupClient(); groupClient = context.getApi().getGroupClient();
groupRef = Reference.builder() groupRef = Reference.builder()
.href(URI.create("https://vcloudbeta.bluelock.com/api/admin/catalog/???")) .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/group/???"))
.build(); .build();
} }
@ -68,4 +75,29 @@ public class GroupClientLiveTest extends BaseVCloudDirectorClientLiveTest {
Checks.checkGroup(group); 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()));
}
}
} }