Skip to content

Commit ea2ebfe

Browse files
authored
Use Test Scope Configurations in Identity (Azure#33987)
Use Test Scope Configurations in Identity
1 parent b9419fb commit ea2ebfe

File tree

10 files changed

+408
-352
lines changed

10 files changed

+408
-352
lines changed

sdk/identity/azure-identity/pom.xml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
<url>https://github.com/Azure/azure-sdk-for-java</url>
1414

1515
<properties>
16-
<jacoco.min.branchcoverage>0.28</jacoco.min.branchcoverage>
16+
<jacoco.min.branchcoverage>0.35</jacoco.min.branchcoverage>
1717
<!-- Configures the Java 9+ run to perform the required module exports, opens, and reads that are necessary for testing but shouldn't be part of the module-info. -->
1818
<javaModulesSurefireArgLine>
1919
--add-opens java.xml/jdk.xml.internal=ALL-UNNAMED
@@ -50,6 +50,12 @@
5050
<artifactId>msal4j-persistence-extension</artifactId>
5151
<version>1.1.0</version> <!-- {x-version-update;com.microsoft.azure:msal4j-persistence-extension;external_dependency} -->
5252
</dependency>
53+
<dependency>
54+
<groupId>com.azure</groupId>
55+
<artifactId>azure-core-test</artifactId>
56+
<version>1.15.0</version> <!-- {x-version-update;com.azure:azure-core-test;dependency} -->
57+
<scope>test</scope>
58+
</dependency>
5359
<dependency>
5460
<groupId>junit</groupId>
5561
<artifactId>junit</artifactId>

sdk/identity/azure-identity/src/test/java/com/azure/identity/AzureApplicationCredentialTest.java

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
package com.azure.identity;
55

66
import com.azure.core.credential.TokenRequestContext;
7+
import com.azure.core.test.utils.TestConfigurationSource;
78
import com.azure.core.util.Configuration;
89
import com.azure.core.util.ConfigurationBuilder;
910
import com.azure.identity.implementation.IdentityClient;
@@ -29,17 +30,17 @@ public class AzureApplicationCredentialTest {
2930
private static final String CLIENT_ID = UUID.randomUUID().toString();
3031

3132
@Test
32-
public void testUseEnvironmentCredential() throws Exception {
33-
Configuration configuration = Configuration.getGlobalConfiguration().clone();
34-
33+
public void testUseEnvironmentCredential() {
3534
// setup
3635
String secret = "secret";
3736
String token1 = "token1";
3837
TokenRequestContext request1 = new TokenRequestContext().addScopes("https://management.azure.com");
3938
OffsetDateTime expiresOn = OffsetDateTime.now(ZoneOffset.UTC).plusHours(1);
40-
configuration.put("AZURE_CLIENT_ID", CLIENT_ID);
41-
configuration.put("AZURE_CLIENT_SECRET", secret);
42-
configuration.put("AZURE_TENANT_ID", TENANT_ID);
39+
40+
Configuration configuration = TestUtils.createTestConfiguration(new TestConfigurationSource()
41+
.put("AZURE_CLIENT_ID", CLIENT_ID)
42+
.put("AZURE_CLIENT_SECRET", secret)
43+
.put("AZURE_TENANT_ID", TENANT_ID));
4344

4445
// mock
4546
try (MockedConstruction<IdentityClient> identityClientMock = mockConstruction(IdentityClient.class, (identityClient, context) -> {
@@ -57,7 +58,7 @@ public void testUseEnvironmentCredential() throws Exception {
5758
}
5859

5960
@Test
60-
public void testUseManagedIdentityCredential() throws Exception {
61+
public void testUseManagedIdentityCredential() {
6162
// setup
6263
String token1 = "token1";
6364
TokenRequestContext request = new TokenRequestContext().addScopes("https://management.azure.com");
@@ -84,7 +85,7 @@ public void testUseManagedIdentityCredential() throws Exception {
8485
}
8586

8687
@Test
87-
public void testNoCredentialWorks() throws Exception {
88+
public void testNoCredentialWorks() {
8889
// setup
8990
TokenRequestContext request = new TokenRequestContext().addScopes("https://management.azure.com");
9091
EmptyEnvironmentConfigurationSource source = new EmptyEnvironmentConfigurationSource();
@@ -105,7 +106,7 @@ public void testNoCredentialWorks() throws Exception {
105106
}
106107

107108
@Test
108-
public void testCredentialUnavailable() throws Exception {
109+
public void testCredentialUnavailable() {
109110
// setup
110111
TokenRequestContext request = new TokenRequestContext().addScopes("https://management.azure.com");
111112
EmptyEnvironmentConfigurationSource source = new EmptyEnvironmentConfigurationSource();

sdk/identity/azure-identity/src/test/java/com/azure/identity/DefaultAzureCredentialTest.java

Lines changed: 59 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
import com.azure.core.credential.TokenRequestContext;
77
import com.azure.core.exception.ClientAuthenticationException;
8+
import com.azure.core.test.utils.TestConfigurationSource;
89
import com.azure.core.util.Configuration;
910
import com.azure.core.util.ConfigurationBuilder;
1011
import com.azure.identity.implementation.IdentityClient;
@@ -13,8 +14,6 @@
1314
import com.microsoft.aad.msal4j.MsalServiceException;
1415
import org.junit.Assert;
1516
import org.junit.Test;
16-
17-
1817
import org.mockito.MockedConstruction;
1918
import reactor.core.publisher.Mono;
2019
import reactor.test.StepVerifier;
@@ -34,18 +33,17 @@ public class DefaultAzureCredentialTest {
3433
private static final String CLIENT_ID = UUID.randomUUID().toString();
3534

3635
@Test
37-
public void testUseEnvironmentCredential() throws Exception {
38-
Configuration configuration = Configuration.getGlobalConfiguration().clone();
39-
36+
public void testUseEnvironmentCredential() {
4037
// setup
4138
String secret = "secret";
4239
String token1 = "token1";
4340
TokenRequestContext request1 = new TokenRequestContext().addScopes("https://management.azure.com");
4441
OffsetDateTime expiresOn = OffsetDateTime.now(ZoneOffset.UTC).plusHours(1);
45-
configuration.put("AZURE_CLIENT_ID", CLIENT_ID);
46-
configuration.put("AZURE_CLIENT_SECRET", secret);
47-
configuration.put("AZURE_TENANT_ID", TENANT_ID);
4842

43+
Configuration configuration = TestUtils.createTestConfiguration(new TestConfigurationSource()
44+
.put("AZURE_CLIENT_ID", CLIENT_ID)
45+
.put("AZURE_CLIENT_SECRET", secret)
46+
.put("AZURE_TENANT_ID", TENANT_ID));
4947

5048
try (MockedConstruction<IdentityClient> mocked = mockConstruction(IdentityClient.class, (identityClient, context) -> {
5149
when(identityClient.authenticateWithAzureDeveloperCli(request1)).thenReturn(Mono.empty());
@@ -63,7 +61,7 @@ public void testUseEnvironmentCredential() throws Exception {
6361
}
6462

6563
@Test
66-
public void testUseManagedIdentityCredential() throws Exception {
64+
public void testUseManagedIdentityCredential() {
6765
// setup
6866
String token1 = "token1";
6967
TokenRequestContext request = new TokenRequestContext().addScopes("https://management.azure.com");
@@ -89,16 +87,15 @@ public void testUseManagedIdentityCredential() throws Exception {
8987
}
9088

9189
@Test
92-
public void testUseWorkloadIdentityCredentialWithManagedIdentityClientId() throws Exception {
90+
public void testUseWorkloadIdentityCredentialWithManagedIdentityClientId() {
9391
// setup
9492
String token1 = "token1";
9593
TokenRequestContext request = new TokenRequestContext().addScopes("https://management.azure.com");
9694
OffsetDateTime expiresAt = OffsetDateTime.now(ZoneOffset.UTC).plusHours(1);
97-
EmptyEnvironmentConfigurationSource source = new EmptyEnvironmentConfigurationSource();
98-
Configuration configuration = new ConfigurationBuilder(source, source, source).build();
99-
configuration.put(Configuration.PROPERTY_AZURE_AUTHORITY_HOST, AzureAuthorityHosts.AZURE_PUBLIC_CLOUD);
100-
configuration.put(Configuration.PROPERTY_AZURE_TENANT_ID, "dummy-tenant");
101-
configuration.put(ManagedIdentityCredential.AZURE_FEDERATED_TOKEN_FILE, "dummy-path");
95+
Configuration configuration = TestUtils.createTestConfiguration(new TestConfigurationSource()
96+
.put(Configuration.PROPERTY_AZURE_AUTHORITY_HOST, AzureAuthorityHosts.AZURE_PUBLIC_CLOUD)
97+
.put(Configuration.PROPERTY_AZURE_TENANT_ID, "dummy-tenant")
98+
.put(ManagedIdentityCredential.AZURE_FEDERATED_TOKEN_FILE, "dummy-path"));
10299

103100
// mock
104101
try (MockedConstruction<IdentityClient> mocked = mockConstruction(IdentityClient.class, (identityClient, context) -> {
@@ -121,16 +118,15 @@ public void testUseWorkloadIdentityCredentialWithManagedIdentityClientId() throw
121118
}
122119

123120
@Test
124-
public void testUseWorkloadIdentityCredentialWithWorkloadClientId() throws Exception {
121+
public void testUseWorkloadIdentityCredentialWithWorkloadClientId() {
125122
// setup
126123
String token1 = "token1";
127124
TokenRequestContext request = new TokenRequestContext().addScopes("https://management.azure.com");
128125
OffsetDateTime expiresAt = OffsetDateTime.now(ZoneOffset.UTC).plusHours(1);
129-
EmptyEnvironmentConfigurationSource source = new EmptyEnvironmentConfigurationSource();
130-
Configuration configuration = new ConfigurationBuilder(source, source, source).build();
131-
configuration.put(Configuration.PROPERTY_AZURE_AUTHORITY_HOST, AzureAuthorityHosts.AZURE_PUBLIC_CLOUD);
132-
configuration.put(Configuration.PROPERTY_AZURE_TENANT_ID, "dummy-tenant");
133-
configuration.put(ManagedIdentityCredential.AZURE_FEDERATED_TOKEN_FILE, "dummy-path");
126+
Configuration configuration = TestUtils.createTestConfiguration(new TestConfigurationSource()
127+
.put(Configuration.PROPERTY_AZURE_AUTHORITY_HOST, AzureAuthorityHosts.AZURE_PUBLIC_CLOUD)
128+
.put(Configuration.PROPERTY_AZURE_TENANT_ID, "dummy-tenant")
129+
.put(ManagedIdentityCredential.AZURE_FEDERATED_TOKEN_FILE, "dummy-path"));
134130

135131
// mock
136132
try (MockedConstruction<IdentityClient> mocked = mockConstruction(IdentityClient.class, (identityClient, context) -> {
@@ -148,13 +144,12 @@ public void testUseWorkloadIdentityCredentialWithWorkloadClientId() throws Excep
148144
}
149145

150146
@Test
151-
public void testUseWorkloadIdentityCredentialWithClientIdFlow() throws Exception {
147+
public void testUseWorkloadIdentityCredentialWithClientIdFlow() {
152148
// setup
153-
EmptyEnvironmentConfigurationSource source = new EmptyEnvironmentConfigurationSource();
154-
Configuration configuration = new ConfigurationBuilder(source, source, source).build();
155-
configuration.put(Configuration.PROPERTY_AZURE_AUTHORITY_HOST, AzureAuthorityHosts.AZURE_PUBLIC_CLOUD);
156-
configuration.put(Configuration.PROPERTY_AZURE_TENANT_ID, "dummy-tenant");
157-
configuration.put(ManagedIdentityCredential.AZURE_FEDERATED_TOKEN_FILE, "dummy-path");
149+
Configuration configuration = TestUtils.createTestConfiguration(new TestConfigurationSource()
150+
.put(Configuration.PROPERTY_AZURE_AUTHORITY_HOST, AzureAuthorityHosts.AZURE_PUBLIC_CLOUD)
151+
.put(Configuration.PROPERTY_AZURE_TENANT_ID, "dummy-tenant")
152+
.put(ManagedIdentityCredential.AZURE_FEDERATED_TOKEN_FILE, "dummy-path"));
158153

159154
// test
160155
String clientId = "dummy-client-id";
@@ -174,7 +169,11 @@ public void testUseWorkloadIdentityCredentialWithClientIdFlow() throws Exception
174169
Assert.assertNotNull(workloadIdentityCredential);
175170
Assert.assertEquals(clientId, workloadIdentityCredential.getClientId());
176171

177-
configuration.put(Configuration.PROPERTY_AZURE_CLIENT_ID, clientId);
172+
configuration = TestUtils.createTestConfiguration(new TestConfigurationSource()
173+
.put(Configuration.PROPERTY_AZURE_AUTHORITY_HOST, AzureAuthorityHosts.AZURE_PUBLIC_CLOUD)
174+
.put(Configuration.PROPERTY_AZURE_TENANT_ID, "dummy-tenant")
175+
.put(ManagedIdentityCredential.AZURE_FEDERATED_TOKEN_FILE, "dummy-path")
176+
.put(Configuration.PROPERTY_AZURE_CLIENT_ID, clientId));
178177
credential = new DefaultAzureCredentialBuilder()
179178
.configuration(configuration)
180179
.build();
@@ -186,7 +185,7 @@ public void testUseWorkloadIdentityCredentialWithClientIdFlow() throws Exception
186185

187186

188187
@Test
189-
public void testUseAzureCliCredential() throws Exception {
188+
public void testUseAzureCliCredential() {
190189
// setup
191190
String token1 = "token1";
192191
TokenRequestContext request = new TokenRequestContext().addScopes("https://management.azure.com");
@@ -215,7 +214,7 @@ public void testUseAzureCliCredential() throws Exception {
215214
}
216215

217216
@Test
218-
public void testUseAzureDeveloperCliCredential() throws Exception {
217+
public void testUseAzureDeveloperCliCredential() {
219218
// setup
220219
String token1 = "token1";
221220
TokenRequestContext request = new TokenRequestContext().addScopes("https://management.azure.com");
@@ -244,7 +243,7 @@ public void testUseAzureDeveloperCliCredential() throws Exception {
244243
}
245244

246245
@Test
247-
public void testNoCredentialWorks() throws Exception {
246+
public void testNoCredentialWorks() {
248247
// setup
249248
TokenRequestContext request = new TokenRequestContext().addScopes("https://management.azure.com");
250249
EmptyEnvironmentConfigurationSource source = new EmptyEnvironmentConfigurationSource();
@@ -278,7 +277,7 @@ public void testNoCredentialWorks() throws Exception {
278277
}
279278

280279
@Test
281-
public void testCredentialUnavailable() throws Exception {
280+
public void testCredentialUnavailable() {
282281
TokenRequestContext request = new TokenRequestContext().addScopes("https://management.azure.com");
283282
EmptyEnvironmentConfigurationSource source = new EmptyEnvironmentConfigurationSource();
284283
Configuration configuration = new ConfigurationBuilder(source, source, source).build();
@@ -307,7 +306,7 @@ public void testCredentialUnavailable() throws Exception {
307306
}
308307

309308
@Test
310-
public void testCredentialUnavailableSync() throws Exception {
309+
public void testCredentialUnavailableSync() {
311310
TokenRequestContext request = new TokenRequestContext().addScopes("https://management.azure.com");
312311
EmptyEnvironmentConfigurationSource source = new EmptyEnvironmentConfigurationSource();
313312
Configuration configuration = new ConfigurationBuilder(source, source, source).build();
@@ -349,57 +348,63 @@ public void testInvalidIdCombination() {
349348
}
350349

351350
@Test
352-
public void testInvalidAdditionalTenant() throws Exception {
351+
public void testInvalidAdditionalTenant() {
353352
// setup
354-
Configuration.getGlobalConfiguration()
353+
Configuration configuration = TestUtils.createTestConfiguration(new TestConfigurationSource()
355354
.put(Configuration.PROPERTY_AZURE_CLIENT_ID, "foo")
356355
.put(Configuration.PROPERTY_AZURE_CLIENT_SECRET, "bar")
357-
.put(Configuration.PROPERTY_AZURE_TENANT_ID, "baz");
356+
.put(Configuration.PROPERTY_AZURE_TENANT_ID, "baz"));
358357

359358
TokenRequestContext request = new TokenRequestContext().addScopes("https://vault.azure.net/.default")
360359
.setTenantId("newTenant");
361360

362-
DefaultAzureCredential credential =
363-
new DefaultAzureCredentialBuilder().additionallyAllowedTenants("RANDOM").build();
361+
DefaultAzureCredential credential = new DefaultAzureCredentialBuilder()
362+
.additionallyAllowedTenants("RANDOM")
363+
.configuration(configuration)
364+
.build();
364365

365366
StepVerifier.create(credential.getToken(request))
366-
.expectErrorMatches(e -> e instanceof ClientAuthenticationException && (e.getMessage().contains("The current credential is not configured to")))
367-
.verify();
367+
.verifyErrorMatches(e -> e instanceof ClientAuthenticationException
368+
&& (e.getMessage().contains("The current credential is not configured to")));
368369
}
369370

370371
@Test
371-
public void testInvalidMultiTenantAuth() throws Exception {
372+
public void testInvalidMultiTenantAuth() {
372373
// setup
373-
Configuration.getGlobalConfiguration()
374+
Configuration configuration = TestUtils.createTestConfiguration(new TestConfigurationSource()
374375
.put(Configuration.PROPERTY_AZURE_CLIENT_ID, "foo")
375376
.put(Configuration.PROPERTY_AZURE_CLIENT_SECRET, "bar")
376-
.put(Configuration.PROPERTY_AZURE_TENANT_ID, "baz");
377+
.put(Configuration.PROPERTY_AZURE_TENANT_ID, "baz"));
377378

378379
TokenRequestContext request = new TokenRequestContext().addScopes("https://vault.azure.net/.default")
379380
.setTenantId("newTenant");
380381

381-
DefaultAzureCredential credential =
382-
new DefaultAzureCredentialBuilder().build();
382+
DefaultAzureCredential credential = new DefaultAzureCredentialBuilder()
383+
.configuration(configuration)
384+
.build();
385+
383386
StepVerifier.create(credential.getToken(request))
384-
.expectErrorMatches(e -> e instanceof ClientAuthenticationException && (e.getMessage().contains("The current credential is not configured to")))
385-
.verify();
387+
.verifyErrorMatches(e -> e instanceof ClientAuthenticationException
388+
&& (e.getMessage().contains("The current credential is not configured to")));
386389
}
387390

388391
@Test
389-
public void testValidMultiTenantAuth() throws Exception {
392+
public void testValidMultiTenantAuth() {
390393
// setup
391-
Configuration.getGlobalConfiguration()
394+
Configuration configuration = TestUtils.createTestConfiguration(new TestConfigurationSource()
392395
.put(Configuration.PROPERTY_AZURE_CLIENT_ID, "foo")
393396
.put(Configuration.PROPERTY_AZURE_CLIENT_SECRET, "bar")
394-
.put(Configuration.PROPERTY_AZURE_TENANT_ID, "baz");
397+
.put(Configuration.PROPERTY_AZURE_TENANT_ID, "baz"));
395398

396399
TokenRequestContext request = new TokenRequestContext().addScopes("https://vault.azure.net/.default")
397400
.setTenantId("newTenant");
398401

399-
DefaultAzureCredential credential =
400-
new DefaultAzureCredentialBuilder().additionallyAllowedTenants("*").build();
402+
DefaultAzureCredential credential = new DefaultAzureCredentialBuilder()
403+
.additionallyAllowedTenants("*")
404+
.configuration(configuration)
405+
.build();
406+
401407
StepVerifier.create(credential.getToken(request))
402-
.expectErrorMatches(e -> e.getCause() instanceof MsalServiceException)
403-
.verify();
408+
.verifyErrorMatches(e -> e.getCause() instanceof MsalServiceException);
404409
}
405410
}

0 commit comments

Comments
 (0)