Skip to content

Commit ed7df00

Browse files
authored
Add tests for a CIAM user and reduce test code duplication (#603)
* Add tests for a CIAM user and reduce code duplication in several test files * Revert changed method name * Attempt to resolve credscan flag * Resolve credscan issues * Address code review comments * Use default scope
1 parent 9683c9d commit ed7df00

File tree

11 files changed

+111
-69
lines changed

11 files changed

+111
-69
lines changed

msal4j-sdk/src/integrationtest/java/com.microsoft.aad.msal4j/AcquireTokenInteractiveIT.java

Lines changed: 26 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -28,45 +28,52 @@ public void acquireTokenInteractive_ManagedUser(String environment) {
2828
cfg = new Config(environment);
2929

3030
User user = labUserProvider.getDefaultUser(cfg.azureEnvironment);
31-
assertAcquireTokenAAD(user);
31+
assertAcquireTokenCommon(user, cfg.organizationsAuthority(), cfg.graphDefaultScope());
3232
}
3333

3434
@Test()
3535
public void acquireTokenInteractive_ADFSv2019_OnPrem() {
3636
User user = labUserProvider.getOnPremAdfsUser(FederationProvider.ADFS_2019);
37-
assertAcquireTokenADFS2019(user);
37+
assertAcquireTokenCommon(user, TestConstants.ADFS_AUTHORITY, TestConstants.ADFS_SCOPE);
3838
}
3939

4040
@Test(dataProvider = "environments", dataProviderClass = EnvironmentsProvider.class)
4141
public void acquireTokenInteractive_ADFSv2019_Federated(String environment) {
4242
cfg = new Config(environment);
4343

4444
User user = labUserProvider.getFederatedAdfsUser(cfg.azureEnvironment, FederationProvider.ADFS_2019);
45-
assertAcquireTokenAAD(user);
45+
assertAcquireTokenCommon(user, cfg.organizationsAuthority(), cfg.graphDefaultScope());
4646
}
4747

4848
@Test(dataProvider = "environments", dataProviderClass = EnvironmentsProvider.class)
4949
public void acquireTokenInteractive_ADFSv4_Federated(String environment) {
5050
cfg = new Config(environment);
5151

5252
User user = labUserProvider.getFederatedAdfsUser(cfg.azureEnvironment, FederationProvider.ADFS_4);
53-
assertAcquireTokenAAD(user);
53+
assertAcquireTokenCommon(user, cfg.organizationsAuthority(), cfg.graphDefaultScope());
5454
}
5555

5656
@Test(dataProvider = "environments", dataProviderClass = EnvironmentsProvider.class)
5757
public void acquireTokenInteractive_ADFSv3_Federated(String environment) {
5858
cfg = new Config(environment);
5959

6060
User user = labUserProvider.getFederatedAdfsUser(cfg.azureEnvironment, FederationProvider.ADFS_3);
61-
assertAcquireTokenAAD(user);
61+
assertAcquireTokenCommon(user, cfg.organizationsAuthority(), cfg.graphDefaultScope());
6262
}
6363

6464
@Test(dataProvider = "environments", dataProviderClass = EnvironmentsProvider.class)
6565
public void acquireTokenInteractive_ADFSv2_Federated(String environment) {
6666
cfg = new Config(environment);
6767

6868
User user = labUserProvider.getFederatedAdfsUser(cfg.azureEnvironment, FederationProvider.ADFS_2);
69-
assertAcquireTokenAAD(user);
69+
assertAcquireTokenCommon(user, cfg.organizationsAuthority(), cfg.graphDefaultScope());
70+
}
71+
72+
@Test
73+
public void acquireTokenInteractive_Ciam() {
74+
User user = labUserProvider.getCiamUser();
75+
76+
assertAcquireTokenCommon(user, TestConstants.CIAM_AUTHORITY, TestConstants.GRAPH_DEFAULT_SCOPE);
7077
}
7178

7279
@Test(dataProvider = "environments", dataProviderClass = EnvironmentsProvider.class)
@@ -93,12 +100,12 @@ public void acquireTokenInteractive_ManagedUser_InstanceAware() {
93100
assertAcquireTokenInstanceAware(user);
94101
}
95102

96-
private void assertAcquireTokenAAD(User user) {
103+
private void assertAcquireTokenCommon(User user, String authority, String scope) {
97104
PublicClientApplication pca;
98105
try {
99106
pca = PublicClientApplication.builder(
100107
user.getAppId()).
101-
authority(cfg.organizationsAuthority()).
108+
authority(authority).
102109
build();
103110
} catch (MalformedURLException ex) {
104111
throw new RuntimeException(ex.getMessage());
@@ -107,30 +114,9 @@ private void assertAcquireTokenAAD(User user) {
107114
IAuthenticationResult result = acquireTokenInteractive(
108115
user,
109116
pca,
110-
cfg.graphDefaultScope());
117+
scope);
111118

112-
Assert.assertNotNull(result);
113-
Assert.assertNotNull(result.accessToken());
114-
Assert.assertNotNull(result.idToken());
115-
Assert.assertEquals(user.getUpn(), result.account().username());
116-
}
117-
118-
private void assertAcquireTokenADFS2019(User user) {
119-
PublicClientApplication pca;
120-
try {
121-
pca = PublicClientApplication.builder(
122-
TestConstants.ADFS_APP_ID).
123-
authority(TestConstants.ADFS_AUTHORITY).
124-
build();
125-
} catch (MalformedURLException ex) {
126-
throw new RuntimeException(ex.getMessage());
127-
}
128-
129-
IAuthenticationResult result = acquireTokenInteractive(user, pca, TestConstants.ADFS_SCOPE);
130-
131-
Assert.assertNotNull(result);
132-
Assert.assertNotNull(result.accessToken());
133-
Assert.assertNotNull(result.idToken());
119+
assertTokenResultNotNull(result);
134120
Assert.assertEquals(user.getUpn(), result.account().username());
135121
}
136122

@@ -147,9 +133,7 @@ private void assertAcquireTokenB2C(User user, String authority) {
147133
}
148134

149135
IAuthenticationResult result = acquireTokenInteractive(user, pca, user.getAppId());
150-
Assert.assertNotNull(result);
151-
Assert.assertNotNull(result.accessToken());
152-
Assert.assertNotNull(result.idToken());
136+
assertTokenResultNotNull(result);
153137
}
154138

155139
private void assertAcquireTokenInstanceAware(User user) {
@@ -165,9 +149,7 @@ private void assertAcquireTokenInstanceAware(User user) {
165149

166150
IAuthenticationResult result = acquireTokenInteractive_instanceAware(user, pca, cfg.graphDefaultScope());
167151

168-
Assert.assertNotNull(result);
169-
Assert.assertNotNull(result.accessToken());
170-
Assert.assertNotNull(result.idToken());
152+
assertTokenResultNotNull(result);
171153
Assert.assertEquals(user.getUpn(), result.account().username());
172154

173155
//This test is using a client app with the login.microsoftonline.com config to get tokens for a login.microsoftonline.us user,
@@ -231,9 +213,7 @@ public void afterCacheAccess(ITokenCacheAccessContext iTokenCacheAccessContext)
231213
build();
232214

233215
IAuthenticationResult result = acquireTokenInteractive(user, publicCloudPca, TestConstants.USER_READ_SCOPE);
234-
Assert.assertNotNull(result);
235-
Assert.assertNotNull(result.accessToken());
236-
Assert.assertNotNull(result.idToken());
216+
assertTokenResultNotNull(result);
237217
Assert.assertEquals(user.getHomeUPN(), result.account().username());
238218

239219
publicCloudPca.removeAccount(publicCloudPca.getAccounts().join().iterator().next()).join();
@@ -271,6 +251,12 @@ private IAuthenticationResult acquireTokenInteractive(
271251
return result;
272252
}
273253

254+
private void assertTokenResultNotNull(IAuthenticationResult result) {
255+
Assert.assertNotNull(result);
256+
Assert.assertNotNull(result.accessToken());
257+
Assert.assertNotNull(result.idToken());
258+
}
259+
274260
private IAuthenticationResult acquireTokenInteractive_instanceAware(
275261
User user,
276262
PublicClientApplication pca,

msal4j-sdk/src/integrationtest/java/com.microsoft.aad.msal4j/ClientCredentialsIT.java

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

66
import labapi.AppCredentialProvider;
77
import labapi.AzureEnvironment;
8+
import labapi.LabUserProvider;
89
import org.testng.Assert;
910
import org.testng.annotations.BeforeClass;
1011
import org.testng.annotations.DataProvider;
@@ -24,16 +25,18 @@
2425
@Test
2526
public class ClientCredentialsIT {
2627
private IClientCertificate certificate;
28+
private LabUserProvider labUserProvider;
2729

2830
@BeforeClass
2931
void init() throws CertificateException, UnrecoverableKeyException, NoSuchAlgorithmException, KeyStoreException, NoSuchProviderException, IOException {
3032
certificate = CertificateHelper.getClientCertificate();
33+
labUserProvider = LabUserProvider.getInstance();
3134
}
3235

3336
@Test
3437
public void acquireTokenClientCredentials_ClientCertificate() throws Exception {
3538
String clientId = "2afb0add-2f32-4946-ac90-81a02aa4550e";
36-
assertAcquireTokenCommon(clientId, certificate);
39+
assertAcquireTokenCommon(clientId, certificate, TestConstants.MICROSOFT_AUTHORITY);
3740
}
3841

3942
@Test
@@ -43,7 +46,7 @@ public void acquireTokenClientCredentials_ClientSecret() throws Exception {
4346
final String password = appProvider.getLabVaultPassword();
4447
IClientCredential credential = ClientCredentialFactory.createFromSecret(password);
4548

46-
assertAcquireTokenCommon(clientId, credential);
49+
assertAcquireTokenCommon(clientId, credential, TestConstants.MICROSOFT_AUTHORITY);
4750
}
4851

4952
@Test
@@ -54,7 +57,17 @@ public void acquireTokenClientCredentials_ClientAssertion() throws Exception {
5457

5558
IClientCredential credential = ClientCredentialFactory.createFromClientAssertion(clientAssertion.assertion());
5659

57-
assertAcquireTokenCommon(clientId, credential);
60+
assertAcquireTokenCommon(clientId, credential, TestConstants.MICROSOFT_AUTHORITY);
61+
}
62+
63+
@Test
64+
public void acquireTokenClientCredentials_ClientSecret_Ciam() throws Exception {
65+
String clientId = labUserProvider.getCiamUser().getAppId();
66+
67+
AppCredentialProvider appProvider = new AppCredentialProvider(AzureEnvironment.CIAM);
68+
IClientCredential credential = ClientCredentialFactory.createFromSecret(appProvider.getOboAppPassword());
69+
70+
assertAcquireTokenCommon(clientId, credential, TestConstants.CIAM_AUTHORITY);
5871
}
5972

6073
@Test
@@ -70,7 +83,7 @@ public void acquireTokenClientCredentials_Callback() throws Exception {
7083

7184
IClientCredential credential = ClientCredentialFactory.createFromCallback(callable);
7285

73-
assertAcquireTokenCommon(clientId, credential);
86+
assertAcquireTokenCommon(clientId, credential, TestConstants.MICROSOFT_AUTHORITY);
7487

7588
// Creates an invalid client assertion to build the application, but overrides it with a valid client assertion
7689
// in the request parameters in order to make a successful token request
@@ -139,10 +152,10 @@ private ClientAssertion getClientAssertion(String clientId) {
139152
true);
140153
}
141154

142-
private void assertAcquireTokenCommon(String clientId, IClientCredential credential) throws Exception {
155+
private void assertAcquireTokenCommon(String clientId, IClientCredential credential, String authority) throws Exception {
143156
ConfidentialClientApplication cca = ConfidentialClientApplication.builder(
144157
clientId, credential).
145-
authority(TestConstants.MICROSOFT_AUTHORITY).
158+
authority(authority).
146159
build();
147160

148161
IAuthenticationResult result = cca.acquireToken(ClientCredentialParameters

msal4j-sdk/src/integrationtest/java/com.microsoft.aad.msal4j/DeviceCodeIT.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,29 @@ public void DeviceCodeFlowMSATest() throws Exception {
113113
Assert.assertFalse(Strings.isNullOrEmpty(result.accessToken()));
114114
}
115115

116+
@Test
117+
public void DeviceCodeFlowCiamTest() throws Exception {
118+
User user = labUserProvider.getCiamUser();
119+
120+
PublicClientApplication pca = PublicClientApplication.builder(
121+
user.getAppId()).
122+
authority(TestConstants.CIAM_AUTHORITY).
123+
build();
124+
125+
Consumer<DeviceCode> deviceCodeConsumer = (DeviceCode deviceCode) -> {
126+
runAutomatedDeviceCodeFlow(deviceCode, user);
127+
};
128+
129+
IAuthenticationResult result = pca.acquireToken(DeviceCodeFlowParameters
130+
.builder(Collections.singleton(""),
131+
deviceCodeConsumer)
132+
.build())
133+
.get();
134+
135+
Assert.assertNotNull(result);
136+
Assert.assertFalse(Strings.isNullOrEmpty(result.accessToken()));
137+
}
138+
116139
private void runAutomatedDeviceCodeFlow(DeviceCode deviceCode, User user) {
117140
boolean isRunningLocally = true;//!Strings.isNullOrEmpty(
118141
//System.getenv(TestConstants.LOCAL_FLAG_ENV_VAR));

msal4j-sdk/src/integrationtest/java/com.microsoft.aad.msal4j/TestConstants.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ public class TestConstants {
3434

3535
public final static String REGIONAL_MICROSOFT_AUTHORITY_BASIC_HOST_EASTUS = "eastus.login.microsoft.com";
3636

37+
public final static String CIAM_AUTHORITY = MICROSOFT_AUTHORITY_HOST + "msidlabciam1.onmicrosoft.com";
38+
3739
public final static String ARLINGTON_ORGANIZATIONS_AUTHORITY = ARLINGTON_MICROSOFT_AUTHORITY_HOST + "organizations/";
3840
public final static String ARLINGTON_TENANT_SPECIFIC_AUTHORITY = ARLINGTON_MICROSOFT_AUTHORITY_HOST + ARLINGTON_AUTHORITY_TENANT;
3941
public final static String ARLINGTON_GRAPH_DEFAULT_SCOPE = "https://graph.microsoft.us/.default";

msal4j-sdk/src/integrationtest/java/com.microsoft.aad.msal4j/UsernamePasswordIT.java

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public void acquireTokenWithUsernamePassword_Managed(String environment) throws
2727

2828
User user = labUserProvider.getDefaultUser(cfg.azureEnvironment);
2929

30-
assertAcquireTokenCommonAAD(user);
30+
assertAcquireTokenCommon(user, cfg.organizationsAuthority(), cfg.graphDefaultScope(), user.getAppId());
3131
}
3232

3333
@Test(dataProvider = "environments", dataProviderClass = EnvironmentsProvider.class)
@@ -41,7 +41,7 @@ public void acquireTokenWithUsernamePassword_ADFSv2019_Federated(String environm
4141

4242
User user = labUserProvider.getLabUser(query);
4343

44-
assertAcquireTokenCommonAAD(user);
44+
assertAcquireTokenCommon(user, cfg.organizationsAuthority(), cfg.graphDefaultScope(), user.getAppId());
4545
}
4646

4747
@Test
@@ -52,7 +52,7 @@ public void acquireTokenWithUsernamePassword_ADFSv2019_OnPrem() throws Exception
5252

5353
User user = labUserProvider.getLabUser(query);
5454

55-
assertAcquireTokenCommonADFS(user);
55+
assertAcquireTokenCommon(user, TestConstants.ADFS_AUTHORITY, TestConstants.ADFS_SCOPE, TestConstants.ADFS_APP_ID);
5656
}
5757

5858
@Test(dataProvider = "environments", dataProviderClass = EnvironmentsProvider.class)
@@ -66,7 +66,7 @@ public void acquireTokenWithUsernamePassword_ADFSv4(String environment) throws E
6666

6767
User user = labUserProvider.getLabUser(query);
6868

69-
assertAcquireTokenCommonAAD(user);
69+
assertAcquireTokenCommon(user, cfg.organizationsAuthority(), cfg.graphDefaultScope(), user.getAppId());
7070
}
7171

7272
@Test(dataProvider = "environments", dataProviderClass = EnvironmentsProvider.class)
@@ -80,7 +80,7 @@ public void acquireTokenWithUsernamePassword_ADFSv3(String environment) throws E
8080

8181
User user = labUserProvider.getLabUser(query);
8282

83-
assertAcquireTokenCommonAAD(user);
83+
assertAcquireTokenCommon(user, cfg.organizationsAuthority(), cfg.graphDefaultScope(), user.getAppId());
8484
}
8585

8686
@Test(dataProvider = "environments", dataProviderClass = EnvironmentsProvider.class)
@@ -97,6 +97,15 @@ public void acquireTokenWithUsernamePassword_ADFSv2(String environment) throws E
9797
assertAcquireTokenCommonAAD(user);
9898
}
9999

100+
@Test
101+
public void acquireTokenWithUsernamePassword_Ciam() throws Exception {
102+
103+
User user = labUserProvider.getCiamUser();
104+
105+
assertAcquireTokenCommon(user, TestConstants.CIAM_AUTHORITY, TestConstants.GRAPH_DEFAULT_SCOPE,
106+
user.getAppId());
107+
}
108+
100109
@Test
101110
public void acquireTokenWithUsernamePassword_AuthorityWithPort() throws Exception {
102111
User user = labUserProvider.getDefaultUser();
@@ -108,10 +117,6 @@ public void acquireTokenWithUsernamePassword_AuthorityWithPort() throws Exceptio
108117
user.getAppId());
109118
}
110119

111-
private void assertAcquireTokenCommonADFS(User user) throws Exception {
112-
assertAcquireTokenCommon(user, TestConstants.ADFS_AUTHORITY, TestConstants.ADFS_SCOPE,
113-
TestConstants.ADFS_APP_ID);
114-
}
115120

116121
private void assertAcquireTokenCommonAAD(User user) throws Exception {
117122
assertAcquireTokenCommon(user, cfg.organizationsAuthority(), cfg.graphDefaultScope(),
@@ -132,9 +137,7 @@ private void assertAcquireTokenCommon(User user, String authority, String scope,
132137
.build())
133138
.get();
134139

135-
Assert.assertNotNull(result);
136-
Assert.assertNotNull(result.accessToken());
137-
Assert.assertNotNull(result.idToken());
140+
assertTokenResultNotNull(result);
138141
Assert.assertEquals(user.getUpn(), result.account().username());
139142
}
140143

@@ -157,9 +160,7 @@ public void acquireTokenWithUsernamePassword_B2C_CustomAuthority() throws Except
157160
.build())
158161
.get();
159162

160-
Assert.assertNotNull(result);
161-
Assert.assertNotNull(result.accessToken());
162-
Assert.assertNotNull(result.idToken());
163+
assertTokenResultNotNull(result);
163164

164165
IAccount account = pca.getAccounts().join().iterator().next();
165166
SilentParameters.builder(Collections.singleton(TestConstants.B2C_READ_SCOPE), account);
@@ -169,9 +170,7 @@ public void acquireTokenWithUsernamePassword_B2C_CustomAuthority() throws Except
169170
.build())
170171
.get();
171172

172-
Assert.assertNotNull(result);
173-
Assert.assertNotNull(result.accessToken());
174-
Assert.assertNotNull(result.idToken());
173+
assertTokenResultNotNull(result);
175174
}
176175

177176
@Test
@@ -193,9 +192,7 @@ public void acquireTokenWithUsernamePassword_B2C_LoginMicrosoftOnline() throws E
193192
.build())
194193
.get();
195194

196-
Assert.assertNotNull(result);
197-
Assert.assertNotNull(result.accessToken());
198-
Assert.assertNotNull(result.idToken());
195+
assertTokenResultNotNull(result);
199196

200197
IAccount account = pca.getAccounts().join().iterator().next();
201198
SilentParameters.builder(Collections.singleton(TestConstants.B2C_READ_SCOPE), account);
@@ -205,6 +202,10 @@ public void acquireTokenWithUsernamePassword_B2C_LoginMicrosoftOnline() throws E
205202
.build())
206203
.get();
207204

205+
assertTokenResultNotNull(result);
206+
}
207+
208+
private void assertTokenResultNotNull(IAuthenticationResult result) {
208209
Assert.assertNotNull(result);
209210
Assert.assertNotNull(result.accessToken());
210211
Assert.assertNotNull(result.idToken());

0 commit comments

Comments
 (0)