Skip to content

Commit 6d5350d

Browse files
committed
Remove ProviderSettings from integration tests, move Oidc Discovery tests from OAuth2AuthorizationCodeGrantTests to OidcTests
1 parent 7bd990c commit 6d5350d

File tree

5 files changed

+163
-73
lines changed

5 files changed

+163
-73
lines changed

oauth2-authorization-server/src/test/java/org/springframework/security/config/annotation/web/configurers/oauth2/server/authorization/OAuth2AuthorizationCodeGrantTests.java

Lines changed: 0 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -40,20 +40,16 @@
4040
import org.springframework.security.oauth2.server.authorization.client.RegisteredClient;
4141
import org.springframework.security.oauth2.server.authorization.client.RegisteredClientRepository;
4242
import org.springframework.security.oauth2.server.authorization.client.TestRegisteredClients;
43-
import org.springframework.security.oauth2.server.authorization.config.ProviderSettings;
4443
import org.springframework.security.oauth2.server.authorization.token.OAuth2AuthorizationCode;
4544
import org.springframework.security.oauth2.server.authorization.web.OAuth2AuthorizationEndpointFilter;
4645
import org.springframework.security.oauth2.server.authorization.web.OAuth2TokenEndpointFilter;
47-
import org.springframework.security.oauth2.server.authorization.web.OidcProviderConfigurationEndpointFilter;
4846
import org.springframework.test.web.servlet.MockMvc;
4947
import org.springframework.test.web.servlet.MvcResult;
5048
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
5149
import org.springframework.util.LinkedMultiValueMap;
5250
import org.springframework.util.MultiValueMap;
5351
import org.springframework.util.StringUtils;
5452

55-
import java.net.MalformedURLException;
56-
import java.net.URL;
5753
import java.net.URLEncoder;
5854
import java.nio.charset.StandardCharsets;
5955
import java.util.Base64;
@@ -90,8 +86,6 @@ public class OAuth2AuthorizationCodeGrantTests {
9086
private static RegisteredClientRepository registeredClientRepository;
9187
private static OAuth2AuthorizationService authorizationService;
9288
private static CryptoKeySource keySource;
93-
private static ProviderSettings providerSettings;
94-
private static String issuerUrl = "https://example.com/issuer1";
9589

9690
@Rule
9791
public final SpringTestRule spring = new SpringTestRule();
@@ -104,7 +98,6 @@ public static void init() {
10498
registeredClientRepository = mock(RegisteredClientRepository.class);
10599
authorizationService = mock(OAuth2AuthorizationService.class);
106100
keySource = new StaticKeyGeneratingCryptoKeySource();
107-
providerSettings = new ProviderSettings();
108101
}
109102

110103
@Before
@@ -230,26 +223,6 @@ public void requestWhenPublicClientWithPkceThenReturnAccessTokenResponse() throw
230223
verify(authorizationService, times(2)).save(any());
231224
}
232225

233-
@Test
234-
public void requestWhenIssuerSetAndOpenIDProviderConfigurationRequestThenReturnProviderConfigurationResponse() throws Exception {
235-
this.spring.register(AuthorizationServerConfigurationWithIssuer.class).autowire();
236-
237-
this.mvc.perform(MockMvcRequestBuilders.get(OidcProviderConfigurationEndpointFilter.DEFAULT_OIDC_PROVIDER_CONFIGURATION_ENDPOINT_URI))
238-
.andExpect(status().is2xxSuccessful())
239-
.andExpect(jsonPath("issuer").value(issuerUrl))
240-
.andReturn();
241-
}
242-
243-
@Test
244-
public void requestWhenIssuerNotSetAndOpenIDProviderConfigurationRequestThenRedirectsToLogin() throws Exception {
245-
this.spring.register(AuthorizationServerConfiguration.class).autowire();
246-
247-
MvcResult mvcResult = this.mvc.perform(get(OidcProviderConfigurationEndpointFilter.DEFAULT_OIDC_PROVIDER_CONFIGURATION_ENDPOINT_URI))
248-
.andExpect(status().is3xxRedirection())
249-
.andReturn();
250-
assertThat(mvcResult.getResponse().getRedirectedUrl()).endsWith("/login");
251-
}
252-
253226
private static MultiValueMap<String, String> getAuthorizationRequestParameters(RegisteredClient registeredClient) {
254227
MultiValueMap<String, String> parameters = new LinkedMultiValueMap<>();
255228
parameters.set(OAuth2ParameterNames.RESPONSE_TYPE, OAuth2AuthorizationResponseType.CODE.getValue());
@@ -296,24 +269,5 @@ OAuth2AuthorizationService authorizationService() {
296269
CryptoKeySource keySource() {
297270
return keySource;
298271
}
299-
300-
@Bean
301-
ProviderSettings providerSettings() {
302-
return providerSettings;
303-
}
304-
}
305-
306-
@EnableWebSecurity
307-
@Import(OAuth2AuthorizationServerConfiguration.class)
308-
static class AuthorizationServerConfigurationWithIssuer extends AuthorizationServerConfiguration {
309-
@Bean
310-
@Override
311-
ProviderSettings providerSettings() {
312-
URL url = null;
313-
try {
314-
url = new URL(issuerUrl);
315-
} catch (MalformedURLException ignored) { }
316-
return new ProviderSettings().issuer(url);
317-
}
318272
}
319273
}

