Skip to content

Commit 3c00622

Browse files
authored
Test framework update (#672)
* Initial working tests * Remove CIAM extra query parameter * Fix failing tests * Remove duplicate unit tests * Remove duplicate unit tests * Update tests with mocking to use Mockito * Remove testng and powermock, add junit and mockito * Remove AbstractMsalTests and PowerMockTestCase * Fix mistaken null check * Properly scope dependency
1 parent 24c6d2a commit 3c00622

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+1262
-2892
lines changed

msal4j-sdk/pom.xml

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -68,29 +68,42 @@
6868
<scope>test</scope>
6969
</dependency>
7070
<dependency>
71-
<groupId>org.testng</groupId>
72-
<artifactId>testng</artifactId>
73-
<version>7.1.0</version>
71+
<groupId>org.junit.jupiter</groupId>
72+
<artifactId>junit-jupiter-api</artifactId>
73+
<version>5.9.2</version>
7474
<scope>test</scope>
7575
</dependency>
7676
<dependency>
77-
<groupId>org.powermock</groupId>
78-
<artifactId>powermock-module-testng</artifactId>
79-
<version>2.0.0</version>
77+
<groupId>org.junit.jupiter</groupId>
78+
<artifactId>junit-jupiter-params</artifactId>
79+
<version>5.8.1</version>
8080
<scope>test</scope>
8181
</dependency>
8282
<dependency>
83-
<groupId>org.powermock</groupId>
84-
<artifactId>powermock-api-easymock</artifactId>
85-
<version>2.0.0</version>
83+
<groupId>org.junit.jupiter</groupId>
84+
<artifactId>junit-jupiter-engine</artifactId>
85+
<version>5.9.2</version>
8686
<scope>test</scope>
8787
</dependency>
8888
<dependency>
89-
<groupId>org.easymock</groupId>
90-
<artifactId>easymock</artifactId>
91-
<version>4.0.2</version>
89+
<groupId>org.mockito</groupId>
90+
<artifactId>mockito-inline</artifactId>
91+
<version>4.7.0</version>
9292
<scope>test</scope>
9393
</dependency>
94+
<dependency>
95+
<groupId>org.mockito</groupId>
96+
<artifactId>mockito-junit-jupiter</artifactId>
97+
<version>4.7.0</version>
98+
<scope>test</scope>
99+
</dependency>
100+
<dependency>
101+
<groupId>net.bytebuddy</groupId>
102+
<artifactId>byte-buddy</artifactId>
103+
<version>1.14.5</version>
104+
<scope>test</scope>
105+
</dependency>
106+
94107
<dependency>
95108
<groupId>org.skyscreamer</groupId>
96109
<artifactId>jsonassert</artifactId>
@@ -156,7 +169,6 @@
156169
</pluginRepositories>
157170

158171
<build>
159-
<sourceDirectory>${project.build.directory}/delombok</sourceDirectory>
160172
<plugins>
161173
<plugin>
162174
<groupId>org.projectlombok</groupId>

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

Lines changed: 62 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,18 @@
44
package com.microsoft.aad.msal4j;
55

66
import labapi.*;
7+
import org.junit.jupiter.api.AfterEach;
8+
import org.junit.jupiter.api.BeforeAll;
9+
import org.junit.jupiter.api.BeforeEach;
710
import org.slf4j.Logger;
811
import org.slf4j.LoggerFactory;
9-
import org.testng.Assert;
10-
import org.testng.annotations.Test;
12+
import org.junit.jupiter.api.Test;
13+
import org.junit.jupiter.api.TestInstance;
14+
import org.junit.jupiter.params.ParameterizedTest;
15+
import org.junit.jupiter.params.provider.MethodSource;
16+
import static org.junit.jupiter.api.Assertions.assertEquals;
17+
import static org.junit.jupiter.api.Assertions.assertNotEquals;
18+
import static org.junit.jupiter.api.Assertions.assertNotNull;
1119

1220
import java.net.MalformedURLException;
1321
import java.net.URI;
@@ -17,120 +25,99 @@
1725
import java.util.Map;
1826
import java.util.concurrent.ExecutionException;
1927

20-
public class AcquireTokenInteractiveIT extends SeleniumTest {
28+
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
29+
class AcquireTokenInteractiveIT extends SeleniumTest {
2130
private final static Logger LOG = LoggerFactory.getLogger(AuthorizationCodeIT.class);
2231

2332
private Config cfg;
2433

25-
@Test(dataProvider = "environments", dataProviderClass = EnvironmentsProvider.class)
26-
public void acquireTokenInteractive_ManagedUser(String environment) {
34+
35+
@BeforeAll
36+
public void setupUserProvider() {
37+
setUpLapUserProvider();
38+
}
39+
40+
@AfterEach
41+
public void stopBrowser() {
42+
cleanUp();
43+
}
44+
45+
@BeforeEach
46+
public void startBrowser() {
47+
startUpBrowser();
48+
}
49+
50+
@ParameterizedTest
51+
@MethodSource("com.microsoft.aad.msal4j.EnvironmentsProvider#createData")
52+
void acquireTokenInteractive_ManagedUser(String environment) {
2753
cfg = new Config(environment);
2854

2955
User user = labUserProvider.getDefaultUser(cfg.azureEnvironment);
3056
assertAcquireTokenCommon(user, cfg.organizationsAuthority(), cfg.graphDefaultScope());
3157
}
3258

3359
@Test()
34-
public void acquireTokenInteractive_ADFSv2019_OnPrem() {
60+
void acquireTokenInteractive_ADFSv2019_OnPrem() {
3561
User user = labUserProvider.getOnPremAdfsUser(FederationProvider.ADFS_2019);
3662
assertAcquireTokenCommon(user, TestConstants.ADFS_AUTHORITY, TestConstants.ADFS_SCOPE);
3763
}
3864

39-
@Test(dataProvider = "environments", dataProviderClass = EnvironmentsProvider.class)
40-
public void acquireTokenInteractive_ADFSv2019_Federated(String environment) {
65+
@ParameterizedTest
66+
@MethodSource("com.microsoft.aad.msal4j.EnvironmentsProvider#createData")
67+
void acquireTokenInteractive_ADFSv2019_Federated(String environment) {
4168
cfg = new Config(environment);
4269

4370
User user = labUserProvider.getFederatedAdfsUser(cfg.azureEnvironment, FederationProvider.ADFS_2019);
4471
assertAcquireTokenCommon(user, cfg.organizationsAuthority(), cfg.graphDefaultScope());
4572
}
4673

47-
@Test(dataProvider = "environments", dataProviderClass = EnvironmentsProvider.class)
48-
public void acquireTokenInteractive_ADFSv4_Federated(String environment) {
74+
@ParameterizedTest
75+
@MethodSource("com.microsoft.aad.msal4j.EnvironmentsProvider#createData")
76+
void acquireTokenInteractive_ADFSv4_Federated(String environment) {
4977
cfg = new Config(environment);
5078

5179
User user = labUserProvider.getFederatedAdfsUser(cfg.azureEnvironment, FederationProvider.ADFS_4);
5280
assertAcquireTokenCommon(user, cfg.organizationsAuthority(), cfg.graphDefaultScope());
5381
}
5482

55-
@Test(dataProvider = "environments", dataProviderClass = EnvironmentsProvider.class)
56-
public void acquireTokenInteractive_ADFSv3_Federated(String environment) {
83+
@ParameterizedTest
84+
@MethodSource("com.microsoft.aad.msal4j.EnvironmentsProvider#createData")
85+
void acquireTokenInteractive_ADFSv3_Federated(String environment) {
5786
cfg = new Config(environment);
5887

5988
User user = labUserProvider.getFederatedAdfsUser(cfg.azureEnvironment, FederationProvider.ADFS_3);
6089
assertAcquireTokenCommon(user, cfg.organizationsAuthority(), cfg.graphDefaultScope());
6190
}
6291

63-
@Test(dataProvider = "environments", dataProviderClass = EnvironmentsProvider.class)
64-
public void acquireTokenInteractive_ADFSv2_Federated(String environment) {
92+
@ParameterizedTest
93+
@MethodSource("com.microsoft.aad.msal4j.EnvironmentsProvider#createData")
94+
void acquireTokenInteractive_ADFSv2_Federated(String environment) {
6595
cfg = new Config(environment);
6696

6797
User user = labUserProvider.getFederatedAdfsUser(cfg.azureEnvironment, FederationProvider.ADFS_2);
6898
assertAcquireTokenCommon(user, cfg.organizationsAuthority(), cfg.graphDefaultScope());
6999
}
70100

71-
@Test
72-
public void acquireTokenInteractive_Ciam() {
73-
User user = labUserProvider.getCiamUser();
74-
75-
Map<String, String> extraQueryParameters = new HashMap<>();
76-
extraQueryParameters.put("dc","ESTS-PUB-EUS-AZ1-FD000-TEST1");
77-
78-
PublicClientApplication pca;
79-
try {
80-
pca = PublicClientApplication.builder(
81-
user.getAppId()).
82-
authority("https://" + user.getLabName() + ".ciamlogin.com/")
83-
.build();
84-
} catch (MalformedURLException ex) {
85-
throw new RuntimeException(ex.getMessage());
86-
}
87-
88-
IAuthenticationResult result;
89-
try {
90-
URI url = new URI("http://localhost:8080");
91-
92-
SystemBrowserOptions browserOptions =
93-
SystemBrowserOptions
94-
.builder()
95-
.openBrowserAction(new SeleniumOpenBrowserAction(user, pca))
96-
.build();
97-
98-
InteractiveRequestParameters parameters = InteractiveRequestParameters
99-
.builder(url)
100-
.scopes(Collections.singleton(TestConstants.GRAPH_DEFAULT_SCOPE))
101-
.extraQueryParameters(extraQueryParameters)
102-
.systemBrowserOptions(browserOptions)
103-
.build();
104-
105-
result = pca.acquireToken(parameters).get();
106-
107-
} catch (Exception e) {
108-
LOG.error("Error acquiring token with authCode: " + e.getMessage());
109-
throw new RuntimeException("Error acquiring token with authCode: " + e.getMessage());
110-
}
111-
112-
assertTokenResultNotNull(result);
113-
Assert.assertEquals(user.getUpn(), result.account().username());
114-
}
115-
116-
@Test(dataProvider = "environments", dataProviderClass = EnvironmentsProvider.class)
117-
public void acquireTokenWithAuthorizationCode_B2C_Local(String environment) {
101+
@ParameterizedTest
102+
@MethodSource("com.microsoft.aad.msal4j.EnvironmentsProvider#createData")
103+
void acquireTokenWithAuthorizationCode_B2C_Local(String environment) {
118104
cfg = new Config(environment);
119105

120106
User user = labUserProvider.getB2cUser(cfg.azureEnvironment, B2CProvider.LOCAL);
121107
assertAcquireTokenB2C(user, TestConstants.B2C_AUTHORITY);
122108
}
123109

124-
@Test(dataProvider = "environments", dataProviderClass = EnvironmentsProvider.class)
125-
public void acquireTokenWithAuthorizationCode_B2C_LegacyFormat(String environment) {
110+
@ParameterizedTest
111+
@MethodSource("com.microsoft.aad.msal4j.EnvironmentsProvider#createData")
112+
void acquireTokenWithAuthorizationCode_B2C_LegacyFormat(String environment) {
126113
cfg = new Config(environment);
127114

128115
User user = labUserProvider.getB2cUser(cfg.azureEnvironment, B2CProvider.LOCAL);
129116
assertAcquireTokenB2C(user, TestConstants.B2C_AUTHORITY_LEGACY_FORMAT);
130117
}
131118

132119
@Test
133-
public void acquireTokenInteractive_ManagedUser_InstanceAware() {
120+
void acquireTokenInteractive_ManagedUser_InstanceAware() {
134121
cfg = new Config(AzureEnvironment.AZURE);
135122

136123
User user = labUserProvider.getDefaultUser(AzureEnvironment.AZURE_US_GOVERNMENT);
@@ -154,7 +141,7 @@ private void assertAcquireTokenCommon(User user, String authority, String scope)
154141
scope);
155142

156143
assertTokenResultNotNull(result);
157-
Assert.assertEquals(user.getUpn(), result.account().username());
144+
assertEquals(user.getUpn(), result.account().username());
158145
}
159146

160147
private void assertAcquireTokenB2C(User user, String authority) {
@@ -187,13 +174,13 @@ private void assertAcquireTokenInstanceAware(User user) {
187174
IAuthenticationResult result = acquireTokenInteractive_instanceAware(user, pca, cfg.graphDefaultScope());
188175

189176
assertTokenResultNotNull(result);
190-
Assert.assertEquals(user.getUpn(), result.account().username());
177+
assertEquals(user.getUpn(), result.account().username());
191178

192179
//This test is using a client app with the login.microsoftonline.com config to get tokens for a login.microsoftonline.us user,
193180
// so when using instance aware the result's environment will be for the user/account and not the client app
194-
Assert.assertNotEquals(pca.authenticationAuthority.host, result.environment());
195-
Assert.assertEquals(result.account().environment(), result.environment());
196-
Assert.assertEquals(result.account().environment(), pca.getAccounts().join().iterator().next().environment());
181+
assertNotEquals(pca.authenticationAuthority.host, result.environment());
182+
assertEquals(result.account().environment(), result.environment());
183+
assertEquals(result.account().environment(), pca.getAccounts().join().iterator().next().environment());
197184

198185
IAuthenticationResult cachedResult;
199186
try {
@@ -203,17 +190,7 @@ private void assertAcquireTokenInstanceAware(User user) {
203190
}
204191

205192
//Ensure that the cached environment matches the original auth result environment (.us) instead of the client app's (.com)
206-
Assert.assertEquals(result.account().environment(), cachedResult.environment());
207-
}
208-
209-
//@Test
210-
public void acquireTokensInHomeAndGuestClouds_ArlingtonAccount() throws MalformedURLException, ExecutionException, InterruptedException {
211-
acquireTokensInHomeAndGuestClouds(AzureEnvironment.AZURE_US_GOVERNMENT);
212-
}
213-
214-
//@Test
215-
public void acquireTokensInHomeAndGuestClouds_MooncakeAccount() throws MalformedURLException, ExecutionException, InterruptedException {
216-
acquireTokensInHomeAndGuestClouds(AzureEnvironment.AZURE_CHINA);
193+
assertEquals(result.account().environment(), cachedResult.environment());
217194
}
218195

219196
private IAuthenticationResult acquireTokenSilently(IPublicClientApplication pca, IAccount account, String scope) throws InterruptedException, ExecutionException, MalformedURLException {
@@ -251,11 +228,11 @@ public void afterCacheAccess(ITokenCacheAccessContext iTokenCacheAccessContext)
251228

252229
IAuthenticationResult result = acquireTokenInteractive(user, publicCloudPca, TestConstants.USER_READ_SCOPE);
253230
assertTokenResultNotNull(result);
254-
Assert.assertEquals(user.getHomeUPN(), result.account().username());
231+
assertEquals(user.getHomeUPN(), result.account().username());
255232

256233
publicCloudPca.removeAccount(publicCloudPca.getAccounts().join().iterator().next()).join();
257234

258-
Assert.assertEquals(publicCloudPca.getAccounts().join().size(), 0);
235+
assertEquals(publicCloudPca.getAccounts().join().size(), 0);
259236
}
260237

261238
private IAuthenticationResult acquireTokenInteractive(
@@ -289,9 +266,9 @@ private IAuthenticationResult acquireTokenInteractive(
289266
}
290267

291268
private void assertTokenResultNotNull(IAuthenticationResult result) {
292-
Assert.assertNotNull(result);
293-
Assert.assertNotNull(result.accessToken());
294-
Assert.assertNotNull(result.idToken());
269+
assertNotNull(result);
270+
assertNotNull(result.accessToken());
271+
assertNotNull(result.idToken());
295272
}
296273

297274
private IAuthenticationResult acquireTokenInteractive_instanceAware(

0 commit comments

Comments
 (0)