blob: 7459f4812d3414a987a960878f51f77ee553d652 [file] [log] [blame]
/*
* 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 org.testng.Assert.assertFalse;
import static org.testng.Assert.assertNotNull;
import static org.testng.Assert.assertNull;
import static org.testng.Assert.assertTrue;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.List;
import java.util.Map;
import java.util.HashMap;
import java.util.Arrays;
import java.util.ArrayList;
import org.jclouds.azurecompute.arm.domain.Certificate;
import org.jclouds.azurecompute.arm.domain.Certificate.AdministrationDetails;
import org.jclouds.azurecompute.arm.domain.Certificate.CertificateAttributes;
import org.jclouds.azurecompute.arm.domain.Certificate.CertificateBundle;
import org.jclouds.azurecompute.arm.domain.Certificate.CertificateIssuer;
import org.jclouds.azurecompute.arm.domain.Certificate.CertificateOperation;
import org.jclouds.azurecompute.arm.domain.Certificate.CertificatePolicy;
import org.jclouds.azurecompute.arm.domain.Certificate.Contact;
import org.jclouds.azurecompute.arm.domain.Certificate.Contacts;
import org.jclouds.azurecompute.arm.domain.Certificate.DeletedCertificate;
import org.jclouds.azurecompute.arm.domain.Certificate.DeletedCertificateBundle;
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.OrganizationDetails;
import org.jclouds.azurecompute.arm.domain.Certificate.SecretProperties;
import org.jclouds.azurecompute.arm.domain.Certificate.X509CertificateProperties;
import org.jclouds.azurecompute.arm.domain.Key;
import org.jclouds.azurecompute.arm.domain.Key.DeletedKeyBundle;
import org.jclouds.azurecompute.arm.domain.Key.JsonWebKey;
import org.jclouds.azurecompute.arm.domain.Key.KeyAttributes;
import org.jclouds.azurecompute.arm.domain.Key.KeyBundle;
import org.jclouds.azurecompute.arm.domain.Key.KeyOperationResult;
import org.jclouds.azurecompute.arm.domain.SKU;
import org.jclouds.azurecompute.arm.domain.Secret;
import org.jclouds.azurecompute.arm.domain.Secret.DeletedSecretBundle;
import org.jclouds.azurecompute.arm.domain.Secret.SecretAttributes;
import org.jclouds.azurecompute.arm.domain.Secret.SecretBundle;
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.BaseAzureComputeApiMockTest;
import org.jclouds.rest.ResourceNotFoundException;
import org.testng.SkipException;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import com.google.common.collect.ImmutableList;
@Test(groups = "unit", testName = "VaultApiMockTest", singleThreaded = true)
public class VaultApiMockTest extends BaseAzureComputeApiMockTest {
private final String subscriptionId = "SUBSCRIPTIONID";
private final String resourceGroup = "myresourcegroup";
private final String tenantId = "myTenantId";
private final String identityObjId = "myIdentityObjectId";
private final String vaultName = "kvvaultapimocktest";
private final String apiVersion = "api-version=2016-10-01";
private final String location = "westeurope";
private URI vaultUri;
private static String KEY_NAME = "myKey";
private static String TEMP_KEY_NAME = "myTempKey";
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 static String CERTIFICATE_ISSUER_NAME = "globalsign01";
private String IMPORTABLE_CERTIFICATE_PEM = stringFromResource("/vaultimportablecert.txt");
private String sampleSecret = stringFromResource("/vaultsamplesecret.txt");
private String keyBackup = stringFromResource("/vaultkeybackup.txt");
private String secretBackup = stringFromResource("/vaultsecretbackup.txt");
private String[] mergeX5C = {
stringFromResource("/vaultmergex5c-1.txt"),
stringFromResource("/vaultmergex5c-2.txt"),
stringFromResource("/vaultmergex5c-3.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";
private static String keyDecryptData = "0_S8pyjjnGRlcbDa-Lt0jYjMXpXrf9Fat3elx-fSO" +
"g3dj6mYgEEs6kt79OMD4MFmVyOt6umeWAfdDIkNVnqb5fgyWceveh9wN-37jc5CFgG2PF3XI" +
"A6RII-HF2BkBcVa9KcAX3_di4KQE70PXgHf-dlz_RgLOJILeG50wzFeBFCLsjEEPp3itmoai" +
"E6vfDidCRm5At8Vjka0G-N_afwkIijfQZLT0VaXvL39cIJE2QN3HJPZM8YPUlkFlYnY4GIRy" +
"RWSBpK_KYuVufzUGtDi6Sh8pUa67ppa7DHVZlixlmnVqI3Oeg6XUvMqbFFqVSrcNbRQDwVGL" +
"3cUtK-KB1PfKg";
private static String keySignedData = "uO0r4P1cB-fKsDZ8cj5ahiNw8Tdsudt5zLCeEKOt29" +
"LAlPDpeGx9Q1SOFNaR7JlRYVelxsohdzvydwX8ao6MLnqlpdEj0Xt5Aadp-kN84AXW238gab" +
"S1AUyiWILCmdsBFeRU4wTRSxz2qGS_0ztHkaNln32P_9GJC72ZRlgZoVA4C_fowZolUoCWGj" +
"4V7fAzcSoiNYipWP0HkFe3xmuz-cSQg3CCAs-MclHHfMeSagLJZZQ9bpl5LIr-Ik89bNtqEq" +
"yP7Jb_fCgHajAx2lUFcRZhSIKuCfrLPMl6wzejQ2rQXX-ixEkDa73dYaPIrVW4IL3iC0Ufxn" +
"fxYffHJ7QCRw";
private static String keyWrappedData = "1jcTlu3KJNDBYydhaH9POWOo0tAPGkpsZVizCkHpC" +
"3g_9Kg91Q3HKK-rfZynn5W5nVPM-SVFHA3JTankcXX8gx8GycwUh4pMoyil_DV35m2QjyuiT" +
"ln83OJXw-nMvRXyKdVfF7nyRcs256kW7gthAOsYUVBrfFS7DFFxsXqLNREsA8j85IqIXIm8p" +
"AB3C9uvl1I7SQhLvrwZZXXqjeCWMfseVJwWgsQFyyqH2P0f3-xnngV7cvik2k3Elrk3G_2Cu" +
"JCozIIrANg9zG9Z8DrwSNNm9YooxWkSu0ZeDLOJ0bMdhcPGGm5OvKz3oZqX-39yv5klNlCRb" +
"r0q7gqmI0x25w";
@BeforeMethod
public void start() throws IOException, URISyntaxException {
super.start();
vaultUri = server.getUrl("").toURI();
}
public void createVault() throws InterruptedException {
server.enqueue(jsonResponse("/vaultcreate.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
Vault vault = vaultApi.createOrUpdateVault(vaultName, location, VaultProperties.builder()
.tenantId(this.tenantId)
.sku(SKU.create(location, "standard", null, "A"))
.accessPolicies(ImmutableList.of(VaultProperties.AccessPolicyEntry.create(null, this.identityObjId, this.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);
String path = String.format(
"/subscriptions/%s/resourcegroups/%s/providers/Microsoft.KeyVault/vaults/%s?%s",
subscriptionId, resourceGroup, vaultName, apiVersion
);
assertSent(server, "PUT", path, stringFromResource("/vaultcreaterequestbody.json"));
assertNotNull(vault);
assertNotNull(vault.properties().vaultUri());
assertTrue(!vault.name().isEmpty());
}
public void listVaults() throws InterruptedException {
server.enqueue(jsonResponse("/vaultlist.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
List<Vault> vaults = vaultApi.listVaults();
String path = String.format(
"/subscriptions/%s/resourcegroups/%s/providers/Microsoft.KeyVault/vaults?%s",
subscriptionId, resourceGroup, apiVersion
);
assertSent(server, "GET", path);
assertNotNull(vaults);
assertTrue(vaults.size() > 0);
assertTrue(!vaults.get(0).name().isEmpty());
}
public void listVaultsReturns404() throws InterruptedException {
server.enqueue(response404());
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
List<Vault> vaults = vaultApi.listVaults();
String path = String.format(
"/subscriptions/%s/resourcegroups/%s/providers/Microsoft.KeyVault/vaults?%s",
subscriptionId, resourceGroup, apiVersion
);
assertSent(server, "GET", path);
assertTrue(vaults.isEmpty());
}
public void getVault() throws InterruptedException {
server.enqueue(jsonResponse("/vaultget.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
Vault vault = vaultApi.getVault(vaultName);
String path = String.format(
"/subscriptions/%s/resourcegroups/%s/providers/Microsoft.KeyVault/vaults/%s?%s",
subscriptionId, resourceGroup, vaultName, apiVersion
);
assertSent(server, "GET", path);
assertNotNull(vault);
assertTrue(!vault.name().isEmpty());
}
public void getVaultReturns404() throws InterruptedException {
server.enqueue(response404());
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
Vault vault = vaultApi.getVault(vaultName);
String path = String.format(
"/subscriptions/%s/resourcegroups/%s/providers/Microsoft.KeyVault/vaults/%s?%s",
subscriptionId, resourceGroup, vaultName, apiVersion
);
assertSent(server, "GET", path);
assertNull(vault);
}
public void deleteVault() throws InterruptedException {
server.enqueue(response200());
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
boolean status = vaultApi.deleteVault(vaultName);
String path = String.format(
"/subscriptions/%s/resourcegroups/%s/providers/Microsoft.KeyVault/vaults/%s?%s",
subscriptionId, resourceGroup, vaultName, apiVersion
);
assertSent(server, "DELETE", path);
assertTrue(status);
}
public void deleteVaultReturns404() throws InterruptedException {
server.enqueue(response404());
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
boolean status = vaultApi.deleteVault(vaultName);
String path = String.format(
"/subscriptions/%s/resourcegroups/%s/providers/Microsoft.KeyVault/vaults/%s?%s",
subscriptionId, resourceGroup, vaultName, apiVersion
);
assertSent(server, "DELETE", path);
assertFalse(status);
}
public void purgeDeletedVault() throws InterruptedException {
server.enqueue(response200());
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
boolean status = vaultApi.purgeVault(location, vaultName);
String path = String.format(
"/subscriptions/%s/providers/Microsoft.KeyVault/locations/%s/deletedVaults/%s/purge?%s",
subscriptionId, location, vaultName, apiVersion
);
assertSent(server, "POST", path);
assertTrue(status);
}
public void purgeDeletedVaultReturns404() throws InterruptedException {
server.enqueue(response404());
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
boolean status = vaultApi.purgeVault(location, vaultName);
String path = String.format(
"/subscriptions/%s/providers/Microsoft.KeyVault/locations/%s/deletedVaults/%s/purge?%s",
subscriptionId, location, vaultName, apiVersion
);
assertSent(server, "POST", path);
assertFalse(status);
}
public void listDeletedVaults() throws InterruptedException {
server.enqueue(jsonResponse("/vaultlistdeleted.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
List<DeletedVault> vaults = vaultApi.listDeletedVaults();
String path = String.format(
"/subscriptions/%s/providers/Microsoft.KeyVault/deletedVaults?%s",
subscriptionId, apiVersion
);
assertSent(server, "GET", path);
assertNotNull(vaults);
assertTrue(vaults.size() > 0);
}
public void listDeletedVaultsReturns404() throws InterruptedException {
server.enqueue(response404());
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
List<DeletedVault> vaults = vaultApi.listDeletedVaults();
String path = String.format(
"/subscriptions/%s/providers/Microsoft.KeyVault/deletedVaults?%s",
subscriptionId, apiVersion
);
assertSent(server, "GET", path);
assertTrue(vaults.isEmpty());
}
public void getDeletedVault() throws InterruptedException {
server.enqueue(jsonResponse("/vaultgetdeleted.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
DeletedVault vault = vaultApi.getDeletedVault(location, vaultName);
String path = String.format(
"/subscriptions/%s/providers/Microsoft.KeyVault/locations/%s/deletedVaults/%s?%s",
subscriptionId, location, vaultName, apiVersion
);
assertSent(server, "GET", path);
assertNotNull(vault);
assertTrue(!vault.name().isEmpty());
assertTrue(!vault.properties().deletionDate().toString().isEmpty());
}
public void getDeletedVaultReturns404() throws InterruptedException {
server.enqueue(response404());
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
DeletedVault vault = vaultApi.getDeletedVault(location, vaultName);
String path = String.format(
"/subscriptions/%s/providers/Microsoft.KeyVault/locations/%s/deletedVaults/%s?%s",
subscriptionId, location, vaultName, apiVersion
);
assertSent(server, "GET", path);
assertNull(vault);
}
// Key mock tests
public void listKeys() throws InterruptedException {
server.enqueue(jsonResponse("/vaultlistkeys.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
List<Key> keys = vaultApi.listKeys(vaultUri);
String path = String.format("/keys?%s", apiVersion);
assertSent(server, "GET", path);
assertNotNull(keys);
assertTrue(keys.size() > 0);
}
public void listKeysReturns404() throws InterruptedException {
server.enqueue(response404());
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
List<Key> keys = vaultApi.listKeys(vaultUri);
String path = String.format("/keys?%s", apiVersion);
assertSent(server, "GET", path);
assertTrue(keys.isEmpty());
}
public void createKey() throws InterruptedException {
server.enqueue(jsonResponse("/vaultcreatekey.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
KeyAttributes keyAttr = KeyAttributes.create(true, null, null, null, null, null);
KeyBundle keyBundle = vaultApi.createKey(vaultUri,
KEY_NAME,
keyAttr,
null,
null,
2048,
"RSA",
null
);
String path = String.format("/keys/%s/create?%s", KEY_NAME, apiVersion);
assertSent(server, "POST", path, stringFromResource("/vaultcreatekeyrequestbody.json"));
assertNotNull(keyBundle);
assertNotNull(keyBundle.attributes().created());
}
public void importKey() throws InterruptedException {
server.enqueue(jsonResponse("/vaultcreatekey.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
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 = vaultApi.importKey(vaultUri, IMPORT_KEY_NAME, false, keyAttr, keyInfo, null);
String path = String.format("/keys/%s?%s", IMPORT_KEY_NAME, apiVersion);
assertSent(server, "PUT", path, stringFromResource("/vaultimportkeyrequestbody.json"));
assertNotNull(importedKey);
assertNotNull(importedKey.attributes().created());
}
public void getKey() throws InterruptedException {
server.enqueue(jsonResponse("/vaultgetkey.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
KeyBundle key = vaultApi.getKey(vaultUri, KEY_NAME);
String path = String.format("/keys/%s?%s", KEY_NAME, apiVersion);
assertSent(server, "GET", path);
assertNotNull(key);
assertNotNull(key.attributes().created());
}
public void getKeyReturns404() throws InterruptedException {
server.enqueue(response404());
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
KeyBundle key = vaultApi.getKey(vaultUri, KEY_NAME);
String path = String.format("/keys/%s?%s", KEY_NAME, apiVersion);
assertSent(server, "GET", path);
assertNull(key);
}
public void deleteKey() throws InterruptedException {
server.enqueue(jsonResponse("/vaultdeletekey.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
DeletedKeyBundle key = vaultApi.deleteKey(vaultUri, KEY_NAME);
String path = String.format("/keys/%s?%s", KEY_NAME, apiVersion);
assertSent(server, "DELETE", path);
assertNotNull(key);
assertNotNull(key.attributes().created());
}
public void deleteKeyReturns404() throws InterruptedException {
server.enqueue(response404());
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
DeletedKeyBundle key = vaultApi.deleteKey(vaultUri, KEY_NAME);
String path = String.format("/keys/%s?%s", KEY_NAME, apiVersion);
assertSent(server, "DELETE", path);
assertNull(key);
}
public void getKeyVersions() throws InterruptedException {
server.enqueue(jsonResponse("/vaultgetkeyversions.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
List<Key> keys = vaultApi.getKeyVersions(vaultUri, KEY_NAME);
String path = String.format("/keys/%s/versions?%s", KEY_NAME, apiVersion);
assertSent(server, "GET", path);
assertNotNull(keys);
assertTrue(keys.size() > 0);
assertNotNull(keys.get(0).attributes().created());
}
public void getKeyVersionsReturns404() throws InterruptedException {
server.enqueue(response404());
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
List<Key> keys = vaultApi.getKeyVersions(vaultUri, KEY_NAME);
String path = String.format("/keys/%s/versions?%s", KEY_NAME, apiVersion);
assertSent(server, "GET", path);
assertTrue(keys.isEmpty());
}
public void updateKey() throws InterruptedException {
server.enqueue(jsonResponse("/vaultupdatekey.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
Map<String, String> tags = new HashMap<String, String>();
tags.put("purpose", "testing");
KeyBundle updatedKey = vaultApi.updateKey(vaultUri, KEY_NAME, null, null, null, tags);
String path = String.format("/keys/%s?%s", KEY_NAME, apiVersion);
assertSent(server, "PATCH", path, stringFromResource("/vaultupdatekeyrequestbody.json"));
assertNotNull(updatedKey);
assertNotNull(updatedKey.attributes().created());
}
public void updateKeyWithVersion() throws InterruptedException {
server.enqueue(jsonResponse("/vaultupdatekeywithversion.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
String keyVersion = "bd6566ec707e4ad89f4ab9577d9d0bef";
Map<String, String> tags = new HashMap<String, String>();
tags.put("purpose", "testing");
KeyBundle updatedKey = vaultApi.updateKey(vaultUri, KEY_NAME, keyVersion, null, null, tags);
String path = String.format("/keys/%s/%s?%s", KEY_NAME, keyVersion, apiVersion);
assertSent(server, "PATCH", path, stringFromResource("/vaultupdatekeyrequestbody.json"));
assertNotNull(updatedKey);
assertNotNull(updatedKey.attributes().created());
}
public void backupKey() throws InterruptedException {
server.enqueue(jsonResponse("/vaultbackupkey.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
String keyBackup = vaultApi.backupKey(vaultUri, KEY_NAME);
String path = String.format("/keys/%s/backup?%s", KEY_NAME, apiVersion);
assertSent(server, "POST", path);
assertNotNull(keyBackup);
assertTrue(keyBackup.length() > 0);
}
public void restoreKey() throws InterruptedException {
server.enqueue(jsonResponse("/vaultrestorekey.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
KeyBundle restoredKey = vaultApi.restoreKey(vaultUri, keyBackup);
String path = String.format("/keys/restore?%s", apiVersion);
assertSent(server, "POST", path, stringFromResource("/vaultrestorekeyrequestbody.json"));
assertNotNull(restoredKey);
assertNotNull(restoredKey.attributes().created());
}
public void listDeletedKeys() throws InterruptedException {
server.enqueue(jsonResponse("/vaultlistdeletedkeys.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
List<DeletedKeyBundle> keys = vaultApi.listDeletedKeys(vaultUri);
String path = String.format("/deletedkeys?%s", apiVersion);
assertSent(server, "GET", path);
assertNotNull(keys);
assertTrue(keys.size() > 0);
}
public void listDeletedKeysReturns404() throws InterruptedException {
server.enqueue(response404());
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
List<DeletedKeyBundle> keys = vaultApi.listDeletedKeys(vaultUri);
String path = String.format("/deletedkeys?%s", apiVersion);
assertSent(server, "GET", path);
assertTrue(keys.isEmpty());
}
public void getDeletedKey() throws InterruptedException {
server.enqueue(jsonResponse("/vaultgetdeletedkey.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
DeletedKeyBundle key = vaultApi.getDeletedKey(vaultUri, RECOVERABLE_KEY_NAME);
String path = String.format("/deletedkeys/%s?%s", RECOVERABLE_KEY_NAME, apiVersion);
assertSent(server, "GET", path);
assertNotNull(key);
assertTrue(!key.deletedDate().isEmpty());
}
public void getDeletedKeyReturns404() throws InterruptedException {
server.enqueue(response404());
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
DeletedKeyBundle key = vaultApi.getDeletedKey(vaultUri, RECOVERABLE_KEY_NAME);
String path = String.format("/deletedkeys/%s?%s", RECOVERABLE_KEY_NAME, apiVersion);
assertSent(server, "GET", path);
assertNull(key);
}
public void recoverDeletedKey() throws InterruptedException {
server.enqueue(jsonResponse("/vaultrecoverdeletedkey.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
KeyBundle key = vaultApi.recoverDeletedKey(vaultUri, RECOVERABLE_KEY_NAME);
String path = String.format("/deletedkeys/%s/recover?%s", RECOVERABLE_KEY_NAME, apiVersion);
assertSent(server, "POST", path);
assertNotNull(key);
assertNotNull(key.attributes().created());
}
public void purgeDeletedKey() throws InterruptedException {
server.enqueue(response200());
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
boolean status = vaultApi.purgeDeletedKey(vaultUri, RECOVERABLE_KEY_NAME);
String path = String.format("/deletedkeys/%s?%s", RECOVERABLE_KEY_NAME, apiVersion);
assertSent(server, "DELETE", path);
assertTrue(status);
}
public void purgeDeletedKeyReturns404() throws InterruptedException {
server.enqueue(response404());
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
boolean status = vaultApi.purgeDeletedKey(vaultUri, RECOVERABLE_KEY_NAME);
String path = String.format("/deletedkeys/%s?%s", RECOVERABLE_KEY_NAME, apiVersion);
assertSent(server, "DELETE", path);
assertFalse(status);
}
public void encrypt() throws InterruptedException {
server.enqueue(jsonResponse("/vaultkeyencrypt.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
KeyOperationResult encryptResult = vaultApi.encrypt(vaultUri,
KEY_NAME,
null,
cryptoAlgorithm,
cryptoText
);
String path = String.format("/keys/%s/encrypt?%s", KEY_NAME, apiVersion);
assertSent(server, "POST", path, stringFromResource("/vaultkeyencryptrequestbody.json"));
assertNotNull(encryptResult);
assertTrue(!encryptResult.value().isEmpty());
}
public void decrypt() throws InterruptedException {
server.enqueue(jsonResponse("/vaultkeydecrypt.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
KeyOperationResult decryptResult = vaultApi.decrypt(vaultUri,
KEY_NAME,
null,
cryptoAlgorithm,
keyDecryptData
);
String path = String.format("/keys/%s/decrypt?%s", KEY_NAME, apiVersion);
assertSent(server, "POST", path, stringFromResource("/vaultkeydecryptrequestbody.json"));
assertNotNull(decryptResult);
assertTrue(!decryptResult.value().isEmpty());
}
public void sign() throws InterruptedException {
server.enqueue(jsonResponse("/vaultkeysign.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
KeyOperationResult signResult = vaultApi.sign(vaultUri,
KEY_NAME,
null,
signatureAlgorithm,
hashToSign
);
String path = String.format("/keys/%s/sign?%s", KEY_NAME, apiVersion);
assertSent(server, "POST", path, stringFromResource("/vaultkeysignrequestbody.json"));
assertNotNull(signResult);
assertTrue(!signResult.value().isEmpty());
}
public void verify() throws InterruptedException {
server.enqueue(jsonResponse("/vaultkeyverify.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
boolean verifyResult = vaultApi.verify(vaultUri,
KEY_NAME,
null,
signatureAlgorithm,
hashToSign,
keySignedData
);
String path = String.format("/keys/%s/verify?%s", KEY_NAME, apiVersion);
assertSent(server, "POST", path, stringFromResource("/vaultkeyverifyrequestbody.json"));
assertTrue(verifyResult);
}
public void wrap() throws InterruptedException {
server.enqueue(jsonResponse("/vaultkeywrap.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
KeyOperationResult wrapResult = vaultApi.wrap(vaultUri,
KEY_NAME,
null,
cryptoAlgorithm,
contentEncryptionKey
);
String path = String.format("/keys/%s/wrapkey?%s", KEY_NAME, apiVersion);
assertSent(server, "POST", path, stringFromResource("/vaultkeywraprequestbody.json"));
assertNotNull(wrapResult);
assertTrue(!wrapResult.value().isEmpty());
}
public void unwrap() throws InterruptedException {
server.enqueue(jsonResponse("/vaultkeyunwrap.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
KeyOperationResult unwrapResult = vaultApi.unwrap(vaultUri,
KEY_NAME,
null,
cryptoAlgorithm,
keyWrappedData
);
String path = String.format("/keys/%s/unwrapkey?%s", KEY_NAME, apiVersion);
assertSent(server, "POST", path, stringFromResource("/vaultkeyunwraprequestbody.json"));
assertNotNull(unwrapResult);
assertTrue(!unwrapResult.value().isEmpty());
}
// Secret mock tests
public void listSecrets() throws InterruptedException {
server.enqueue(jsonResponse("/vaultlistsecrets.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
List<Secret> secrets = vaultApi.listSecrets(vaultUri);
String path = String.format("/secrets?%s", apiVersion);
assertSent(server, "GET", path);
assertNotNull(secrets);
assertTrue(secrets.size() > 0);
}
public void listSecretsReturns404() throws InterruptedException {
server.enqueue(response404());
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
List<Secret> secrets = vaultApi.listSecrets(vaultUri);
String path = String.format("/secrets?%s", apiVersion);
assertSent(server, "GET", path);
assertTrue(secrets.isEmpty());
}
public void setSecret() throws InterruptedException {
server.enqueue(jsonResponse("/vaultsetsecret.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
SecretAttributes attributes = SecretAttributes.create(true, null, null, null, null, null);
SecretBundle secretBundle = vaultApi.setSecret(vaultUri,
SECRET_NAME,
attributes,
"testSecretKey",
null,
sampleSecret
);
String path = String.format("/secrets/%s?%s", SECRET_NAME, apiVersion);
assertSent(server, "PUT", path, stringFromResource("/vaultsetsecretrequestbody.json"));
assertNotNull(secretBundle);
assertTrue(!secretBundle.id().isEmpty());
}
public void getSecret() throws InterruptedException {
server.enqueue(jsonResponse("/vaultgetsecret.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
SecretBundle secret = vaultApi.getSecret(vaultUri, SECRET_NAME, null);
String path = String.format("/secrets/%s?%s", SECRET_NAME, apiVersion);
assertSent(server, "GET", path);
assertNotNull(secret);
assertNotNull(secret.attributes().created());
}
public void getSecretReturns404() throws InterruptedException {
server.enqueue(response404());
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
SecretBundle secret = vaultApi.getSecret(vaultUri, SECRET_NAME, null);
String path = String.format("/secrets/%s?%s", SECRET_NAME, apiVersion);
assertSent(server, "GET", path);
assertNull(secret);
}
public void deleteSecret() throws InterruptedException {
server.enqueue(jsonResponse("/vaultdeletesecret.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
DeletedSecretBundle secret = vaultApi.deleteSecret(vaultUri, SECRET_NAME);
String path = String.format("/secrets/%s?%s", SECRET_NAME, apiVersion);
assertSent(server, "DELETE", path);
assertNotNull(secret);
assertNotNull(secret.attributes().created());
}
public void deleteSecretReturns404() throws InterruptedException {
server.enqueue(response404());
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
DeletedSecretBundle secret = vaultApi.deleteSecret(vaultUri, SECRET_NAME);
String path = String.format("/secrets/%s?%s", SECRET_NAME, apiVersion);
assertSent(server, "DELETE", path);
assertNull(secret);
}
public void getSecretVersions() throws InterruptedException {
server.enqueue(jsonResponse("/vaultgetsecretversions.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
List<Secret> secrets = vaultApi.getSecretVersions(vaultUri, SECRET_NAME);
String path = String.format("/secrets/%s/versions?%s", SECRET_NAME, apiVersion);
assertSent(server, "GET", path);
assertNotNull(secrets);
assertTrue(secrets.size() > 0);
assertNotNull(secrets.get(0).attributes().created());
}
public void getSecretVersionsReturns404() throws InterruptedException {
server.enqueue(response404());
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
List<Secret> secrets = vaultApi.getSecretVersions(vaultUri, SECRET_NAME);
String path = String.format("/secrets/%s/versions?%s", SECRET_NAME, apiVersion);
assertSent(server, "GET", path);
assertTrue(secrets.isEmpty());
}
public void updateSecret() throws InterruptedException {
server.enqueue(jsonResponse("/vaultupdatekey.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
Map<String, String> tags = new HashMap<String, String>();
tags.put("purpose", "testing");
SecretBundle updatedSecret = vaultApi.updateSecret(vaultUri, SECRET_NAME, null, null, null, tags);
String path = String.format("/secrets/%s?%s", SECRET_NAME, apiVersion);
assertSent(server, "PATCH", path, stringFromResource("/vaultupdatesecretrequestbody.json"));
assertNotNull(updatedSecret);
assertNotNull(updatedSecret.attributes().created());
}
public void updateSecretWithVersion() throws InterruptedException {
server.enqueue(jsonResponse("/vaultupdatesecretwithversion.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
String secretVersion = "b936ececbc674f3bb1367ae50d28ada0";
Map<String, String> tags = new HashMap<String, String>();
tags.put("purpose", "testing again");
SecretBundle updatedSecret = vaultApi.updateSecret(vaultUri, SECRET_NAME, secretVersion, null, null, tags);
String path = String.format("/secrets/%s/%s?%s", SECRET_NAME, secretVersion, apiVersion);
assertSent(server, "PATCH", path, stringFromResource("/vaultupdatesecretwithversionrequestbody.json"));
assertNotNull(updatedSecret);
assertNotNull(updatedSecret.attributes().created());
}
public void backupSecret() throws InterruptedException {
server.enqueue(jsonResponse("/vaultbackupsecret.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
String secretBackup = vaultApi.backupSecret(vaultUri, SECRET_NAME);
String path = String.format("/secrets/%s/backup?%s", SECRET_NAME, apiVersion);
assertSent(server, "POST", path);
assertNotNull(secretBackup);
assertTrue(secretBackup.length() > 0);
}
public void restoreSecret() throws InterruptedException {
server.enqueue(jsonResponse("/vaultrestoresecret.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
SecretBundle restoredSecret = vaultApi.restoreSecret(vaultUri, secretBackup);
String path = String.format("/secrets/restore?%s", apiVersion);
assertSent(server, "POST", path, stringFromResource("/vaultrestoresecretrequestbody.json"));
assertNotNull(restoredSecret);
assertNotNull(restoredSecret.attributes().created());
}
public void listDeletedSecrets() throws InterruptedException {
server.enqueue(jsonResponse("/vaultlistdeletedsecrets.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
List<DeletedSecretBundle> secrets = vaultApi.listDeletedSecrets(vaultUri);
String path = String.format("/deletedsecrets?%s", apiVersion);
assertSent(server, "GET", path);
assertNotNull(secrets);
assertTrue(secrets.size() > 0);
}
public void listDeletedSecretsReturns404() throws InterruptedException {
server.enqueue(response404());
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
List<DeletedSecretBundle> secrets = vaultApi.listDeletedSecrets(vaultUri);
String path = String.format("/deletedsecrets?%s", apiVersion);
assertSent(server, "GET", path);
assertTrue(secrets.isEmpty());
}
public void getDeletedSecret() throws InterruptedException {
server.enqueue(jsonResponse("/vaultgetdeletedsecret.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
DeletedSecretBundle secret = vaultApi.getDeletedSecret(vaultUri, RECOVERABLE_SECRET_NAME);
String path = String.format("/deletedsecrets/%s?%s", RECOVERABLE_SECRET_NAME, apiVersion);
assertSent(server, "GET", path);
assertNotNull(secret);
assertTrue(!secret.deletedDate().isEmpty());
}
public void getDeletedSecretReturns404() throws InterruptedException {
server.enqueue(response404());
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
DeletedSecretBundle secret = vaultApi.getDeletedSecret(vaultUri, RECOVERABLE_SECRET_NAME);
String path = String.format("/deletedsecrets/%s?%s", RECOVERABLE_SECRET_NAME, apiVersion);
assertSent(server, "GET", path);
assertNull(secret);
}
public void recoverDeletedSecret() throws InterruptedException {
server.enqueue(jsonResponse("/vaultrecoverdeletedsecret.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
SecretBundle secret = vaultApi.recoverDeletedSecret(vaultUri, RECOVERABLE_SECRET_NAME);
String path = String.format("/deletedsecrets/%s/recover?%s", RECOVERABLE_SECRET_NAME, apiVersion);
assertSent(server, "POST", path);
assertNotNull(secret);
assertNotNull(secret.attributes().created());
}
public void purgeDeletedSecret() throws InterruptedException {
server.enqueue(response200());
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
boolean status = vaultApi.purgeDeletedSecret(vaultUri, RECOVERABLE_SECRET_NAME);
String path = String.format("/deletedsecrets/%s?%s", RECOVERABLE_SECRET_NAME, apiVersion);
assertSent(server, "DELETE", path);
assertTrue(status);
}
public void purgeDeletedSecretReturns404() throws InterruptedException {
server.enqueue(response404());
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
boolean status = vaultApi.purgeDeletedSecret(vaultUri, RECOVERABLE_SECRET_NAME);
String path = String.format("/deletedsecrets/%s?%s", RECOVERABLE_SECRET_NAME, apiVersion);
assertSent(server, "DELETE", path);
assertFalse(status);
}
public void createCertificate() throws InterruptedException {
server.enqueue(jsonResponse("/vaultcreatecertificate.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
CertificatePolicy policy = 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)
);
CertificateOperation certOp = vaultApi.createCertificate(vaultUri,
CERTIFICATE_NAME,
null,
policy,
null
);
String path = String.format("/certificates/%s/create?%s", CERTIFICATE_NAME, apiVersion);
assertSent(server, "POST", path, stringFromResource("/vaultcreatecertificaterequestbody.json"));
assertNotNull(certOp);
assertTrue(!certOp.id().isEmpty());
}
public void getCertificate() throws InterruptedException {
server.enqueue(jsonResponse("/vaultgetcertificate.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
CertificateBundle cert = vaultApi.getCertificate(vaultUri, CERTIFICATE_NAME, null);
String path = String.format("/certificates/%s?%s", CERTIFICATE_NAME, apiVersion);
assertSent(server, "GET", path);
assertNotNull(cert);
assertTrue(!cert.id().isEmpty());
}
public void getCertificateReturns404() throws InterruptedException {
server.enqueue(response404());
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
CertificateBundle cert = vaultApi.getCertificate(vaultUri, CERTIFICATE_NAME, null);
String path = String.format("/certificates/%s?%s", CERTIFICATE_NAME, apiVersion);
assertSent(server, "GET", path);
assertNull(cert);
}
public void deleteCertificate() throws InterruptedException {
server.enqueue(jsonResponse("/vaultdeletecertificate.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
DeletedCertificateBundle cert = vaultApi.deleteCertificate(vaultUri, CERTIFICATE_NAME);
String path = String.format("/certificates/%s?%s", CERTIFICATE_NAME, apiVersion);
assertSent(server, "DELETE", path);
assertNotNull(cert);
assertTrue(!cert.id().isEmpty());
}
public void deleteCertificateReturns404() throws InterruptedException {
server.enqueue(response404());
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
DeletedCertificateBundle cert = vaultApi.deleteCertificate(vaultUri, CERTIFICATE_NAME);
String path = String.format("/certificates/%s?%s", CERTIFICATE_NAME, apiVersion);
assertSent(server, "DELETE", path);
assertNull(cert);
}
public void listCertificates() throws InterruptedException {
server.enqueue(jsonResponse("/vaultlistcertificates.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
List<Certificate> certs = vaultApi.getCertificates(vaultUri);
String path = String.format("/certificates?%s", apiVersion);
assertSent(server, "GET", path);
assertNotNull(certs);
assertTrue(certs.size() > 0);
}
public void listCertificatesReturns404() throws InterruptedException {
server.enqueue(response404());
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
List<Certificate> certs = vaultApi.getCertificates(vaultUri);
String path = String.format("/certificates?%s", apiVersion);
assertSent(server, "GET", path);
assertTrue(certs.isEmpty());
}
public void listDeletedCertificates() throws InterruptedException {
server.enqueue(jsonResponse("/vaultlistdeletedcertificates.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
List<DeletedCertificate> certs = vaultApi.getDeletedCertificates(vaultUri);
String path = String.format("/deletedcertificates?%s", apiVersion);
assertSent(server, "GET", path);
assertNotNull(certs);
assertTrue(certs.size() > 0);
}
public void listDeletedCertificatesReturns404() throws InterruptedException {
server.enqueue(response404());
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
List<DeletedCertificate> certs = vaultApi.getDeletedCertificates(vaultUri);
String path = String.format("/deletedcertificates?%s", apiVersion);
assertSent(server, "GET", path);
assertTrue(certs.isEmpty());
}
public void getDeletedCertificate() throws InterruptedException {
server.enqueue(jsonResponse("/vaultgetdeletedcertificate.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
DeletedCertificateBundle cert = vaultApi.getDeletedCertificate(vaultUri, RECOVERABLE_CERTIFICATE_NAME);
String path = String.format("/deletedcertificates/%s?%s", RECOVERABLE_CERTIFICATE_NAME, apiVersion);
assertSent(server, "GET", path);
assertNotNull(cert);
assertTrue(!cert.id().isEmpty());
}
public void getDeletedCertificateReturns404() throws InterruptedException {
server.enqueue(response404());
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
DeletedCertificateBundle cert = vaultApi.getDeletedCertificate(vaultUri, RECOVERABLE_CERTIFICATE_NAME);
String path = String.format("/deletedcertificates/%s?%s", RECOVERABLE_CERTIFICATE_NAME, apiVersion);
assertSent(server, "GET", path);
assertNull(cert);
}
public void recoverDeletedCertificate() throws InterruptedException {
server.enqueue(jsonResponse("/vaultrecoverdeletedcertificate.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
CertificateBundle cert = vaultApi.recoverDeletedCertificate(vaultUri, RECOVERABLE_CERTIFICATE_NAME);
String path = String.format("/deletedcertificates/%s/recover?%s", RECOVERABLE_CERTIFICATE_NAME, apiVersion);
assertSent(server, "POST", path);
assertNotNull(cert);
assertTrue(!cert.id().isEmpty());
}
public void purgeDeletedCertificate() throws InterruptedException {
server.enqueue(response200());
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
boolean status = vaultApi.purgeDeletedCertificate(vaultUri, RECOVERABLE_CERTIFICATE_NAME);
String path = String.format("/deletedcertificates/%s?%s", RECOVERABLE_CERTIFICATE_NAME, apiVersion);
assertSent(server, "DELETE", path);
assertTrue(status);
}
public void purgeDeletedCertificateReturns404() throws InterruptedException {
server.enqueue(response404());
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
boolean status = vaultApi.purgeDeletedCertificate(vaultUri, RECOVERABLE_CERTIFICATE_NAME);
String path = String.format("/deletedcertificates/%s?%s", RECOVERABLE_CERTIFICATE_NAME, apiVersion);
assertSent(server, "DELETE", path);
assertFalse(status);
}
public void listCertificateVersions() throws InterruptedException {
server.enqueue(jsonResponse("/vaultlistcertificateversions.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
List<Certificate> certs = vaultApi.getCertificateVersions(vaultUri, CERTIFICATE_NAME);
String path = String.format("/certificates/%s/versions?%s", CERTIFICATE_NAME, apiVersion);
assertSent(server, "GET", path);
assertNotNull(certs);
assertTrue(certs.size() > 0);
}
public void listCertificateVersionsReturns404() throws InterruptedException {
server.enqueue(response404());
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
List<Certificate> certs = vaultApi.getCertificateVersions(vaultUri, CERTIFICATE_NAME);
String path = String.format("/certificates/%s/versions?%s", CERTIFICATE_NAME, apiVersion);
assertSent(server, "GET", path);
assertTrue(certs.isEmpty());
}
public void updateCertificate() throws InterruptedException {
server.enqueue(jsonResponse("/vaultupdatecertificate.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
Map<String, String> tags = new HashMap<String, String>();
tags.put("selfsigned", "true");
CertificatePolicy policy = 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)
);
CertificateBundle certBundle = vaultApi.updateCertificate(
vaultUri,
CERTIFICATE_NAME,
null,
null,
policy,
tags
);
String path = String.format("/certificates/%s?%s", CERTIFICATE_NAME, apiVersion);
assertSent(server, "PATCH", path, stringFromResource("/vaultupdatecertificaterequestbody.json"));
assertNotNull(certBundle);
assertTrue(!certBundle.id().isEmpty());
}
public void updateCertificateVersion() {
// Update the specific version of a 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("azure bug - update using version complains about needing policy");
}
public void importCertificate() throws InterruptedException {
server.enqueue(jsonResponse("/vaultimportcertificate.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
String certPem = IMPORTABLE_CERTIFICATE_PEM;
CertificateBundle certBundle = null;
try {
certBundle = vaultApi.importCertificate(
vaultUri,
RECOVERABLE_CERTIFICATE_NAME,
null,
CertificatePolicy.create(
null,
null,
null,
null,
null,
SecretProperties.create("application/x-pem-file"),
null
),
null,
null,
certPem);
} catch (ResourceNotFoundException rnf) {
assertNotNull(rnf);
}
String path = String.format("/certificates/%s/import?%s", RECOVERABLE_CERTIFICATE_NAME, apiVersion);
assertSent(server, "POST", path, stringFromResource("/vaultimportcertificaterequestbody.json"));
assertNotNull(certBundle);
assertTrue(!certBundle.id().isEmpty());
}
public void mergeCertificate() throws InterruptedException {
// Merging a certificate is for when a CSR is signed by an external CA
server.enqueue(jsonResponse("/vaultmergecertificate.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
CertificateAttributes attributes = CertificateAttributes.create(null, true, null, null, null, null);
CertificateBundle certBundle = vaultApi.mergeCertificate(
vaultUri,
CERTIFICATE_NAME,
attributes,
null,
Arrays.asList(mergeX5C)
);
String path = String.format("/certificates/%s/pending/merge?%s", CERTIFICATE_NAME, apiVersion);
assertSent(server, "POST", path, stringFromResource("/vaultmergecertificaterequestbody.json"));
assertNotNull(certBundle);
assertTrue(!certBundle.attributes().created().toString().isEmpty());
}
public void getCertificateOperation() throws InterruptedException {
server.enqueue(jsonResponse("/vaultgetcertificateoperation.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
CertificateOperation certOp = vaultApi.getCertificateOperation(vaultUri, CERTIFICATE_NAME);
String path = String.format("/certificates/%s/pending?%s", CERTIFICATE_NAME, apiVersion);
assertSent(server, "GET", path);
assertNotNull(certOp);
assertTrue(!certOp.id().isEmpty());
}
public void getCertificateOperationReturns404() throws InterruptedException {
server.enqueue(response404());
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
CertificateOperation certOp = vaultApi.getCertificateOperation(vaultUri, CERTIFICATE_NAME);
String path = String.format("/certificates/%s/pending?%s", CERTIFICATE_NAME, apiVersion);
assertSent(server, "GET", path);
assertNull(certOp);
}
public void updateCertificateOperation() throws InterruptedException {
server.enqueue(jsonResponse("/vaultupdatecertificateoperation.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
CertificateOperation certOp = vaultApi.updateCertificateOperation(vaultUri, CERTIFICATE_NAME, true);
String path = String.format("/certificates/%s/pending?%s", CERTIFICATE_NAME, apiVersion);
assertSent(server, "PATCH", path, stringFromResource("/vaultupdatecertificateoperationrequestbody.json"));
assertNotNull(certOp);
assertTrue(!certOp.id().isEmpty());
}
public void deleteCertificateOperation() throws InterruptedException {
server.enqueue(jsonResponse("/vaultdeletecertificateoperation.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
CertificateOperation certOp = vaultApi.deleteCertificateOperation(vaultUri, CERTIFICATE_NAME);
String path = String.format("/certificates/%s/pending?%s", CERTIFICATE_NAME, apiVersion);
assertSent(server, "DELETE", path);
assertNotNull(certOp);
assertTrue(!certOp.id().isEmpty());
}
public void deleteCertificateOperationReturns404() throws InterruptedException {
server.enqueue(response404());
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
CertificateOperation certOp = vaultApi.deleteCertificateOperation(vaultUri, CERTIFICATE_NAME);
String path = String.format("/certificates/%s/pending?%s", CERTIFICATE_NAME, apiVersion);
assertSent(server, "DELETE", path);
assertNull(certOp);
}
public void setCertificateIssuer() throws InterruptedException {
server.enqueue(jsonResponse("/vaultsetcertificateissuer.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
AdministrationDetails adminDetail = AdministrationDetails.create(
"adminguy@certsforme.com",
"Admin",
"Guy",
"867-5309"
);
List<AdministrationDetails> adminDetails = new ArrayList<AdministrationDetails>();
adminDetails.add(adminDetail);
OrganizationDetails orgDetails = OrganizationDetails.create(
adminDetails,
null
);
IssuerBundle issuer = null;
try {
issuer = vaultApi.setCertificateIssuer(
vaultUri,
CERTIFICATE_ISSUER_NAME,
null,
IssuerCredentials.create("imauser", "This1sMyPa55wurD!"),
orgDetails,
"GlobalSign"
);
} catch (ResourceNotFoundException rnf) {
assertNotNull(rnf);
}
String path = String.format("/certificates/issuers/%s?%s", CERTIFICATE_ISSUER_NAME, apiVersion);
assertSent(server, "PUT", path, stringFromResource("/vaultsetcertificateissuerrequestbody.json"));
assertNotNull(issuer);
assertTrue(!issuer.id().isEmpty());
}
public void listCertificateIssuers() throws InterruptedException {
server.enqueue(jsonResponse("/vaultlistcertificateissuers.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
List<CertificateIssuer> issuers = vaultApi.getCertificateIssuers(vaultUri);
String path = String.format("/certificates/issuers?%s", apiVersion);
assertSent(server, "GET", path);
assertNotNull(issuers);
assertTrue(issuers.size() > 0);
}
public void listCertificateIssuersReturns404() throws InterruptedException {
server.enqueue(response404());
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
List<CertificateIssuer> issuers = vaultApi.getCertificateIssuers(vaultUri);
String path = String.format("/certificates/issuers?%s", apiVersion);
assertSent(server, "GET", path);
assertTrue(issuers.isEmpty());
}
public void getCertificateIssuer() throws InterruptedException {
server.enqueue(jsonResponse("/vaultgetcertificateissuer.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
IssuerBundle issuer = vaultApi.getCertificateIssuer(vaultUri, CERTIFICATE_ISSUER_NAME);
String path = String.format("/certificates/issuers/%s?%s", CERTIFICATE_ISSUER_NAME, apiVersion);
assertSent(server, "GET", path);
assertNotNull(issuer);
assertTrue(!issuer.id().isEmpty());
}
public void getCertificateIssuerReturns404() throws InterruptedException {
server.enqueue(response404());
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
IssuerBundle issuer = vaultApi.getCertificateIssuer(vaultUri, CERTIFICATE_ISSUER_NAME);
String path = String.format("/certificates/issuers/%s?%s", CERTIFICATE_ISSUER_NAME, apiVersion);
assertSent(server, "GET", path);
assertNull(issuer);
}
public void updateCertificateIssuer() throws InterruptedException {
server.enqueue(jsonResponse("/vaultupdatecertificateissuer.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
AdministrationDetails adminDetail = AdministrationDetails.create(
"adminguy@certsforme.com",
"Admin",
"Guy",
"867-5309"
);
List<AdministrationDetails> adminDetails = new ArrayList<AdministrationDetails>();
adminDetails.add(adminDetail);
OrganizationDetails orgDetails = OrganizationDetails.create(
adminDetails,
null
);
IssuerBundle issuer = vaultApi.updateCertificateIssuer(
vaultUri,
"globalsign01",
null,
IssuerCredentials.create("imauser", "CanHa5P455wuRd!"),
orgDetails,
"GlobalSign"
);
String path = String.format("/certificates/issuers/%s?%s", CERTIFICATE_ISSUER_NAME, apiVersion);
assertSent(server, "PATCH", path, stringFromResource("/vaultupdatecertificateissuerrequestbody.json"));
assertNotNull(issuer);
assertTrue(!issuer.id().isEmpty());
}
public void deleteCertificateIssuer() throws InterruptedException {
server.enqueue(jsonResponse("/vaultdeletecertificateissuer.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
IssuerBundle issuer = vaultApi.deleteCertificateIssuer(vaultUri, CERTIFICATE_ISSUER_NAME);
String path = String.format("/certificates/issuers/%s?%s", CERTIFICATE_ISSUER_NAME, apiVersion);
assertSent(server, "DELETE", path);
assertNotNull(issuer);
assertTrue(!issuer.id().isEmpty());
}
public void deleteCertificateIssuerReturns404() throws InterruptedException {
server.enqueue(response404());
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
IssuerBundle issuer = vaultApi.deleteCertificateIssuer(vaultUri, CERTIFICATE_ISSUER_NAME);
String path = String.format("/certificates/issuers/%s?%s", CERTIFICATE_ISSUER_NAME, apiVersion);
assertSent(server, "DELETE", path);
assertNull(issuer);
}
public void getCertificateContacts() throws InterruptedException {
server.enqueue(jsonResponse("/vaultgetcertificatecontacts.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
Contacts contacts = vaultApi.getCertificateContacts(vaultUri);
String path = String.format("/certificates/contacts?%s", apiVersion);
assertSent(server, "GET", path);
assertNotNull(contacts);
assertTrue(!contacts.id().isEmpty());
assertTrue(contacts.contacts().size() > 0);
}
public void getCertificateContactsReturns404() throws InterruptedException {
server.enqueue(response404());
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
IssuerBundle issuer = null;
try {
issuer = vaultApi.getCertificateIssuer(vaultUri, CERTIFICATE_ISSUER_NAME);
} catch (ResourceNotFoundException rnf) {
assertNotNull(rnf);
}
String path = String.format("/certificates/issuers/%s?%s", CERTIFICATE_ISSUER_NAME, apiVersion);
assertSent(server, "GET", path);
assertNull(issuer);
}
public void setCertificateContacts() throws InterruptedException {
server.enqueue(jsonResponse("/vaultsetcertificatecontacts.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
List<Contact> contactsIn = new ArrayList<Contact>();
contactsIn.add(Contact.create("foo@bar.com", "Foo bar", "867-5309"));
Contacts contacts = vaultApi.setCertificateContacts(vaultUri, contactsIn);
String path = String.format("/certificates/contacts?%s", apiVersion);
assertSent(server, "PUT", path, stringFromResource("/vaultsetcertificatecontactsrequestbody.json"));
assertNotNull(contacts);
assertTrue(!contacts.id().isEmpty());
assertTrue(contacts.contacts().size() > 0);
}
public void deleteCertificateContacts() throws InterruptedException {
server.enqueue(jsonResponse("/vaultdeletecertificatecontacts.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
Contacts contacts = vaultApi.deleteCertificateContacts(vaultUri);
String path = String.format("/certificates/contacts?%s", apiVersion);
assertSent(server, "DELETE", path);
assertNotNull(contacts);
assertTrue(!contacts.id().isEmpty());
assertTrue(contacts.contacts().size() > 0);
}
public void deleteCertificateContactsReturns404() throws InterruptedException {
server.enqueue(response404());
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
Contacts contacts = vaultApi.deleteCertificateContacts(vaultUri);
String path = String.format("/certificates/contacts?%s", apiVersion);
assertSent(server, "DELETE", path);
assertNull(contacts);
}
public void getCertificatePolicy() throws InterruptedException {
server.enqueue(jsonResponse("/vaultgetcertificatepolicy.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
CertificatePolicy policy = vaultApi.getCertificatePolicy(vaultUri, CERTIFICATE_NAME);
String path = String.format("/certificates/%s/policy?%s", CERTIFICATE_NAME, apiVersion);
assertSent(server, "GET", path);
assertNotNull(policy);
assertTrue(!policy.id().isEmpty());
}
public void getCertificatePolicyReturns404() throws InterruptedException {
server.enqueue(response404());
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
CertificatePolicy policy = vaultApi.getCertificatePolicy(vaultUri, CERTIFICATE_NAME);
String path = String.format("/certificates/%s/policy?%s", CERTIFICATE_NAME, apiVersion);
assertSent(server, "GET", path);
assertNull(policy);
}
public void updateCertificatePolicy() throws InterruptedException {
server.enqueue(jsonResponse("/vaultupdatecertificatepolicy.json").setResponseCode(200));
final VaultApi vaultApi = api.getVaultApi(resourceGroup);
CertificatePolicy policy = vaultApi.updateCertificatePolicy(
vaultUri,
CERTIFICATE_NAME,
null,
null,
KeyProperties.create(true, 3072, "RSA", false),
null,
null,
null
);
String path = String.format("/certificates/%s/policy?%s", CERTIFICATE_NAME, apiVersion);
assertSent(server, "PATCH", path, stringFromResource("/vaultupdatecertificatepolicyrequestbody.json"));
assertNotNull(policy);
assertTrue(!policy.id().isEmpty());
}
}