Package org.jclouds.abiquo.features

Source Code of org.jclouds.abiquo.features.CloudApiExpectTest

/**
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements.  See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership.  jclouds licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License.  You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied.  See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.jclouds.abiquo.features;

import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNotNull;

import java.net.URI;
import java.util.List;

import org.jclouds.abiquo.AbiquoApi;
import org.jclouds.abiquo.domain.PaginatedCollection;
import org.jclouds.abiquo.domain.cloud.options.VirtualMachineOptions;
import org.jclouds.abiquo.domain.cloud.options.VirtualMachineTemplateOptions;
import org.jclouds.abiquo.domain.cloud.options.VolumeOptions;
import org.jclouds.abiquo.domain.network.options.IpOptions;
import org.jclouds.collect.PagedIterable;
import org.jclouds.http.HttpRequest;
import org.jclouds.http.HttpResponse;
import org.testng.annotations.Test;

import com.abiquo.model.rest.RESTLink;
import com.abiquo.model.transport.AcceptedRequestDto;
import com.abiquo.server.core.appslibrary.VirtualMachineTemplateDto;
import com.abiquo.server.core.appslibrary.VirtualMachineTemplatesDto;
import com.abiquo.server.core.cloud.VirtualApplianceDto;
import com.abiquo.server.core.cloud.VirtualDatacenterDto;
import com.abiquo.server.core.cloud.VirtualMachineDto;
import com.abiquo.server.core.cloud.VirtualMachineInstanceDto;
import com.abiquo.server.core.cloud.VirtualMachineWithNodeExtendedDto;
import com.abiquo.server.core.cloud.VirtualMachinesWithNodeExtendedDto;
import com.abiquo.server.core.infrastructure.network.PrivateIpDto;
import com.abiquo.server.core.infrastructure.network.PrivateIpsDto;
import com.abiquo.server.core.infrastructure.network.PublicIpDto;
import com.abiquo.server.core.infrastructure.network.PublicIpsDto;
import com.abiquo.server.core.infrastructure.network.VLANNetworkDto;
import com.abiquo.server.core.infrastructure.storage.VolumeManagementDto;
import com.abiquo.server.core.infrastructure.storage.VolumesManagementDto;

/**
* Expect tests for the {@link CloudApi} class.
*
* @author Ignasi Barrera
*/
@Test(groups = "unit", testName = "CloudApiExpectTest")
public class CloudApiExpectTest extends BaseAbiquoApiExpectTest<CloudApi> {

   public void testListAllVirtualMachinesWhenResponseIs2xx() {
      CloudApi api = requestsSendResponses(
            HttpRequest.builder() //
                  .method("GET") //
                  .endpoint(URI.create("http://localhost/api/cloud/virtualmachines")) //
                  .addHeader("Cookie", tokenAuth) //
                  .addHeader("Accept", normalize(VirtualMachinesWithNodeExtendedDto.MEDIA_TYPE)) //
                  .build(),
            HttpResponse
                  .builder()
                  .statusCode(200)
                  .payload(
                        payloadFromResourceWithContentType("/payloads/all-vms.xml",
                              normalize(VirtualMachinesWithNodeExtendedDto.MEDIA_TYPE))) //
                  .build(),
            HttpRequest.builder() //
                  .method("GET") //
                  .endpoint(URI.create("http://localhost/api/cloud/virtualmachines")) //
                  .addHeader("Cookie", tokenAuth) //
                  .addHeader("Accept", normalize(VirtualMachinesWithNodeExtendedDto.MEDIA_TYPE)) //
                  .addQueryParam("startwith", "2").build(),
            HttpResponse
                  .builder()
                  .statusCode(200)
                  .payload(
                        payloadFromResourceWithContentType("/payloads/all-vms-lastpage.xml",
                              normalize(VirtualMachinesWithNodeExtendedDto.MEDIA_TYPE))) //
                  .build());

      PagedIterable<VirtualMachineWithNodeExtendedDto> result = api.listAllVirtualMachines();
      List<VirtualMachineWithNodeExtendedDto> vms = result.concat().toList();

      assertEquals(vms.size(), 2);
      assertEquals(vms.get(0).getId(), Integer.valueOf(1));
      assertEquals(vms.get(1).getId(), Integer.valueOf(2));
      assertEquals(vms.get(0).getName(), "VM");
      assertNotNull(vms.get(0).getEditLink());
   }

