Package org.jclouds.digitalocean.features

Source Code of org.jclouds.digitalocean.features.DropletApiMockTest

/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF 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.digitalocean.features;

import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNotNull;
import static org.testng.Assert.assertNull;
import static org.testng.Assert.assertTrue;
import static org.testng.Assert.fail;

import java.util.List;

import org.jclouds.digitalocean.DigitalOceanApi;
import org.jclouds.digitalocean.domain.Droplet;
import org.jclouds.digitalocean.domain.Droplet.Status;
import org.jclouds.digitalocean.domain.DropletCreation;
import org.jclouds.digitalocean.domain.options.CreateDropletOptions;
import org.jclouds.digitalocean.internal.BaseDigitalOceanMockTest;
import org.jclouds.rest.ResourceNotFoundException;
import org.testng.annotations.Test;

import com.google.common.collect.ImmutableMultimap;
import com.squareup.okhttp.mockwebserver.MockResponse;
import com.squareup.okhttp.mockwebserver.MockWebServer;

/**
* Mock tests for the {@link DropletApi} class.
*/
@Test(groups = "unit", testName = "DropletApiMockTest")
public class DropletApiMockTest extends BaseDigitalOceanMockTest {

   public void testListDroplets() throws Exception {
      MockWebServer server = mockWebServer();
      server.enqueue(new MockResponse().setBody(payloadFromResource("/droplets.json")));

      DigitalOceanApi api = api(server.getUrl("/"));
      DropletApi dropletApi = api.getDropletApi();

      try {
         List<Droplet> sizes = dropletApi.list();

         assertRequestHasCommonFields(server.takeRequest(), "/droplets");
         assertEquals(sizes.size(), 1);
      } finally {
         api.close();
         server.shutdown();
      }
   }

   public void testGetDroplet() throws Exception {
      MockWebServer server = mockWebServer();
      server.enqueue(new MockResponse().setBody(payloadFromResource("/droplet.json")));

      DigitalOceanApi api = api(server.getUrl("/"));
      DropletApi dropletApi = api.getDropletApi();

      try {
         Droplet droplet = dropletApi.get(100823);

         assertRequestHasCommonFields(server.takeRequest(), "/droplets/100823");
         assertNotNull(droplet);
         assertNotNull(droplet.getBackups());
         assertNotNull(droplet.getSnapshots());
         assertEquals(droplet.getName(), "test222");
         assertEquals(droplet.getStatus(), Status.ACTIVE);
      } finally {
         api.close();
         server.shutdown();
      }
   }

   public void testGetNonexistentDroplet() throws Exception {
      MockWebServer server = mockWebServer();
      server.enqueue(new MockResponse().setResponseCode(404));

      DigitalOceanApi api = api(server.getUrl("/"));
      DropletApi dropletApi = api.getDropletApi();

      try {
         Droplet droplet = dropletApi.get(100823);

         assertRequestHasCommonFields(server.takeRequest(), "/droplets/100823");
         assertNull(droplet);
      } finally {
         api.close();
         server.shutdown();
      }
   }

   public void testCreateDropletUsingSlugs() throws Exception {
      MockWebServer server = mockWebServer();
      server.enqueue(new MockResponse().setBody(payloadFromResource("/droplet-creation.json")));

      DigitalOceanApi api = api(server.getUrl("/"));
      DropletApi dropletApi = api.getDropletApi();

      try {
         DropletCreation droplet = dropletApi.create("test", "img-1", "size-1", "region-1");

         assertRequestHasParameters(server.takeRequest(), "/droplets/new", ImmutableMultimap.of("name", "test",
               "image_slug", "img-1", "size_slug", "size-1", "region_slug", "region-1"));

         assertNotNull(droplet);
         assertEquals(droplet.getName(), "test");
      } finally {
         api.close();
         server.shutdown();
      }
   }

   public void testCreateDropletUsingSlugsWithOptions() throws Exception {
      MockWebServer server = mockWebServer();
      server.enqueue(new MockResponse().setBody(payloadFromResource("/droplet-creation.json")));

      DigitalOceanApi api = api(server.getUrl("/"));
      DropletApi dropletApi = api.getDropletApi();

      try {
         CreateDropletOptions options = CreateDropletOptions.builder().addSshKeyId(5).addSshKeyId(4)
               .privateNetworking(true).backupsEnabled(false).build();
         DropletCreation droplet = dropletApi.create("test", "img-1", "size-1", "region-1", options);

         ImmutableMultimap.Builder<String, String> params = ImmutableMultimap.builder();
         params.put("name", "test");
         params.put("image_slug", "img-1");
         params.put("size_slug", "size-1");
         params.put("region_slug", "region-1");
         params.put("ssh_key_ids", "5,4");
         params.put("private_networking", "true");
         params.put("backups_enabled", "false");

         assertRequestHasParameters(server.takeRequest(), "/droplets/new", params.build());

         assertNotNull(droplet);
         assertEquals(droplet.getName(), "test");
      } finally {
         api.close();
         server.shutdown();
      }
   }

   public void testCreateDroplet() throws Exception {
      MockWebServer server = mockWebServer();
      server.enqueue(new MockResponse().setBody(payloadFromResource("/droplet-creation.json")));

      DigitalOceanApi api = api(server.getUrl("/"));
      DropletApi dropletApi = api.getDropletApi();

      try {
         DropletCreation droplet = dropletApi.create("test", 419, 32, 1);

         assertRequestHasParameters(server.takeRequest(), "/droplets/new",
               ImmutableMultimap.of("name", "test", "image_id", "419", "size_id", "32", "region_id", "1"));

         assertNotNull(droplet);
         assertEquals(droplet.getName(), "test");
      } finally {
         api.close();
         server.shutdown();
      }
   }

   public void testCreateDropletWithOptions() throws Exception {
      MockWebServer server = mockWebServer();
      server.enqueue(new MockResponse().setBody(payloadFromResource("/droplet-creation.json")));

      DigitalOceanApi api = api(server.getUrl("/"));
      DropletApi dropletApi = api.getDropletApi();

      try {
         CreateDropletOptions options = CreateDropletOptions.builder().addSshKeyId(5).addSshKeyId(4)
               .privateNetworking(true).backupsEnabled(false).build();
         DropletCreation droplet = dropletApi.create("test", 419, 32, 1, options);

         ImmutableMultimap.Builder<String, String> params = ImmutableMultimap.builder();
         params.put("name", "test");
         params.put("image_id", "419");
         params.put("size_id", "32");
         params.put("region_id", "1");
         params.put("ssh_key_ids", "5,4");
         params.put("private_networking", "true");
         params.put("backups_enabled", "false");

         assertRequestHasParameters(server.takeRequest(), "/droplets/new", params.build());

         assertNotNull(droplet);
         assertEquals(droplet.getName(), "test");
      } finally {
         api.close();
         server.shutdown();
      }
   }

   public void testRebootDroplet() throws Exception {
      MockWebServer server = mockWebServer();
      server.enqueue(new MockResponse().setBody(payloadFromResource("/eventid.json")));

      DigitalOceanApi api = api(server.getUrl("/"));
      DropletApi dropletApi = api.getDropletApi();

      try {
         int event = dropletApi.reboot(1);

         assertRequestHasCommonFields(server.takeRequest(), "/droplets/1/reboot");
         assertTrue(event > 0);
      } finally {
         api.close();
         server.shutdown();
      }
   }

   public void testRebootNonexistentDroplet() throws Exception {
      MockWebServer server = mockWebServer();
      server.enqueue(new MockResponse().setResponseCode(404));

      DigitalOceanApi api = api(server.getUrl("/"));
      DropletApi dropletApi = api.getDropletApi();

      try {
         try {
            dropletApi.reboot(1);
            fail("Reboot droplet should fail on 404");
         } catch (ResourceNotFoundException ex) {
            // Expected exception
         }

         assertRequestHasCommonFields(server.takeRequest(), "/droplets/1/reboot");
      } finally {
         api.close();
         server.shutdown();
      }
   }

