Skip to content

Commit cf814eb

Browse files
committed
added test for invalid authority
1 parent 12ca836 commit cf814eb

File tree

2 files changed

+30
-3
lines changed

2 files changed

+30
-3
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package com.microsoft.aad.msal4j;
2+
3+
import org.testng.annotations.Test;
4+
5+
import java.net.URI;
6+
import java.util.Collections;
7+
import java.util.concurrent.CompletableFuture;
8+
import java.util.concurrent.ExecutionException;
9+
10+
public class InvalidAuthorityIT extends SeleniumTest{
11+
12+
@Test(expectedExceptions = ExecutionException.class, expectedExceptionsMessageRegExp = ".*?invalid instance.*?")
13+
public void acquireTokenWithAuthorizationCode_InvalidAuthority() throws Exception{
14+
PublicClientApplication app;
15+
app = PublicClientApplication.builder(
16+
TestConfiguration.AAD_CLIENT_ID)
17+
.authority("https://dummy.microsoft.com/common") //invalid authority, request fails at instance discovery
18+
.build();
19+
20+
CompletableFuture<IAuthenticationResult> future = app.acquireToken(
21+
AuthorizationCodeParameters.builder("auth_code", new URI(TestConfiguration.AAD_DEFAULT_REDIRECT_URI))
22+
.scopes(Collections.singleton("default-scope"))
23+
.authorizationCode("auth_code").redirectUri(new URI(TestConfiguration.AAD_DEFAULT_REDIRECT_URI)).build());
24+
future.get();
25+
}
26+
}

msal4j-sdk/src/main/java/com/microsoft/aad/msal4j/AadInstanceDiscoveryProvider.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -236,17 +236,18 @@ private static AadInstanceDiscoveryResponse sendInstanceDiscoveryRequest(URL aut
236236

237237
httpResponse = executeRequest(instanceDiscoveryRequestUrl, msalRequest.headers().getReadonlyHeaderMap(), msalRequest, serviceBundle);
238238

239+
AadInstanceDiscoveryResponse response = JsonHelper.convertJsonToObject(httpResponse.body(), AadInstanceDiscoveryResponse.class);
240+
239241
if (httpResponse.statusCode() != HttpHelper.HTTP_STATUS_200) {
240-
if(httpResponse.statusCode() == HttpHelper.HTTP_STATUS_400 && httpResponse.body().equals("invalid_instance")){
242+
if(httpResponse.statusCode() == HttpHelper.HTTP_STATUS_400 && response.error().equals("invalid_instance")){
241243
// instance discovery failed due to an invalid authority, throw an exception.
242244
throw MsalServiceExceptionFactory.fromHttpResponse(httpResponse);
243245
}
244246
// instance discovery failed due to reasons other than an invalid authority, do not perform instance discovery again in this environment.
245247
instanceDiscoveryFailed = true;
246248
}
247249

248-
249-
return JsonHelper.convertJsonToObject(httpResponse.body(), AadInstanceDiscoveryResponse.class);
250+
return response;
250251
}
251252

252253
private static int determineRegionOutcome(String detectedRegion, String providedRegion, boolean autoDetect) {

0 commit comments

Comments
 (0)