   public void testListAllVirtualMachinesWithPagination() {
      CloudApi api = requestSendsResponse(
            HttpRequest.builder() //
                  .method("GET") //
                  .endpoint(URI.create("http://localhost/api/cloud/virtualmachines")) //
                  .addHeader("Cookie", tokenAuth) //
                  .addHeader("Accept", normalize(VirtualMachinesWithNodeExtendedDto.MEDIA_TYPE)) //
                  .addQueryParam("startwith", "2").build(),
            HttpResponse
                  .builder()
                  .statusCode(200)
                  .payload(
                        payloadFromResourceWithContentType("/payloads/all-vms-lastpage.xml",
                              normalize(VirtualMachinesWithNodeExtendedDto.MEDIA_TYPE))) //
                  .build());

      VirtualMachineOptions options = VirtualMachineOptions.builder().startWith(2).build();
      PaginatedCollection<VirtualMachineWithNodeExtendedDto, VirtualMachinesWithNodeExtendedDto> vms = api
            .listAllVirtualMachines(options);

      assertEquals(vms.size(), 1);
      assertEquals(vms.getTotalSize().intValue(), 2);
      assertEquals(vms.get(0).getId().intValue(), 2);
   }

   public void testListVirtualMachinesWhenResponseIs2xx() {
      CloudApi api = requestsSendResponses(
            HttpRequest.builder() //
                  .method("GET")
                  //
                  .endpoint(
                        URI.create("http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines")) //
                  .addHeader("Cookie", tokenAuth) //
                  .addHeader("Accept", normalize(VirtualMachinesWithNodeExtendedDto.MEDIA_TYPE)) //
                  .build(),
            HttpResponse
                  .builder()
                  .statusCode(200)
                  .payload(
                        payloadFromResourceWithContentType("/payloads/vms-page.xml",
                              normalize(VirtualMachinesWithNodeExtendedDto.MEDIA_TYPE))) //
                  .build(),
            HttpRequest.builder() //
                  .method("GET")
                  //
                  .endpoint(
                        URI.create("http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines")) //
                  .addHeader("Cookie", tokenAuth) //
                  .addHeader("Accept", normalize(VirtualMachinesWithNodeExtendedDto.MEDIA_TYPE)) //
                  .addQueryParam("startwith", "2").build(),
            HttpResponse
                  .builder()
                  .statusCode(200)
                  .payload(
                        payloadFromResourceWithContentType("/payloads/vms-lastpage.xml",
                              normalize(VirtualMachinesWithNodeExtendedDto.MEDIA_TYPE))) //
                  .build());

      VirtualApplianceDto vapp = new VirtualApplianceDto();
      vapp.addLink(new RESTLink("virtualmachines",
            "http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines"));

      PagedIterable<VirtualMachineWithNodeExtendedDto> result = api.listVirtualMachines(vapp);
      List<VirtualMachineWithNodeExtendedDto> vms = result.concat().toList();

      assertEquals(vms.size(), 2);
      assertEquals(vms.get(0).getId(), Integer.valueOf(1));
      assertEquals(vms.get(1).getId(), Integer.valueOf(2));
      assertEquals(vms.get(0).getName(), "VM");
      assertNotNull(vms.get(0).getEditLink());
   }