   public void testPowerCycleDroplet() throws Exception {
      MockWebServer server = mockWebServer();
      server.enqueue(new MockResponse().setBody(payloadFromResource("/eventid.json")));

      DigitalOceanApi api = api(server.getUrl("/"));
      DropletApi dropletApi = api.getDropletApi();

      try {
         int event = dropletApi.powerCycle(1);

         assertRequestHasCommonFields(server.takeRequest(), "/droplets/1/power_cycle");
         assertTrue(event > 0);
      } finally {
         api.close();
         server.shutdown();
      }
   }

   public void testPowerCycleNonexistentDroplet() throws Exception {
      MockWebServer server = mockWebServer();
      server.enqueue(new MockResponse().setResponseCode(404));

      DigitalOceanApi api = api(server.getUrl("/"));
      DropletApi dropletApi = api.getDropletApi();

      try {
         try {
            dropletApi.powerCycle(1);
            fail("Power cycle droplet should fail on 404");
         } catch (ResourceNotFoundException ex) {
            // Expected exception
         }

         assertRequestHasCommonFields(server.takeRequest(), "/droplets/1/power_cycle");
      } finally {
         api.close();
         server.shutdown();
      }
   }

   public void testShutdownDroplet() throws Exception {
      MockWebServer server = mockWebServer();
      server.enqueue(new MockResponse().setBody(payloadFromResource("/eventid.json")));

      DigitalOceanApi api = api(server.getUrl("/"));
      DropletApi dropletApi = api.getDropletApi();

      try {
         int event = dropletApi.shutdown(1);

         assertRequestHasCommonFields(server.takeRequest(), "/droplets/1/shutdown");
         assertTrue(event > 0);
      } finally {
         api.close();
         server.shutdown();
      }
   }

   public void testShutdownNonexistentDroplet() throws Exception {
      MockWebServer server = mockWebServer();
      server.enqueue(new MockResponse().setResponseCode(404));

      DigitalOceanApi api = api(server.getUrl("/"));
      DropletApi dropletApi = api.getDropletApi();

      try {
         try {
            dropletApi.shutdown(1);
            fail("Shutdown droplet should fail on 404");
         } catch (ResourceNotFoundException ex) {
            // Expected exception
         }

         assertRequestHasCommonFields(server.takeRequest(), "/droplets/1/shutdown");
      } finally {
         api.close();
         server.shutdown();
      }
   }

   public void testPowerOffDroplet() throws Exception {
      MockWebServer server = mockWebServer();
      server.enqueue(new MockResponse().setBody(payloadFromResource("/eventid.json")));

      DigitalOceanApi api = api(server.getUrl("/"));
      DropletApi dropletApi = api.getDropletApi();

      try {
         int event = dropletApi.powerOff(1);

         assertRequestHasCommonFields(server.takeRequest(), "/droplets/1/power_off");
         assertTrue(event > 0);
      } finally {
         api.close();
         server.shutdown();
      }
   }

   public void testPowerOffNonexistentDroplet() throws Exception {
      MockWebServer server = mockWebServer();
      server.enqueue(new MockResponse().setResponseCode(404));

      DigitalOceanApi api = api(server.getUrl("/"));
      DropletApi dropletApi = api.getDropletApi();

      try {
         try {
            dropletApi.powerOff(1);
            fail("Power off droplet should fail on 404");
         } catch (ResourceNotFoundException ex) {
            // Expected exception
         }

         assertRequestHasCommonFields(server.takeRequest(), "/droplets/1/power_off");
      } finally {
         api.close();
         server.shutdown();
      }
   }

   public void testPowerOnDroplet() throws Exception {
      MockWebServer server = mockWebServer();
      server.enqueue(new MockResponse().setBody(payloadFromResource("/eventid.json")));

      DigitalOceanApi api = api(server.getUrl("/"));
      DropletApi dropletApi = api.getDropletApi();

      try {
         int event = dropletApi.powerOn(1);

         assertRequestHasCommonFields(server.takeRequest(), "/droplets/1/power_on");
         assertTrue(event > 0);
      } finally {
         api.close();
         server.shutdown();
      }
   }