oauth2-authorization-server/src/test/java/org/springframework/security/config/annotation/web/configurers/oauth2/server/authorization/OAuth2ClientCredentialsGrantTests.java

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,10 @@
3434
import org.springframework.security.oauth2.server.authorization.client.RegisteredClient;
3535
import org.springframework.security.oauth2.server.authorization.client.RegisteredClientRepository;
3636
import org.springframework.security.oauth2.server.authorization.client.TestRegisteredClients;
37-
import org.springframework.security.oauth2.server.authorization.config.ProviderSettings;
3837
import org.springframework.security.oauth2.server.authorization.web.OAuth2TokenEndpointFilter;
3938
import org.springframework.test.web.servlet.MockMvc;
4039
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
4140

42-
import java.net.MalformedURLException;
43-
import java.net.URL;
4441
import java.net.URLEncoder;
4542
import java.nio.charset.StandardCharsets;
4643
import java.util.Base64;
@@ -65,7 +62,6 @@ public class OAuth2ClientCredentialsGrantTests {
6562
private static RegisteredClientRepository registeredClientRepository;
6663
private static OAuth2AuthorizationService authorizationService;
6764
private static CryptoKeySource keySource;
68-
private static ProviderSettings providerSettings;
6965

7066
@Rule
7167
public final SpringTestRule spring = new SpringTestRule();
@@ -74,11 +70,10 @@ public class OAuth2ClientCredentialsGrantTests {
7470
private MockMvc mvc;
7571

7672
@BeforeClass
77-
public static void init() throws MalformedURLException {
73+
public static void init() {
7874
registeredClientRepository = mock(RegisteredClientRepository.class);
7975
authorizationService = mock(OAuth2AuthorizationService.class);
8076
keySource = new StaticKeyGeneratingCryptoKeySource();
81-
providerSettings = new ProviderSettings().issuer(new URL("https://example.com"));
8277
}
8378

8479
@Before
@@ -167,8 +162,5 @@ OAuth2AuthorizationService authorizationService() {
167162
CryptoKeySource keySource() {
168163
return keySource;
169164
}
170-
171-
@Bean
172-
ProviderSettings providerSettings() { return providerSettings; }
173165
}
174166
}

oauth2-authorization-server/src/test/java/org/springframework/security/config/annotation/web/configurers/oauth2/server/authorization/OAuth2RefreshTokenGrantTests.java

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,11 @@
3737
import org.springframework.security.oauth2.server.authorization.client.RegisteredClient;
3838
import org.springframework.security.oauth2.server.authorization.client.RegisteredClientRepository;
3939
import org.springframework.security.oauth2.server.authorization.client.TestRegisteredClients;
40-
import org.springframework.security.oauth2.server.authorization.config.ProviderSettings;
4140
import org.springframework.security.oauth2.server.authorization.web.OAuth2TokenEndpointFilter;
4241
import org.springframework.test.web.servlet.MockMvc;
4342
import org.springframework.util.LinkedMultiValueMap;
4443
import org.springframework.util.MultiValueMap;
4544

46-
import java.net.MalformedURLException;
47-
import java.net.URL;
4845
import java.net.URLEncoder;
4946
import java.nio.charset.StandardCharsets;
5047
import java.util.Base64;
@@ -70,7 +67,6 @@
7067
public class OAuth2RefreshTokenGrantTests {
7168
private static RegisteredClientRepository registeredClientRepository;
7269
private static OAuth2AuthorizationService authorizationService;
73-
private static ProviderSettings providerSettings;
7470
private static CryptoKeySource keySource;
7571

7672
@Rule
@@ -80,11 +76,10 @@ public class OAuth2RefreshTokenGrantTests {
8076
private MockMvc mvc;
8177

8278
@BeforeClass
83-
public static void init() throws MalformedURLException {
79+
public static void init() {
8480
registeredClientRepository = mock(RegisteredClientRepository.class);
8581
authorizationService = mock(OAuth2AuthorizationService.class);
8682
keySource = new StaticKeyGeneratingCryptoKeySource();
87-
providerSettings = new ProviderSettings().issuer(new URL("https://example.com"));
8883
}
8984

9085
@Before
@@ -161,8 +156,5 @@ OAuth2AuthorizationService authorizationService() {
161156
CryptoKeySource keySource() {
162157
return keySource;
163158
}
164-
165-
@Bean
166-
ProviderSettings providerSettings() { return providerSettings; }
167159
}
168160
}

oauth2-authorization-server/src/test/java/org/springframework/security/config/annotation/web/configurers/oauth2/server/authorization/OAuth2TokenRevocationTests.java

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -40,15 +40,12 @@
4040
import org.springframework.security.oauth2.server.authorization.client.RegisteredClient;
4141
import org.springframework.security.oauth2.server.authorization.client.RegisteredClientRepository;
4242
import org.springframework.security.oauth2.server.authorization.client.TestRegisteredClients;
43-
import org.springframework.security.oauth2.server.authorization.config.ProviderSettings;
4443
import org.springframework.security.oauth2.server.authorization.web.OAuth2TokenRevocationEndpointFilter;
4544
import org.springframework.test.web.servlet.MockMvc;
4645
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
4746
import org.springframework.util.LinkedMultiValueMap;
4847
import org.springframework.util.MultiValueMap;
4948

50-
import java.net.MalformedURLException;
51-
import java.net.URL;
5249
import java.net.URLEncoder;
5350
import java.nio.charset.StandardCharsets;
5451
import java.util.Base64;
@@ -70,7 +67,6 @@ public class OAuth2TokenRevocationTests {
7067
private static RegisteredClientRepository registeredClientRepository;
7168
private static OAuth2AuthorizationService authorizationService;
7269
private static CryptoKeySource keySource;
73-
private static ProviderSettings providerSettings;
7470

7571
@Rule
7672
public final SpringTestRule spring = new SpringTestRule();
@@ -79,11 +75,10 @@ public class OAuth2TokenRevocationTests {
7975
private MockMvc mvc;
8076

8177
@BeforeClass
82-
public static void init() throws MalformedURLException {
78+
public static void init() {
8379
registeredClientRepository = mock(RegisteredClientRepository.class);
8480
authorizationService = mock(OAuth2AuthorizationService.class);
8581
keySource = new StaticKeyGeneratingCryptoKeySource();
86-
providerSettings = new ProviderSettings().issuer(new URL("https://example.com"));
8782
}
8883

8984
@Before
@@ -189,8 +184,5 @@ OAuth2AuthorizationService authorizationService() {
189184
CryptoKeySource keySource() {
190185
return keySource;
191186
}
192-
193-
@Bean
194-
ProviderSettings providerSettings() { return providerSettings; }
195187
}
196188
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,160 @@
1+
/*
2+
* Copyright 2020 the original author or authors.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* https://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
package org.springframework.security.config.annotation.web.configurers.oauth2.server.authorization;
17+
18+
import org.junit.Before;
19+
import org.junit.BeforeClass;
20+
import org.junit.Rule;
21+
import org.junit.Test;
22+
import org.mockito.ArgumentCaptor;
23+
import org.springframework.beans.factory.annotation.Autowired;
24+
import org.springframework.context.annotation.Bean;
25+
import org.springframework.context.annotation.Import;
26+
import org.springframework.http.HttpHeaders;
27+
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
28+
import org.springframework.security.config.annotation.web.configuration.OAuth2AuthorizationServerConfiguration;
29+
import org.springframework.security.config.test.SpringTestRule;
30+
import org.springframework.security.crypto.key.CryptoKeySource;
31+
import org.springframework.security.crypto.key.StaticKeyGeneratingCryptoKeySource;
32+
import org.springframework.security.oauth2.core.AuthorizationGrantType;
33+
import org.springframework.security.oauth2.core.endpoint.OAuth2AuthorizationResponseType;
34+
import org.springframework.security.oauth2.core.endpoint.OAuth2ParameterNames;
35+
import org.springframework.security.oauth2.core.endpoint.PkceParameterNames;
36+
import org.springframework.security.oauth2.server.authorization.OAuth2Authorization;
37+
import org.springframework.security.oauth2.server.authorization.OAuth2AuthorizationService;
38+
import org.springframework.security.oauth2.server.authorization.TestOAuth2Authorizations;
39+
import org.springframework.security.oauth2.server.authorization.TokenType;
40+
import org.springframework.security.oauth2.server.authorization.client.RegisteredClient;
41+
import org.springframework.security.oauth2.server.authorization.client.RegisteredClientRepository;
42+
import org.springframework.security.oauth2.server.authorization.client.TestRegisteredClients;
43+
import org.springframework.security.oauth2.server.authorization.config.ProviderSettings;
44+
import org.springframework.security.oauth2.server.authorization.token.OAuth2AuthorizationCode;
45+
import org.springframework.security.oauth2.server.authorization.web.OAuth2AuthorizationEndpointFilter;
46+
import org.springframework.security.oauth2.server.authorization.web.OAuth2TokenEndpointFilter;
47+
import org.springframework.security.oauth2.server.authorization.web.OidcProviderConfigurationEndpointFilter;
48+
import org.springframework.test.web.servlet.MockMvc;
49+
import org.springframework.test.web.servlet.MvcResult;
50+
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
51+
import org.springframework.util.LinkedMultiValueMap;
52+
import org.springframework.util.MultiValueMap;
53+
import org.springframework.util.StringUtils;
54+
55+
import java.net.MalformedURLException;
56+
import java.net.URL;
57+
import java.net.URLEncoder;
58+
import java.nio.charset.StandardCharsets;
59+
import java.util.Base64;
60+
61+
import static org.assertj.core.api.Assertions.assertThat;
62+
import static org.hamcrest.CoreMatchers.containsString;
63+
import static org.mockito.ArgumentMatchers.any;
64+
import static org.mockito.ArgumentMatchers.eq;
65+
import static org.mockito.Mockito.mock;
66+
import static org.mockito.Mockito.reset;
67+
import static org.mockito.Mockito.times;
68+
import static org.mockito.Mockito.verify;
69+
import static org.mockito.Mockito.verifyNoInteractions;
70+
import static org.mockito.Mockito.when;
71+
import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.user;
72+
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
73+
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
74+
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.header;
75+
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
76+
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
77+
78+
/**
79+
* Integration tests for the OpenID Connect.
80+
*
81+
* @author Daniel Garnier-Moiroux
82+
*/
83+
public class OidcTests {
84+
private static RegisteredClientRepository registeredClientRepository;
85+
private static CryptoKeySource keySource;
86+
private static ProviderSettings providerSettings;
87+
private static final String issuerUrl = "https://example.com/issuer1";
88+
89+
@Rule
90+
public final SpringTestRule spring = new SpringTestRule();
91+
92+
@Autowired
93+
private MockMvc mvc;
94+
95+
@BeforeClass
96+
public static void init() {
97+
registeredClientRepository = mock(RegisteredClientRepository.class);
98+
keySource = new StaticKeyGeneratingCryptoKeySource();
99+
providerSettings = new ProviderSettings();
100+
}
101+
102+
@Before
103+
public void setup() {
104+
reset(registeredClientRepository);
105+
}
106+
107+
@Test
108+
public void requestWhenIssuerSetAndOpenIDProviderConfigurationRequestThenReturnProviderConfigurationResponse() throws Exception {
109+
this.spring.register(AuthorizationServerConfigurationWithIssuer.class).autowire();
110+
111+
this.mvc.perform(MockMvcRequestBuilders.get(OidcProviderConfigurationEndpointFilter.DEFAULT_OIDC_PROVIDER_CONFIGURATION_ENDPOINT_URI))
112+
.andExpect(status().is2xxSuccessful())
113+
.andExpect(jsonPath("issuer").value(issuerUrl))
114+
.andReturn();
115+
}
116+
117+
@Test
118+
public void requestWhenIssuerNotSetAndOpenIDProviderConfigurationRequestThenRedirectsToLogin() throws Exception {
119+
this.spring.register(AuthorizationServerConfiguration.class).autowire();
120+
121+
MvcResult mvcResult = this.mvc.perform(get(OidcProviderConfigurationEndpointFilter.DEFAULT_OIDC_PROVIDER_CONFIGURATION_ENDPOINT_URI))
122+
.andExpect(status().is3xxRedirection())
123+
.andReturn();
124+
assertThat(mvcResult.getResponse().getRedirectedUrl()).endsWith("/login");
125+
}
126+
127+
@EnableWebSecurity
128+
@Import(OAuth2AuthorizationServerConfiguration.class)
129+
static class AuthorizationServerConfiguration {
130+
131+
@Bean
132+
RegisteredClientRepository registeredClientRepository() {
133+
return registeredClientRepository;
134+
}
135+
136+
@Bean
137+
CryptoKeySource keySource() {
138+
return keySource;
139+
}
140+
141+
@Bean
142+
ProviderSettings providerSettings() {
143+
return providerSettings;
144+
}
145+
}
146+
147+
@EnableWebSecurity
148+
@Import(OAuth2AuthorizationServerConfiguration.class)
149+
static class AuthorizationServerConfigurationWithIssuer extends AuthorizationServerConfiguration {
150+
@Bean
151+
@Override
152+
ProviderSettings providerSettings() {
153+
URL url = null;
154+
try {
155+
url = new URL(issuerUrl);
156+
} catch (MalformedURLException ignored) { }
157+
return new ProviderSettings().issuer(url);
158+
}
159+
}
160+
}

0 commit comments

Comments
 (0)