diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/MediaClientExpectTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/MediaClientExpectTest.java index 097a1415fe..1faf162e63 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/MediaClientExpectTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/MediaClientExpectTest.java @@ -26,7 +26,10 @@ import java.net.URI; import org.jclouds.vcloud.director.v1_5.VCloudDirectorClient; import org.jclouds.vcloud.director.v1_5.VCloudDirectorException; import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType; +import org.jclouds.vcloud.director.v1_5.domain.CloneMediaParams; import org.jclouds.vcloud.director.v1_5.domain.Error; +import org.jclouds.vcloud.director.v1_5.domain.File; +import org.jclouds.vcloud.director.v1_5.domain.FilesList; import org.jclouds.vcloud.director.v1_5.domain.Link; import org.jclouds.vcloud.director.v1_5.domain.Media; import org.jclouds.vcloud.director.v1_5.domain.Metadata; @@ -35,6 +38,7 @@ import org.jclouds.vcloud.director.v1_5.domain.MetadataValue; 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.Task; +import org.jclouds.vcloud.director.v1_5.domain.TasksInProgress; import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorRestClientExpectTest; import org.testng.annotations.Test; @@ -43,10 +47,70 @@ import org.testng.annotations.Test; * * @author danikov */ -@Test(groups = { "unit", "user" }, singleThreaded = true, testName = "NetworkClientExpectTest") +@Test(groups = { "unit", "media" }, singleThreaded = true, testName = "MediaClientExpectTest") public class MediaClientExpectTest extends BaseVCloudDirectorRestClientExpectTest { - @Test(enabled = false) + @Test + public void testCreateMedia() { + URI vdcUri = URI.create(endpoint + "/vdc/e9cd3387-ac57-4d27-a481-9bee75e0690f"); + + VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, + new VcloudHttpRequestPrimer() + .apiCommand("POST", "/vdc/e9cd3387-ac57-4d27-a481-9bee75e0690f/media") + .acceptMedia(VCloudDirectorMediaType.MEDIA) + .xmlFilePayload("/media/createMediaSource.xml", VCloudDirectorMediaType.MEDIA) + .httpRequestBuilder().build(), + new VcloudHttpResponsePrimer() + .xmlFilePayload("/media/createMedia.xml", VCloudDirectorMediaType.MEDIA) + .httpResponseBuilder().statusCode(201).build()); + + Media source = Media.builder() + .size(0) + .imageType("iso") + .name("Test media 1") + .type("application/vnd.vmware.vcloud.media+xml") + .description("Test media generated by testCreateMedia()") + .build(); + Media expected = createMedia(); + + Reference vdcRef = Reference.builder().href(vdcUri).build(); + + assertEquals(client.getVdcClient().createMedia(vdcRef, source), expected); + } + + @Test + public void testCloneMedia() { + URI vdcUri = URI.create(endpoint + "/vdc/e9cd3387-ac57-4d27-a481-9bee75e0690f"); + + VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, + new VcloudHttpRequestPrimer() + .apiCommand("POST", "/vdc/e9cd3387-ac57-4d27-a481-9bee75e0690f/action/cloneMedia") + .acceptMedia(VCloudDirectorMediaType.MEDIA) + .xmlFilePayload("/media/cloneMediaParams.xml", VCloudDirectorMediaType.CLONE_MEDIA_PARAMS) + .httpRequestBuilder().build(), + new VcloudHttpResponsePrimer() + .xmlFilePayload("/media/cloneMedia.xml", VCloudDirectorMediaType.MEDIA) + .httpResponseBuilder().statusCode(201).build()); + + CloneMediaParams params = CloneMediaParams.builder() + .name("moved test media") + .description("moved by testCloneMedia()") + .source(Reference.builder() + .type("application/vnd.vmware.vcloud.media+xml") + .name("copied test media") + .id("urn:vcloud:media:da8361af-cccd-4103-a71c-493513c49094") + .href(URI.create("https://mycloud.greenhousedata.com/api/media/da8361af-cccd-4103-a71c-493513c49094")) + .build()) + .isSourceDelete(false) + .build(); + Media expected = cloneMedia(); + + Reference vdcRef = Reference.builder().href(vdcUri).build(); + + assertEquals(client.getVdcClient().cloneMedia(vdcRef, params), expected); + } + + @Test public void testGetMedia() { URI mediaUri = URI.create(endpoint + "/media/794eb334-754e-4917-b5a0-5df85cbd61d1"); @@ -59,13 +123,14 @@ public class MediaClientExpectTest extends BaseVCloudDirectorRestClientExpectTes .xmlFilePayload("/media/media.xml", VCloudDirectorMediaType.MEDIA) .httpResponseBuilder().build()); - Media expected = media(); + Media expected = getMedia(); Reference mediaRef = Reference.builder().href(mediaUri).build(); assertEquals(client.getMediaClient().getMedia(mediaRef), expected); } + @Test public void testResponse400ForInvalidMedia() { URI mediaUri = URI.create(endpoint + "/media/NOTAUUID"); @@ -319,7 +384,96 @@ public class MediaClientExpectTest extends BaseVCloudDirectorRestClientExpectTes assertEquals(client.getMediaClient().getOwner(mediaRef), expected); } - private static Media media() { + private static Media createMedia() { + return Media.builder() + .size(0) + .imageType("iso") + .status(0) + .name("Test media 1") + .id("urn:vcloud:media:d51b0b9d-099c-499f-97f8-4fbe40ba06d7") + .type("application/vnd.vmware.vcloud.media+xml") + .href(URI.create("https://mycloud.greenhousedata.com/api/media/d51b0b9d-099c-499f-97f8-4fbe40ba06d7")) + .link(Link.builder() + .rel("up") + .type("application/vnd.vmware.vcloud.vdc+xml") + .href(URI.create("https://mycloud.greenhousedata.com/api/vdc/e9cd3387-ac57-4d27-a481-9bee75e0690f")) + .build()) + .link(Link.builder() + .rel("remove") + .href(URI.create("https://mycloud.greenhousedata.com/api/media/d51b0b9d-099c-499f-97f8-4fbe40ba06d7")) + .build()) + .description("Test media generated by testCreateMedia()") + .files(FilesList.builder() + .file(File.builder() + .size(0l) + .bytesTransferred(0l) + .name("file") + .link(Link.builder() + .rel("upload:default") + .href(URI.create("https://mycloud.greenhousedata.com:443/transfer/b1fdf2d0-feff-4414-a8d1-3a8d86c4ccc5/file")) + .build()) + .build()) + .build()) + .owner(owner()) + .build(); + } + + private static Media cloneMedia() { + return Media.builder() + .size(175163392) + .imageType("iso") + .status(0) + .name("copied test media-copy-671136ae-b8f0-4389-bca6-50e9c42268f2") + .id("urn:vcloud:media:a6b023f2-7f90-4e89-a24d-56e0eba83a5a") + .type("application/vnd.vmware.vcloud.media+xml") + .href(URI.create("https://mycloud.greenhousedata.com/api/media/a6b023f2-7f90-4e89-a24d-56e0eba83a5a")) + .link(Link.builder() + .rel("up") + .type("application/vnd.vmware.vcloud.vdc+xml") + .href(URI.create("https://mycloud.greenhousedata.com/api/vdc/e9cd3387-ac57-4d27-a481-9bee75e0690f")) + .build()) + .link(Link.builder() + .rel("remove") + .href(URI.create("https://mycloud.greenhousedata.com/api/media/a6b023f2-7f90-4e89-a24d-56e0eba83a5a")) + .build()) + .description("copied by testCloneMedia()") + .tasksInProgress(TasksInProgress.builder() + .task(Task.builder() + .status("running") + .startTime(dateService.iso8601DateParse("2012-03-02T04:58:48.754-07:00")) + .operationName("vdcCopyMedia") + .operation("Copying Media File copied test media-copy-671136ae-b8f0-4389-bca6-50e9c42268f2(a6b023f2-7f90-4e89-a24d-56e0eba83a5a)") + .expiryTime(dateService.iso8601DateParse("2012-05-31T04:58:48.754-06:00")) + .name("task") + .id("urn:vcloud:task:7e4f6baf-7ef0-43ea-93cc-62cc329afb5d") + .type("application/vnd.vmware.vcloud.task+xml") + .href(URI.create("https://mycloud.greenhousedata.com/api/task/7e4f6baf-7ef0-43ea-93cc-62cc329afb5d")) + .link(Link.builder() + .rel("task:cancel") + .href(URI.create("https://mycloud.greenhousedata.com/api/task/7e4f6baf-7ef0-43ea-93cc-62cc329afb5d/action/cancel")) + .build()) + .owner(Reference.builder() + .type("application/vnd.vmware.vcloud.media+xml") + .name("copied test media-copy-671136ae-b8f0-4389-bca6-50e9c42268f2") + .href(URI.create("https://mycloud.greenhousedata.com/api/media/a6b023f2-7f90-4e89-a24d-56e0eba83a5a")) + .build()) + .user(Reference.builder() + .type("application/vnd.vmware.admin.user+xml") + .name("acole") + .href(URI.create("https://mycloud.greenhousedata.com/api/admin/user/c090335b-708c-4c1c-9e3d-89560d002120")) + .build()) + .org(Reference.builder() + .type("application/vnd.vmware.vcloud.org+xml") + .name("cloudsoft") + .href(URI.create("https://mycloud.greenhousedata.com/api/org/c076f90a-397a-49fa-89b8-b294c1599cd0")) + .build()) + .build()) + .build()) + .owner(owner()) + .build(); + } + + private static Media getMedia() { return Media.builder() .size(175163392) .imageType("iso") @@ -356,7 +510,8 @@ public class MediaClientExpectTest extends BaseVCloudDirectorRestClientExpectTes .type("application/vnd.vmware.vcloud.metadata+xml") .href(URI.create("https://mycloud.greenhousedata.com/api/media/794eb334-754e-4917-b5a0-5df85cbd61d1/metadata")) .build()) - .description("Windows 2003 R2 Disk2 Standard 32bit & 64bit") + .type("application/vnd.vmware.vcloud.media+xml") + .description("Windows 2003 R2 Disk2 Standard 32bit & 64bit") .owner(owner()) .build(); } diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VdcClientExpectTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VdcClientExpectTest.java index b4ba9250d0..6d7e96e03f 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VdcClientExpectTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VdcClientExpectTest.java @@ -193,28 +193,7 @@ public class VdcClientExpectTest extends BaseVCloudDirectorRestClientExpectTest } } - @Test(enabled = false) - public void testCloneMedia() { - VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, - new VcloudHttpRequestPrimer() - .apiCommand("POST", "/vdc/e9cd3387-ac57-4d27-a481-9bee75e0690f/action/cloneMedia") - .xmlFilePayload("/vdc/params/cloneMedia.xml", VCloudDirectorMediaType.CLONE_MEDIA_PARAMS) - .acceptAnyMedia() - .httpRequestBuilder().build(), - new VcloudHttpResponsePrimer() - .xmlFilePayload("/vdc/cloneMedia.xml", VCloudDirectorMediaType.MEDIA) - .httpResponseBuilder().build()); - - Media expected = cloneMedia(); - - // TODO: configure params - CloneMediaParams params = CloneMediaParams.builder() - - .build(); - - assertEquals(client.getVdcClient().cloneMedia(vdcRef, params), expected); - } - + @Test @Test(enabled = false) public void testCloneVApp() { VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse,