Skip to content

Commit b02c8f2

Browse files
authored
Merge pull request #957 from AzureAD/avdunn/refactor-msitests
Refactor Managed Identity unit tests
2 parents 9dddd49 + d5a5a7d commit b02c8f2

File tree

3 files changed

+503
-719
lines changed

3 files changed

+503
-719
lines changed
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
// Copyright (c) Microsoft Corporation. All rights reserved.
2+
// Licensed under the MIT License.
3+
4+
package com.microsoft.aad.msal4j;
5+
6+
class ManagedIdentityTestConstants {
7+
// ID types
8+
static final String CLIENT_ID = "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa";
9+
static final String RESOURCE_ID = "/subscriptions/ffa4aaa2-4444-4444-5555-e3ccedd3d046/resourcegroups/UAMI_group/providers/Microsoft.ManagedIdentityClient/userAssignedIdentities/UAMI";
10+
static final String OBJECT_ID = "593b2662-5af7-4a90-a9cb-5a9de615b82f";
11+
12+
// Resources
13+
static final String RESOURCE = "https://management.azure.com";
14+
static final String RESOURCE_DEFAULT_SUFFIX = "https://management.azure.com/.default";
15+
16+
// Endpoints
17+
static final String APP_SERVICE_ENDPOINT = "http://127.0.0.1:41564/msi/token";
18+
static final String IMDS_ENDPOINT = "http://169.254.169.254/metadata/identity/oauth2/token";
19+
static final String AZURE_ARC_ENDPOINT = "http://localhost:40342/metadata/identity/oauth2/token";
20+
static final String CLOUDSHELL_ENDPOINT = "http://localhost:40342/metadata/identity/oauth2/token";
21+
static final String SERVICE_FABRIC_ENDPOINT = "http://localhost:40342/metadata/identity/oauth2/token";
22+
23+
// Example responses
24+
static final String RESPONSE_MALFORMED_JSON = "missing starting bracket \"access_token\":\"accesstoken\",\"token_type\":" + "\"Bearer\",\"client_id\":\"a bunch of problems}";
25+
static final String MSI_ERROR_RESPONSE_500 = "{\"statusCode\":\"500\",\"message\":\"An unexpected error occurred while fetching the AAD Token.\",\"correlationId\":\"7d0c9763-ff1d-4842-a3f3-6d49e64f4513\"}";
26+
static final String CLOUDSHELL_ERROR_RESPONSE = "{\"error\":{\"code\":\"AudienceNotSupported\",\"message\":\"Audience user.read is not a supported MSI token audience.\"}}";
27+
static final String MSI_ERROR_RESPONSE_NORETRY = "{\"statusCode\":\"123\",\"message\":\"Not one of the retryable error responses\",\"correlationId\":\"7d0c9763-ff1d-4842-a3f3-6d49e64f4513\"}";
28+
}

msal4j-sdk/src/test/java/com/microsoft/aad/msal4j/ManagedIdentityTestDataProvider.java

Lines changed: 71 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -8,114 +8,111 @@
88
import java.util.stream.Stream;
99

1010
class ManagedIdentityTestDataProvider {
11-
private static final String CLIENT_ID = "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa";
12-
private static final String RESOURCE_ID = "/subscriptions/ffa4aaa2-4444-4444-5555-e3ccedd3d046/resourcegroups/UAMI_group/providers/Microsoft.ManagedIdentityClient/userAssignedIdentities/UAMI";
13-
private static final String OBJECT_ID = "593b2662-5af7-4a90-a9cb-5a9de615b82f";
1411

15-
public static Stream<Arguments> createData() {
12+
static Stream<Arguments> createData() {
1613
return Stream.of(
17-
Arguments.of(ManagedIdentitySourceType.APP_SERVICE, ManagedIdentityTests.appServiceEndpoint,
18-
ManagedIdentityTests.resource),
19-
Arguments.of(ManagedIdentitySourceType.APP_SERVICE, ManagedIdentityTests.appServiceEndpoint,
20-
ManagedIdentityTests.resourceDefaultSuffix),
21-
Arguments.of(ManagedIdentitySourceType.CLOUD_SHELL, ManagedIdentityTests.cloudShellEndpoint,
22-
ManagedIdentityTests.resource),
23-
Arguments.of(ManagedIdentitySourceType.CLOUD_SHELL, ManagedIdentityTests.cloudShellEndpoint,
24-
ManagedIdentityTests.resourceDefaultSuffix),
25-
Arguments.of(ManagedIdentitySourceType.AZURE_ARC, ManagedIdentityTests.azureArcEndpoint,
26-
ManagedIdentityTests.resource),
27-
Arguments.of(ManagedIdentitySourceType.AZURE_ARC, ManagedIdentityTests.azureArcEndpoint,
28-
ManagedIdentityTests.resourceDefaultSuffix),
29-
Arguments.of(ManagedIdentitySourceType.IMDS, ManagedIdentityTests.IMDS_ENDPOINT,
30-
ManagedIdentityTests.resource),
31-
Arguments.of(ManagedIdentitySourceType.IMDS, ManagedIdentityTests.IMDS_ENDPOINT,
32-
ManagedIdentityTests.resourceDefaultSuffix),
14+
Arguments.of(ManagedIdentitySourceType.APP_SERVICE, ManagedIdentityTestConstants.APP_SERVICE_ENDPOINT,
15+
ManagedIdentityTestConstants.RESOURCE),
16+
Arguments.of(ManagedIdentitySourceType.APP_SERVICE, ManagedIdentityTestConstants.APP_SERVICE_ENDPOINT,
17+
ManagedIdentityTestConstants.RESOURCE_DEFAULT_SUFFIX),
18+
Arguments.of(ManagedIdentitySourceType.CLOUD_SHELL, ManagedIdentityTestConstants.CLOUDSHELL_ENDPOINT,
19+
ManagedIdentityTestConstants.RESOURCE),
20+
Arguments.of(ManagedIdentitySourceType.CLOUD_SHELL, ManagedIdentityTestConstants.CLOUDSHELL_ENDPOINT,
21+
ManagedIdentityTestConstants.RESOURCE_DEFAULT_SUFFIX),
22+
Arguments.of(ManagedIdentitySourceType.AZURE_ARC, ManagedIdentityTestConstants.AZURE_ARC_ENDPOINT,
23+
ManagedIdentityTestConstants.RESOURCE),
24+
Arguments.of(ManagedIdentitySourceType.AZURE_ARC, ManagedIdentityTestConstants.AZURE_ARC_ENDPOINT,
25+
ManagedIdentityTestConstants.RESOURCE_DEFAULT_SUFFIX),
26+
Arguments.of(ManagedIdentitySourceType.IMDS, ManagedIdentityTestConstants.IMDS_ENDPOINT,
27+
ManagedIdentityTestConstants.RESOURCE),
28+
Arguments.of(ManagedIdentitySourceType.IMDS, ManagedIdentityTestConstants.IMDS_ENDPOINT,
29+
ManagedIdentityTestConstants.RESOURCE_DEFAULT_SUFFIX),
3330
Arguments.of(ManagedIdentitySourceType.IMDS, null,
34-
ManagedIdentityTests.resource),
35-
Arguments.of(ManagedIdentitySourceType.SERVICE_FABRIC, ManagedIdentityTests.serviceFabricEndpoint,
36-
ManagedIdentityTests.resource),
37-
Arguments.of(ManagedIdentitySourceType.SERVICE_FABRIC, ManagedIdentityTests.serviceFabricEndpoint,
38-
ManagedIdentityTests.resourceDefaultSuffix));
31+
ManagedIdentityTestConstants.RESOURCE),
32+
Arguments.of(ManagedIdentitySourceType.SERVICE_FABRIC, ManagedIdentityTestConstants.SERVICE_FABRIC_ENDPOINT,
33+
ManagedIdentityTestConstants.RESOURCE),
34+
Arguments.of(ManagedIdentitySourceType.SERVICE_FABRIC, ManagedIdentityTestConstants.SERVICE_FABRIC_ENDPOINT,
35+
ManagedIdentityTestConstants.RESOURCE_DEFAULT_SUFFIX));
3936
}
4037

41-
public static Stream<Arguments> createDataUserAssigned() {
38+
static Stream<Arguments> createDataUserAssigned() {
4239
return Stream.of(
43-
Arguments.of(ManagedIdentitySourceType.APP_SERVICE, ManagedIdentityTests.appServiceEndpoint,
44-
ManagedIdentityId.userAssignedClientId(CLIENT_ID)),
45-
Arguments.of(ManagedIdentitySourceType.APP_SERVICE, ManagedIdentityTests.appServiceEndpoint,
46-
ManagedIdentityId.userAssignedResourceId(RESOURCE_ID)),
47-
Arguments.of(ManagedIdentitySourceType.APP_SERVICE, ManagedIdentityTests.appServiceEndpoint,
48-
ManagedIdentityId.userAssignedObjectId(OBJECT_ID)),
40+
Arguments.of(ManagedIdentitySourceType.APP_SERVICE, ManagedIdentityTestConstants.APP_SERVICE_ENDPOINT,
41+
ManagedIdentityId.userAssignedClientId(ManagedIdentityTestConstants.CLIENT_ID)),
42+
Arguments.of(ManagedIdentitySourceType.APP_SERVICE, ManagedIdentityTestConstants.APP_SERVICE_ENDPOINT,
43+
ManagedIdentityId.userAssignedResourceId(ManagedIdentityTestConstants.RESOURCE_ID)),
44+
Arguments.of(ManagedIdentitySourceType.APP_SERVICE, ManagedIdentityTestConstants.APP_SERVICE_ENDPOINT,
45+
ManagedIdentityId.userAssignedObjectId(ManagedIdentityTestConstants.OBJECT_ID)),
4946
Arguments.of(ManagedIdentitySourceType.IMDS, null,
50-
ManagedIdentityId.userAssignedClientId(CLIENT_ID)),
47+
ManagedIdentityId.userAssignedClientId(ManagedIdentityTestConstants.CLIENT_ID)),
5148
Arguments.of(ManagedIdentitySourceType.IMDS, null,
52-
ManagedIdentityId.userAssignedResourceId(RESOURCE_ID)),
49+
ManagedIdentityId.userAssignedResourceId(ManagedIdentityTestConstants.RESOURCE_ID)),
5350
Arguments.of(ManagedIdentitySourceType.IMDS, null,
54-
ManagedIdentityId.userAssignedObjectId(OBJECT_ID)),
55-
Arguments.of(ManagedIdentitySourceType.SERVICE_FABRIC, ManagedIdentityTests.serviceFabricEndpoint,
56-
ManagedIdentityId.userAssignedResourceId(CLIENT_ID)),
57-
Arguments.of(ManagedIdentitySourceType.SERVICE_FABRIC, ManagedIdentityTests.serviceFabricEndpoint,
58-
ManagedIdentityId.userAssignedResourceId(RESOURCE_ID)),
59-
Arguments.of(ManagedIdentitySourceType.SERVICE_FABRIC, ManagedIdentityTests.serviceFabricEndpoint,
60-
ManagedIdentityId.userAssignedObjectId(OBJECT_ID)));
51+
ManagedIdentityId.userAssignedObjectId(ManagedIdentityTestConstants.OBJECT_ID)),
52+
Arguments.of(ManagedIdentitySourceType.SERVICE_FABRIC, ManagedIdentityTestConstants.SERVICE_FABRIC_ENDPOINT,
53+
ManagedIdentityId.userAssignedResourceId(ManagedIdentityTestConstants.CLIENT_ID)),
54+
Arguments.of(ManagedIdentitySourceType.SERVICE_FABRIC, ManagedIdentityTestConstants.SERVICE_FABRIC_ENDPOINT,
55+
ManagedIdentityId.userAssignedResourceId(ManagedIdentityTestConstants.RESOURCE_ID)),
56+
Arguments.of(ManagedIdentitySourceType.SERVICE_FABRIC, ManagedIdentityTestConstants.SERVICE_FABRIC_ENDPOINT,
57+
ManagedIdentityId.userAssignedObjectId(ManagedIdentityTestConstants.OBJECT_ID)));
6158
}
6259

63-
public static Stream<Arguments> createDataUserAssignedNotSupported() {
60+
static Stream<Arguments> createDataUserAssignedNotSupported() {
6461
return Stream.of(
65-
Arguments.of(ManagedIdentitySourceType.CLOUD_SHELL, ManagedIdentityTests.cloudShellEndpoint,
66-
ManagedIdentityId.userAssignedClientId(CLIENT_ID)),
67-
Arguments.of(ManagedIdentitySourceType.CLOUD_SHELL, ManagedIdentityTests.cloudShellEndpoint,
68-
ManagedIdentityId.userAssignedResourceId(RESOURCE_ID)),
69-
Arguments.of(ManagedIdentitySourceType.AZURE_ARC, ManagedIdentityTests.azureArcEndpoint,
70-
ManagedIdentityId.userAssignedClientId(CLIENT_ID)),
71-
Arguments.of(ManagedIdentitySourceType.AZURE_ARC, ManagedIdentityTests.azureArcEndpoint,
72-
ManagedIdentityId.userAssignedResourceId(RESOURCE_ID)));
62+
Arguments.of(ManagedIdentitySourceType.CLOUD_SHELL, ManagedIdentityTestConstants.CLOUDSHELL_ENDPOINT,
63+
ManagedIdentityId.userAssignedClientId(ManagedIdentityTestConstants.CLIENT_ID)),
64+
Arguments.of(ManagedIdentitySourceType.CLOUD_SHELL, ManagedIdentityTestConstants.CLOUDSHELL_ENDPOINT,
65+
ManagedIdentityId.userAssignedResourceId(ManagedIdentityTestConstants.RESOURCE_ID)),
66+
Arguments.of(ManagedIdentitySourceType.AZURE_ARC, ManagedIdentityTestConstants.AZURE_ARC_ENDPOINT,
67+
ManagedIdentityId.userAssignedClientId(ManagedIdentityTestConstants.CLIENT_ID)),
68+
Arguments.of(ManagedIdentitySourceType.AZURE_ARC, ManagedIdentityTestConstants.AZURE_ARC_ENDPOINT,
69+
ManagedIdentityId.userAssignedResourceId(ManagedIdentityTestConstants.RESOURCE_ID)));
7370
}
7471

75-
public static Stream<Arguments> createDataWrongScope() {
72+
static Stream<Arguments> createDataWrongScope() {
7673
return Stream.of(
77-
Arguments.of(ManagedIdentitySourceType.APP_SERVICE, ManagedIdentityTests.appServiceEndpoint,
74+
Arguments.of(ManagedIdentitySourceType.APP_SERVICE, ManagedIdentityTestConstants.APP_SERVICE_ENDPOINT,
7875
"user.read"),
79-
Arguments.of(ManagedIdentitySourceType.APP_SERVICE, ManagedIdentityTests.appServiceEndpoint,
76+
Arguments.of(ManagedIdentitySourceType.APP_SERVICE, ManagedIdentityTestConstants.APP_SERVICE_ENDPOINT,
8077
"https://management.core.windows.net//user_impersonation"),
81-
Arguments.of(ManagedIdentitySourceType.CLOUD_SHELL, ManagedIdentityTests.cloudShellEndpoint,
78+
Arguments.of(ManagedIdentitySourceType.CLOUD_SHELL, ManagedIdentityTestConstants.CLOUDSHELL_ENDPOINT,
8279
"user.read"),
83-
Arguments.of(ManagedIdentitySourceType.CLOUD_SHELL, ManagedIdentityTests.cloudShellEndpoint,
80+
Arguments.of(ManagedIdentitySourceType.CLOUD_SHELL, ManagedIdentityTestConstants.CLOUDSHELL_ENDPOINT,
8481
"https://management.core.windows.net//user_impersonation"),
85-
Arguments.of(ManagedIdentitySourceType.AZURE_ARC, ManagedIdentityTests.azureArcEndpoint,
82+
Arguments.of(ManagedIdentitySourceType.AZURE_ARC, ManagedIdentityTestConstants.AZURE_ARC_ENDPOINT,
8683
"user.read"),
87-
Arguments.of(ManagedIdentitySourceType.AZURE_ARC, ManagedIdentityTests.azureArcEndpoint,
84+
Arguments.of(ManagedIdentitySourceType.AZURE_ARC, ManagedIdentityTestConstants.AZURE_ARC_ENDPOINT,
8885
"https://management.core.windows.net//user_impersonation"),
89-
Arguments.of(ManagedIdentitySourceType.IMDS, ManagedIdentityTests.IMDS_ENDPOINT,
86+
Arguments.of(ManagedIdentitySourceType.IMDS, ManagedIdentityTestConstants.IMDS_ENDPOINT,
9087
"user.read"),
91-
Arguments.of(ManagedIdentitySourceType.IMDS, ManagedIdentityTests.IMDS_ENDPOINT,
88+
Arguments.of(ManagedIdentitySourceType.IMDS, ManagedIdentityTestConstants.IMDS_ENDPOINT,
9289
"https://management.core.windows.net//user_impersonation"),
93-
Arguments.of(ManagedIdentitySourceType.SERVICE_FABRIC, ManagedIdentityTests.serviceFabricEndpoint,
90+
Arguments.of(ManagedIdentitySourceType.SERVICE_FABRIC, ManagedIdentityTestConstants.SERVICE_FABRIC_ENDPOINT,
9491
"user.read"),
95-
Arguments.of(ManagedIdentitySourceType.SERVICE_FABRIC, ManagedIdentityTests.serviceFabricEndpoint,
92+
Arguments.of(ManagedIdentitySourceType.SERVICE_FABRIC, ManagedIdentityTestConstants.SERVICE_FABRIC_ENDPOINT,
9693
"https://management.core.windows.net//user_impersonation"));
9794
}
9895

99-
public static Stream<Arguments> createDataError() {
96+
static Stream<Arguments> createDataError() {
10097
return Stream.of(
101-
Arguments.of(ManagedIdentitySourceType.AZURE_ARC, ManagedIdentityTests.azureArcEndpoint),
102-
Arguments.of(ManagedIdentitySourceType.APP_SERVICE, ManagedIdentityTests.appServiceEndpoint),
103-
Arguments.of(ManagedIdentitySourceType.CLOUD_SHELL, ManagedIdentityTests.cloudShellEndpoint),
104-
Arguments.of(ManagedIdentitySourceType.IMDS, ManagedIdentityTests.IMDS_ENDPOINT),
105-
Arguments.of(ManagedIdentitySourceType.SERVICE_FABRIC, ManagedIdentityTests.serviceFabricEndpoint));
98+
Arguments.of(ManagedIdentitySourceType.AZURE_ARC, ManagedIdentityTestConstants.AZURE_ARC_ENDPOINT),
99+
Arguments.of(ManagedIdentitySourceType.APP_SERVICE, ManagedIdentityTestConstants.APP_SERVICE_ENDPOINT),
100+
Arguments.of(ManagedIdentitySourceType.CLOUD_SHELL, ManagedIdentityTestConstants.CLOUDSHELL_ENDPOINT),
101+
Arguments.of(ManagedIdentitySourceType.IMDS, ManagedIdentityTestConstants.IMDS_ENDPOINT),
102+
Arguments.of(ManagedIdentitySourceType.SERVICE_FABRIC, ManagedIdentityTestConstants.SERVICE_FABRIC_ENDPOINT));
106103
}
107104

108-
public static Stream<Arguments> createDataGetSource() {
105+
static Stream<Arguments> createDataGetSource() {
109106
return Stream.of(
110-
Arguments.of(ManagedIdentitySourceType.AZURE_ARC, ManagedIdentityTests.azureArcEndpoint, ManagedIdentitySourceType.AZURE_ARC),
111-
Arguments.of(ManagedIdentitySourceType.APP_SERVICE, ManagedIdentityTests.appServiceEndpoint, ManagedIdentitySourceType.APP_SERVICE),
112-
Arguments.of(ManagedIdentitySourceType.CLOUD_SHELL, ManagedIdentityTests.cloudShellEndpoint, ManagedIdentitySourceType.CLOUD_SHELL),
113-
Arguments.of(ManagedIdentitySourceType.IMDS, ManagedIdentityTests.IMDS_ENDPOINT, ManagedIdentitySourceType.DEFAULT_TO_IMDS),
107+
Arguments.of(ManagedIdentitySourceType.AZURE_ARC, ManagedIdentityTestConstants.AZURE_ARC_ENDPOINT, ManagedIdentitySourceType.AZURE_ARC),
108+
Arguments.of(ManagedIdentitySourceType.APP_SERVICE, ManagedIdentityTestConstants.APP_SERVICE_ENDPOINT, ManagedIdentitySourceType.APP_SERVICE),
109+
Arguments.of(ManagedIdentitySourceType.CLOUD_SHELL, ManagedIdentityTestConstants.CLOUDSHELL_ENDPOINT, ManagedIdentitySourceType.CLOUD_SHELL),
110+
Arguments.of(ManagedIdentitySourceType.IMDS, ManagedIdentityTestConstants.IMDS_ENDPOINT, ManagedIdentitySourceType.DEFAULT_TO_IMDS),
114111
Arguments.of(ManagedIdentitySourceType.IMDS, "", ManagedIdentitySourceType.DEFAULT_TO_IMDS),
115-
Arguments.of(ManagedIdentitySourceType.SERVICE_FABRIC, ManagedIdentityTests.serviceFabricEndpoint, ManagedIdentitySourceType.SERVICE_FABRIC));
112+
Arguments.of(ManagedIdentitySourceType.SERVICE_FABRIC, ManagedIdentityTestConstants.SERVICE_FABRIC_ENDPOINT, ManagedIdentitySourceType.SERVICE_FABRIC));
116113
}
117114

118-
public static Stream<Arguments> createInvalidClaimsData() {
115+
static Stream<Arguments> createInvalidClaimsData() {
119116
return Stream.of(
120117
Arguments.of("invalid json format"),
121118
Arguments.of("{\"access_token\": }")

0 commit comments

Comments
 (0)