http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/ac03bac4/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/SubnetApiMockTest.java
----------------------------------------------------------------------
diff --git 
a/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/SubnetApiMockTest.java
 
b/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/SubnetApiMockTest.java
deleted file mode 100644
index 3d58591..0000000
--- 
a/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/SubnetApiMockTest.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * 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.azurecompute.arm.features;
-
-import static com.google.common.collect.Iterables.isEmpty;
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertFalse;
-import static org.testng.Assert.assertNull;
-import static org.testng.Assert.assertTrue;
-
-import java.util.List;
-
-import org.jclouds.azurecompute.arm.domain.Subnet;
-import org.jclouds.azurecompute.arm.internal.BaseAzureComputeApiMockTest;
-import org.testng.annotations.Test;
-
-
-@Test(groups = "unit", testName = "SubnetApiMockTest", singleThreaded = true)
-public class SubnetApiMockTest extends BaseAzureComputeApiMockTest {
-
-   private final String subscriptionid = "SUBSCRIPTIONID";
-   private final String resourcegroup = "myresourcegroup";
-   private final String virtualNetwork = "myvirtualnetwork";
-   private final String subnetName = "mysubnet";
-   private final String apiVersion = "api-version=2017-03-01";
-
-   public void createSubnet() throws InterruptedException {
-
-      
server.enqueue(jsonResponse("/createsubnetresponse.json").setResponseCode(200));
-
-      final SubnetApi subnetApi = api.getSubnetApi(resourcegroup, 
virtualNetwork);
-
-      Subnet.SubnetProperties properties = 
Subnet.SubnetProperties.builder().addressPrefix("10.2.0.0/24").build();
-
-      Subnet subnet = subnetApi.createOrUpdate(subnetName, properties);
-
-      String path = 
String.format("/subscriptions/%s/resourcegroups/%s/providers/Microsoft.Network/virtualNetworks/%s/subnets/%s?%s",
 subscriptionid, resourcegroup, virtualNetwork, subnetName, apiVersion);
-      String json = "{ \"properties\":{\"addressPrefix\":\"10.2.0.0/24\"}}";
-      assertSent(server, "PUT", path, json);
-
-      assertEquals(subnet.name(), subnetName);
-      assertEquals(subnet.properties().addressPrefix(), "10.2.0.0/24");
-   }
-
-   public void getSubnet() throws InterruptedException {
-
-      server.enqueue(jsonResponse("/getonesubnet.json").setResponseCode(200));
-
-      final SubnetApi subnetApi = api.getSubnetApi(resourcegroup, 
virtualNetwork);
-
-      Subnet subnet = subnetApi.get(subnetName);
-
-      String path = 
String.format("/subscriptions/%s/resourcegroups/%s/providers/Microsoft.Network/virtualNetworks/%s/subnets/%s?%s",
 subscriptionid, resourcegroup, virtualNetwork, subnetName, apiVersion);
-      assertSent(server, "GET", path);
-
-      assertEquals(subnet.name(), subnetName);
-      assertEquals(subnet.properties().addressPrefix(), "10.2.0.0/24");
-   }
-
-   public void getSubnetReturns404() throws InterruptedException {
-      server.enqueue(response404());
-
-      final SubnetApi subnetApi = api.getSubnetApi(resourcegroup, 
virtualNetwork);
-
-      Subnet subnet = subnetApi.get(subnetName);
-
-      String path = 
String.format("/subscriptions/%s/resourcegroups/%s/providers/Microsoft.Network/virtualNetworks/%s/subnets/%s?%s",
 subscriptionid, resourcegroup, virtualNetwork, subnetName, apiVersion);
-      assertSent(server, "GET", path);
-
-      assertNull(subnet);
-   }
-
-   public void listSubnets() throws InterruptedException {
-
-      
server.enqueue(jsonResponse("/listsubnetswithinvirtualnetwork.json").setResponseCode(200));
-
-      final SubnetApi subnetApi = api.getSubnetApi(resourcegroup, 
virtualNetwork);
-
-      List<Subnet> subnets = subnetApi.list();
-
-      String path = 
String.format("/subscriptions/%s/resourcegroups/%s/providers/Microsoft.Network/virtualNetworks/%s/subnets?%s",
 subscriptionid, resourcegroup, virtualNetwork, apiVersion);
-      assertSent(server, "GET", path);
-
-      assertTrue(subnets.size() > 0);
-   }
-
-   public void listSubnetsReturns404() throws InterruptedException {
-      server.enqueue(response404());
-
-      final SubnetApi subnetApi = api.getSubnetApi(resourcegroup, 
virtualNetwork);
-
-      List<Subnet> subnets = subnetApi.list();
-
-      String path = 
String.format("/subscriptions/%s/resourcegroups/%s/providers/Microsoft.Network/virtualNetworks/%s/subnets?%s",
 subscriptionid, resourcegroup, virtualNetwork, apiVersion);
-      assertSent(server, "GET", path);
-
-      assertTrue(isEmpty(subnets));
-   }
-
-   public void deleteSubnet() throws InterruptedException {
-
-      server.enqueue(response202());
-
-      final SubnetApi subnetApi = api.getSubnetApi(resourcegroup, 
virtualNetwork);
-
-      boolean status = subnetApi.delete(subnetName);
-      assertTrue(status);
-
-      String path = 
String.format("/subscriptions/%s/resourcegroups/%s/providers/Microsoft.Network/virtualNetworks/%s/subnets/%s?%s",
 subscriptionid, resourcegroup, virtualNetwork, subnetName, apiVersion);
-      assertSent(server, "DELETE", path);
-   }
-
-   public void deleteSubnetResourceDoesNotExist() throws InterruptedException {
-
-      server.enqueue(response204());
-
-      final SubnetApi subnetApi = api.getSubnetApi(resourcegroup, 
virtualNetwork);
-
-      boolean status = subnetApi.delete(subnetName);
-      assertFalse(status);
-
-      String path = 
String.format("/subscriptions/%s/resourcegroups/%s/providers/Microsoft.Network/virtualNetworks/%s/subnets/%s?%s",
 subscriptionid, resourcegroup, virtualNetwork, subnetName, apiVersion);
-      assertSent(server, "DELETE", path);
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/ac03bac4/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/VMSizeApiLiveTest.java
----------------------------------------------------------------------
diff --git 
a/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/VMSizeApiLiveTest.java
 
b/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/VMSizeApiLiveTest.java
deleted file mode 100644
index 90e258b..0000000
--- 
a/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/VMSizeApiLiveTest.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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.azurecompute.arm.features;
-
-import org.jclouds.azurecompute.arm.domain.VMSize;
-import org.jclouds.azurecompute.arm.internal.BaseAzureComputeApiLiveTest;
-import org.testng.annotations.Test;
-
-import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertTrue;
-
-@Test(groups = "live", testName = "VMSizeApiLiveTest")
-public class VMSizeApiLiveTest extends BaseAzureComputeApiLiveTest {
-
-   @Test
-   public void testList() {
-      for (VMSize vmSize : api().list()) {
-         assertNotNull(vmSize.name());
-      }
-      assertTrue(api().list().size() > 0);
-   }
-
-   private VMSizeApi api() {
-      return api.getVMSizeApi(LOCATION);
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/ac03bac4/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/VMSizeApiMockTest.java
----------------------------------------------------------------------
diff --git 
a/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/VMSizeApiMockTest.java
 
b/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/VMSizeApiMockTest.java
deleted file mode 100644
index 6717e8b..0000000
--- 
a/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/VMSizeApiMockTest.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * 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.azurecompute.arm.features;
-
-import com.squareup.okhttp.mockwebserver.MockResponse;
-import org.jclouds.azurecompute.arm.domain.VMSize;
-import org.jclouds.azurecompute.arm.internal.BaseAzureComputeApiMockTest;
-import org.testng.annotations.Test;
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertTrue;
-
-import java.util.List;
-
-@Test(groups = "unit", testName = "VMSizeApiMockTest", singleThreaded = true)
-public class VMSizeApiMockTest extends BaseAzureComputeApiMockTest {
-
-   public void testList() throws Exception {
-      server.enqueue(jsonResponse("/vmsizes.json"));
-      final VMSizeApi vmSizeAPI = api.getVMSizeApi("westeurope");
-      List<VMSize> vmSizes = vmSizeAPI.list();
-
-      assertNotNull(vmSizes);
-      assertEquals(vmSizes.size(), 3);
-      assertEquals(
-              vmSizes.get(0),
-              VMSize.create("Standard_A0", 1, 1047552, 20480, 768, 1));
-
-
-      assertSent(server, "GET", 
"/subscriptions/SUBSCRIPTIONID/providers/Microsoft.Compute/locations/westeurope/vmSizes?api-version=2015-06-15");
-   }
-
-   public void testEmptyList() throws Exception {
-      server.enqueue(new MockResponse().setResponseCode(404));
-
-      final VMSizeApi vmSizeAPI = api.getVMSizeApi("location");
-
-      assertTrue(vmSizeAPI.list().isEmpty());
-
-      assertSent(server, "GET", 
"/subscriptions/SUBSCRIPTIONID/providers/Microsoft.Compute/locations/location/vmSizes?api-version=2015-06-15");
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/ac03bac4/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/VaultApiLiveTest.java
----------------------------------------------------------------------
diff --git 
a/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/VaultApiLiveTest.java
 
b/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/VaultApiLiveTest.java
deleted file mode 100644
index 026aa28..0000000
--- 
a/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/VaultApiLiveTest.java
+++ /dev/null
@@ -1,1057 +0,0 @@
-/*
- * 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.azurecompute.arm.features;
-
-import java.net.URI;
-import java.util.Map;
-import java.util.HashMap;
-import java.util.List;
-import java.util.ArrayList;
-
-import com.google.common.base.Predicate;
-import com.google.common.collect.FluentIterable;
-import org.jclouds.azurecompute.arm.domain.Certificate;
-import org.jclouds.azurecompute.arm.domain.Certificate.Contact;
-import org.jclouds.azurecompute.arm.domain.Certificate.Contacts;
-import org.jclouds.azurecompute.arm.domain.Certificate.AdministrationDetails;
-import org.jclouds.azurecompute.arm.domain.Certificate.CertificateIssuer;
-import org.jclouds.azurecompute.arm.domain.Certificate.CertificateBundle;
-import org.jclouds.azurecompute.arm.domain.Certificate.CertificateOperation;
-import org.jclouds.azurecompute.arm.domain.Certificate.CertificatePolicy;
-import org.jclouds.azurecompute.arm.domain.Certificate.DeletedCertificate;
-import 
org.jclouds.azurecompute.arm.domain.Certificate.DeletedCertificateBundle;
-import org.jclouds.azurecompute.arm.domain.Certificate.OrganizationDetails;
-import org.jclouds.azurecompute.arm.domain.Certificate.IssuerBundle;
-import org.jclouds.azurecompute.arm.domain.Certificate.IssuerCredentials;
-import org.jclouds.azurecompute.arm.domain.Certificate.IssuerParameters;
-import org.jclouds.azurecompute.arm.domain.Certificate.KeyProperties;
-import org.jclouds.azurecompute.arm.domain.Certificate.SecretProperties;
-import 
org.jclouds.azurecompute.arm.domain.Certificate.X509CertificateProperties;
-import org.jclouds.azurecompute.arm.domain.Secret;
-import org.jclouds.azurecompute.arm.domain.Secret.SecretBundle;
-import org.jclouds.azurecompute.arm.domain.Secret.SecretAttributes;
-import org.jclouds.azurecompute.arm.domain.Secret.DeletedSecretBundle;
-import org.jclouds.azurecompute.arm.domain.Key;
-import org.jclouds.azurecompute.arm.domain.Key.JsonWebKey;
-import org.jclouds.azurecompute.arm.domain.Key.KeyBundle;
-import org.jclouds.azurecompute.arm.domain.Key.KeyAttributes;
-import org.jclouds.azurecompute.arm.domain.Key.DeletedKeyBundle;
-import org.jclouds.azurecompute.arm.domain.Key.KeyOperationResult;
-import org.jclouds.azurecompute.arm.domain.SKU;
-import org.jclouds.azurecompute.arm.domain.Vault;
-import org.jclouds.azurecompute.arm.domain.Vault.DeletedVault;
-import org.jclouds.azurecompute.arm.domain.VaultProperties;
-import org.jclouds.azurecompute.arm.internal.BaseAzureComputeApiLiveTest;
-import org.testng.SkipException;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-import com.google.common.collect.ImmutableList;
-
-import static com.google.common.base.Preconditions.checkState;
-import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertTrue;
-import static org.testng.Assert.assertEquals;
-import static org.testng.AssertJUnit.assertNull;
-
-@Test(groups = "live", testName = "VaultApiLiveTest")
-public class VaultApiLiveTest extends BaseAzureComputeApiLiveTest {
-   private String vaultName;
-   private URI vaultUri = null;
-   private static String KEY_NAME = "myKey";
-   private static String IMPORT_KEY_NAME = "myImportKey";
-   private static String RECOVERABLE_KEY_NAME = "myRecoverableKey";
-   private static String SECRET_NAME = "mySecret";
-   private static String RECOVERABLE_SECRET_NAME = "myRecoverableSecret";
-   private static String CERTIFICATE_NAME = "myCertificate";
-   private static String TEMP_CERTIFICATE_NAME = "myTempCertificate";
-   private static String RECOVERABLE_CERTIFICATE_NAME = 
"myRecoverableCertificate";
-   private static String IMPORTABLE_CERTIFICATE_NAME = 
"myImportableCertificate";
-   private String importableCertificatePem = 
stringFromResource("/vaultimportablecert.txt");
-   private String sampleSecret = stringFromResource("/vaultsamplesecret.txt");
-   private static String cryptoText = "R29sZCUyNTIxJTJCR29sZCUyNTIxJTJCR2" +
-           "9sZCUyQmZyb20lMkJ0aGUlMkJBbWVyaWNhbiUyQlJpdmVyJTI1MjE";
-   private static String cryptoAlgorithm = "RSA-OAEP";
-   private static String hashToSign = 
"FvabKT6qGwpml59iHUJ72DZ4XyJcJ8bgpgFA4_8JFmM";
-   private static String signatureAlgorithm = "RS256";
-   private static String contentEncryptionKey = 
"YxzoHR65aFwD2_IOiZ5rD08jMSALA1y7b_yYW0G3hyI";
-
-   @BeforeClass
-   @Override
-   public void setup() {
-      super.setup();
-      createTestResourceGroup();
-      vaultName = String.format("kv%s", 
this.getClass().getSimpleName().toLowerCase());
-   }
-
-   @AfterClass(alwaysRun = true)
-   public void forceVaultRemoval() {
-      // see if the vault has been deleted or not
-      Vault vault = api().getVault(vaultName);
-      if (vault != null) {
-         if ((vault.properties().enableSoftDelete() != null) && 
vault.properties().enableSoftDelete()) {
-            api().deleteVault(vaultName);
-            checkState(deletedVaultStatus.create(resourceGroupName, 
true).apply(vaultName),
-                    "vault was not deleted before timeout");
-         } else {
-            return;
-         }
-      }
-
-      DeletedVault deletedVault = api().getDeletedVault(LOCATION, vaultName);
-      if (deletedVault != null) {
-         api().purgeVault(LOCATION, vaultName);
-         checkState(deletedVaultStatus.create(resourceGroupName, 
false).apply(vaultName),
-                 "vault was not purged before timeout");
-      }
-   }
-
-   @Test
-   public void testCreate() {
-      String objectId = api.getServicePrincipal().get().objectId();
-      Vault vault = api().createOrUpdateVault(vaultName, LOCATION, 
VaultProperties.builder()
-              .tenantId(tenantId)
-              .sku(SKU.create(LOCATION, "standard", null, "A"))
-              
.accessPolicies(ImmutableList.of(VaultProperties.AccessPolicyEntry.create(null, 
objectId, tenantId,
-                      VaultProperties.Permissions.create(
-                              ImmutableList.of( // certificates
-                                      "Get",
-                                      "List",
-                                      "Update",
-                                      "Create",
-                                      "Import",
-                                      "Delete",
-                                      "ManageContacts",
-                                      "ManageIssuers",
-                                      "GetIssuers",
-                                      "ListIssuers",
-                                      "SetIssuers",
-                                      "DeleteIssuers",
-                                      "Purge",
-                                      "Recover"
-                              ),
-                              ImmutableList.of( // keys
-                                      "Get",
-                                      "List",
-                                      "Update",
-                                      "Create",
-                                      "Import",
-                                      "Delete",
-                                      "Recover",
-                                      "Backup",
-                                      "Restore",
-                                      "Purge",
-                                      "Encrypt",
-                                      "Decrypt",
-                                      "Sign",
-                                      "Verify",
-                                      "WrapKey",
-                                      "UnwrapKey"
-                              ),
-                              ImmutableList.of( // secrets
-                                      "Get",
-                                      "List",
-                                      "Set",
-                                      "Delete",
-                                      "Recover",
-                                      "Backup",
-                                      "Restore",
-                                      "Purge"
-                              ),
-                              ImmutableList.<String>of()
-                      ))))
-              .build(),
-              null);
-      vaultUri = vault.properties().vaultUri();
-      assertTrue(!vault.name().isEmpty());
-   }
-
-   @Test(dependsOnMethods = "testCreate")
-   public void testGet() {
-      Vault vaultFound = api().getVault(vaultName);
-      assertNotNull(vaultFound);
-   }
-
-   @Test(dependsOnMethods = "testCreate")
-   public void testList() {
-      for (Vault vault : api().listVaults()) {
-         assertTrue(!vault.name().isEmpty());
-      }
-   }
-
-   @Test(dependsOnMethods = {"testDeleteKey", "testDeleteSecret"})
-   public void testUpdateVaultToSoftDelete() {
-      Vault v = api().getVault(vaultName);
-      assertNotNull(v);
-      VaultProperties newProps = 
VaultProperties.create(v.properties().tenantId(),
-              v.properties().vaultUri(),
-              v.properties().enabledForDeployment(),
-              v.properties().enabledForTemplateDeployment(),
-              true,
-              v.properties().createMode(),
-              v.properties().sku(),
-              v.properties().accessPolicies());
-      Vault updatedVault = api().createOrUpdateVault(vaultName, LOCATION, 
newProps, null);
-      assertNotNull(updatedVault);
-      updatedVault = api().getVault(vaultName);
-      assertTrue(updatedVault.properties().enableSoftDelete());
-   }
-
-   @Test(dependsOnMethods = {"testPurgeDeletedKey", "testPurgeDeletedSecret"})
-   public void testDelete() {
-      boolean result =  api().deleteVault(vaultName);
-      assertTrue(result);
-      checkState(deletedVaultStatus.create(resourceGroupName, 
true).apply(vaultName),
-              "vault was not deleted before timeout");
-   }
-
-   @Test(dependsOnMethods = "testDelete")
-   public void testGetDeleted() {
-      DeletedVault dv = api().getDeletedVault(LOCATION, vaultName);
-      assertNotNull(dv);
-   }
-
-   @Test(dependsOnMethods = "testDelete")
-   public void testListDeleted() {
-      for (DeletedVault vault : api().listDeletedVaults()) {
-         assertNotNull(vault.name());
-      }
-   }
-
-   @Test(dependsOnMethods = {"testGetDeleted", "testListDeleted"})
-   public void testPurgeDeletedVault() {
-      api().purgeVault(LOCATION, vaultName);
-      checkState(deletedVaultStatus.create(resourceGroupName, 
true).apply(vaultName),
-              "vault was not purged before timeout");
-
-   }
-
-   @Test(dependsOnMethods = "testGet")
-   public void testCreateKey() {
-      KeyAttributes keyAttr = KeyAttributes.create(true, 0, null, null, null, 
null);
-      KeyBundle keyBundle = api().createKey(vaultUri,
-              KEY_NAME,
-              keyAttr,
-              null,
-              null,
-              2048,
-              "RSA",
-              null
-      );
-      assertNotNull(keyBundle);
-   }
-
-   @Test(dependsOnMethods = "testCreateKey")
-   public void testImportKey() {
-      KeyAttributes keyAttr = KeyAttributes.create(true, null, null, null, 
null, null);
-      List<String> keyOps = new ArrayList<String>();
-      keyOps.add("encrypt");
-      JsonWebKey keyInfo = JsonWebKey.create(
-              null,
-              
"DjU54mYvHpICXHjc5-JiFqiH8NkUgOG8LL4kwt3DeBp9bP0-5hSJH8vmzwJkeGG9L79EWG4b_bfxgYdeNX7cFFagmW"
 +
-                      
"PRFrlxbd64VRYFawZHRJt-2cbzMVI6DL8EK4bu5Ux5qTiV44Jw19hoD9nDzCTfPzSTSGrKD3iLPdnREYaIGDVxcjB"
 +
-                      
"v3Tx6rrv3Z2lhHHKhEHb0RRjATcjAVKV9NZhMajJ4l9pqJ3A4IQrCBl95ux6Xm1oXP0i6aR78cjchsCpcMXdP3WMs"
 +
-                      
"vHgTlsZT0RZLFHrvkiNHlPiil4G2_eHkwvT__CrcbO6SmI_zCtMmypuHJqcr-Xb7GPJoa64WoQ",
-              
"DB9nGuHplY_7Xv5a5UCs5YgxkWPtJFfbIZ1Zr-XHCCY09JIWReOGQG226OhjwixKtOK_OqmAKtMKM9OmKviJRHNbD"
 +
-                      
"hbTxumN3u7cL8dftjXpSryiEQlPmWyW94MneI2WNIrvh4wruQuDt8EztgOiDFxwcnUgey8iend7WmZnE7E",
-              
"O-bSTUQ4N_UuQezgkF3TDrnBraO67leDGwRbfiE_U0ghQvqh5DA0QSPVzlWDZc9KUitvj8vxsR9o1PW9GS0an17GJ"
 +
-                      
"EYuetLnkShKK3NWOhBBX6d1yP9rVdH6JhgIJEy_g0Suz7TAFiFc8i7JF8u4QJ05C8bZAMhOLotqftQeVOM",
-              "AQAB",
-              null,
-              null,
-              keyOps,
-              null,
-              "RSA",
-              
"33TqqLR3eeUmDtHS89qF3p4MP7Wfqt2Zjj3lZjLjjCGDvwr9cJNlNDiuKboODgUiT4ZdPWbOiMAfDcDzlOxA04DDnEF"
 +
-                      
"GAf-kDQiNSe2ZtqC7bnIc8-KSG_qOGQIVaay4Ucr6ovDkykO5Hxn7OU7sJp9TP9H0JH8zMQA6YzijYH9LsupTerrY"
 +
-                      
"3U6zyihVEDXXOv08vBHk50BMFJbE9iwFwnxCsU5-UZUZYw87Uu0n4LPFS9BT8tUIvAfnRXIEWCha3KbFWmdZQZlyr"
 +
-                      
"Fw0buUEf0YN3_Q0auBkdbDR_ES2PbgKTJdkjc_rEeM0TxvOUf7HuUNOhrtAVEN1D5uuxE1WSw",
-              
"8K33pX90XX6PZGiv26wZm7tfvqlqWFT03nUMvOAytqdxhO2HysiPn4W58OaJd1tY4372Qpiv6enmUeI4MidCie-s-d0"
 +
-                      
"_B6A0xfhU5EeeaDN0xDOOl8yN-kaaVj9b4HDR3c91OAwKpDJQIeJVZtxoijxl-SRx3u7Vs_7meeSpOfE",
-              
"7a5KnUs1pTo72A-JquJvIz4Eu794Yh3ftTk_Et-83aE_FVc6Nk-EhfnwYSNpVmM6UKdrAoy5gsCvZPxrq-eR9pEwU8M"
 +
-                      
"5UOlki03vWY_nqDBpJSIqwPvGHUB16zvggsPQUyQBfnN3N8XlDi12n88ltvWwEhn1LQOwMUALEfka9_s",
-              
"InfGmkb2jNkPGuNiZ-mU0-ZrOgLza_fLL9ErZ35jUPhGFzdGxJNobklvsNoTd-E2GAU41YkJh24bncMLvJVYxHHA5iF"
 +
-                      
"7FBWx1SvpEyKVhhnIcuXGD7N5PbNZzEdmr9C6I7cPVkWO-sUV7zfFukexIcANmsd_oBBGKRoYzP5Tti4",
-              null,
-              null
-      );
-      KeyBundle importedKey = api().importKey(vaultUri, IMPORT_KEY_NAME, 
false, keyAttr, keyInfo, null);
-      assertNotNull(importedKey);
-   }
-
-   @Test(dependsOnMethods = "testCreateKey")
-   public void testListKeys() {
-      for (Key key : api().listKeys(vaultUri)) {
-         assertNotNull(key);   
-      }
-   }
-
-   @Test(dependsOnMethods = "testListKeys")
-   public void testGetKey() {
-      KeyBundle keyBundle = api().getKey(vaultUri, KEY_NAME);
-      assertNotNull(keyBundle);
-   }
-
-   @Test(dependsOnMethods = "testGetKey")
-   public void testUpdateKey() {
-      Map<String, String> tags = new HashMap<String, String>();
-      tags.put("purpose", "testing");
-      KeyBundle updatedKey = api().updateKey(vaultUri, KEY_NAME, "", null, 
null, tags);
-      assertNotNull(updatedKey.tags());
-      assertEquals(updatedKey.tags().size(), 1);
-   }
-
-   @Test(dependsOnMethods = "testUpdateKey")
-   public void testListKeyVersions() {
-      // Create a second version of the key
-      KeyAttributes keyAttr = KeyAttributes.create(true, null, null, null, 
null, null);
-      KeyBundle keyBundle = api().createKey(vaultUri,
-              KEY_NAME,
-              keyAttr,
-              null,
-              null,
-              3072,
-              "RSA",
-              null);
-
-      // List key versions
-      List<Key> keys = api().getKeyVersions(vaultUri, KEY_NAME);
-      assertNotNull(keys);
-      assertTrue(keys.size() > 1);
-   }
-
-   @Test(dependsOnMethods = "testListKeyVersions")
-   public void testUpdateKeyWithVersion() {
-      List<Key> keys = api().getKeyVersions(vaultUri, KEY_NAME);
-      assertNotNull(keys);
-      assertTrue(keys.size() > 1);
-
-      // get key version to operate on
-      Key key = keys.get(1);
-      assertNotNull(key);
-      final String version = key.kid().substring(key.kid().lastIndexOf("/") + 
1).trim();
-
-      Map<String, String> tags = new HashMap<String, String>();
-      tags.put("purpose", "testing again");
-      KeyBundle updatedKey = api().updateKey(vaultUri, KEY_NAME, version, 
null, null, tags);
-      assertNotNull(updatedKey);
-
-      FluentIterable<Key> iKeys = 
FluentIterable.from(api().getKeyVersions(vaultUri, KEY_NAME));
-      assertTrue(iKeys.anyMatch(new Predicate<Key>() {
-         @Override public boolean apply(Key input) {
-            return input.kid().contains(version);
-         }
-      }));
-
-      assertEquals(tags, updatedKey.tags());
-   }
-
-   @Test(dependsOnMethods = "testUpdateKeyWithVersion")
-   public void testBackupRestoreKey() {
-      KeyBundle originalKey = api().getKey(vaultUri, KEY_NAME);
-      assertNotNull(originalKey);
-
-      String backupKey = api().backupKey(vaultUri, KEY_NAME);
-      assertNotNull(backupKey);
-
-      DeletedKeyBundle dkb = api().deleteKey(vaultUri, KEY_NAME);
-      assertNotNull(dkb);
-
-      KeyBundle restoredKey = api().restoreKey(vaultUri, backupKey);
-      assertNotNull(restoredKey);
-
-      KeyBundle verifyKey = api().getKey(vaultUri, KEY_NAME);
-      assertNotNull(verifyKey);
-
-      assertEquals(verifyKey, originalKey);
-   }
-
-   @Test(dependsOnMethods = "testBackupRestoreKey")
-   public void testDeleteKey() {
-      DeletedKeyBundle dkb = api().deleteKey(vaultUri, KEY_NAME);
-      assertNotNull(dkb);
-   }
-
-   @Test(dependsOnMethods = "testUpdateVaultToSoftDelete")
-   public void testCreateRecoverableKey() {
-      KeyAttributes keyAttr = KeyAttributes.create(true, null, null, null, 
null, null);
-      KeyBundle keyBundle = api().createKey(vaultUri, RECOVERABLE_KEY_NAME,
-              keyAttr,
-              null,
-              null,
-              2048,
-              "RSA",
-              null
-      );
-      assertNotNull(keyBundle);
-      checkState(recoverableKeyStatus.create(resourceGroupName, vaultUri, 
false).apply(RECOVERABLE_KEY_NAME),
-              "key was not created before timeout");
-   }
-
-   @Test(dependsOnMethods = "testCreateRecoverableKey")
-   public void testDeleteRecoverableKey() {
-      DeletedKeyBundle dkb = api().deleteKey(vaultUri, RECOVERABLE_KEY_NAME);
-      assertNotNull(dkb.deletedDate());
-      assertNotNull(dkb.recoveryId());
-      checkState(deletedKeyStatus.create(resourceGroupName, vaultUri, 
true).apply(RECOVERABLE_KEY_NAME),
-              "key was not deleted before timeout");
-   }
-
-   @Test(dependsOnMethods = "testDeleteRecoverableKey")
-   public void testListDeletedKeys() {
-      for (DeletedKeyBundle key : api().listDeletedKeys(vaultUri)) {
-         assertNotNull(key.deletedDate());
-      }
-   }
-
-   @Test(dependsOnMethods = "testListDeletedKeys")
-   public void testGetDeletedKey() {
-      DeletedKeyBundle key = api().getDeletedKey(vaultUri, 
RECOVERABLE_KEY_NAME);
-      assertNotNull(key.deletedDate());
-   }
-
-   @Test(dependsOnMethods = {"testDeleteRecoverableKey", "testGetDeletedKey"})
-   public void testRecoverDeletedKey() {
-      KeyBundle key = api().recoverDeletedKey(vaultUri, RECOVERABLE_KEY_NAME);
-      checkState(recoverableKeyStatus.create(resourceGroupName, vaultUri, 
true).apply(RECOVERABLE_KEY_NAME),
-              "key was not recovered before timeout");
-   }
-
-   @Test(dependsOnMethods = "testRecoverDeletedKey")
-   public void testPurgeDeletedKey() {
-      // delete the key
-      DeletedKeyBundle dkb = api().deleteKey(vaultUri, RECOVERABLE_KEY_NAME);
-      checkState(deletedKeyStatus.create(resourceGroupName, vaultUri, 
true).apply(RECOVERABLE_KEY_NAME),
-              "key was not deleted before timeout");
-
-      // purge the key and verify that it is no longer listed as deleted
-      api().purgeDeletedKey(vaultUri, RECOVERABLE_KEY_NAME);
-      checkState(deletedKeyStatus.create(resourceGroupName, vaultUri, 
false).apply(RECOVERABLE_KEY_NAME),
-              "key was not purged before timeout");
-   }
-
-   @Test(dependsOnMethods = "testCreateKey")
-   public void testEncryptDecrypt() {
-      // Encrypt some text
-      KeyOperationResult encryptResult = api().encrypt(vaultUri,
-              KEY_NAME,
-              "",
-              cryptoAlgorithm,
-              cryptoText
-      );
-      assertNotNull(encryptResult);
-      assertTrue(encryptResult.value().length() > cryptoText.length());
-
-      // Decrypt the encrypted text
-      KeyOperationResult decryptResult = api().decrypt(vaultUri,
-              KEY_NAME,
-              "",
-              cryptoAlgorithm,
-              encryptResult.value()
-      );
-      assertNotNull(decryptResult);
-      assertTrue(decryptResult.value().equals(cryptoText));
-   }
-
-   @Test(dependsOnMethods = "testCreateKey")
-   public void testSignVerify() {
-      // Sign a hash
-      KeyOperationResult signResult = api().sign(vaultUri,
-              KEY_NAME,
-              "",
-              signatureAlgorithm,
-              hashToSign
-      );
-      assertNotNull(signResult);
-      assertTrue(!signResult.value().isEmpty());
-
-      // Verify the signature
-      boolean verifyResult = api().verify(vaultUri,
-              KEY_NAME,
-              "",
-              signatureAlgorithm,
-              hashToSign,
-              signResult.value()
-      );
-      assertTrue(verifyResult);
-   }
-
-   @Test(dependsOnMethods = "testCreateKey")
-   public void testWrapUnwrapKey() {
-      // Wrap a 256bit symmetric key
-      KeyOperationResult wrapResult = api().wrap(vaultUri,
-              KEY_NAME,
-              "",
-              cryptoAlgorithm,
-              contentEncryptionKey
-      );
-      assertNotNull(wrapResult);
-      assertTrue(!wrapResult.value().isEmpty());
-
-      // Unwrap symmetric key
-      KeyOperationResult unwrapResult = api().unwrap(vaultUri,
-              KEY_NAME,
-              "",
-              cryptoAlgorithm,
-              wrapResult.value()
-      );
-      assertNotNull(unwrapResult);
-      assertTrue(unwrapResult.value().equals(contentEncryptionKey));
-   }
-
-   @Test(dependsOnMethods = "testBackupRestoreKey")
-   public void testSetSecret() {
-      SecretAttributes attributes = SecretAttributes.create(true, null, null, 
null, null, null);
-      SecretBundle secretBundle = api().setSecret(vaultUri,
-              SECRET_NAME,
-              attributes,
-              "testSecretKey",
-              null,
-              sampleSecret
-      );
-      assertNotNull(secretBundle);
-   }
-
-   @Test(dependsOnMethods = "testSetSecret")
-   public void testGetSecret() {
-      SecretBundle secret = api().getSecret(vaultUri, SECRET_NAME, null);
-      assertNotNull(secret);
-   }
-
-   @Test(dependsOnMethods = "testSetSecret")
-   public void testGetSecrets() {
-      for (Secret secret : api().listSecrets(vaultUri)) {
-         assertNotNull(secret);
-      }
-   }
-
-   @Test(dependsOnMethods = {"testBackupRestoreSecret"})
-   public void testDeleteSecret() {
-      DeletedSecretBundle dsb = api().deleteSecret(vaultUri, SECRET_NAME);
-      assertNotNull(dsb);
-   }
-
-   @Test(dependsOnMethods = "testGetSecret")
-   public void testUpdateSecret() {
-      Map<String, String> tags = new HashMap<String, String>();
-      tags.put("purpose", "testing");
-      SecretBundle updatedSecret = api().updateSecret(vaultUri, SECRET_NAME, 
"", null, null, tags);
-      assertNotNull(updatedSecret.tags());
-      assertEquals(updatedSecret.tags().size(), 1);
-   }
-
-   @Test(dependsOnMethods = "testUpdateSecret")
-   public void testListSecretVersions() {
-      // Create a second version of the secret
-      SecretAttributes attributes = SecretAttributes.create(true, null, null, 
null, null, null);
-      SecretBundle secretBundle = api().setSecret(vaultUri,
-              SECRET_NAME,
-              attributes,
-              "aNewSecretKey",
-              null,
-              "-----BEGIN DSA PRIVATE KEY-----\n" +
-                      
"MIIBvAIBAAKBgQDvgcVEyeU5gfw69xY2n1zHWGp/Z8O573SiWIcy29rW382W6jvn\n" +
-                      
"X5rF/LX8AscwRhf2pUTEy64ECkd08eRgEjRIKdGSaTZpBXxM25TPb2fF9k1/ObXd\n" +
-                      
"SkNOQNlwoCHdyQlvwdkVRohJoBX9u371owXObwLiBR1V597p3PdGNYD3DQIVAPtD\n" +
-                      
"dHQQaHCYMxAIXRsaCmOZfsjdAoGBANVOovY4XqS48hvi/RzcCMbRbuHMFBXh/lEM\n" +
-                      
"FmBdZ5sczpi1S3KpEjnBPQfOTzspTlEm5y6cHbkQjh1qT1tMdPAAr5aHYVLCTR+v\n" +
-                      
"CSSALXP48YiZrJcgdyfhbyr5h/Su2QuwX2DvYrR9d88fYHU4O0njEyMd8UFwQ6Uy\n" +
-                      
"qez/catgAoGAJ2AbSklFUXYvehmCVO6XVo3bgO++C3GMycJY3HHTTFQNAb3LJkeO\n" +
-                      
"fa2ZCSqWbd85M00Lt0VEkqlb0EkjDvAgL0R78IJUmvb3FH1RiUofP/yK3g1/3I/l\n" +
-                      
"jUa1fXXn2jSFYcyzGaDnC2U/B55g9G7hXsXJuldwATfDnLtqCdNPoWcCFQDx5K/k\n" +
-                      "Ub4xHF/4Tau8wDAkxHeJiw==\n" +
-                      "-----END DSA PRIVATE KEY-----"
-      );
-
-      // List secret versions
-      List<Secret> secrets = api().getSecretVersions(vaultUri, SECRET_NAME);
-      assertNotNull(secrets);
-      assertEquals(secrets.size(), 2);
-   }
-
-   @Test(dependsOnMethods = "testListSecretVersions")
-   public void testUpdateSecretWithVersion() {
-      List<Secret> secrets = api().getSecretVersions(vaultUri, SECRET_NAME);
-      assertNotNull(secrets);
-      assertEquals(secrets.size(), 2);
-
-      // get secret version to operate on
-      Secret secret = secrets.get(1);
-      assertNotNull(secret);
-      String version = secret.id().substring(secret.id().lastIndexOf("/") + 
1).trim();
-
-      Map<String, String> tags = new HashMap<String, String>();
-      tags.put("purpose", "testing again");
-      SecretBundle updatedSecret = api().updateSecret(vaultUri, SECRET_NAME, 
version, null, null, tags);
-      assertNotNull(updatedSecret);
-
-      secrets = api().getSecretVersions(vaultUri, SECRET_NAME);
-      assertNotNull(secrets);
-      boolean found = false;
-      for (Secret s : secrets) {
-         if (s.id().contains(version)) {
-            secret = s;
-            found = true;
-            break;
-         }
-      }
-      assertTrue(found);
-      assertEquals(tags, secret.tags());
-   }
-
-   @Test(dependsOnMethods = "testUpdateSecretWithVersion")
-   public void testBackupRestoreSecret() {
-      SecretBundle originalSecret = api().getSecret(vaultUri, SECRET_NAME, 
null);
-      assertNotNull(originalSecret);
-
-      String backupSecret = api().backupSecret(vaultUri, SECRET_NAME);
-      assertNotNull(backupSecret);
-
-      DeletedSecretBundle dsb = api().deleteSecret(vaultUri, SECRET_NAME);
-      assertNotNull(dsb);
-
-      SecretBundle restoredSecret = api().restoreSecret(vaultUri, 
backupSecret);
-      assertNotNull(restoredSecret);
-
-      SecretBundle verifySecret = api().getSecret(vaultUri, SECRET_NAME, null);
-      assertNotNull(verifySecret);
-
-      assertEquals(verifySecret, originalSecret);
-   }
-
-   @Test(dependsOnMethods = "testUpdateVaultToSoftDelete")
-   public void testCreateRecoverableSecret() {
-      SecretAttributes attributes = SecretAttributes.create(true, null, null, 
null, null, null);
-      SecretBundle secretBundle = api().setSecret(vaultUri,
-              RECOVERABLE_SECRET_NAME,
-              attributes,
-              "aNewSecretKey",
-              null,
-              "-----BEGIN DSA PRIVATE KEY-----\n" +
-                      
"MIIBvAIBAAKBgQDvgcVEyeU5gfw69xY2n1zHWGp/Z8O573SiWIcy29rW382W6jvn\n" +
-                      
"X5rF/LX8AscwRhf2pUTEy64ECkd08eRgEjRIKdGSaTZpBXxM25TPb2fF9k1/ObXd\n" +
-                      
"SkNOQNlwoCHdyQlvwdkVRohJoBX9u371owXObwLiBR1V597p3PdGNYD3DQIVAPtD\n" +
-                      
"dHQQaHCYMxAIXRsaCmOZfsjdAoGBANVOovY4XqS48hvi/RzcCMbRbuHMFBXh/lEM\n" +
-                      
"FmBdZ5sczpi1S3KpEjnBPQfOTzspTlEm5y6cHbkQjh1qT1tMdPAAr5aHYVLCTR+v\n" +
-                      
"CSSALXP48YiZrJcgdyfhbyr5h/Su2QuwX2DvYrR9d88fYHU4O0njEyMd8UFwQ6Uy\n" +
-                      
"qez/catgAoGAJ2AbSklFUXYvehmCVO6XVo3bgO++C3GMycJY3HHTTFQNAb3LJkeO\n" +
-                      
"fa2ZCSqWbd85M00Lt0VEkqlb0EkjDvAgL0R78IJUmvb3FH1RiUofP/yK3g1/3I/l\n" +
-                      
"jUa1fXXn2jSFYcyzGaDnC2U/B55g9G7hXsXJuldwATfDnLtqCdNPoWcCFQDx5K/k\n" +
-                      "Ub4xHF/4Tau8wDAkxHeJiw==\n" +
-                      "-----END DSA PRIVATE KEY-----"
-      );
-      assertNotNull(secretBundle);
-      checkState(recoverableSecretStatus.create(resourceGroupName, vaultUri, 
false).apply(RECOVERABLE_SECRET_NAME),
-              "secret was not created before timeout");
-   }
-
-   @Test(dependsOnMethods = "testCreateRecoverableSecret")
-   public void testDeleteRecoverableSecret() {
-      DeletedSecretBundle dsb = api().deleteSecret(vaultUri, 
RECOVERABLE_SECRET_NAME);
-      assertNotNull(dsb.deletedDate());
-      assertNotNull(dsb.recoveryId());
-      checkState(deletedSecretStatus.create(resourceGroupName, vaultUri, 
true).apply(RECOVERABLE_SECRET_NAME),
-              "secret was not deleted before timeout");
-   }
-
-   @Test(dependsOnMethods = "testDeleteRecoverableSecret")
-   public void testListDeletedSecrets() {
-      for (DeletedSecretBundle secret : api().listDeletedSecrets(vaultUri)) {
-         assertNotNull(secret.deletedDate());
-      }
-   }
-
-   @Test(dependsOnMethods = "testListDeletedSecrets")
-   public void testGetDeletedSecret() {
-      DeletedSecretBundle dsb = api().getDeletedSecret(vaultUri, 
RECOVERABLE_SECRET_NAME);
-      assertNotNull(dsb.deletedDate());
-   }
-
-   @Test(dependsOnMethods = {"testDeleteRecoverableSecret", 
"testGetDeletedSecret"})
-   public void testRecoverDeletedSecret() {
-      SecretBundle secret = api().recoverDeletedSecret(vaultUri, 
RECOVERABLE_SECRET_NAME);
-      checkState(recoverableSecretStatus.create(resourceGroupName, vaultUri, 
true).apply(RECOVERABLE_SECRET_NAME),
-              "secret was not created before timeout");
-   }
-
-   @Test(dependsOnMethods = "testRecoverDeletedSecret")
-   public void testPurgeDeletedSecret() {
-      // delete the secret
-      DeletedSecretBundle dsb = api().deleteSecret(vaultUri, 
RECOVERABLE_SECRET_NAME);
-      checkState(deletedSecretStatus.create(resourceGroupName, vaultUri, 
true).apply(RECOVERABLE_SECRET_NAME),
-              "secret was not deleted before timeout");
-
-      // purge the secret and verify that it is no longer listed as deleted
-      api().purgeDeletedSecret(vaultUri, RECOVERABLE_SECRET_NAME);
-      checkState(deletedSecretStatus.create(resourceGroupName, vaultUri, 
false).apply(RECOVERABLE_SECRET_NAME),
-              "secret was not purged before timeout");
-   }
-
-   @Test(dependsOnMethods = "testGet")
-   public void testCreateCertificate() {
-      CertificatePolicy policy = Certificate.CertificatePolicy.create(null,
-              CERTIFICATE_NAME,
-              IssuerParameters.create(null, "Self"),
-              KeyProperties.create(false, 2048, "RSA", false),
-              null,
-              null,
-              X509CertificateProperties.create(null, null, null, 
"CN=mycertificate.foobar.com", 12)
-      );
-      assertNotNull(policy);
-
-      CertificateOperation certOp = api().createCertificate(vaultUri,
-              CERTIFICATE_NAME,
-              null,
-              policy,
-              null
-      );
-      assertNotNull(certOp);
-   }
-
-   @Test(dependsOnMethods = "testCreateCertificate")
-   public void testImportCertificate() {
-      String certPem = importableCertificatePem;
-      CertificateBundle certBundle = api().importCertificate(
-              vaultUri,
-              IMPORTABLE_CERTIFICATE_NAME,
-              null,
-              CertificatePolicy.create(
-                      null,
-                      null,
-                      null,
-                      null,
-                      null,
-                      SecretProperties.create("application/x-pem-file"),
-                      null
-              ),
-              null,
-              null,
-              certPem);
-      assertNotNull(certBundle);
-   }
-
-   @Test(dependsOnMethods = "testImportCertificate")
-   public void testMergeCertificate() {
-      /* XXX - Merging certificates is used in the case where a CSR is 
generated
-       * within the Azure Key Vault and then signed by an external entity.
-       * Since this requires an offline process outside the scope of automated
-       * tests, this test is currently not implemented.
-       */
-      throw new SkipException("merging certificates requires an external 
entity, skipping");
-   }
-
-   @Test(dependsOnMethods = "testGetCertificateOperation")
-   public void testGetCertificate() {
-      CertificateBundle certBundle = api().getCertificate(vaultUri, 
"myCertificate", null);
-      assertNotNull(certBundle);
-   }
-
-   @Test(dependsOnMethods = "testGetCertificateOperation")
-   public void testListCertificates() {
-      List<Certificate> certs = api().getCertificates(vaultUri);
-      assertTrue(!certs.isEmpty());
-      for (Certificate cert : certs) {
-         assertNotNull(cert.id());
-      }
-   }
-
-   @Test(dependsOnMethods = "testGetCertificateOperation")
-   public void testListCertificateVersions() {
-      List<Certificate> certs = api().getCertificateVersions(vaultUri, 
CERTIFICATE_NAME);
-      assertNotNull(certs);
-      assertEquals(certs.size(), 1);
-   }
-
-   @Test(dependsOnMethods = "testGetCertificatePolicy")
-   public void testUpdateCertificate() {
-      Map<String, String> tags = new HashMap<String, String>();
-      tags.put("selfsigned", "true");
-      CertificatePolicy policy = api().getCertificatePolicy(
-              vaultUri,
-              CERTIFICATE_NAME
-      );
-      assertNotNull(policy);
-      CertificateBundle certBundle = api().updateCertificate(
-              vaultUri,
-              CERTIFICATE_NAME,
-              "",
-              null,
-              policy,
-              tags
-      );
-      assertNotNull(certBundle);
-      assertEquals(certBundle.tags().size(), 1);
-   }
-
-   @Test(dependsOnMethods = "testUpdateCertificate")
-   public void testUpdateCertificateVersion() {
-      // create a new version of the certificate
-      /*
-       * XXX -- update using version complains about needing policy (required 
input), yet
-       * passing in the same policy results in the error:
-       *
-       * Policy cannot be updated with a specific version of a certificate
-       *
-       * Will uncomment/fix once this issue is resolved.
-       *
-       */
-      throw new SkipException("bug in requirements for function");
-   }
-
-   @Test(dependsOnMethods = {"testDeleteCertificateOperation", 
"testDeleteCertificateIssuer",
-                             "testDeleteCertificateContacts", 
"testUpdateCertificatePolicy"})
-   public void testDeleteCertificate() {
-      DeletedCertificateBundle dcb = api().deleteCertificate(
-              vaultUri,
-              CERTIFICATE_NAME
-      );
-      assertNotNull(dcb);
-   }
-
-   @Test(dependsOnMethods = "testCreateCertificate")
-   public void testGetCertificateOperation() {
-      CertificateOperation certOp = api().getCertificateOperation(vaultUri, 
CERTIFICATE_NAME);
-      assertNotNull(certOp);
-      checkState(certificateOperationStatus.create(resourceGroupName, 
vaultUri, true).apply(CERTIFICATE_NAME),
-              "certificate was not created before timeout");
-   }
-
-   @Test(dependsOnMethods = "testDeleteCertificateContacts")
-   public void testUpdateCertificateOperation() {
-      CertificatePolicy policy = Certificate.CertificatePolicy.create(null,
-              TEMP_CERTIFICATE_NAME,
-              IssuerParameters.create(null, "Self"),
-              KeyProperties.create(false, 4096, "RSA", false),
-              null,
-              null,
-              X509CertificateProperties.create(null, null, null, 
"CN=mytempcertificate.foobar.com", 12)
-      );
-      assertNotNull(policy);
-      CertificateOperation certOp = api().createCertificate(vaultUri,
-              TEMP_CERTIFICATE_NAME,
-              null,
-              policy,
-              null
-      );
-      assertNotNull(certOp);
-
-      certOp = api().updateCertificateOperation(vaultUri, 
TEMP_CERTIFICATE_NAME, true);
-      assertNotNull(certOp);
-      assertTrue(certOp.cancellationRequested());
-   }
-
-   @Test(dependsOnMethods = "testUpdateCertificateOperation")
-   public void testDeleteCertificateOperation() {
-      CertificateOperation certOp = api().deleteCertificateOperation(vaultUri, 
TEMP_CERTIFICATE_NAME);
-      assertNotNull(certOp);
-      checkState(certificateOperationStatus.create(resourceGroupName, 
vaultUri, false).apply(TEMP_CERTIFICATE_NAME),
-              "certificate was not deleted before timeout");
-   }
-
-   @Test(dependsOnMethods = "testGetCertificate")
-   public void testSetCertificateIssuer() {
-      AdministrationDetails adminDetail = AdministrationDetails.create(
-              "[email protected]",
-              "Admin",
-              "Guy",
-              "867-5309"
-      );
-      List<AdministrationDetails> adminDetails = new 
ArrayList<AdministrationDetails>();
-      adminDetails.add(adminDetail);
-      OrganizationDetails orgDetails = OrganizationDetails.create(
-              adminDetails,
-              null
-      );
-      IssuerBundle issuer = api().setCertificateIssuer(
-              vaultUri,
-              "globalsign01",
-              null,
-              IssuerCredentials.create("imauser", "This1sMyPa55wurD!"),
-              orgDetails,
-              "GlobalSign"
-      );
-      assertNotNull(issuer);
-   }
-
-   @Test(dependsOnMethods = "testSetCertificateIssuer")
-   public void testGetCertificateIssuers() {
-      List<CertificateIssuer> issuers = api().getCertificateIssuers(vaultUri);
-      assertNotNull(issuers);
-      assertTrue(issuers.size() > 0);
-   }
-
-   @Test(dependsOnMethods = "testSetCertificateIssuer")
-   public void testGetCertificateIssuer() {
-      IssuerBundle issuer = api().getCertificateIssuer(vaultUri, 
"globalsign01");
-      assertNotNull(issuer);
-      assertEquals(issuer.provider(), "GlobalSign");
-   }
-
-   @Test(dependsOnMethods = "testGetCertificateIssuer")
-   public void testUpdateCertificateIssuer() {
-      AdministrationDetails adminDetail = AdministrationDetails.create(
-              "[email protected]",
-              "Admin",
-              "Guy",
-              "867-5309"
-      );
-      List<AdministrationDetails> adminDetails = new 
ArrayList<AdministrationDetails>();
-      adminDetails.add(adminDetail);
-      OrganizationDetails orgDetails = OrganizationDetails.create(
-              adminDetails,
-              null
-      );
-      IssuerBundle issuer = api().updateCertificateIssuer(
-              vaultUri,
-              "globalsign01",
-              null,
-              IssuerCredentials.create("imauser", "CanHa5P455wuRd!"),
-              orgDetails,
-              "GlobalSign"
-      );
-      assertNotNull(issuer);
-   }
-
-   @Test(dependsOnMethods = "testUpdateCertificateIssuer")
-   public void testDeleteCertificateIssuer() {
-      IssuerBundle issuer = api().deleteCertificateIssuer(vaultUri, 
"globalsign01");
-      assertNotNull(issuer);
-
-      issuer = api().getCertificateIssuer(vaultUri, "globalsign01");
-      assertEquals(issuer, null);
-   }
-
-   @Test(dependsOnMethods = "testDeleteCertificateIssuer")
-   public void testSetCertificateContacts() {
-      List<Contact> contactsIn = new ArrayList<Contact>();
-      contactsIn.add(Contact.create("[email protected]", "Foo bar", "867-5309"));
-      Contacts contacts = api().setCertificateContacts(vaultUri, contactsIn);
-      assertNotNull(contacts);
-   }
-   @Test(dependsOnMethods = "testSetCertificateContacts")
-   public void testGetCertificateContacts() {
-      Contacts contacts = api().getCertificateContacts(vaultUri);
-      assertNotNull(contacts.id());
-      assertEquals(contacts.contacts().size(), 1);
-   }
-
-   @Test(dependsOnMethods = "testGetCertificateContacts")
-   public void testDeleteCertificateContacts() {
-      Contacts contacts = api().deleteCertificateContacts(vaultUri);
-      assertNotNull(contacts.id());
-
-      contacts = api().getCertificateContacts(vaultUri);
-      assertNull(contacts);
-   }
-
-   @Test(dependsOnMethods = "testCreateCertificate")
-   public void testGetCertificatePolicy() {
-      CertificatePolicy policy = api().getCertificatePolicy(vaultUri, 
CERTIFICATE_NAME);
-      assertNotNull(policy);
-   }
-
-   @Test(dependsOnMethods = "testUpdateCertificate")
-   public void testUpdateCertificatePolicy() {
-      CertificatePolicy policy = api().updateCertificatePolicy(
-              vaultUri,
-              CERTIFICATE_NAME,
-              null,
-              null,
-              KeyProperties.create(true, 3072, "RSA", false),
-              null,
-              null,
-              null
-      );
-      assertNotNull(policy);
-      assertTrue(policy.keyProps().exportable());
-   }
-
-   @Test(dependsOnMethods = "testUpdateVaultToSoftDelete")
-   public void testImportRecoverableCertificate() {
-      String certPem = importableCertificatePem;
-      CertificateBundle certBundle = api().importCertificate(
-              vaultUri,
-              RECOVERABLE_CERTIFICATE_NAME,
-              null,
-              CertificatePolicy.create(
-                      null,
-                      null,
-                      null,
-                      null,
-                      null,
-                      SecretProperties.create("application/x-pem-file"),
-                      null
-              ),
-              null,
-              null,
-              certPem);
-      checkState(recoverableCertificateStatus.create(resourceGroupName, 
vaultUri, true).apply(RECOVERABLE_CERTIFICATE_NAME),
-              "certificate was not imported before timeout");
-
-      certBundle = api().getCertificate(vaultUri, 
RECOVERABLE_CERTIFICATE_NAME, null);
-      assertNotNull(certBundle);
-      
assertTrue(certBundle.attributes().recoveryLevel().contains("Recoverable"));
-   }
-
-   @Test(dependsOnMethods = "testImportRecoverableCertificate")
-   public void testDeleteRecoverableCertificate() {
-      DeletedCertificateBundle dcb = api().deleteCertificate(vaultUri, 
RECOVERABLE_CERTIFICATE_NAME);
-      assertNotNull(dcb.deletedDate());
-      assertNotNull(dcb.recoveryId());
-      checkState(deletedCertificateStatus.create(resourceGroupName, vaultUri, 
true).apply(RECOVERABLE_CERTIFICATE_NAME),
-              "certificate was not deleted before timeout");
-   }
-
-   @Test(dependsOnMethods = "testDeleteRecoverableCertificate")
-   public void testListDeletedCertificates() {
-      for (DeletedCertificate dc : api().getDeletedCertificates(vaultUri)) {
-         assertNotNull(dc.deletedDate());
-      }
-   }
-
-   @Test(dependsOnMethods = "testListDeletedCertificates")
-   public void testGetDeletedCertificate() {
-      DeletedCertificateBundle dcb = api().getDeletedCertificate(vaultUri, 
RECOVERABLE_CERTIFICATE_NAME);
-      assertNotNull(dcb.deletedDate());
-   }
-
-   @Test(dependsOnMethods = "testGetDeletedCertificate")
-   public void testRecoverDeletedCertificate() {
-      CertificateBundle dcb = api().recoverDeletedCertificate(vaultUri, 
RECOVERABLE_CERTIFICATE_NAME);
-      assertNotNull(dcb);
-      checkState(recoverableCertificateStatus.create(resourceGroupName, 
vaultUri, false).apply(RECOVERABLE_CERTIFICATE_NAME),
-              "certificate was not recovered before timeout");
-   }
-
-   @Test(dependsOnMethods = "testRecoverDeletedCertificate")
-   public void testPurgeDeletedCertificate() {
-      // delete the certificate
-      DeletedCertificateBundle dcb = api().deleteCertificate(vaultUri, 
RECOVERABLE_CERTIFICATE_NAME);
-      checkState(deletedCertificateStatus.create(resourceGroupName, vaultUri, 
true).apply(RECOVERABLE_CERTIFICATE_NAME),
-              "certificate was not deleted before timeout");
-
-      // purge the certificate and verify that it is no longer listed as 
deleted
-      api().purgeDeletedCertificate(vaultUri, RECOVERABLE_CERTIFICATE_NAME);
-      checkState(deletedCertificateStatus.create(resourceGroupName, vaultUri, 
false).apply(RECOVERABLE_CERTIFICATE_NAME),
-              "certificate was not purged before timeout");
-   }
-
-   private VaultApi api() {
-      return api.getVaultApi(resourceGroupName);
-   }
-}

Reply via email to