From 454a31bf51fd84a9667f822959b668dcce7226bd Mon Sep 17 00:00:00 2001 From: Jianghao Lu Date: Wed, 11 Dec 2019 18:55:49 -0800 Subject: [PATCH 01/12] Add e2e module --- sdk/e2e/pom.xml | 78 ++++++++++++++++++ .../ManagedIdentityCredentialLiveTest.java | 70 ++++++++++++++++ sdk/e2e/src/test/resources/keyStore.pfx | Bin 0 -> 4285 bytes 3 files changed, 148 insertions(+) create mode 100644 sdk/e2e/pom.xml create mode 100644 sdk/e2e/src/test/java/com/azure/e2e/identity/ManagedIdentityCredentialLiveTest.java create mode 100644 sdk/e2e/src/test/resources/keyStore.pfx diff --git a/sdk/e2e/pom.xml b/sdk/e2e/pom.xml new file mode 100644 index 000000000000..0aaee9478104 --- /dev/null +++ b/sdk/e2e/pom.xml @@ -0,0 +1,78 @@ + + + 4.0.0 + + com.azure + azure-e2e + 1.0.0-beta.1 + + Microsoft Azure client library end to end tests and samples + This module contains end to end tests and samples for Microsoft Azure client libraries. + https://github.com/Azure/azure-sdk-for-java + + + com.azure + azure-client-sdk-parent + 1.7.0 + ../../pom.client.xml + + + + + com.azure + azure-core + 1.2.0-beta.1 + + + com.azure + azure-core-http-netty + 1.2.0-beta.1 + + + com.azure + azure-identity + 1.1.0-beta.1 + + + com.azure + azure-security-keyvault-keys + 4.1.0-beta.1 + + + com.azure + azure-security-keyvault-secrets + 4.1.0-beta.1 + + + com.azure + azure-security-keyvault-certificates + 4.0.0-beta.7 + + + org.slf4j + slf4j-api + 1.7.28 + + + + com.azure + azure-core-test + 1.1.0-beta.1 + test + + + junit + junit + 4.13-beta-3 + test + + + io.projectreactor + reactor-test + 3.3.0.RELEASE + test + + + diff --git a/sdk/e2e/src/test/java/com/azure/e2e/identity/ManagedIdentityCredentialLiveTest.java b/sdk/e2e/src/test/java/com/azure/e2e/identity/ManagedIdentityCredentialLiveTest.java new file mode 100644 index 000000000000..b56e052d9734 --- /dev/null +++ b/sdk/e2e/src/test/java/com/azure/e2e/identity/ManagedIdentityCredentialLiveTest.java @@ -0,0 +1,70 @@ +package com.azure.e2e.identity; + +import com.azure.core.credential.TokenRequestContext; +import com.azure.core.util.Configuration; +import com.azure.identity.implementation.IdentityClient; +import com.azure.identity.implementation.IdentityClientBuilder; +import org.junit.Test; +import reactor.test.StepVerifier; + +import java.io.IOException; +import java.net.HttpURLConnection; +import java.net.URL; +import java.net.URLEncoder; + +public class ManagedIdentityCredentialLiveTest { + @Test + public void testMSIEndpointOnAzure() throws Exception { + Configuration configuration = Configuration.getGlobalConfiguration(); + org.junit.Assume.assumeTrue("Skipping MSI tests on Azure", configuration.contains(Configuration.PROPERTY_MSI_ENDPOINT)); + + IdentityClient client = new IdentityClientBuilder().build(); + StepVerifier.create(client.authenticateToManagedIdentityEndpoint( + configuration.get(Configuration.PROPERTY_MSI_ENDPOINT), + configuration.get(Configuration.PROPERTY_MSI_SECRET), + new TokenRequestContext().addScopes("https://management.azure.com/.default"))) + .expectNextMatches(accessToken -> accessToken != null && accessToken.getToken() != null) + .verifyComplete(); + } + + @Test + public void testIMDSEndpointOnAzure() throws Exception { + org.junit.Assume.assumeTrue("Skipping MSI tests on Azure", checkIMDSAvailable()); + + IdentityClient client = new IdentityClientBuilder().build(); + StepVerifier.create(client.authenticateToIMDSEndpoint( + new TokenRequestContext().addScopes("https://management.azure.com/.default"))) + .expectNextMatches(accessToken -> accessToken != null && accessToken.getToken() != null) + .verifyComplete(); + } + + private boolean checkIMDSAvailable() { + StringBuilder payload = new StringBuilder(); + + try { + payload.append("api-version="); + payload.append(URLEncoder.encode("2018-02-01", "UTF-8")); + } catch (IOException exception) { + return false; + } + + HttpURLConnection connection = null; + + try { + URL url = new URL(String.format("http://169.254.169.254/metadata/identity/oauth2/token?%s", + payload.toString())); + + connection = (HttpURLConnection) url.openConnection(); + connection.setRequestMethod("GET"); + connection.setConnectTimeout(500); + connection.connect(); + return true; + } catch (Exception e) { + return false; + } finally { + if (connection != null) { + connection.disconnect(); + } + } + } +} diff --git a/sdk/e2e/src/test/resources/keyStore.pfx b/sdk/e2e/src/test/resources/keyStore.pfx new file mode 100644 index 0000000000000000000000000000000000000000..299c760233807636f76260dbc6fab2f7b4c42d17 GIT binary patch literal 4285 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 Date: Thu, 12 Dec 2019 13:42:27 -0800 Subject: [PATCH 02/12] Add managed identity e2e test --- .../ManagedIdentityCredentialLiveTest.java | 136 +++++++++++++++++- 1 file changed, 132 insertions(+), 4 deletions(-) diff --git a/sdk/e2e/src/test/java/com/azure/e2e/identity/ManagedIdentityCredentialLiveTest.java b/sdk/e2e/src/test/java/com/azure/e2e/identity/ManagedIdentityCredentialLiveTest.java index b56e052d9734..0d55aa721699 100644 --- a/sdk/e2e/src/test/java/com/azure/e2e/identity/ManagedIdentityCredentialLiveTest.java +++ b/sdk/e2e/src/test/java/com/azure/e2e/identity/ManagedIdentityCredentialLiveTest.java @@ -2,8 +2,14 @@ import com.azure.core.credential.TokenRequestContext; import com.azure.core.util.Configuration; +import com.azure.identity.ManagedIdentityCredential; +import com.azure.identity.ManagedIdentityCredentialBuilder; import com.azure.identity.implementation.IdentityClient; import com.azure.identity.implementation.IdentityClientBuilder; +import com.azure.security.keyvault.secrets.SecretClient; +import com.azure.security.keyvault.secrets.SecretClientBuilder; +import com.azure.security.keyvault.secrets.models.KeyVaultSecret; +import org.junit.Assert; import org.junit.Test; import reactor.test.StepVerifier; @@ -13,10 +19,15 @@ import java.net.URLEncoder; public class ManagedIdentityCredentialLiveTest { + private static final String AZURE_VAULT_URL = "AZURE_VAULT_URL"; + private static final String VAULT_SECRET_NAME = "secret"; + @Test - public void testMSIEndpointOnAzure() throws Exception { + public void testMSIEndpointWithSystemAssigned() throws Exception { Configuration configuration = Configuration.getGlobalConfiguration(); - org.junit.Assume.assumeTrue("Skipping MSI tests on Azure", configuration.contains(Configuration.PROPERTY_MSI_ENDPOINT)); + org.junit.Assume.assumeTrue("Skipping MSI endpoint with system assigned", + configuration.contains(Configuration.PROPERTY_MSI_ENDPOINT) + && !configuration.contains(Configuration.PROPERTY_AZURE_CLIENT_ID)); IdentityClient client = new IdentityClientBuilder().build(); StepVerifier.create(client.authenticateToManagedIdentityEndpoint( @@ -28,8 +39,70 @@ public void testMSIEndpointOnAzure() throws Exception { } @Test - public void testIMDSEndpointOnAzure() throws Exception { - org.junit.Assume.assumeTrue("Skipping MSI tests on Azure", checkIMDSAvailable()); + public void testMSIEndpointWithSystemAssignedAccessKeyVault() throws Exception { + Configuration configuration = Configuration.getGlobalConfiguration(); + org.junit.Assume.assumeTrue("Skipping MSI endpoint with system assigned access Key Vault", + configuration.contains(Configuration.PROPERTY_MSI_ENDPOINT) + && !configuration.contains(Configuration.PROPERTY_AZURE_CLIENT_ID)); + + ManagedIdentityCredential credential = new ManagedIdentityCredentialBuilder().build(); + + SecretClient client = new SecretClientBuilder() + .credential(credential) + .vaultUrl(configuration.get(AZURE_VAULT_URL)) + .buildClient(); + + KeyVaultSecret secret = client.getSecret(VAULT_SECRET_NAME); + Assert.assertNotNull(secret); + Assert.assertEquals(VAULT_SECRET_NAME, secret.getName()); + Assert.assertNotNull(secret.getValue()); + } + + @Test + public void testMSIEndpointWithUserAssigned() throws Exception { + Configuration configuration = Configuration.getGlobalConfiguration(); + org.junit.Assume.assumeTrue("Skipping MSI endpoint with user assigned", + configuration.contains(Configuration.PROPERTY_MSI_ENDPOINT) + && configuration.contains(Configuration.PROPERTY_AZURE_CLIENT_ID)); + + IdentityClient client = new IdentityClientBuilder() + .clientId(configuration.get(Configuration.PROPERTY_AZURE_CLIENT_ID)) + .build(); + StepVerifier.create(client.authenticateToManagedIdentityEndpoint( + configuration.get(Configuration.PROPERTY_MSI_ENDPOINT), + configuration.get(Configuration.PROPERTY_MSI_SECRET), + new TokenRequestContext().addScopes("https://management.azure.com/.default"))) + .expectNextMatches(accessToken -> accessToken != null && accessToken.getToken() != null) + .verifyComplete(); + } + + @Test + public void testMSIEndpointWithUserAssignedAccessKeyVault() throws Exception { + Configuration configuration = Configuration.getGlobalConfiguration(); + org.junit.Assume.assumeTrue("Skipping MSI endpoint with user assigned access Key Vault", + configuration.contains(Configuration.PROPERTY_MSI_ENDPOINT) + && configuration.contains(Configuration.PROPERTY_AZURE_CLIENT_ID)); + + ManagedIdentityCredential credential = new ManagedIdentityCredentialBuilder() + .clientId(configuration.get(Configuration.PROPERTY_AZURE_CLIENT_ID)) + .build(); + + SecretClient client = new SecretClientBuilder() + .credential(credential) + .vaultUrl(configuration.get(AZURE_VAULT_URL)) + .buildClient(); + + KeyVaultSecret secret = client.getSecret(VAULT_SECRET_NAME); + Assert.assertNotNull(secret); + Assert.assertEquals(VAULT_SECRET_NAME, secret.getName()); + Assert.assertNotNull(secret.getValue()); + } + + @Test + public void testIMDSEndpointWithSystemAssigned() throws Exception { + Configuration configuration = Configuration.getGlobalConfiguration(); + org.junit.Assume.assumeTrue("Skipping IMDS with system assigned", + checkIMDSAvailable() && !configuration.contains(Configuration.PROPERTY_AZURE_CLIENT_ID)); IdentityClient client = new IdentityClientBuilder().build(); StepVerifier.create(client.authenticateToIMDSEndpoint( @@ -38,6 +111,61 @@ public void testIMDSEndpointOnAzure() throws Exception { .verifyComplete(); } + @Test + public void testIMDSEndpointWithSystemAssignedAccessKeyVault() throws Exception { + Configuration configuration = Configuration.getGlobalConfiguration(); + org.junit.Assume.assumeTrue("Skipping IMDS with system assigned access Key Vault", + checkIMDSAvailable() && !configuration.contains(Configuration.PROPERTY_AZURE_CLIENT_ID)); + + ManagedIdentityCredential credential = new ManagedIdentityCredentialBuilder().build(); + + SecretClient client = new SecretClientBuilder() + .credential(credential) + .vaultUrl(configuration.get(AZURE_VAULT_URL)) + .buildClient(); + + KeyVaultSecret secret = client.getSecret(VAULT_SECRET_NAME); + Assert.assertNotNull(secret); + Assert.assertEquals(VAULT_SECRET_NAME, secret.getName()); + Assert.assertNotNull(secret.getValue()); + } + + @Test + public void testIMDSEndpointWithUserAssigned() throws Exception { + Configuration configuration = Configuration.getGlobalConfiguration(); + org.junit.Assume.assumeTrue("Skipping IMDS with user assigned", + checkIMDSAvailable() && configuration.contains(Configuration.PROPERTY_AZURE_CLIENT_ID)); + + IdentityClient client = new IdentityClientBuilder() + .clientId(configuration.get(Configuration.PROPERTY_AZURE_CLIENT_ID)) + .build(); + StepVerifier.create(client.authenticateToIMDSEndpoint( + new TokenRequestContext().addScopes("https://management.azure.com/.default"))) + .expectNextMatches(accessToken -> accessToken != null && accessToken.getToken() != null) + .verifyComplete(); + } + + @Test + public void testIMDSEndpointWithUserAssignedAccessKeyVault() throws Exception { + Configuration configuration = Configuration.getGlobalConfiguration(); + org.junit.Assume.assumeTrue("Skipping IMDS with user assigned access Key Vault", + checkIMDSAvailable() && configuration.contains(Configuration.PROPERTY_AZURE_CLIENT_ID)); + + ManagedIdentityCredential credential = new ManagedIdentityCredentialBuilder() + .clientId(configuration.get(Configuration.PROPERTY_AZURE_CLIENT_ID)) + .build(); + + SecretClient client = new SecretClientBuilder() + .credential(credential) + .vaultUrl(configuration.get(AZURE_VAULT_URL)) + .buildClient(); + + KeyVaultSecret secret = client.getSecret(VAULT_SECRET_NAME); + Assert.assertNotNull(secret); + Assert.assertEquals(VAULT_SECRET_NAME, secret.getName()); + Assert.assertNotNull(secret.getValue()); + } + private boolean checkIMDSAvailable() { StringBuilder payload = new StringBuilder(); From f9b73215a091562a610c8682a8ef5791bf6c6898 Mon Sep 17 00:00:00 2001 From: Jianghao Lu Date: Thu, 12 Dec 2019 13:47:33 -0800 Subject: [PATCH 03/12] Add e2e module to pom.client.xml --- pom.client.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/pom.client.xml b/pom.client.xml index e538dd88b0c6..5f80c0d5bbc1 100644 --- a/pom.client.xml +++ b/pom.client.xml @@ -1236,5 +1236,6 @@ sdk/storage/azure-storage-file-share sdk/storage/azure-storage-file-datalake sdk/storage/azure-storage-queue + sdk/e2e From c149acdc47eab1e4288de0af1cf13ee4fa847c13 Mon Sep 17 00:00:00 2001 From: Jianghao Lu Date: Thu, 12 Dec 2019 15:28:15 -0800 Subject: [PATCH 04/12] Try to fix assume --- .../ManagedIdentityCredentialLiveTest.java | 36 +++++++++---------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/sdk/e2e/src/test/java/com/azure/e2e/identity/ManagedIdentityCredentialLiveTest.java b/sdk/e2e/src/test/java/com/azure/e2e/identity/ManagedIdentityCredentialLiveTest.java index 0d55aa721699..fd7adab7247a 100644 --- a/sdk/e2e/src/test/java/com/azure/e2e/identity/ManagedIdentityCredentialLiveTest.java +++ b/sdk/e2e/src/test/java/com/azure/e2e/identity/ManagedIdentityCredentialLiveTest.java @@ -25,9 +25,8 @@ public class ManagedIdentityCredentialLiveTest { @Test public void testMSIEndpointWithSystemAssigned() throws Exception { Configuration configuration = Configuration.getGlobalConfiguration(); - org.junit.Assume.assumeTrue("Skipping MSI endpoint with system assigned", - configuration.contains(Configuration.PROPERTY_MSI_ENDPOINT) - && !configuration.contains(Configuration.PROPERTY_AZURE_CLIENT_ID)); + org.junit.Assume.assumeTrue(configuration.contains(Configuration.PROPERTY_MSI_ENDPOINT)); + org.junit.Assume.assumeFalse(configuration.contains(Configuration.PROPERTY_AZURE_CLIENT_ID)); IdentityClient client = new IdentityClientBuilder().build(); StepVerifier.create(client.authenticateToManagedIdentityEndpoint( @@ -41,9 +40,8 @@ public void testMSIEndpointWithSystemAssigned() throws Exception { @Test public void testMSIEndpointWithSystemAssignedAccessKeyVault() throws Exception { Configuration configuration = Configuration.getGlobalConfiguration(); - org.junit.Assume.assumeTrue("Skipping MSI endpoint with system assigned access Key Vault", - configuration.contains(Configuration.PROPERTY_MSI_ENDPOINT) - && !configuration.contains(Configuration.PROPERTY_AZURE_CLIENT_ID)); + org.junit.Assume.assumeTrue(configuration.contains(Configuration.PROPERTY_MSI_ENDPOINT)); + org.junit.Assume.assumeFalse(configuration.contains(Configuration.PROPERTY_AZURE_CLIENT_ID)); ManagedIdentityCredential credential = new ManagedIdentityCredentialBuilder().build(); @@ -61,9 +59,8 @@ public void testMSIEndpointWithSystemAssignedAccessKeyVault() throws Exception { @Test public void testMSIEndpointWithUserAssigned() throws Exception { Configuration configuration = Configuration.getGlobalConfiguration(); - org.junit.Assume.assumeTrue("Skipping MSI endpoint with user assigned", - configuration.contains(Configuration.PROPERTY_MSI_ENDPOINT) - && configuration.contains(Configuration.PROPERTY_AZURE_CLIENT_ID)); + org.junit.Assume.assumeTrue(configuration.contains(Configuration.PROPERTY_MSI_ENDPOINT)); + org.junit.Assume.assumeTrue(configuration.contains(Configuration.PROPERTY_AZURE_CLIENT_ID)); IdentityClient client = new IdentityClientBuilder() .clientId(configuration.get(Configuration.PROPERTY_AZURE_CLIENT_ID)) @@ -79,9 +76,8 @@ public void testMSIEndpointWithUserAssigned() throws Exception { @Test public void testMSIEndpointWithUserAssignedAccessKeyVault() throws Exception { Configuration configuration = Configuration.getGlobalConfiguration(); - org.junit.Assume.assumeTrue("Skipping MSI endpoint with user assigned access Key Vault", - configuration.contains(Configuration.PROPERTY_MSI_ENDPOINT) - && configuration.contains(Configuration.PROPERTY_AZURE_CLIENT_ID)); + org.junit.Assume.assumeTrue(configuration.contains(Configuration.PROPERTY_MSI_ENDPOINT)); + org.junit.Assume.assumeTrue(configuration.contains(Configuration.PROPERTY_AZURE_CLIENT_ID)); ManagedIdentityCredential credential = new ManagedIdentityCredentialBuilder() .clientId(configuration.get(Configuration.PROPERTY_AZURE_CLIENT_ID)) @@ -101,8 +97,8 @@ public void testMSIEndpointWithUserAssignedAccessKeyVault() throws Exception { @Test public void testIMDSEndpointWithSystemAssigned() throws Exception { Configuration configuration = Configuration.getGlobalConfiguration(); - org.junit.Assume.assumeTrue("Skipping IMDS with system assigned", - checkIMDSAvailable() && !configuration.contains(Configuration.PROPERTY_AZURE_CLIENT_ID)); + org.junit.Assume.assumeTrue(checkIMDSAvailable()); + org.junit.Assume.assumeFalse(configuration.contains(Configuration.PROPERTY_AZURE_CLIENT_ID)); IdentityClient client = new IdentityClientBuilder().build(); StepVerifier.create(client.authenticateToIMDSEndpoint( @@ -114,8 +110,8 @@ public void testIMDSEndpointWithSystemAssigned() throws Exception { @Test public void testIMDSEndpointWithSystemAssignedAccessKeyVault() throws Exception { Configuration configuration = Configuration.getGlobalConfiguration(); - org.junit.Assume.assumeTrue("Skipping IMDS with system assigned access Key Vault", - checkIMDSAvailable() && !configuration.contains(Configuration.PROPERTY_AZURE_CLIENT_ID)); + org.junit.Assume.assumeTrue(checkIMDSAvailable()); + org.junit.Assume.assumeFalse(configuration.contains(Configuration.PROPERTY_AZURE_CLIENT_ID)); ManagedIdentityCredential credential = new ManagedIdentityCredentialBuilder().build(); @@ -133,8 +129,8 @@ public void testIMDSEndpointWithSystemAssignedAccessKeyVault() throws Exception @Test public void testIMDSEndpointWithUserAssigned() throws Exception { Configuration configuration = Configuration.getGlobalConfiguration(); - org.junit.Assume.assumeTrue("Skipping IMDS with user assigned", - checkIMDSAvailable() && configuration.contains(Configuration.PROPERTY_AZURE_CLIENT_ID)); + org.junit.Assume.assumeTrue(checkIMDSAvailable()); + org.junit.Assume.assumeTrue(configuration.contains(Configuration.PROPERTY_AZURE_CLIENT_ID)); IdentityClient client = new IdentityClientBuilder() .clientId(configuration.get(Configuration.PROPERTY_AZURE_CLIENT_ID)) @@ -148,8 +144,8 @@ public void testIMDSEndpointWithUserAssigned() throws Exception { @Test public void testIMDSEndpointWithUserAssignedAccessKeyVault() throws Exception { Configuration configuration = Configuration.getGlobalConfiguration(); - org.junit.Assume.assumeTrue("Skipping IMDS with user assigned access Key Vault", - checkIMDSAvailable() && configuration.contains(Configuration.PROPERTY_AZURE_CLIENT_ID)); + org.junit.Assume.assumeTrue(checkIMDSAvailable()); + org.junit.Assume.assumeTrue(configuration.contains(Configuration.PROPERTY_AZURE_CLIENT_ID)); ManagedIdentityCredential credential = new ManagedIdentityCredentialBuilder() .clientId(configuration.get(Configuration.PROPERTY_AZURE_CLIENT_ID)) From c06bb69a2deb9d376e5546104b6a34bc682ef02b Mon Sep 17 00:00:00 2001 From: Jianghao Lu Date: Thu, 12 Dec 2019 16:30:21 -0800 Subject: [PATCH 05/12] Work around global configuration issue --- .../ManagedIdentityCredentialLiveTest.java | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/sdk/e2e/src/test/java/com/azure/e2e/identity/ManagedIdentityCredentialLiveTest.java b/sdk/e2e/src/test/java/com/azure/e2e/identity/ManagedIdentityCredentialLiveTest.java index fd7adab7247a..1301c1310617 100644 --- a/sdk/e2e/src/test/java/com/azure/e2e/identity/ManagedIdentityCredentialLiveTest.java +++ b/sdk/e2e/src/test/java/com/azure/e2e/identity/ManagedIdentityCredentialLiveTest.java @@ -25,8 +25,8 @@ public class ManagedIdentityCredentialLiveTest { @Test public void testMSIEndpointWithSystemAssigned() throws Exception { Configuration configuration = Configuration.getGlobalConfiguration(); - org.junit.Assume.assumeTrue(configuration.contains(Configuration.PROPERTY_MSI_ENDPOINT)); - org.junit.Assume.assumeFalse(configuration.contains(Configuration.PROPERTY_AZURE_CLIENT_ID)); + org.junit.Assume.assumeNotNull(configuration.get(Configuration.PROPERTY_MSI_ENDPOINT)); + org.junit.Assume.assumeTrue(configuration.get(Configuration.PROPERTY_AZURE_CLIENT_ID) == null); IdentityClient client = new IdentityClientBuilder().build(); StepVerifier.create(client.authenticateToManagedIdentityEndpoint( @@ -40,8 +40,8 @@ public void testMSIEndpointWithSystemAssigned() throws Exception { @Test public void testMSIEndpointWithSystemAssignedAccessKeyVault() throws Exception { Configuration configuration = Configuration.getGlobalConfiguration(); - org.junit.Assume.assumeTrue(configuration.contains(Configuration.PROPERTY_MSI_ENDPOINT)); - org.junit.Assume.assumeFalse(configuration.contains(Configuration.PROPERTY_AZURE_CLIENT_ID)); + org.junit.Assume.assumeNotNull(configuration.get(Configuration.PROPERTY_MSI_ENDPOINT)); + org.junit.Assume.assumeTrue(configuration.get(Configuration.PROPERTY_AZURE_CLIENT_ID) == null); ManagedIdentityCredential credential = new ManagedIdentityCredentialBuilder().build(); @@ -59,8 +59,8 @@ public void testMSIEndpointWithSystemAssignedAccessKeyVault() throws Exception { @Test public void testMSIEndpointWithUserAssigned() throws Exception { Configuration configuration = Configuration.getGlobalConfiguration(); - org.junit.Assume.assumeTrue(configuration.contains(Configuration.PROPERTY_MSI_ENDPOINT)); - org.junit.Assume.assumeTrue(configuration.contains(Configuration.PROPERTY_AZURE_CLIENT_ID)); + org.junit.Assume.assumeNotNull(configuration.get(Configuration.PROPERTY_MSI_ENDPOINT)); + org.junit.Assume.assumeNotNull(configuration.get(Configuration.PROPERTY_AZURE_CLIENT_ID)); IdentityClient client = new IdentityClientBuilder() .clientId(configuration.get(Configuration.PROPERTY_AZURE_CLIENT_ID)) @@ -76,8 +76,8 @@ public void testMSIEndpointWithUserAssigned() throws Exception { @Test public void testMSIEndpointWithUserAssignedAccessKeyVault() throws Exception { Configuration configuration = Configuration.getGlobalConfiguration(); - org.junit.Assume.assumeTrue(configuration.contains(Configuration.PROPERTY_MSI_ENDPOINT)); - org.junit.Assume.assumeTrue(configuration.contains(Configuration.PROPERTY_AZURE_CLIENT_ID)); + org.junit.Assume.assumeNotNull(configuration.get(Configuration.PROPERTY_MSI_ENDPOINT)); + org.junit.Assume.assumeNotNull(configuration.get(Configuration.PROPERTY_AZURE_CLIENT_ID)); ManagedIdentityCredential credential = new ManagedIdentityCredentialBuilder() .clientId(configuration.get(Configuration.PROPERTY_AZURE_CLIENT_ID)) @@ -98,7 +98,7 @@ public void testMSIEndpointWithUserAssignedAccessKeyVault() throws Exception { public void testIMDSEndpointWithSystemAssigned() throws Exception { Configuration configuration = Configuration.getGlobalConfiguration(); org.junit.Assume.assumeTrue(checkIMDSAvailable()); - org.junit.Assume.assumeFalse(configuration.contains(Configuration.PROPERTY_AZURE_CLIENT_ID)); + org.junit.Assume.assumeTrue(configuration.get(Configuration.PROPERTY_AZURE_CLIENT_ID) == null); IdentityClient client = new IdentityClientBuilder().build(); StepVerifier.create(client.authenticateToIMDSEndpoint( @@ -111,7 +111,7 @@ public void testIMDSEndpointWithSystemAssigned() throws Exception { public void testIMDSEndpointWithSystemAssignedAccessKeyVault() throws Exception { Configuration configuration = Configuration.getGlobalConfiguration(); org.junit.Assume.assumeTrue(checkIMDSAvailable()); - org.junit.Assume.assumeFalse(configuration.contains(Configuration.PROPERTY_AZURE_CLIENT_ID)); + org.junit.Assume.assumeTrue(configuration.get(Configuration.PROPERTY_AZURE_CLIENT_ID) == null); ManagedIdentityCredential credential = new ManagedIdentityCredentialBuilder().build(); @@ -130,7 +130,7 @@ public void testIMDSEndpointWithSystemAssignedAccessKeyVault() throws Exception public void testIMDSEndpointWithUserAssigned() throws Exception { Configuration configuration = Configuration.getGlobalConfiguration(); org.junit.Assume.assumeTrue(checkIMDSAvailable()); - org.junit.Assume.assumeTrue(configuration.contains(Configuration.PROPERTY_AZURE_CLIENT_ID)); + org.junit.Assume.assumeNotNull(configuration.get(Configuration.PROPERTY_AZURE_CLIENT_ID)); IdentityClient client = new IdentityClientBuilder() .clientId(configuration.get(Configuration.PROPERTY_AZURE_CLIENT_ID)) @@ -145,7 +145,7 @@ public void testIMDSEndpointWithUserAssigned() throws Exception { public void testIMDSEndpointWithUserAssignedAccessKeyVault() throws Exception { Configuration configuration = Configuration.getGlobalConfiguration(); org.junit.Assume.assumeTrue(checkIMDSAvailable()); - org.junit.Assume.assumeTrue(configuration.contains(Configuration.PROPERTY_AZURE_CLIENT_ID)); + org.junit.Assume.assumeNotNull(configuration.get(Configuration.PROPERTY_AZURE_CLIENT_ID)); ManagedIdentityCredential credential = new ManagedIdentityCredentialBuilder() .clientId(configuration.get(Configuration.PROPERTY_AZURE_CLIENT_ID)) From 37f02b31947fa8e06f83abac1dd96af440e35ce8 Mon Sep 17 00:00:00 2001 From: Jianghao Lu Date: Thu, 12 Dec 2019 21:12:21 -0800 Subject: [PATCH 06/12] Remove pfx --- sdk/e2e/src/test/resources/keyStore.pfx | Bin 4285 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 sdk/e2e/src/test/resources/keyStore.pfx diff --git a/sdk/e2e/src/test/resources/keyStore.pfx b/sdk/e2e/src/test/resources/keyStore.pfx deleted file mode 100644 index 299c760233807636f76260dbc6fab2f7b4c42d17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4285 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 Date: Fri, 13 Dec 2019 16:00:00 -0800 Subject: [PATCH 07/12] Fix configuration usage --- .../ManagedIdentityCredentialLiveTest.java | 57 ++++++++----------- .../identity/AppServiceMsiCredential.java | 2 +- .../identity/ManagedIdentityCredential.java | 2 +- 3 files changed, 27 insertions(+), 34 deletions(-) diff --git a/sdk/e2e/src/test/java/com/azure/e2e/identity/ManagedIdentityCredentialLiveTest.java b/sdk/e2e/src/test/java/com/azure/e2e/identity/ManagedIdentityCredentialLiveTest.java index 1301c1310617..e3a3a5817dc1 100644 --- a/sdk/e2e/src/test/java/com/azure/e2e/identity/ManagedIdentityCredentialLiveTest.java +++ b/sdk/e2e/src/test/java/com/azure/e2e/identity/ManagedIdentityCredentialLiveTest.java @@ -21,17 +21,17 @@ public class ManagedIdentityCredentialLiveTest { private static final String AZURE_VAULT_URL = "AZURE_VAULT_URL"; private static final String VAULT_SECRET_NAME = "secret"; + private static final Configuration CONFIGURATION = Configuration.getGlobalConfiguration().clone(); @Test public void testMSIEndpointWithSystemAssigned() throws Exception { - Configuration configuration = Configuration.getGlobalConfiguration(); - org.junit.Assume.assumeNotNull(configuration.get(Configuration.PROPERTY_MSI_ENDPOINT)); - org.junit.Assume.assumeTrue(configuration.get(Configuration.PROPERTY_AZURE_CLIENT_ID) == null); + org.junit.Assume.assumeNotNull(CONFIGURATION.get(Configuration.PROPERTY_MSI_ENDPOINT)); + org.junit.Assume.assumeTrue(CONFIGURATION.get(Configuration.PROPERTY_AZURE_CLIENT_ID) == null); IdentityClient client = new IdentityClientBuilder().build(); StepVerifier.create(client.authenticateToManagedIdentityEndpoint( - configuration.get(Configuration.PROPERTY_MSI_ENDPOINT), - configuration.get(Configuration.PROPERTY_MSI_SECRET), + CONFIGURATION.get(Configuration.PROPERTY_MSI_ENDPOINT), + CONFIGURATION.get(Configuration.PROPERTY_MSI_SECRET), new TokenRequestContext().addScopes("https://management.azure.com/.default"))) .expectNextMatches(accessToken -> accessToken != null && accessToken.getToken() != null) .verifyComplete(); @@ -39,15 +39,14 @@ public void testMSIEndpointWithSystemAssigned() throws Exception { @Test public void testMSIEndpointWithSystemAssignedAccessKeyVault() throws Exception { - Configuration configuration = Configuration.getGlobalConfiguration(); - org.junit.Assume.assumeNotNull(configuration.get(Configuration.PROPERTY_MSI_ENDPOINT)); - org.junit.Assume.assumeTrue(configuration.get(Configuration.PROPERTY_AZURE_CLIENT_ID) == null); + org.junit.Assume.assumeNotNull(CONFIGURATION.get(Configuration.PROPERTY_MSI_ENDPOINT)); + org.junit.Assume.assumeTrue(CONFIGURATION.get(Configuration.PROPERTY_AZURE_CLIENT_ID) == null); ManagedIdentityCredential credential = new ManagedIdentityCredentialBuilder().build(); SecretClient client = new SecretClientBuilder() .credential(credential) - .vaultUrl(configuration.get(AZURE_VAULT_URL)) + .vaultUrl(CONFIGURATION.get(AZURE_VAULT_URL)) .buildClient(); KeyVaultSecret secret = client.getSecret(VAULT_SECRET_NAME); @@ -58,16 +57,15 @@ public void testMSIEndpointWithSystemAssignedAccessKeyVault() throws Exception { @Test public void testMSIEndpointWithUserAssigned() throws Exception { - Configuration configuration = Configuration.getGlobalConfiguration(); - org.junit.Assume.assumeNotNull(configuration.get(Configuration.PROPERTY_MSI_ENDPOINT)); - org.junit.Assume.assumeNotNull(configuration.get(Configuration.PROPERTY_AZURE_CLIENT_ID)); + org.junit.Assume.assumeNotNull(CONFIGURATION.get(Configuration.PROPERTY_MSI_ENDPOINT)); + org.junit.Assume.assumeNotNull(CONFIGURATION.get(Configuration.PROPERTY_AZURE_CLIENT_ID)); IdentityClient client = new IdentityClientBuilder() - .clientId(configuration.get(Configuration.PROPERTY_AZURE_CLIENT_ID)) + .clientId(CONFIGURATION.get(Configuration.PROPERTY_AZURE_CLIENT_ID)) .build(); StepVerifier.create(client.authenticateToManagedIdentityEndpoint( - configuration.get(Configuration.PROPERTY_MSI_ENDPOINT), - configuration.get(Configuration.PROPERTY_MSI_SECRET), + CONFIGURATION.get(Configuration.PROPERTY_MSI_ENDPOINT), + CONFIGURATION.get(Configuration.PROPERTY_MSI_SECRET), new TokenRequestContext().addScopes("https://management.azure.com/.default"))) .expectNextMatches(accessToken -> accessToken != null && accessToken.getToken() != null) .verifyComplete(); @@ -75,17 +73,16 @@ public void testMSIEndpointWithUserAssigned() throws Exception { @Test public void testMSIEndpointWithUserAssignedAccessKeyVault() throws Exception { - Configuration configuration = Configuration.getGlobalConfiguration(); - org.junit.Assume.assumeNotNull(configuration.get(Configuration.PROPERTY_MSI_ENDPOINT)); - org.junit.Assume.assumeNotNull(configuration.get(Configuration.PROPERTY_AZURE_CLIENT_ID)); + org.junit.Assume.assumeNotNull(CONFIGURATION.get(Configuration.PROPERTY_MSI_ENDPOINT)); + org.junit.Assume.assumeNotNull(CONFIGURATION.get(Configuration.PROPERTY_AZURE_CLIENT_ID)); ManagedIdentityCredential credential = new ManagedIdentityCredentialBuilder() - .clientId(configuration.get(Configuration.PROPERTY_AZURE_CLIENT_ID)) + .clientId(CONFIGURATION.get(Configuration.PROPERTY_AZURE_CLIENT_ID)) .build(); SecretClient client = new SecretClientBuilder() .credential(credential) - .vaultUrl(configuration.get(AZURE_VAULT_URL)) + .vaultUrl(CONFIGURATION.get(AZURE_VAULT_URL)) .buildClient(); KeyVaultSecret secret = client.getSecret(VAULT_SECRET_NAME); @@ -96,9 +93,8 @@ public void testMSIEndpointWithUserAssignedAccessKeyVault() throws Exception { @Test public void testIMDSEndpointWithSystemAssigned() throws Exception { - Configuration configuration = Configuration.getGlobalConfiguration(); org.junit.Assume.assumeTrue(checkIMDSAvailable()); - org.junit.Assume.assumeTrue(configuration.get(Configuration.PROPERTY_AZURE_CLIENT_ID) == null); + org.junit.Assume.assumeTrue(CONFIGURATION.get(Configuration.PROPERTY_AZURE_CLIENT_ID) == null); IdentityClient client = new IdentityClientBuilder().build(); StepVerifier.create(client.authenticateToIMDSEndpoint( @@ -109,15 +105,14 @@ public void testIMDSEndpointWithSystemAssigned() throws Exception { @Test public void testIMDSEndpointWithSystemAssignedAccessKeyVault() throws Exception { - Configuration configuration = Configuration.getGlobalConfiguration(); org.junit.Assume.assumeTrue(checkIMDSAvailable()); - org.junit.Assume.assumeTrue(configuration.get(Configuration.PROPERTY_AZURE_CLIENT_ID) == null); + org.junit.Assume.assumeTrue(CONFIGURATION.get(Configuration.PROPERTY_AZURE_CLIENT_ID) == null); ManagedIdentityCredential credential = new ManagedIdentityCredentialBuilder().build(); SecretClient client = new SecretClientBuilder() .credential(credential) - .vaultUrl(configuration.get(AZURE_VAULT_URL)) + .vaultUrl(CONFIGURATION.get(AZURE_VAULT_URL)) .buildClient(); KeyVaultSecret secret = client.getSecret(VAULT_SECRET_NAME); @@ -128,12 +123,11 @@ public void testIMDSEndpointWithSystemAssignedAccessKeyVault() throws Exception @Test public void testIMDSEndpointWithUserAssigned() throws Exception { - Configuration configuration = Configuration.getGlobalConfiguration(); org.junit.Assume.assumeTrue(checkIMDSAvailable()); - org.junit.Assume.assumeNotNull(configuration.get(Configuration.PROPERTY_AZURE_CLIENT_ID)); + org.junit.Assume.assumeNotNull(CONFIGURATION.get(Configuration.PROPERTY_AZURE_CLIENT_ID)); IdentityClient client = new IdentityClientBuilder() - .clientId(configuration.get(Configuration.PROPERTY_AZURE_CLIENT_ID)) + .clientId(CONFIGURATION.get(Configuration.PROPERTY_AZURE_CLIENT_ID)) .build(); StepVerifier.create(client.authenticateToIMDSEndpoint( new TokenRequestContext().addScopes("https://management.azure.com/.default"))) @@ -143,17 +137,16 @@ public void testIMDSEndpointWithUserAssigned() throws Exception { @Test public void testIMDSEndpointWithUserAssignedAccessKeyVault() throws Exception { - Configuration configuration = Configuration.getGlobalConfiguration(); org.junit.Assume.assumeTrue(checkIMDSAvailable()); - org.junit.Assume.assumeNotNull(configuration.get(Configuration.PROPERTY_AZURE_CLIENT_ID)); + org.junit.Assume.assumeNotNull(CONFIGURATION.get(Configuration.PROPERTY_AZURE_CLIENT_ID)); ManagedIdentityCredential credential = new ManagedIdentityCredentialBuilder() - .clientId(configuration.get(Configuration.PROPERTY_AZURE_CLIENT_ID)) + .clientId(CONFIGURATION.get(Configuration.PROPERTY_AZURE_CLIENT_ID)) .build(); SecretClient client = new SecretClientBuilder() .credential(credential) - .vaultUrl(configuration.get(AZURE_VAULT_URL)) + .vaultUrl(CONFIGURATION.get(AZURE_VAULT_URL)) .buildClient(); KeyVaultSecret secret = client.getSecret(VAULT_SECRET_NAME); diff --git a/sdk/identity/azure-identity/src/main/java/com/azure/identity/AppServiceMsiCredential.java b/sdk/identity/azure-identity/src/main/java/com/azure/identity/AppServiceMsiCredential.java index 4aa556a47550..7be7a475cb3f 100644 --- a/sdk/identity/azure-identity/src/main/java/com/azure/identity/AppServiceMsiCredential.java +++ b/sdk/identity/azure-identity/src/main/java/com/azure/identity/AppServiceMsiCredential.java @@ -27,7 +27,7 @@ class AppServiceMsiCredential { * @param identityClient The identity client to acquire a token with. */ AppServiceMsiCredential(String clientId, IdentityClient identityClient) { - Configuration configuration = Configuration.getGlobalConfiguration(); + Configuration configuration = Configuration.getGlobalConfiguration().clone(); this.msiEndpoint = configuration.get(Configuration.PROPERTY_MSI_ENDPOINT); this.msiSecret = configuration.get(Configuration.PROPERTY_MSI_SECRET); this.identityClient = identityClient; diff --git a/sdk/identity/azure-identity/src/main/java/com/azure/identity/ManagedIdentityCredential.java b/sdk/identity/azure-identity/src/main/java/com/azure/identity/ManagedIdentityCredential.java index 1cff3f761a17..8ccd89fa21ea 100644 --- a/sdk/identity/azure-identity/src/main/java/com/azure/identity/ManagedIdentityCredential.java +++ b/sdk/identity/azure-identity/src/main/java/com/azure/identity/ManagedIdentityCredential.java @@ -31,7 +31,7 @@ public final class ManagedIdentityCredential implements TokenCredential { .clientId(clientId) .identityClientOptions(identityClientOptions) .build(); - Configuration configuration = Configuration.getGlobalConfiguration(); + Configuration configuration = Configuration.getGlobalConfiguration().clone(); if (configuration.contains(Configuration.PROPERTY_MSI_ENDPOINT)) { appServiceMSICredential = new AppServiceMsiCredential(clientId, identityClient); virtualMachineMSICredential = null; From 366f81c41b2a17b70b26109348b7521db512c268 Mon Sep 17 00:00:00 2001 From: Jianghao Lu Date: Fri, 13 Dec 2019 16:56:48 -0800 Subject: [PATCH 08/12] Fix dependency version tag --- sdk/e2e/pom.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sdk/e2e/pom.xml b/sdk/e2e/pom.xml index 0aaee9478104..089a4146832b 100644 --- a/sdk/e2e/pom.xml +++ b/sdk/e2e/pom.xml @@ -28,27 +28,27 @@ com.azure azure-core-http-netty - 1.2.0-beta.1 + 1.2.0-beta.1 com.azure azure-identity - 1.1.0-beta.1 + 1.1.0-beta.1 com.azure azure-security-keyvault-keys - 4.1.0-beta.1 + 4.1.0-beta.1 com.azure azure-security-keyvault-secrets - 4.1.0-beta.1 + 4.1.0-beta.1 com.azure azure-security-keyvault-certificates - 4.0.0-beta.7 + 4.0.0-beta.7 org.slf4j From cc1e4c0e715fbcbfa69cea3075c63f5e4950ccc0 Mon Sep 17 00:00:00 2001 From: Jianghao Lu Date: Fri, 13 Dec 2019 17:03:34 -0800 Subject: [PATCH 09/12] Fix dependency version script --- eng/versioning/version_client.txt | 1 + sdk/e2e/pom.xml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/eng/versioning/version_client.txt b/eng/versioning/version_client.txt index 2cad87aa76af..2287e6a94a2e 100644 --- a/eng/versioning/version_client.txt +++ b/eng/versioning/version_client.txt @@ -27,3 +27,4 @@ com.azure:azure-storage-common;12.1.0;12.2.0-beta.1 com.azure:azure-storage-file-share;12.0.0;12.1.0-beta.1 com.azure:azure-storage-file-datalake;12.0.0-beta.7;12.0.0-beta.8 com.azure:azure-storage-queue;12.1.0;12.2.0-beta.1 +com.azure:azure-e2e;1.0.0-beta.1;1.0.0-beta.1 \ No newline at end of file diff --git a/sdk/e2e/pom.xml b/sdk/e2e/pom.xml index 089a4146832b..cf4b7e2d649f 100644 --- a/sdk/e2e/pom.xml +++ b/sdk/e2e/pom.xml @@ -6,7 +6,7 @@ com.azure azure-e2e - 1.0.0-beta.1 + 1.0.0-beta.1 Microsoft Azure client library end to end tests and samples This module contains end to end tests and samples for Microsoft Azure client libraries. From 7cb52874a186fca5306488e84c98eafb320a8379 Mon Sep 17 00:00:00 2001 From: Jianghao Lu Date: Fri, 13 Dec 2019 17:08:15 -0800 Subject: [PATCH 10/12] Fix again --- sdk/e2e/pom.xml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/sdk/e2e/pom.xml b/sdk/e2e/pom.xml index cf4b7e2d649f..95ddeecb9233 100644 --- a/sdk/e2e/pom.xml +++ b/sdk/e2e/pom.xml @@ -23,32 +23,32 @@ com.azure azure-core - 1.2.0-beta.1 + 1.2.0-beta.1 com.azure azure-core-http-netty - 1.2.0-beta.1 + 1.2.0-beta.1 com.azure azure-identity - 1.1.0-beta.1 + 1.1.0-beta.1 com.azure azure-security-keyvault-keys - 4.1.0-beta.1 + 4.1.0-beta.1 com.azure azure-security-keyvault-secrets - 4.1.0-beta.1 + 4.1.0-beta.1 com.azure azure-security-keyvault-certificates - 4.0.0-beta.7 + 4.0.0-beta.7 org.slf4j @@ -59,7 +59,7 @@ com.azure azure-core-test - 1.1.0-beta.1 + 1.1.0-beta.1 test From 1c7a91879e7963ae9f768e6578abd2065391853f Mon Sep 17 00:00:00 2001 From: Jianghao Lu Date: Fri, 13 Dec 2019 23:30:24 -0800 Subject: [PATCH 11/12] Skip key vault tests when env var is missing --- .../identity/ManagedIdentityCredentialLiveTest.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) rename sdk/e2e/src/test/java/com/azure/{e2e => endtoend}/identity/ManagedIdentityCredentialLiveTest.java (94%) diff --git a/sdk/e2e/src/test/java/com/azure/e2e/identity/ManagedIdentityCredentialLiveTest.java b/sdk/e2e/src/test/java/com/azure/endtoend/identity/ManagedIdentityCredentialLiveTest.java similarity index 94% rename from sdk/e2e/src/test/java/com/azure/e2e/identity/ManagedIdentityCredentialLiveTest.java rename to sdk/e2e/src/test/java/com/azure/endtoend/identity/ManagedIdentityCredentialLiveTest.java index e3a3a5817dc1..6e99b2c93509 100644 --- a/sdk/e2e/src/test/java/com/azure/e2e/identity/ManagedIdentityCredentialLiveTest.java +++ b/sdk/e2e/src/test/java/com/azure/endtoend/identity/ManagedIdentityCredentialLiveTest.java @@ -1,4 +1,7 @@ -package com.azure.e2e.identity; +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.endtoend.identity; import com.azure.core.credential.TokenRequestContext; import com.azure.core.util.Configuration; @@ -41,6 +44,7 @@ public void testMSIEndpointWithSystemAssigned() throws Exception { public void testMSIEndpointWithSystemAssignedAccessKeyVault() throws Exception { org.junit.Assume.assumeNotNull(CONFIGURATION.get(Configuration.PROPERTY_MSI_ENDPOINT)); org.junit.Assume.assumeTrue(CONFIGURATION.get(Configuration.PROPERTY_AZURE_CLIENT_ID) == null); + org.junit.Assume.assumeNotNull(CONFIGURATION.get(AZURE_VAULT_URL)); ManagedIdentityCredential credential = new ManagedIdentityCredentialBuilder().build(); @@ -75,6 +79,7 @@ public void testMSIEndpointWithUserAssigned() throws Exception { public void testMSIEndpointWithUserAssignedAccessKeyVault() throws Exception { org.junit.Assume.assumeNotNull(CONFIGURATION.get(Configuration.PROPERTY_MSI_ENDPOINT)); org.junit.Assume.assumeNotNull(CONFIGURATION.get(Configuration.PROPERTY_AZURE_CLIENT_ID)); + org.junit.Assume.assumeNotNull(CONFIGURATION.get(AZURE_VAULT_URL)); ManagedIdentityCredential credential = new ManagedIdentityCredentialBuilder() .clientId(CONFIGURATION.get(Configuration.PROPERTY_AZURE_CLIENT_ID)) @@ -107,6 +112,7 @@ public void testIMDSEndpointWithSystemAssigned() throws Exception { public void testIMDSEndpointWithSystemAssignedAccessKeyVault() throws Exception { org.junit.Assume.assumeTrue(checkIMDSAvailable()); org.junit.Assume.assumeTrue(CONFIGURATION.get(Configuration.PROPERTY_AZURE_CLIENT_ID) == null); + org.junit.Assume.assumeNotNull(CONFIGURATION.get(AZURE_VAULT_URL)); ManagedIdentityCredential credential = new ManagedIdentityCredentialBuilder().build(); @@ -139,6 +145,7 @@ public void testIMDSEndpointWithUserAssigned() throws Exception { public void testIMDSEndpointWithUserAssignedAccessKeyVault() throws Exception { org.junit.Assume.assumeTrue(checkIMDSAvailable()); org.junit.Assume.assumeNotNull(CONFIGURATION.get(Configuration.PROPERTY_AZURE_CLIENT_ID)); + org.junit.Assume.assumeNotNull(CONFIGURATION.get(AZURE_VAULT_URL)); ManagedIdentityCredential credential = new ManagedIdentityCredentialBuilder() .clientId(CONFIGURATION.get(Configuration.PROPERTY_AZURE_CLIENT_ID)) From ec1aaf439eff9571066afab865d225e9177e1422 Mon Sep 17 00:00:00 2001 From: Jianghao Lu Date: Sat, 14 Dec 2019 00:16:30 -0800 Subject: [PATCH 12/12] Check key vault everywhere --- .../endtoend/identity/ManagedIdentityCredentialLiveTest.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sdk/e2e/src/test/java/com/azure/endtoend/identity/ManagedIdentityCredentialLiveTest.java b/sdk/e2e/src/test/java/com/azure/endtoend/identity/ManagedIdentityCredentialLiveTest.java index 6e99b2c93509..ece901c930ad 100644 --- a/sdk/e2e/src/test/java/com/azure/endtoend/identity/ManagedIdentityCredentialLiveTest.java +++ b/sdk/e2e/src/test/java/com/azure/endtoend/identity/ManagedIdentityCredentialLiveTest.java @@ -30,6 +30,7 @@ public class ManagedIdentityCredentialLiveTest { public void testMSIEndpointWithSystemAssigned() throws Exception { org.junit.Assume.assumeNotNull(CONFIGURATION.get(Configuration.PROPERTY_MSI_ENDPOINT)); org.junit.Assume.assumeTrue(CONFIGURATION.get(Configuration.PROPERTY_AZURE_CLIENT_ID) == null); + org.junit.Assume.assumeNotNull(CONFIGURATION.get(AZURE_VAULT_URL)); IdentityClient client = new IdentityClientBuilder().build(); StepVerifier.create(client.authenticateToManagedIdentityEndpoint( @@ -63,6 +64,7 @@ public void testMSIEndpointWithSystemAssignedAccessKeyVault() throws Exception { public void testMSIEndpointWithUserAssigned() throws Exception { org.junit.Assume.assumeNotNull(CONFIGURATION.get(Configuration.PROPERTY_MSI_ENDPOINT)); org.junit.Assume.assumeNotNull(CONFIGURATION.get(Configuration.PROPERTY_AZURE_CLIENT_ID)); + org.junit.Assume.assumeNotNull(CONFIGURATION.get(AZURE_VAULT_URL)); IdentityClient client = new IdentityClientBuilder() .clientId(CONFIGURATION.get(Configuration.PROPERTY_AZURE_CLIENT_ID)) @@ -100,6 +102,7 @@ public void testMSIEndpointWithUserAssignedAccessKeyVault() throws Exception { public void testIMDSEndpointWithSystemAssigned() throws Exception { org.junit.Assume.assumeTrue(checkIMDSAvailable()); org.junit.Assume.assumeTrue(CONFIGURATION.get(Configuration.PROPERTY_AZURE_CLIENT_ID) == null); + org.junit.Assume.assumeNotNull(CONFIGURATION.get(AZURE_VAULT_URL)); IdentityClient client = new IdentityClientBuilder().build(); StepVerifier.create(client.authenticateToIMDSEndpoint( @@ -131,6 +134,7 @@ public void testIMDSEndpointWithSystemAssignedAccessKeyVault() throws Exception public void testIMDSEndpointWithUserAssigned() throws Exception { org.junit.Assume.assumeTrue(checkIMDSAvailable()); org.junit.Assume.assumeNotNull(CONFIGURATION.get(Configuration.PROPERTY_AZURE_CLIENT_ID)); + org.junit.Assume.assumeNotNull(CONFIGURATION.get(AZURE_VAULT_URL)); IdentityClient client = new IdentityClientBuilder() .clientId(CONFIGURATION.get(Configuration.PROPERTY_AZURE_CLIENT_ID))