   public void testLisVirtualMachinesWithPagination() {
      CloudApi api = requestSendsResponse(
            HttpRequest.builder() //
                  .method("GET")
                  //
                  .endpoint(
                        URI.create("http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines")) //
                  .addHeader("Cookie", tokenAuth) //
                  .addHeader("Accept", normalize(VirtualMachinesWithNodeExtendedDto.MEDIA_TYPE)) //
                  .addQueryParam("startwith", "2").build(),
            HttpResponse
                  .builder()
                  .statusCode(200)
                  .payload(
                        payloadFromResourceWithContentType("/payloads/vms-lastpage.xml",
                              normalize(VirtualMachinesWithNodeExtendedDto.MEDIA_TYPE))) //
                  .build());

      VirtualApplianceDto vapp = new VirtualApplianceDto();
      vapp.addLink(new RESTLink("virtualmachines",
            "http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines"));

      VirtualMachineOptions options = VirtualMachineOptions.builder().startWith(2).build();
      PaginatedCollection<VirtualMachineWithNodeExtendedDto, VirtualMachinesWithNodeExtendedDto> vms = api
            .listVirtualMachines(vapp, options);

      assertEquals(vms.size(), 1);
      assertEquals(vms.getTotalSize().intValue(), 2);
      assertEquals(vms.get(0).getId().intValue(), 2);
   }

   public void testSnapshotVirtualMachineReturns2xx() {
      CloudApi api = requestSendsResponse(
            HttpRequest
                  .builder()
                  .method("POST")
                  .endpoint(
                        URI.create("http://localhost/api/admin/virtualdatacenters/1/virtualappliances/1/virtualmachines/1/action/instance")) //
                  .addHeader("Cookie", tokenAuth) //
                  .addHeader("Accept", normalize(AcceptedRequestDto.MEDIA_TYPE)) //
                  .payload(
                        payloadFromResourceWithContentType("/payloads/vm-snapshot.xml",
                              normalize(VirtualMachineInstanceDto.MEDIA_TYPE))) //
                  .build(), //
            HttpResponse
                  .builder()
                  .statusCode(202)
                  .payload(
                        payloadFromResourceWithContentType("/payloads/vm-accepted-request.xml",
                              normalize(VirtualMachineInstanceDto.MEDIA_TYPE))).build());

      VirtualMachineDto vm = new VirtualMachineDto();
      vm.addLink(new RESTLink("instance",
            "http://localhost/api/admin/virtualdatacenters/1/virtualappliances/1/virtualmachines/1/action/instance"));
      VirtualMachineInstanceDto snapshotConfig = new VirtualMachineInstanceDto();
      snapshotConfig.setInstanceName("foo");

      AcceptedRequestDto<String> taskRef = api.snapshotVirtualMachine(vm, snapshotConfig);
      assertNotNull(taskRef);
   }

   public void testListAvailablePublicIps() {
      CloudApi api = requestsSendResponses(
            HttpRequest.builder() //
                  .method("GET") //
                  .endpoint(URI.create("http://localhost/api/cloud/virtualdatacenters/1/publicips/topurchase")) //
                  .addHeader("Cookie", tokenAuth) //
                  .addHeader("Accept", normalize(PublicIpsDto.MEDIA_TYPE)) //
                  .build(),
            HttpResponse
                  .builder()
                  .statusCode(200)
                  .payload(
                        payloadFromResourceWithContentType("/payloads/publicips-available-page.xml",
                              normalize(PublicIpsDto.MEDIA_TYPE))) //
                  .build(),
            HttpRequest.builder() //
                  .method("GET") //
                  .endpoint(URI.create("http://localhost/api/cloud/virtualdatacenters/1/publicips/topurchase")) //
                  .addHeader("Cookie", tokenAuth) //
                  .addHeader("Accept", normalize(PublicIpsDto.MEDIA_TYPE)) //
                  .addQueryParam("startwith", "3") //
                  .build(),
            HttpResponse
                  .builder()
                  .statusCode(200)
                  .payload(
                        payloadFromResourceWithContentType("/payloads/publicips-available-lastpage.xml",
                              normalize(PublicIpsDto.MEDIA_TYPE))) //
                  .build());

      VirtualDatacenterDto vdc = new VirtualDatacenterDto();
      vdc.addLink(new RESTLink("topurchase", "http://localhost/api/cloud/virtualdatacenters/1/publicips/topurchase"));

      PagedIterable<PublicIpDto> publicIps = api.listAvailablePublicIps(vdc);
      List<PublicIpDto> ips = publicIps.concat().toList();

      assertEquals(ips.size(), 4);
      assertEquals(ips.get(0).getId().intValue(), 1);
      assertEquals(ips.get(1).getId().intValue(), 2);
      assertEquals(ips.get(2).getId().intValue(), 3);
      assertEquals(ips.get(3).getId().intValue(), 4);
   }

