Skip to content

Commit df65b5c

Browse files
authored
Add AcquireTokenSilent tests for B2C and ADFS2019, refactor duplicate code in tests (#293)
1 parent db1a299 commit df65b5c

File tree

1 file changed

+95
-64
lines changed

1 file changed

+95
-64
lines changed

src/integrationtest/java/com.microsoft.aad.msal4j/AcquireTokenSilentIT.java

Lines changed: 95 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import org.testng.annotations.BeforeClass;
99
import org.testng.annotations.Test;
1010

11+
import java.net.MalformedURLException;
1112
import java.util.Collections;
1213
import java.util.Set;
1314
import java.util.concurrent.ExecutionException;
@@ -33,15 +34,8 @@ public void acquireTokenSilent_OrganizationAuthority_TokenRefreshed(String envir
3334
IPublicClientApplication pca = getPublicClientApplicationWithTokensInCache();
3435

3536
IAccount account = pca.getAccounts().join().iterator().next();
36-
SilentParameters parameters = SilentParameters.builder(
37-
Collections.singleton(cfg.graphDefaultScope()),
38-
account).build();
39-
40-
IAuthenticationResult result = pca.acquireTokenSilently(parameters).get();
41-
42-
Assert.assertNotNull(result);
43-
Assert.assertNotNull(result.accessToken());
44-
Assert.assertNotNull(result.idToken());
37+
IAuthenticationResult result = acquireTokenSilently(pca, account, cfg.graphDefaultScope(), false);
38+
assertResultNotNull(result);
4539
}
4640

4741
@Test(dataProvider = "environments", dataProviderClass = EnvironmentsProvider.class)
@@ -58,22 +52,12 @@ public void acquireTokenSilent_LabAuthority_TokenNotRefreshed(String environment
5852
authority(cfg.organizationsAuthority()).
5953
build();
6054

61-
IAuthenticationResult result = pca.acquireToken(UserNamePasswordParameters.
62-
builder(Collections.singleton(cfg.graphDefaultScope()),
63-
user.getUpn(),
64-
user.getPassword().toCharArray())
65-
.build())
66-
.get();
55+
IAuthenticationResult result = acquireTokenUsernamePassword(user, pca, cfg.graphDefaultScope());
6756

6857
IAccount account = pca.getAccounts().join().iterator().next();
69-
SilentParameters parameters = SilentParameters.builder(
70-
Collections.singleton(cfg.graphDefaultScope()), account).
71-
build();
58+
IAuthenticationResult acquireSilentResult = acquireTokenSilently(pca, account, cfg.graphDefaultScope(), false);
59+
assertResultNotNull(result);
7260

73-
IAuthenticationResult acquireSilentResult = pca.acquireTokenSilently(parameters).get();
74-
75-
Assert.assertNotNull(acquireSilentResult.accessToken());
76-
Assert.assertNotNull(result.idToken());
7761
// Check that access and id tokens are coming from cache
7862
Assert.assertEquals(result.accessToken(), acquireSilentResult.accessToken());
7963
Assert.assertEquals(result.idToken(), acquireSilentResult.idToken());
@@ -90,27 +74,15 @@ public void acquireTokenSilent_ForceRefresh(String environment) throws Exception
9074
authority(cfg.organizationsAuthority()).
9175
build();
9276

93-
IAuthenticationResult result = pca.acquireToken(UserNamePasswordParameters.
94-
builder(Collections.singleton(cfg.graphDefaultScope()),
95-
user.getUpn(),
96-
user.getPassword().toCharArray())
97-
.build())
98-
.get();
77+
IAuthenticationResult result = acquireTokenUsernamePassword(user, pca, cfg.graphDefaultScope());
78+
assertResultNotNull(result);
9979

10080
IAccount account = pca.getAccounts().join().iterator().next();
101-
SilentParameters parameters = SilentParameters.builder(
102-
Collections.singleton(cfg.graphDefaultScope()), account).
103-
forceRefresh(true).
104-
build();
105-
106-
IAuthenticationResult resultAfterRefresh = pca.acquireTokenSilently(parameters).get();
81+
IAuthenticationResult resultAfterRefresh = acquireTokenSilently(pca, account, cfg.graphDefaultScope(), true);
82+
assertResultNotNull(resultAfterRefresh);
10783

108-
Assert.assertNotNull(resultAfterRefresh);
109-
Assert.assertNotNull(resultAfterRefresh.accessToken());
110-
Assert.assertNotNull(resultAfterRefresh.idToken());
11184
// Check that new refresh and id tokens are being returned
112-
Assert.assertNotEquals(result.accessToken(), resultAfterRefresh.accessToken());
113-
Assert.assertNotEquals(result.idToken(), resultAfterRefresh.idToken());
85+
assertResultRefreshed(result, resultAfterRefresh);
11486
}
11587

11688
@Test(dataProvider = "environments", dataProviderClass = EnvironmentsProvider.class)
@@ -123,31 +95,72 @@ public void acquireTokenSilent_MultipleAccountsInCache_UseCorrectAccount(String
12395
User user = labUserProvider.getFederatedAdfsUser(cfg.azureEnvironment, FederationProvider.ADFS_4);
12496

12597
// acquire token for different account
126-
pca.acquireToken(UserNamePasswordParameters.
127-
builder(Collections.singleton(cfg.graphDefaultScope()),
128-
user.getUpn(),
129-
user.getPassword().toCharArray())
130-
.build())
131-
.get();
98+
acquireTokenUsernamePassword(user, pca, cfg.graphDefaultScope());
13299

133100
Set<IAccount> accounts = pca.getAccounts().join();
134101
IAccount account = accounts.stream().filter(
135102
x -> x.username().equalsIgnoreCase(
136103
user.getUpn())).findFirst().orElse(null);
137104

138-
SilentParameters parameters = SilentParameters.builder(
139-
Collections.singleton(cfg.graphDefaultScope()), account).
140-
forceRefresh(true).
105+
IAuthenticationResult result = acquireTokenSilently(pca, account, cfg.graphDefaultScope(), false);
106+
assertResultNotNull(result);
107+
Assert.assertEquals(result.account().username(), user.getUpn());
108+
}
109+
110+
@Test(dataProvider = "environments", dataProviderClass = EnvironmentsProvider.class)
111+
public void acquireTokenSilent_ADFS2019(String environment) throws Exception{
112+
cfg = new Config(environment);
113+
114+
UserQueryParameters query = new UserQueryParameters();
115+
query.parameters.put(UserQueryParameters.AZURE_ENVIRONMENT, cfg.azureEnvironment);
116+
query.parameters.put(UserQueryParameters.FEDERATION_PROVIDER, FederationProvider.ADFS_2019);
117+
query.parameters.put(UserQueryParameters.USER_TYPE, UserType.FEDERATED);
118+
119+
User user = labUserProvider.getLabUser(query);
120+
121+
PublicClientApplication pca = PublicClientApplication.builder(
122+
user.getAppId()).
123+
authority(cfg.organizationsAuthority()).
141124
build();
142125

143-
IAuthenticationResult result = pca.acquireTokenSilently(parameters).get();
126+
IAuthenticationResult result = acquireTokenUsernamePassword(user, pca, cfg.graphDefaultScope());
127+
assertResultNotNull(result);
144128

145-
Assert.assertNotNull(result);
146-
Assert.assertNotNull(result.accessToken());
147-
Assert.assertNotNull(result.idToken());
148-
Assert.assertEquals(result.account().username(), user.getUpn());
129+
IAccount account = pca.getAccounts().join().iterator().next();
130+
IAuthenticationResult acquireSilentResult = acquireTokenSilently(pca, account, TestConstants.ADFS_SCOPE, false);
131+
assertResultNotNull(acquireSilentResult);
132+
133+
account = pca.getAccounts().join().iterator().next();
134+
IAuthenticationResult resultAfterRefresh = acquireTokenSilently(pca, account, TestConstants.ADFS_SCOPE, true);
135+
assertResultNotNull(resultAfterRefresh);
136+
137+
assertResultRefreshed(result, resultAfterRefresh);
149138
}
150139

140+
@Test
141+
public void acquireTokenSilent_B2C() throws Exception{
142+
UserQueryParameters query = new UserQueryParameters();
143+
query.parameters.put(UserQueryParameters.USER_TYPE, UserType.B2C);
144+
query.parameters.put(UserQueryParameters.B2C_PROVIDER, B2CProvider.LOCAL);
145+
User user = labUserProvider.getLabUser(query);
146+
147+
PublicClientApplication pca = PublicClientApplication.builder(
148+
user.getAppId()).
149+
b2cAuthority(TestConstants.B2C_AUTHORITY_ROPC).
150+
build();
151+
152+
IAuthenticationResult result = acquireTokenUsernamePassword(user, pca, TestConstants.B2C_READ_SCOPE);
153+
assertResultNotNull(result);
154+
155+
IAccount account = pca.getAccounts().join().iterator().next();
156+
IAuthenticationResult resultAfterRefresh = acquireTokenSilently(pca, account, TestConstants.B2C_READ_SCOPE, true);
157+
assertResultNotNull(resultAfterRefresh);
158+
159+
assertResultRefreshed(result, resultAfterRefresh);
160+
}
161+
162+
163+
151164
@Test
152165
public void acquireTokenSilent_usingCommonAuthority_returnCachedAt() throws Exception {
153166
acquireTokenSilent_returnCachedTokens(cfg.organizationsAuthority());
@@ -226,12 +239,7 @@ private void acquireTokenSilent_returnCachedTokens(String authority) throws Exce
226239
authority(authority).
227240
build();
228241

229-
IAuthenticationResult interactiveAuthResult = pca.acquireToken(UserNamePasswordParameters.
230-
builder(Collections.singleton(cfg.graphDefaultScope()),
231-
user.getUpn(),
232-
user.getPassword().toCharArray())
233-
.build())
234-
.get();
242+
IAuthenticationResult interactiveAuthResult = acquireTokenUsernamePassword(user, pca, cfg.graphDefaultScope());
235243

236244
Assert.assertNotNull(interactiveAuthResult);
237245

@@ -254,12 +262,35 @@ private IPublicClientApplication getPublicClientApplicationWithTokensInCache()
254262
authority(cfg.organizationsAuthority()).
255263
build();
256264

257-
pca.acquireToken(
258-
UserNamePasswordParameters.builder(
259-
Collections.singleton(cfg.graphDefaultScope()),
265+
acquireTokenUsernamePassword(user, pca, cfg.graphDefaultScope());
266+
return pca;
267+
}
268+
269+
private IAuthenticationResult acquireTokenSilently(IPublicClientApplication pca, IAccount account, String scope, Boolean forceRefresh) throws InterruptedException, ExecutionException, MalformedURLException {
270+
return pca.acquireTokenSilently(SilentParameters.
271+
builder(Collections.singleton(scope), account).
272+
forceRefresh(forceRefresh).
273+
build())
274+
.get();
275+
}
276+
277+
private IAuthenticationResult acquireTokenUsernamePassword(User user, IPublicClientApplication pca, String scope) throws InterruptedException, ExecutionException {
278+
return pca.acquireToken(UserNamePasswordParameters.
279+
builder(Collections.singleton(scope),
260280
user.getUpn(),
261281
user.getPassword().toCharArray())
262-
.build()).get();
263-
return pca;
282+
.build())
283+
.get();
284+
}
285+
286+
private void assertResultNotNull(IAuthenticationResult result) {
287+
Assert.assertNotNull(result);
288+
Assert.assertNotNull(result.accessToken());
289+
Assert.assertNotNull(result.idToken());
290+
}
291+
292+
private void assertResultRefreshed(IAuthenticationResult result, IAuthenticationResult resultAfterRefresh) {
293+
Assert.assertNotEquals(result.accessToken(), resultAfterRefresh.accessToken());
294+
Assert.assertNotEquals(result.idToken(), resultAfterRefresh.idToken());
264295
}
265296
}

0 commit comments

Comments
 (0)