   public void testPowerOnNonexistentDroplet() throws Exception {
      MockWebServer server = mockWebServer();
      server.enqueue(new MockResponse().setResponseCode(404));

      DigitalOceanApi api = api(server.getUrl("/"));
      DropletApi dropletApi = api.getDropletApi();

      try {
         try {
            dropletApi.powerOn(1);
            fail("Power on droplet should fail on 404");
         } catch (ResourceNotFoundException ex) {
            // Expected exception
         }

         assertRequestHasCommonFields(server.takeRequest(), "/droplets/1/power_on");
      } finally {
         api.close();
         server.shutdown();
      }
   }

   public void testResetPasswordForDroplet() throws Exception {
      MockWebServer server = mockWebServer();
      server.enqueue(new MockResponse().setBody(payloadFromResource("/eventid.json")));

      DigitalOceanApi api = api(server.getUrl("/"));
      DropletApi dropletApi = api.getDropletApi();

      try {
         int event = dropletApi.resetPassword(1);

         assertRequestHasCommonFields(server.takeRequest(), "/droplets/1/password_reset");
         assertTrue(event > 0);
      } finally {
         api.close();
         server.shutdown();
      }
   }

   public void testResetPasswordForNonexistentDroplet() throws Exception {
      MockWebServer server = mockWebServer();
      server.enqueue(new MockResponse().setResponseCode(404));

      DigitalOceanApi api = api(server.getUrl("/"));
      DropletApi dropletApi = api.getDropletApi();

      try {
         try {
            dropletApi.resetPassword(1);
            fail("Reset password for droplet should fail on 404");
         } catch (ResourceNotFoundException ex) {
            // Expected exception
         }

         assertRequestHasCommonFields(server.takeRequest(), "/droplets/1/password_reset");
      } finally {
         api.close();
         server.shutdown();
      }
   }

   public void testResizeDroplet() throws Exception {
      MockWebServer server = mockWebServer();
      server.enqueue(new MockResponse().setBody(payloadFromResource("/eventid.json")));

      DigitalOceanApi api = api(server.getUrl("/"));
      DropletApi dropletApi = api.getDropletApi();

      try {
         int event = dropletApi.resize(1, 3);

         assertRequestHasParameters(server.takeRequest(), "/droplets/1/resize", ImmutableMultimap.of("size_id", "3"));
         assertTrue(event > 0);
      } finally {
         api.close();
         server.shutdown();
      }
   }

   public void testResizeNonexistentDroplet() throws Exception {
      MockWebServer server = mockWebServer();
      server.enqueue(new MockResponse().setResponseCode(404));

      DigitalOceanApi api = api(server.getUrl("/"));
      DropletApi dropletApi = api.getDropletApi();

      try {
         try {
            dropletApi.resize(1, 3);
            fail("Resize droplet should fail on 404");
         } catch (ResourceNotFoundException ex) {
            // Expected exception
         }

         assertRequestHasParameters(server.takeRequest(), "/droplets/1/resize", ImmutableMultimap.of("size_id", "3"));
      } finally {
         api.close();
         server.shutdown();
      }
   }

   public void testSnapshotDroplet() throws Exception {
      MockWebServer server = mockWebServer();
      server.enqueue(new MockResponse().setBody(payloadFromResource("/eventid.json")));

      DigitalOceanApi api = api(server.getUrl("/"));
      DropletApi dropletApi = api.getDropletApi();

      try {
         int event = dropletApi.snapshot(1);

         assertRequestHasCommonFields(server.takeRequest(), "/droplets/1/snapshot");
         assertTrue(event > 0);
      } finally {
         api.close();
         server.shutdown();
      }
   }

