Skip to content

Commit 4699522

Browse files
committed
Merge remote-tracking branch 'origin/avdunn/release-1.30.0-beta' into avdunn/release-1.30.0-beta
2 parents 4f5a10c + f8799dc commit 4699522

File tree

92 files changed

+3542
-1807
lines changed

Some content is hidden

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

92 files changed

+3542
-1807
lines changed

msal4j-sdk/pom.xml

Lines changed: 14 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -33,45 +33,30 @@
3333
</properties>
3434

3535
<dependencies>
36-
<dependency>
37-
<groupId>com.nimbusds</groupId>
38-
<artifactId>oauth2-oidc-sdk</artifactId>
39-
<version>11.23</version>
40-
</dependency>
41-
<dependency>
42-
<groupId>net.minidev</groupId>
43-
<artifactId>json-smart</artifactId>
44-
<version>2.5.2</version>
45-
</dependency>
4636
<dependency>
4737
<groupId>org.slf4j</groupId>
4838
<artifactId>slf4j-api</artifactId>
4939
<version>1.7.36</version>
5040
</dependency>
51-
<dependency>
52-
<groupId>org.slf4j</groupId>
53-
<artifactId>slf4j-simple</artifactId>
54-
<version>1.6.2</version>
55-
<scope>test</scope>
56-
</dependency>
57-
<dependency>
58-
<groupId>org.projectlombok</groupId>
59-
<artifactId>lombok</artifactId>
60-
<version>1.18.36</version>
61-
<scope>provided</scope>
62-
</dependency>
6341
<dependency>
6442
<groupId>com.azure</groupId>
6543
<artifactId>azure-json</artifactId>
6644
<version>1.4.0</version>
6745
</dependency>
68-
<dependency>
69-
<groupId>com.fasterxml.jackson.core</groupId>
70-
<artifactId>jackson-databind</artifactId>
71-
<version>2.18.1</version>
72-
</dependency>
7346

7447
<!-- test dependencies -->
48+
<dependency>
49+
<groupId>com.nimbusds</groupId>
50+
<artifactId>oauth2-oidc-sdk</artifactId>
51+
<version>11.23</version>
52+
<scope>test</scope>
53+
</dependency>
54+
<dependency>
55+
<groupId>org.slf4j</groupId>
56+
<artifactId>slf4j-simple</artifactId>
57+
<version>1.6.2</version>
58+
<scope>test</scope>
59+
</dependency>
7560
<dependency>
7661
<groupId>org.apache.commons</groupId>
7762
<artifactId>commons-text</artifactId>
@@ -114,7 +99,6 @@
11499
<version>1.14.5</version>
115100
<scope>test</scope>
116101
</dependency>
117-
118102
<dependency>
119103
<groupId>org.skyscreamer</groupId>
120104
<artifactId>jsonassert</artifactId>
@@ -180,7 +164,7 @@
180164
</pluginRepositories>
181165

182166
<build>
183-
<sourceDirectory>${project.build.directory}/delombok</sourceDirectory>
167+
<sourceDirectory>src/main/java</sourceDirectory>
184168
<plugins>
185169
<plugin>
186170
<groupId>org.revapi</groupId>
@@ -209,30 +193,6 @@
209193
</execution>
210194
</executions>
211195
</plugin>
212-
<plugin>
213-
<groupId>org.projectlombok</groupId>
214-
<artifactId>lombok-maven-plugin</artifactId>
215-
<version>1.18.20.0</version>
216-
<dependencies>
217-
<dependency>
218-
<groupId>org.projectlombok</groupId>
219-
<artifactId>lombok</artifactId>
220-
<version>1.18.36</version>
221-
</dependency>
222-
</dependencies>
223-
<executions>
224-
<execution>
225-
<goals>
226-
<goal>delombok</goal>
227-
</goals>
228-
</execution>
229-
</executions>
230-
<configuration>
231-
<sourceDirectory>src/main/java</sourceDirectory>
232-
<outputDirectory>${project.build.directory}/delombok</outputDirectory>
233-
<addOutputDirectory>false</addOutputDirectory>
234-
</configuration>
235-
</plugin>
236196