   public void testListAvailablePublicIpsWithPagination() {
      CloudApi api = requestSendsResponse(
            HttpRequest.builder() //
                  .method("GET") //
                  .endpoint(URI.create("http://localhost/api/cloud/virtualdatacenters/1/publicips/topurchase")) //
                  .addHeader("Cookie", tokenAuth) //
                  .addHeader("Accept", normalize(PublicIpsDto.MEDIA_TYPE)) //
                  .addQueryParam("startwith", "3") //
                  .build(),
            HttpResponse
                  .builder()
                  .statusCode(200)
                  .payload(
                        payloadFromResourceWithContentType("/payloads/publicips-available-lastpage.xml",
                              normalize(PublicIpsDto.MEDIA_TYPE))) //
                  .build());

      VirtualDatacenterDto vdc = new VirtualDatacenterDto();
      vdc.addLink(new RESTLink("topurchase", "http://localhost/api/cloud/virtualdatacenters/1/publicips/topurchase"));

      IpOptions options = IpOptions.builder().startWith(3).build();
      PaginatedCollection<PublicIpDto, PublicIpsDto> ips = api.listAvailablePublicIps(vdc, options);

      assertEquals(ips.size(), 2);
      assertEquals(ips.getTotalSize().intValue(), 4);
      assertEquals(ips.get(0).getId().intValue(), 3);
      assertEquals(ips.get(1).getId().intValue(), 4);
   }

   public void testListPurchasedPublicIps() {
      CloudApi api = requestsSendResponses(
            HttpRequest.builder() //
                  .method("GET") //
                  .endpoint(URI.create("http://localhost/api/cloud/virtualdatacenters/1/publicips/purchased")) //
                  .addHeader("Cookie", tokenAuth) //
                  .addHeader("Accept", normalize(PublicIpsDto.MEDIA_TYPE)) //
                  .build(),
            HttpResponse
                  .builder()
                  .statusCode(200)
                  .payload(
                        payloadFromResourceWithContentType("/payloads/publicips-purchased-page.xml",
                              normalize(PublicIpsDto.MEDIA_TYPE))) //
                  .build(),
            HttpRequest.builder() //
                  .method("GET") //
                  .endpoint(URI.create("http://localhost/api/cloud/virtualdatacenters/1/publicips/purchased")) //
                  .addHeader("Cookie", tokenAuth) //
                  .addHeader("Accept", normalize(PublicIpsDto.MEDIA_TYPE)) //
                  .addQueryParam("startwith", "3") //
                  .build(),
            HttpResponse
                  .builder()
                  .statusCode(200)
                  .payload(
                        payloadFromResourceWithContentType("/payloads/publicips-purchased-lastpage.xml",
                              normalize(PublicIpsDto.MEDIA_TYPE))) //
                  .build());

      VirtualDatacenterDto vdc = new VirtualDatacenterDto();
      vdc.addLink(new RESTLink("purchased", "http://localhost/api/cloud/virtualdatacenters/1/publicips/purchased"));

      PagedIterable<PublicIpDto> publicIps = api.listPurchasedPublicIps(vdc);
      List<PublicIpDto> ips = publicIps.concat().toList();

      assertEquals(ips.size(), 4);
      assertEquals(ips.get(0).getId().intValue(), 1);
      assertEquals(ips.get(1).getId().intValue(), 2);
      assertEquals(ips.get(2).getId().intValue(), 3);
      assertEquals(ips.get(3).getId().intValue(), 4);
   }