   public void testSnapshotNonexistentDroplet() throws Exception {
      MockWebServer server = mockWebServer();
      server.enqueue(new MockResponse().setResponseCode(404));

      DigitalOceanApi api = api(server.getUrl("/"));
      DropletApi dropletApi = api.getDropletApi();

      try {
         try {
            dropletApi.snapshot(1);
            fail("Snapshot droplet should fail on 404");
         } catch (ResourceNotFoundException ex) {
            // Expected exception
         }

         assertRequestHasCommonFields(server.takeRequest(), "/droplets/1/snapshot");
      } finally {
         api.close();
         server.shutdown();
      }
   }

   public void testSnapshotWithNameDroplet() throws Exception {
      MockWebServer server = mockWebServer();
      server.enqueue(new MockResponse().setBody(payloadFromResource("/eventid.json")));

      DigitalOceanApi api = api(server.getUrl("/"));
      DropletApi dropletApi = api.getDropletApi();

      try {
         int event = dropletApi.snapshot(1, "foo");

         assertRequestHasParameters(server.takeRequest(), "/droplets/1/snapshot", ImmutableMultimap.of("name", "foo"));
         assertTrue(event > 0);
      } finally {
         api.close();
         server.shutdown();
      }
   }

   public void testSnapshotWithNameNonexistentDroplet() throws Exception {
      MockWebServer server = mockWebServer();
      server.enqueue(new MockResponse().setResponseCode(404));

      DigitalOceanApi api = api(server.getUrl("/"));
      DropletApi dropletApi = api.getDropletApi();

      try {
         try {
            dropletApi.snapshot(1, "foo");
            fail("Snapshot droplet should fail on 404");
         } catch (ResourceNotFoundException ex) {
            // Expected exception
         }

         assertRequestHasParameters(server.takeRequest(), "/droplets/1/snapshot", ImmutableMultimap.of("name", "foo"));
      } finally {
         api.close();
         server.shutdown();
      }
   }

   public void testRestoreDroplet() throws Exception {
      MockWebServer server = mockWebServer();
      server.enqueue(new MockResponse().setBody(payloadFromResource("/eventid.json")));

      DigitalOceanApi api = api(server.getUrl("/"));
      DropletApi dropletApi = api.getDropletApi();

      try {
         int event = dropletApi.restore(1, 3);

         assertRequestHasParameters(server.takeRequest(), "/droplets/1/restore", ImmutableMultimap.of("image_id", "3"));
         assertTrue(event > 0);
      } finally {
         api.close();
         server.shutdown();
      }
   }

   public void testRestoreNonexistentDroplet() throws Exception {
      MockWebServer server = mockWebServer();
      server.enqueue(new MockResponse().setResponseCode(404));

      DigitalOceanApi api = api(server.getUrl("/"));
      DropletApi dropletApi = api.getDropletApi();

      try {
         try {
            dropletApi.restore(1, 3);
            fail("Restore droplet should fail on 404");
         } catch (ResourceNotFoundException ex) {
            // Expected exception
         }

         assertRequestHasParameters(server.takeRequest(), "/droplets/1/restore", ImmutableMultimap.of("image_id", "3"));
      } finally {
         api.close();
         server.shutdown();
      }
   }

   public void testRebuildDroplet() throws Exception {
      MockWebServer server = mockWebServer();
      server.enqueue(new MockResponse().setBody(payloadFromResource("/eventid.json")));

      DigitalOceanApi api = api(server.getUrl("/"));
      DropletApi dropletApi = api.getDropletApi();

      try {
         int event = dropletApi.rebuild(1, 3);

         assertRequestHasParameters(server.takeRequest(), "/droplets/1/rebuild", ImmutableMultimap.of("image_id", "3"));
         assertTrue(event > 0);
      } finally {
         api.close();
         server.shutdown();
      }
   }

   public void testRebuildNonexistentDroplet() throws Exception {
      MockWebServer server = mockWebServer();
      server.enqueue(new MockResponse().setResponseCode(404));

      DigitalOceanApi api = api(server.getUrl("/"));
      DropletApi dropletApi = api.getDropletApi();

      try {
         try {
            dropletApi.rebuild(1, 3);
            fail("Rebuild droplet should fail on 404");
         } catch (ResourceNotFoundException ex) {
            // Expected exception
         }

         assertRequestHasParameters(server.takeRequest(), "/droplets/1/rebuild", ImmutableMultimap.of("image_id", "3"));
      } finally {
         api.close();
         server.shutdown();
      }
   }

