diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminCatalogClientExpectTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminCatalogClientExpectTest.java index 0ca55acc96..ae0d374bb6 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminCatalogClientExpectTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminCatalogClientExpectTest.java @@ -39,6 +39,12 @@ import org.testng.annotations.Test; */ @Test(groups = { "unit", "user" }, singleThreaded = true, testName = "CatalogClientExpectTest") public class AdminCatalogClientExpectTest extends BaseVCloudDirectorRestClientExpectTest { + + private Reference catalogRef = Reference.builder() + .type("application/vnd.vmware.vcloud.catalog+xml") + .name("QunyingTestCatalog") + .href(URI.create(endpoint + "/admin/catalog/7212e451-76e1-4631-b2de-ba1dfd8080e4")) + .build(); @Test public void testGetCatalog() { @@ -53,12 +59,6 @@ public class AdminCatalogClientExpectTest extends BaseVCloudDirectorRestClientEx AdminCatalog expected = catalog(); - Reference catalogRef = Reference.builder() - .type("application/vnd.vmware.vcloud.catalog+xml") - .name("QunyingTestCatalog") - .href(URI.create(endpoint + "/admin/catalog/7212e451-76e1-4631-b2de-ba1dfd8080e4")) - .build(); - assertEquals(client.getAdminCatalogClient().getCatalog(catalogRef.getURI()), expected); } @@ -76,13 +76,46 @@ public class AdminCatalogClientExpectTest extends BaseVCloudDirectorRestClientEx AdminCatalog expected = modifyCatalog(); - Reference catalogRef = Reference.builder() - .type("application/vnd.vmware.vcloud.catalog+xml") - .name("QunyingTestCatalog") - .href(URI.create(endpoint + "/admin/catalog/7212e451-76e1-4631-b2de-ba1dfd8080e4")) + assertEquals(client.getAdminCatalogClient().updateCatalog(catalogRef.getURI(), expected), expected); + } + + @Test + public void testGetOwner() { + VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, + new VcloudHttpRequestPrimer() + .apiCommand("GET", "/admin/catalog/7212e451-76e1-4631-b2de-ba1dfd8080e4/owner") + .acceptAnyMedia() + .httpRequestBuilder().build(), + new VcloudHttpResponsePrimer() + .xmlFilePayload("/catalog/admin/owner.xml", VCloudDirectorMediaType.OWNER) + .httpResponseBuilder().build()); + + Owner expected = owner(); + + assertEquals(client.getAdminCatalogClient().getOwner(catalogRef.getURI()), expected); + } + + @Test + public void testSetOwner() { + VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, + new VcloudHttpRequestPrimer() + .apiCommand("PUT", "/admin/catalog/7212e451-76e1-4631-b2de-ba1dfd8080e4/owner") + .xmlFilePayload("/catalog/admin/updateOwnerSource.xml", VCloudDirectorMediaType.OWNER) + .acceptAnyMedia() + .httpRequestBuilder().build(), + new VcloudHttpResponsePrimer() + .httpResponseBuilder().statusCode(204).build()); + + Owner newOwner = Owner.builder() + .type("application/vnd.vmware.vcloud.owner+xml") + .user(Reference.builder() + .type("application/vnd.vmware.admin.user+xml") + .name("adk@cloudsoftcorp.com") + .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/user/e9eb1b29-0404-4c5e-8ef7-e584acc51da9")) + .build()) .build(); - assertEquals(client.getAdminCatalogClient().updateCatalog(catalogRef.getURI(), expected), expected); + client.getAdminCatalogClient().setOwner(catalogRef.getURI(), newOwner); } public static final AdminCatalog catalog() { @@ -126,14 +159,7 @@ public class AdminCatalogClientExpectTest extends BaseVCloudDirectorRestClientEx .href(URI.create("https://vcloudbeta.bluelock.com/api/catalog/7212e451-76e1-4631-b2de-ba1dfd8080e4/metadata")) .build()) .description("Testing") - .owner(Owner.builder() - .type("application/vnd.vmware.vcloud.owner+xml") - .user(Reference.builder() - .type("application/vnd.vmware.admin.user+xml") - .name("qunying.huang@enstratus.com") - .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/user/967d317c-4273-4a95-b8a4-bf63b78e9c69")) - .build()) - .build()) + .owner(owner()) .catalogItems(CatalogItems.builder() .item(Reference.builder() .type("application/vnd.vmware.vcloud.catalogItem+xml") @@ -160,78 +186,21 @@ public class AdminCatalogClientExpectTest extends BaseVCloudDirectorRestClientEx .build(); } + private static Owner owner() { + return Owner.builder() + .type("application/vnd.vmware.vcloud.owner+xml") + .user(Reference.builder() + .type("application/vnd.vmware.admin.user+xml") + .name("qunying.huang@enstratus.com") + .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/user/967d317c-4273-4a95-b8a4-bf63b78e9c69")) + .build()) + .build(); + } + public static final AdminCatalog modifyCatalog() { - return AdminCatalog.builder() + return catalog().toBuilder() .name("new QunyingTestCatalog") - .id("urn:vcloud:catalog:7212e451-76e1-4631-b2de-ba1dfd8080e4") - .type("application/vnd.vmware.admin.catalog+xml") - .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/catalog/7212e451-76e1-4631-b2de-ba1dfd8080e4")) - .link(Link.builder() - .rel("up") - .type("application/vnd.vmware.admin.organization+xml") - .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0")) - .build()) - .link(Link.builder() - .rel("alternate") - .type("application/vnd.vmware.vcloud.catalog+xml") - .href(URI.create("https://vcloudbeta.bluelock.com/api/catalog/7212e451-76e1-4631-b2de-ba1dfd8080e4")) - .build()) - .link(Link.builder() - .rel("down") - .type("application/vnd.vmware.vcloud.owner+xml") - .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/catalog/7212e451-76e1-4631-b2de-ba1dfd8080e4/owner")) - .build()) - .link(Link.builder() - .rel("add") - .type("application/vnd.vmware.vcloud.catalogItem+xml") - .href(URI.create("https://vcloudbeta.bluelock.com/api/catalog/7212e451-76e1-4631-b2de-ba1dfd8080e4/catalogItems")) - .build()) - .link(Link.builder() - .rel("edit") - .type("application/vnd.vmware.admin.catalog+xml") - .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/catalog/7212e451-76e1-4631-b2de-ba1dfd8080e4")) - .build()) - .link(Link.builder() - .rel("remove") - .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/catalog/7212e451-76e1-4631-b2de-ba1dfd8080e4")) - .build()) - .link(Link.builder() - .rel("down") - .type("application/vnd.vmware.vcloud.metadata+xml") - .href(URI.create("https://vcloudbeta.bluelock.com/api/catalog/7212e451-76e1-4631-b2de-ba1dfd8080e4/metadata")) - .build()) .description("new Testing") - .owner(Owner.builder() - .type("application/vnd.vmware.vcloud.owner+xml") - .user(Reference.builder() - .type("application/vnd.vmware.admin.user+xml") - .name("qunying.huang@enstratus.com") - .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/user/967d317c-4273-4a95-b8a4-bf63b78e9c69")) - .build()) - .build()) - .catalogItems(CatalogItems.builder() - .item(Reference.builder() - .type("application/vnd.vmware.vcloud.catalogItem+xml") - .name("image") - .href(URI.create("https://vcloudbeta.bluelock.com/api/catalogItem/67a469a1-aafe-4b5b-bb31-a6202ad8961f")) - .build()) - .item(Reference.builder() - .type("application/vnd.vmware.vcloud.catalogItem+xml") - .name("ubuntu10") - .href(URI.create("https://vcloudbeta.bluelock.com/api/catalogItem/a36fdac9-b8c2-43e2-9a4c-2ffaf3ee13df")) - .build()) - .item(Reference.builder() - .type("application/vnd.vmware.vcloud.catalogItem+xml") - .name("imageTesting") - .href(URI.create("https://vcloudbeta.bluelock.com/api/catalogItem/a9e0afdb-a42b-4688-8409-2ac68cf22939")) - .build()) - .item(Reference.builder() - .type("application/vnd.vmware.vcloud.catalogItem+xml") - .name("TestCase") - .href(URI.create("https://vcloudbeta.bluelock.com/api/catalogItem/f7598606-aea4-41d7-8f67-2090e28e7876")) - .build()) - .build()) - .isPublished(false) .build(); } } diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminCatalogClientLiveTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminCatalogClientLiveTest.java index 571af3179e..af2a1c2b74 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminCatalogClientLiveTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminCatalogClientLiveTest.java @@ -19,8 +19,11 @@ package org.jclouds.vcloud.director.v1_5.features; import static com.google.common.base.Objects.equal; +import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.GETTER_RETURNS_SAME_OBJ; +import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.OBJ_FIELD_REQ; import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.OBJ_FIELD_UPDATABLE; import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.REF_REQ_LIVE; +import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertNotNull; import static org.testng.Assert.assertTrue; @@ -28,6 +31,7 @@ import java.net.URI; import org.jclouds.vcloud.director.v1_5.domain.AdminCatalog; import org.jclouds.vcloud.director.v1_5.domain.Checks; +import org.jclouds.vcloud.director.v1_5.domain.Owner; 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.internal.BaseVCloudDirectorClientLiveTest; @@ -55,6 +59,7 @@ public class AdminCatalogClientLiveTest extends BaseVCloudDirectorClientLiveTest */ private ReferenceType catalogRef; private AdminCatalog catalog; + private Owner owner; @BeforeClass(inheritGroups = true) public void setupRequiredClients() { @@ -72,7 +77,38 @@ public class AdminCatalogClientLiveTest extends BaseVCloudDirectorClientLiveTest Checks.checkAdminCatalog(catalog); } - @Test(testName = "PUT /admin/catalog/{id}", dependsOnMethods = { "testGetCatalog" }) + @Test(testName = "GET /admin/catalog/{id}/owner", + dependsOnMethods = { "testGetCatalog" }) + public void testGetCatalogOwner() { + owner = catalogClient.getOwner(catalog.getURI()); + Checks.checkOwner(owner); + } + + @Test(testName = "PUT /admin/catalog/{id}/owner", + dependsOnMethods = { "testGetCatalog" }) + public void updateCatalogOwner() { + Owner oldOwner = owner; + Owner newOwner = Owner.builder() // TODO auto-find a new owner? + .type("application/vnd.vmware.vcloud.owner+xml") + .user(Reference.builder() + .type("application/vnd.vmware.admin.user+xml") + .name("adk@cloudsoftcorp.com") + .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/user/e9eb1b29-0404-4c5e-8ef7-e584acc51da9")) + .build()) + .build(); + + try { + catalogClient.setOwner(catalog.getURI(), newOwner); + owner = catalogClient.getOwner(catalog.getURI()); + Checks.checkOwner(owner); + assertTrue(equal(owner, newOwner), String.format(OBJ_FIELD_UPDATABLE, CATALOG, "owner")); + } finally { + catalogClient.setOwner(catalog.getURI(), oldOwner); + owner = catalogClient.getOwner(catalog.getURI()); + } + } + + @Test(testName = "PUT /admin/catalog/{id}", dependsOnMethods = { "testGetCatalogOwner" }) public void testUpdateCatalog() { String oldName = catalog.getName(); String newName = "new "+oldName;