Skip to content

Commit d639c94

Browse files
author
Rujun Chen
authored
Move authentication related test into azure-spring-boot (Azure#17857)
* Use AnnotationConfigApplicationContext instead of AppRunner to tests. * Move tests from azure-spring-boot-test-aad to azure-spring-boot-test.
1 parent 8a71786 commit d639c94

File tree

7 files changed

+235
-300
lines changed

7 files changed

+235
-300
lines changed

sdk/spring/azure-spring-boot-test-aad/src/test/java/com/azure/spring/aad/implementation/AzureActiveDirectoryConfigurationTest.java

Lines changed: 0 additions & 215 deletions
This file was deleted.

sdk/spring/azure-spring-boot-test-aad/src/test/resources/application.properties

Lines changed: 0 additions & 8 deletions
This file was deleted.

sdk/spring/azure-spring-boot-test-aad/src/test/resources/spring.factories

Lines changed: 0 additions & 3 deletions
This file was deleted.

sdk/spring/azure-spring-boot/src/main/java/com/azure/spring/aad/implementation/AzureActiveDirectoryConfiguration.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,14 @@
55

66
import com.azure.spring.autoconfigure.aad.AADAuthenticationProperties;
77
import org.springframework.beans.factory.annotation.Autowired;
8+
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
89
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
910
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
1011
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
1112
import org.springframework.boot.context.properties.EnableConfigurationProperties;
1213
import org.springframework.context.annotation.Bean;
1314
import org.springframework.context.annotation.Configuration;
15+
import org.springframework.security.config.annotation.ObjectPostProcessor;
1416
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
1517
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
1618
import org.springframework.security.oauth2.client.oidc.userinfo.OidcUserRequest;
@@ -75,7 +77,6 @@ private Set<String> allScopes() {
7577
private Set<String> accessTokenScopes() {
7678
Set<String> result = openidScopes();
7779
if (properties.allowedGroupsConfigured()) {
78-
result.add("https://graph.microsoft.com/Directory.AccessAsUser.All");
7980
result.add("https://graph.microsoft.com/User.Read");
8081
}
8182
addAzureConfiguredScopes(result);
@@ -137,6 +138,7 @@ private ClientRegistration.Builder createClientBuilder(String id) {
137138
}
138139

139140
@Configuration
141+
@ConditionalOnBean(ObjectPostProcessor.class)
140142
@ConditionalOnMissingBean(WebSecurityConfigurerAdapter.class)
141143
public static class DefaultAzureOAuth2Configuration extends AzureOAuth2Configuration {
142144

sdk/spring/azure-spring-boot-test-aad/src/test/java/com/azure/spring/aad/implementation/AuthorizedClientRepoTest.java renamed to sdk/spring/azure-spring-boot/src/test/java/com/azure/spring/aad/implementation/AuthorizedClientRepoTest.java

Lines changed: 24 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
1+
// Copyright (c) Microsoft Corporation. All rights reserved.
2+
// Licensed under the MIT License.
3+
14
package com.azure.spring.aad.implementation;
25

3-
import com.azure.test.utils.AppRunner;
4-
import org.junit.jupiter.api.AfterEach;
56
import org.junit.jupiter.api.BeforeEach;
67
import org.junit.jupiter.api.Test;
7-
import org.springframework.boot.autoconfigure.SpringBootApplication;
8-
import org.springframework.context.annotation.Configuration;
8+
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
99
import org.springframework.mock.web.MockHttpServletRequest;
1010
import org.springframework.mock.web.MockHttpServletResponse;
11-
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
1211
import org.springframework.security.core.Authentication;
1312
import org.springframework.security.oauth2.client.OAuth2AuthorizedClient;
1413
import org.springframework.security.oauth2.client.registration.ClientRegistration;
@@ -17,6 +16,7 @@
1716
import org.springframework.security.oauth2.core.OAuth2AccessToken;
1817
import org.springframework.security.oauth2.core.OAuth2RefreshToken;
1918
import org.springframework.security.web.authentication.preauth.PreAuthenticatedAuthenticationToken;
19+
import org.springframework.test.context.support.TestPropertySourceUtils;
2020

2121
import java.time.Instant;
2222
import java.util.Optional;
@@ -27,53 +27,46 @@
2727

2828
public class AuthorizedClientRepoTest {
2929

30-
private AppRunner runner;
31-
3230
private ClientRegistration azure;
3331
private ClientRegistration graph;
3432

35-
private OAuth2AuthorizedClientRepository repo;
33+
private OAuth2AuthorizedClientRepository authorizedRepo;
3634
private MockHttpServletRequest request;
3735
private MockHttpServletResponse response;
3836

3937
@BeforeEach
4038
public void setup() {
41-
runner = createApp();
42-
runner.start();
39+
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
40+
TestPropertySourceUtils.addInlinedPropertiesToEnvironment(
41+
context,
42+
"azure.activedirectory.user-group.allowed-groups = group1, group2",
43+
"azure.activedirectory.authorization-server-uri = fake-uri",
44+
"azure.activedirectory.tenant-id = fake-tenant-id",
45+
"azure.activedirectory.client-id = fake-client-id",
46+
"azure.activedirectory.client-secret = fake-client-secret",
47+
"azure.activedirectory.authorization.graph.scopes = Calendars.Read"
48+
);
49+
context.register(AzureActiveDirectoryConfiguration.class);
50+
context.refresh();
4351

44-
AzureClientRegistrationRepository clientRepo = runner.getBean(AzureClientRegistrationRepository.class);
52+
AzureClientRegistrationRepository clientRepo = context.getBean(AzureClientRegistrationRepository.class);
4553
azure = clientRepo.findByRegistrationId("azure");
4654
graph = clientRepo.findByRegistrationId("graph");
4755

48-
repo = new AzureAuthorizedClientRepository(clientRepo);
56+
authorizedRepo = new AzureAuthorizedClientRepository(clientRepo);
4957
request = new MockHttpServletRequest();
5058
response = new MockHttpServletResponse();
5159
}
5260

53-
private AppRunner createApp() {
54-
AppRunner result = new AppRunner(AzureActiveDirectoryConfigurationTest.DumbApp.class);
55-
result.property("azure.activedirectory.authorization-server-uri", "fake-uri");
56-
result.property("azure.activedirectory.tenant-id", "fake-tenant-id");
57-
result.property("azure.activedirectory.client-id", "fake-client-id");
58-
result.property("azure.activedirectory.client-secret", "fake-client-secret");
59-
result.property("azure.activedirectory.authorization.graph.scopes", "Calendars.Read");
60-
return result;
61-
}
62-
63-
@AfterEach
64-
public void tearDown() {
65-
runner.stop();
66-
}
67-
6861
@Test
6962
public void loadInitAzureAuthzClient() {
70-
repo.saveAuthorizedClient(
63+
authorizedRepo.saveAuthorizedClient(
7164
createAuthorizedClient(azure),
7265
createAuthentication(),
7366
request,
7467
response);
7568

76-
OAuth2AuthorizedClient client = repo.loadAuthorizedClient(
69+
OAuth2AuthorizedClient client = authorizedRepo.loadAuthorizedClient(
7770
"graph",
7871
createAuthentication(),
7972
request);
@@ -88,13 +81,13 @@ public void loadInitAzureAuthzClient() {
8881

8982
@Test
9083
public void saveAndLoadAzureAuthzClient() {
91-
repo.saveAuthorizedClient(
84+
authorizedRepo.saveAuthorizedClient(
9285
createAuthorizedClient(graph),
9386
createAuthentication(),
9487
request,
9588
response);
9689

97-
OAuth2AuthorizedClient client = repo.loadAuthorizedClient(
90+
OAuth2AuthorizedClient client = authorizedRepo.loadAuthorizedClient(
9891
"graph",
9992
createAuthentication(),
10093
request);
@@ -138,10 +131,4 @@ private boolean isTokenExpired(OAuth2AccessToken token) {
138131
.map(expiresAt -> expiresAt.isBefore(Instant.now()))
139132
.orElse(false);
140133
}
141-
142-
@Configuration
143-
@SpringBootApplication
144-
@EnableWebSecurity
145-
public static class DumbApp {
146-
}
147134
}

0 commit comments

Comments
 (0)