   public void testListPurchasedPublicIpsWithPagination() {
      CloudApi api = requestSendsResponse(
            HttpRequest.builder() //
                  .method("GET") //
                  .endpoint(URI.create("http://localhost/api/cloud/virtualdatacenters/1/publicips/purchased")) //
                  .addHeader("Cookie", tokenAuth) //
                  .addHeader("Accept", normalize(PublicIpsDto.MEDIA_TYPE)) //
                  .addQueryParam("startwith", "3") //
                  .build(),
            HttpResponse
                  .builder()
                  .statusCode(200)
                  .payload(
                        payloadFromResourceWithContentType("/payloads/publicips-purchased-lastpage.xml",
                              normalize(PublicIpsDto.MEDIA_TYPE))) //
                  .build());

      VirtualDatacenterDto vdc = new VirtualDatacenterDto();
      vdc.addLink(new RESTLink("purchased", "http://localhost/api/cloud/virtualdatacenters/1/publicips/purchased"));

      IpOptions options = IpOptions.builder().startWith(3).build();
      PaginatedCollection<PublicIpDto, PublicIpsDto> ips = api.listPurchasedPublicIps(vdc, options);

      assertEquals(ips.size(), 2);
      assertEquals(ips.getTotalSize().intValue(), 4);
      assertEquals(ips.get(0).getId().intValue(), 3);
      assertEquals(ips.get(1).getId().intValue(), 4);
   }

   public void testListPrivteIps() {
      CloudApi api = requestsSendResponses(
            HttpRequest.builder() //
                  .method("GET") //
                  .endpoint(URI.create("http://localhost/api/cloud/virtualdatacenters/1/privatenetworks/1/ips")) //
                  .addHeader("Cookie", tokenAuth) //
                  .addHeader("Accept", normalize(PrivateIpsDto.MEDIA_TYPE)) //
                  .build(),
            HttpResponse
                  .builder()
                  .statusCode(200)
                  .payload(
                        payloadFromResourceWithContentType("/payloads/privateips-page.xml",
                              normalize(PublicIpsDto.MEDIA_TYPE))) //
                  .build(),
            HttpRequest.builder() //
                  .method("GET") //
                  .endpoint(URI.create("http://localhost/api/cloud/virtualdatacenters/1/privatenetworks/1/ips")) //
                  .addHeader("Cookie", tokenAuth) //
                  .addHeader("Accept", normalize(PrivateIpsDto.MEDIA_TYPE)) //
                  .addQueryParam("startwith", "1") //
                  .build(),
            HttpResponse
                  .builder()
                  .statusCode(200)
                  .payload(
                        payloadFromResourceWithContentType("/payloads/privateips-lastpage.xml",
                              normalize(PrivateIpsDto.MEDIA_TYPE))) //
                  .build());

      VLANNetworkDto vlan = new VLANNetworkDto();
      vlan.addLink(new RESTLink("ips", "http://localhost/api/cloud/virtualdatacenters/1/privatenetworks/1/ips"));

      PagedIterable<PrivateIpDto> privateIps = api.listPrivateNetworkIps(vlan);
      List<PrivateIpDto> ips = privateIps.concat().toList();

      assertEquals(ips.size(), 2);
      assertEquals(ips.get(0).getId().intValue(), 1);
      assertEquals(ips.get(1).getId().intValue(), 2);
   }