   public void testRenameDroplet() throws Exception {
      MockWebServer server = mockWebServer();
      server.enqueue(new MockResponse().setBody(payloadFromResource("/eventid.json")));

      DigitalOceanApi api = api(server.getUrl("/"));
      DropletApi dropletApi = api.getDropletApi();

      try {
         int event = dropletApi.rename(1, "foo");

         assertRequestHasParameters(server.takeRequest(), "/droplets/1/rename", ImmutableMultimap.of("name", "foo"));
         assertTrue(event > 0);
      } finally {
         api.close();
         server.shutdown();
      }
   }

   public void testRenameNonexistentDroplet() throws Exception {
      MockWebServer server = mockWebServer();
      server.enqueue(new MockResponse().setResponseCode(404));

      DigitalOceanApi api = api(server.getUrl("/"));
      DropletApi dropletApi = api.getDropletApi();

      try {
         try {
            dropletApi.rename(1, "foo");
            fail("Rename droplet should fail on 404");
         } catch (ResourceNotFoundException ex) {
            // Expected exception
         }

         assertRequestHasParameters(server.takeRequest(), "/droplets/1/rename", ImmutableMultimap.of("name", "foo"));
      } finally {
         api.close();
         server.shutdown();
      }
   }

   public void testDestroyDroplet() throws Exception {
      MockWebServer server = mockWebServer();
      server.enqueue(new MockResponse().setBody(payloadFromResource("/eventid.json")));

      DigitalOceanApi api = api(server.getUrl("/"));
      DropletApi dropletApi = api.getDropletApi();

      try {
         int event = dropletApi.destroy(1);

         assertRequestHasCommonFields(server.takeRequest(), "/droplets/1/destroy");
         assertTrue(event > 0);
      } finally {
         api.close();
         server.shutdown();
      }
   }

   public void testDestroyNonexistentDroplet() throws Exception {
      MockWebServer server = mockWebServer();
      server.enqueue(new MockResponse().setResponseCode(404));

      DigitalOceanApi api = api(server.getUrl("/"));
      DropletApi dropletApi = api.getDropletApi();

      try {
         try {
            dropletApi.destroy(1);
            fail("Destroy droplet should fail on 404");
         } catch (ResourceNotFoundException ex) {
            // Expected exception
         }

         assertRequestHasCommonFields(server.takeRequest(), "/droplets/1/destroy");
      } finally {
         api.close();
         server.shutdown();
      }
   }

   public void testDestroyWithOptionsDroplet() throws Exception {
      MockWebServer server = mockWebServer();
      server.enqueue(new MockResponse().setBody(payloadFromResource("/eventid.json")));

      DigitalOceanApi api = api(server.getUrl("/"));
      DropletApi dropletApi = api.getDropletApi();

      try {
         int event = dropletApi.destroy(1, true);

         assertRequestHasParameters(server.takeRequest(), "/droplets/1/destroy",
               ImmutableMultimap.of("scrub_data", "true"));
         assertTrue(event > 0);
      } finally {
         api.close();
         server.shutdown();
      }
   }

   public void testDestroyWithOptionsNonexistentDroplet() throws Exception {
      MockWebServer server = mockWebServer();
      server.enqueue(new MockResponse().setResponseCode(404));

      DigitalOceanApi api = api(server.getUrl("/"));
      DropletApi dropletApi = api.getDropletApi();

      try {
         try {
            dropletApi.destroy(1, true);
            fail("Destroy droplet should fail on 404");
         } catch (ResourceNotFoundException ex) {
            // Expected exception
         }

         assertRequestHasParameters(server.takeRequest(), "/droplets/1/destroy",
               ImmutableMultimap.of("scrub_data", "true"));
      } finally {
         api.close();
         server.shutdown();
      }
   }

}
TOP

Related Classes of org.jclouds.digitalocean.features.DropletApiMockTest

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.