237197
<plugin>
238198
<groupId>org.apache.maven.plugins</groupId>
@@ -262,7 +222,7 @@
262222
<artifactId>maven-javadoc-plugin</artifactId>
263223
<version>3.1.0</version>
264224
<configuration>
265-
<sourcepath>${project.build.directory}/delombok</sourcepath>
225+
<sourcepath>src/main/java</sourcepath>
266226
</configuration>
267227
<executions>
268228
<execution>

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

Lines changed: 0 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -208,42 +208,6 @@ private IAuthenticationResult acquireTokenSilently(IPublicClientApplication pca,
208208
.get();
209209
}
210210

211-
public void acquireTokensInHomeAndGuestClouds(String homeCloud) throws MalformedURLException {
212-
213-
User user = labUserProvider.getUserByGuestHomeAzureEnvironments
214-
(AzureEnvironment.AZURE, homeCloud);
215-
216-
// use user`s upn from home cloud
217-
user.setUpn(user.getHomeUPN());
218-
219-
ITokenCacheAccessAspect persistenceAspect = new ITokenCacheAccessAspect() {
220-
String data;
221-
222-
@Override
223-
public void beforeCacheAccess(ITokenCacheAccessContext iTokenCacheAccessContext) {
224-
iTokenCacheAccessContext.tokenCache().deserialize(data);
225-
}
226-
227-
@Override
228-
public void afterCacheAccess(ITokenCacheAccessContext iTokenCacheAccessContext) {
229-
data = iTokenCacheAccessContext.tokenCache().serialize();
230-
}
231-
};
232-
233-
PublicClientApplication publicCloudPca = PublicClientApplication.builder(
234-
user.getAppId()).
235-
authority(TestConstants.AUTHORITY_PUBLIC_TENANT_SPECIFIC).setTokenCacheAccessAspect(persistenceAspect).
236-
build();
237-
238-
IAuthenticationResult result = acquireTokenInteractive(user, publicCloudPca, TestConstants.USER_READ_SCOPE);
239-
IntegrationTestHelper.assertAccessAndIdTokensNotNull(result);
240-
assertEquals(user.getHomeUPN(), result.account().username());
241-
242-
publicCloudPca.removeAccount(publicCloudPca.getAccounts().join().iterator().next()).join();
243-
244-
assertEquals(publicCloudPca.getAccounts().join().size(), 0);
245-
}
246-
247211
private IAuthenticationResult acquireTokenInteractive(
248212
User user,
249213
PublicClientApplication pca,

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

Lines changed: 26 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,10 @@
22
// Licensed under the MIT License.
33
package com.microsoft.aad.msal4j;
44

5-
import com.nimbusds.jwt.JWTClaimsSet;
6-
import com.nimbusds.jwt.PlainJWT;
75
import org.junit.jupiter.api.Test;
86
import org.junit.jupiter.api.TestInstance;
97
import static org.junit.jupiter.api.Assertions.assertEquals;
108

11-
import java.io.IOException;
12-
import java.net.URISyntaxException;
13-
import java.util.Collections;
14-
159
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
1610
class CachePersistenceIT {
1711

@@ -34,59 +28,50 @@ public void afterCacheAccess(ITokenCacheAccessContext iTokenCacheAccessContext)
3428
}
3529

3630
@Test
37-
void cacheDeserializationSerializationTest() throws IOException, URISyntaxException {
31+
void cacheDeserializationSerializationTest() {
3832
String dataToInitCache = TestHelper.readResource(this.getClass(), "/cache_data/serialized_cache.json");
39-
40-
String ID_TOKEN_PLACEHOLDER = "<idToken_placeholder>";
41-
JWTClaimsSet claimsSet = new JWTClaimsSet.Builder()
42-
.audience(Collections.singletonList("jwtAudience"))
43-
.issuer("issuer")
44-
.subject("subject")
45-
.build();
46-
PlainJWT jwt = new PlainJWT(claimsSet);
47-
48-
dataToInitCache = dataToInitCache.replace(ID_TOKEN_PLACEHOLDER, jwt.serialize());
33+
dataToInitCache = dataToInitCache.replace("<idToken_placeholder>", TestHelper.ENCODED_JWT);
4934

5035
ITokenCacheAccessAspect persistenceAspect = new TokenPersistence(dataToInitCache);
5136

5237
PublicClientApplication app = PublicClientApplication.builder("my_client_id")
5338
.setTokenCacheAccessAspect(persistenceAspect).build();
5439

55-
assertEquals(app.getAccounts().join().size(), 1);
56-
assertEquals(app.tokenCache.accounts.size(), 1);
57-
assertEquals(app.tokenCache.accessTokens.size(), 2);
58-
assertEquals(app.tokenCache.refreshTokens.size(), 1);
59-
assertEquals(app.tokenCache.idTokens.size(), 1);
60-
assertEquals(app.tokenCache.appMetadata.size(), 1);
40+
assertEquals(1, app.getAccounts().join().size());
41+
assertEquals(1, app.tokenCache.accounts.size());
42+
assertEquals(1, app.tokenCache.accessTokens.size());
43+
assertEquals(1, app.tokenCache.refreshTokens.size());
44+
assertEquals(1, app.tokenCache.idTokens.size());
45+
assertEquals(1, app.tokenCache.appMetadata.size());
6146

6247
// create new instance of app to make sure in memory cache cleared
6348
app = PublicClientApplication.builder("my_client_id")
6449
.setTokenCacheAccessAspect(persistenceAspect).build();
6550

66-
assertEquals(app.getAccounts().join().size(), 1);
67-
assertEquals(app.tokenCache.accounts.size(), 1);
68-
assertEquals(app.tokenCache.accessTokens.size(), 2);
69-
assertEquals(app.tokenCache.refreshTokens.size(), 1);
70-
assertEquals(app.tokenCache.idTokens.size(), 1);
71-
assertEquals(app.tokenCache.appMetadata.size(), 1);
51+
assertEquals(1, app.getAccounts().join().size());
52+
assertEquals(1, app.tokenCache.accounts.size());
53+
assertEquals(1, app.tokenCache.accessTokens.size());
54+
assertEquals(1, app.tokenCache.refreshTokens.size());
55+
assertEquals(1, app.tokenCache.idTokens.size());
56+
assertEquals(1, app.tokenCache.appMetadata.size());
7257

7358
app.removeAccount(app.getAccounts().join().iterator().next()).join();
7459

75-
assertEquals(app.getAccounts().join().size(), 0);
76-
assertEquals(app.tokenCache.accounts.size(), 0);
77-
assertEquals(app.tokenCache.accessTokens.size(), 1);
78-
assertEquals(app.tokenCache.refreshTokens.size(), 0);
79-
assertEquals(app.tokenCache.idTokens.size(), 0);
80-
assertEquals(app.tokenCache.appMetadata.size(), 1);
60+
assertEquals(0, app.getAccounts().join().size());
61+
assertEquals(0, app.tokenCache.accounts.size());
62+
assertEquals(0, app.tokenCache.accessTokens.size());
63+
assertEquals(0, app.tokenCache.refreshTokens.size());
64+
assertEquals(0, app.tokenCache.idTokens.size());
65+
assertEquals(1, app.tokenCache.appMetadata.size());
8166

8267
app = PublicClientApplication.builder("my_client_id")
8368
.setTokenCacheAccessAspect(persistenceAspect).build();
8469

85-
assertEquals(app.getAccounts().join().size(), 0);
86-
assertEquals(app.tokenCache.accounts.size(), 0);
87-
assertEquals(app.tokenCache.accessTokens.size(), 1);
88-
assertEquals(app.tokenCache.refreshTokens.size(), 0);
89-
assertEquals(app.tokenCache.idTokens.size(), 0);
90-
assertEquals(app.tokenCache.appMetadata.size(), 1);
70+
assertEquals(0, app.getAccounts().join().size());
71+
assertEquals(0, app.tokenCache.accounts.size());
72+
assertEquals(0, app.tokenCache.accessTokens.size());
73+
assertEquals(0, app.tokenCache.refreshTokens.size());
74+
assertEquals(0, app.tokenCache.idTokens.size());
75+
assertEquals(1, app.tokenCache.appMetadata.size());
9176
}
9277
}

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

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,7 @@
55

66
import labapi.AppCredentialProvider;
77
import labapi.AzureEnvironment;
8-
import lombok.Getter;
9-
import lombok.experimental.Accessors;
108

11-
@Accessors(fluent = true)
12-
@Getter()
139
public class Config {
1410
private String organizationsAuthority;
1511
private String tenantSpecificAuthority;
@@ -44,4 +40,24 @@ public class Config {
4440
throw new UnsupportedOperationException("Azure Environment - " + azureEnvironment + " unsupported");
4541
}
4642
}
43+
44+
public String organizationsAuthority() {
45+
return this.organizationsAuthority;
46+
}
47+
48+
public String tenantSpecificAuthority() {
49+
return this.tenantSpecificAuthority;
50+
}
51+
52+
public String commonAuthority() {
53+
return this.commonAuthority;
54+
}
55+
56+
public String graphDefaultScope() {
57+
return this.graphDefaultScope;
58+
}
59+
60+
public String tenant() {
61+
return this.tenant;
62+
}
4763
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ void twoAccountsInCache_SameUserDifferentTenants_RemoveAccountTest() throws Exce
163163
// RemoveAccount should remove both cache entities
164164
pca2.removeAccount(account).join();
165165

166-
assertEquals(pca.getAccounts().join().size(), 0);
166+
assertEquals(0, pca2.getAccounts().join().size());
167167

168168
//clean up file
169169
TestHelper.deleteFileContent(

msal4j-sdk/src/integrationtest/java/infrastructure/SeleniumConstants.java

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,6 @@ public class SeleniumConstants {
2121
final static String ADFS2019_PASSWORD_ID = "passwordInput";
2222
final static String ADFS2019_SUBMIT_ID = "submitButton";
2323

24-
// ADFSv2 fields
25-
final static String ADFSV2_WEB_USERNAME_INPUT_ID = "ContentPlaceHolder1_UsernameTextBox";
26-
final static String ADFSV2_WEB_PASSWORD_INPUT_ID = "ContentPlaceHolder1_PasswordTextBox";
27-
final static String ADFSV2_ARLINGTON_WEB_PASSWORD_INPUT_ID = "passwordInput";
28-
final static String ADFSV2_WEB_SUBMIT_BUTTON_ID = "ContentPlaceHolder1_SubmitButton";
29-
final static String ADFSV2_ARLINGTON_WEB_SUBMIT_BUTTON_ID = "submitButton";
30-
31-
3224
//B2C Facebook
3325
final static String FACEBOOK_ACCOUNT_ID = "FacebookExchange";
3426
final static String FACEBOOK_USERNAME_ID = "email";

msal4j-sdk/src/integrationtest/java/infrastructure/SeleniumExtensions.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public static WebDriver createDefaultWebDriver() {
4040
//No visual rendering, remove to see browser window when debugging
4141
options.addArguments("--headless");
4242
//Add to avoid issues if your real browser's history/cookies are affecting tests, should not be needed in ADO pipelines
43-
//options.addArguments("--incognito");
43+
options.addArguments("--incognito");
4444

4545
System.setProperty("webdriver.chrome.driver", "C:/Windows/chromedriver.exe");
4646
ChromeDriver driver = new ChromeDriver(options);

0 commit comments

Comments
 (0)