   public void testListPrivateIpsWithPagination() {
      CloudApi api = requestSendsResponse(
            HttpRequest.builder() //
                  .method("GET") //
                  .endpoint(URI.create("http://localhost/api/cloud/virtualdatacenters/1/privatenetworks/1/ips")) //
                  .addHeader("Cookie", tokenAuth) //
                  .addHeader("Accept", normalize(PrivateIpsDto.MEDIA_TYPE)) //
                  .addQueryParam("startwith", "1") //
                  .build(),
            HttpResponse
                  .builder()
                  .statusCode(200)
                  .payload(
                        payloadFromResourceWithContentType("/payloads/privateips-lastpage.xml",
                              normalize(PrivateIpsDto.MEDIA_TYPE))) //
                  .build());

      VLANNetworkDto vlan = new VLANNetworkDto();
      vlan.addLink(new RESTLink("ips", "http://localhost/api/cloud/virtualdatacenters/1/privatenetworks/1/ips"));

      IpOptions options = IpOptions.builder().startWith(1).build();
      PaginatedCollection<PrivateIpDto, PrivateIpsDto> ips = api.listPrivateNetworkIps(vlan, options);

      assertEquals(ips.size(), 1);
      assertEquals(ips.getTotalSize().intValue(), 2);
      assertEquals(ips.get(0).getId().intValue(), 2);
   }

   public void testListAvailableTemplates() {
      CloudApi api = requestsSendResponses(
            HttpRequest.builder() //
                  .method("GET") //
                  .endpoint(URI.create("http://example.com/api/cloud/virtualdatacenters/1/action/templates")) //
                  .addHeader("Cookie", tokenAuth) //
                  .addHeader("Accept", normalize(VirtualMachineTemplatesDto.MEDIA_TYPE)) //
                  .build(),
            HttpResponse
                  .builder()
                  .statusCode(200)
                  .payload(
                        payloadFromResourceWithContentType("/payloads/available-templates-page.xml",
                              normalize(VirtualMachineTemplatesDto.MEDIA_TYPE))) //
                  .build(),
            HttpRequest.builder() //
                  .method("GET") //
                  .endpoint(URI.create("http://example.com/api/cloud/virtualdatacenters/1/action/templates")) //
                  .addHeader("Cookie", tokenAuth) //
                  .addHeader("Accept", normalize(VirtualMachineTemplatesDto.MEDIA_TYPE)) //
                  .addQueryParam("startwith", "1") //
                  .build(),
            HttpResponse
                  .builder()
                  .statusCode(200)
                  .payload(
                        payloadFromResourceWithContentType("/payloads/available-templates-lastpage.xml",
                              normalize(VirtualMachineTemplatesDto.MEDIA_TYPE))) //
                  .build());

      VirtualDatacenterDto vdc = new VirtualDatacenterDto();
      vdc.addLink(new RESTLink("templates", "http://example.com/api/cloud/virtualdatacenters/1/action/templates"));

      PagedIterable<VirtualMachineTemplateDto> templates = api.listAvailableTemplates(vdc);
      List<VirtualMachineTemplateDto> all = templates.concat().toList();

      assertEquals(all.size(), 2);
      assertEquals(all.get(0).getId().intValue(), 15);
      assertEquals(all.get(1).getId().intValue(), 16);
   }

   public void testListAvailableTemplatesWithPagination() {
      CloudApi api = requestSendsResponse(
            HttpRequest.builder() //
                  .method("GET") //
                  .endpoint(URI.create("http://example.com/api/cloud/virtualdatacenters/1/action/templates")) //
                  .addHeader("Cookie", tokenAuth) //
                  .addHeader("Accept", normalize(VirtualMachineTemplatesDto.MEDIA_TYPE)) //
                  .addQueryParam("startwith", "1") //
                  .build(),
            HttpResponse
                  .builder()
                  .statusCode(200)
                  .payload(
                        payloadFromResourceWithContentType("/payloads/available-templates-lastpage.xml",
                              normalize(VirtualMachineTemplatesDto.MEDIA_TYPE))) //
                  .build());

      VirtualDatacenterDto vdc = new VirtualDatacenterDto();
      vdc.addLink(new RESTLink("templates", "http://example.com/api/cloud/virtualdatacenters/1/action/templates"));

      VirtualMachineTemplateOptions options = VirtualMachineTemplateOptions.builder().startWith(1).build();
      PaginatedCollection<VirtualMachineTemplateDto, VirtualMachineTemplatesDto> templates = api
            .listAvailableTemplates(vdc, options);

      assertEquals(templates.size(), 1);
      assertEquals(templates.getTotalSize().intValue(), 2);
      assertEquals(templates.get(0).getId().intValue(), 16);
   }

   public void testListVolumes() {
      CloudApi api = requestsSendResponses(
            HttpRequest.builder() //
                  .method("GET") //
                  .endpoint(URI.create("http://example.com/api/cloud/virtualdatacenters/1/volumes")) //
                  .addHeader("Cookie", tokenAuth) //
                  .addHeader("Accept", normalize(VolumesManagementDto.MEDIA_TYPE)) //
                  .build(),
            HttpResponse
                  .builder()
                  .statusCode(200)
                  .payload(
                        payloadFromResourceWithContentType("/payloads/volumes-page.xml",
                              normalize(VolumesManagementDto.MEDIA_TYPE))) //
                  .build(),
            HttpRequest.builder() //
                  .method("GET") //
                  .endpoint(URI.create("http://example.com/api/cloud/virtualdatacenters/1/volumes")) //
                  .addHeader("Cookie", tokenAuth) //
                  .addHeader("Accept", normalize(VolumesManagementDto.MEDIA_TYPE)) //
                  .addQueryParam("startwith", "1") //
                  .build(),
            HttpResponse
                  .builder()
                  .statusCode(200)
                  .payload(
                        payloadFromResourceWithContentType("/payloads/volumes-lastpage.xml",
                              normalize(VolumesManagementDto.MEDIA_TYPE))) //
                  .build());

      VirtualDatacenterDto vdc = new VirtualDatacenterDto();
      vdc.addLink(new RESTLink("volumes", "http://example.com/api/cloud/virtualdatacenters/1/volumes"));

      PagedIterable<VolumeManagementDto> volumes = api.listVolumes(vdc);
      List<VolumeManagementDto> all = volumes.concat().toList();

      assertEquals(all.size(), 2);
      assertEquals(all.get(0).getId().intValue(), 1530);
      assertEquals(all.get(1).getId().intValue(), 1531);
   }

   public void testListVolumesWithPagination() {
      CloudApi api = requestSendsResponse(
            HttpRequest.builder() //
                  .method("GET") //
                  .endpoint(URI.create("http://example.com/api/cloud/virtualdatacenters/1/volumes")) //
                  .addHeader("Cookie", tokenAuth) //
                  .addHeader("Accept", normalize(VolumesManagementDto.MEDIA_TYPE)) //
                  .addQueryParam("startwith", "1") //
                  .build(),
            HttpResponse
                  .builder()
                  .statusCode(200)
                  .payload(
                        payloadFromResourceWithContentType("/payloads/volumes-lastpage.xml",
                              normalize(VolumesManagementDto.MEDIA_TYPE))) //
                  .build());

      VirtualDatacenterDto vdc = new VirtualDatacenterDto();
      vdc.addLink(new RESTLink("volumes", "http://example.com/api/cloud/virtualdatacenters/1/volumes"));

      VolumeOptions options = VolumeOptions.builder().startWith(1).build();
      PaginatedCollection<VolumeManagementDto, VolumesManagementDto> templates = api.listVolumes(vdc, options);

      assertEquals(templates.size(), 1);
      assertEquals(templates.getTotalSize().intValue(), 2);
      assertEquals(templates.get(0).getId().intValue(), 1531);
   }

   @Override
   protected CloudApi clientFrom(AbiquoApi api) {
      return api.getCloudApi();
   }

}
TOP

Related Classes of org.jclouds.abiquo.features.CloudApiExpectTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.