@ -1,5 +1,5 @@
@@ -1,5 +1,5 @@
/ *
* Copyright 2002 - 2019 the original author or authors .
* Copyright 2002 - 2020 the original author or authors .
*
* Licensed under the Apache License , Version 2 . 0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
@ -16,6 +16,8 @@
@@ -16,6 +16,8 @@
package org.springframework.security.config.web.server ;
import java.net.URI ;
import org.junit.Rule ;
import org.junit.Test ;
import org.junit.runner.RunWith ;
@ -48,6 +50,7 @@ import org.springframework.security.test.context.annotation.SecurityTestExecutio
@@ -48,6 +50,7 @@ import org.springframework.security.test.context.annotation.SecurityTestExecutio
import org.springframework.security.test.context.support.WithMockUser ;
import org.springframework.security.web.server.SecurityWebFilterChain ;
import org.springframework.security.web.server.authentication.ServerAuthenticationConverter ;
import org.springframework.security.web.server.savedrequest.ServerRequestCache ;
import org.springframework.test.context.junit4.SpringRunner ;
import org.springframework.test.web.reactive.server.WebTestClient ;
import org.springframework.web.bind.annotation.GetMapping ;
@ -62,6 +65,7 @@ import static org.mockito.Mockito.when;
@@ -62,6 +65,7 @@ import static org.mockito.Mockito.when;
/ * *
* @author Rob Winch
* @author Parikshit Dutta
* @since 5 . 1
* /
@RunWith ( SpringRunner . class )
@ -146,6 +150,7 @@ public class OAuth2ClientSpecTests {
@@ -146,6 +150,7 @@ public class OAuth2ClientSpecTests {
ServerAuthenticationConverter converter = config . authenticationConverter ;
ReactiveAuthenticationManager manager = config . manager ;
ServerAuthorizationRequestRepository < OAuth2AuthorizationRequest > authorizationRequestRepository = config . authorizationRequestRepository ;
ServerRequestCache requestCache = config . requestCache ;
OAuth2AuthorizationRequest authorizationRequest = TestOAuth2AuthorizationRequests . request ( )
. redirectUri ( "/authorize/oauth2/code/registration-id" )
@ -163,6 +168,7 @@ public class OAuth2ClientSpecTests {
@@ -163,6 +168,7 @@ public class OAuth2ClientSpecTests {
when ( authorizationRequestRepository . loadAuthorizationRequest ( any ( ) ) ) . thenReturn ( Mono . just ( authorizationRequest ) ) ;
when ( converter . convert ( any ( ) ) ) . thenReturn ( Mono . just ( new TestingAuthenticationToken ( "a" , "b" , "c" ) ) ) ;
when ( manager . authenticate ( any ( ) ) ) . thenReturn ( Mono . just ( result ) ) ;
when ( requestCache . getRedirectUri ( any ( ) ) ) . thenReturn ( Mono . just ( URI . create ( "/saved-request" ) ) ) ;
this . client . get ( )
. uri ( uriBuilder - >
@ -175,6 +181,7 @@ public class OAuth2ClientSpecTests {
@@ -175,6 +181,7 @@ public class OAuth2ClientSpecTests {
verify ( converter ) . convert ( any ( ) ) ;
verify ( manager ) . authenticate ( any ( ) ) ;
verify ( requestCache ) . getRedirectUri ( any ( ) ) ;
}
@EnableWebFlux
@ -197,13 +204,17 @@ public class OAuth2ClientSpecTests {
@@ -197,13 +204,17 @@ public class OAuth2ClientSpecTests {
ServerAuthorizationRequestRepository < OAuth2AuthorizationRequest > authorizationRequestRepository = mock ( ServerAuthorizationRequestRepository . class ) ;
ServerRequestCache requestCache = mock ( ServerRequestCache . class ) ;
@Bean
public SecurityWebFilterChain springSecurityFilter ( ServerHttpSecurity http ) {
http
. oauth2Client ( )
. authenticationConverter ( this . authenticationConverter )
. authenticationManager ( this . manager )
. authorizationRequestRepository ( this . authorizationRequestRepository ) ;
. authorizationRequestRepository ( this . authorizationRequestRepository )
. and ( )
. requestCache ( c - > c . requestCache ( this . requestCache ) ) ;
return http . build ( ) ;
}
}
@ -217,6 +228,7 @@ public class OAuth2ClientSpecTests {
@@ -217,6 +228,7 @@ public class OAuth2ClientSpecTests {
ServerAuthenticationConverter converter = config . authenticationConverter ;
ReactiveAuthenticationManager manager = config . manager ;
ServerAuthorizationRequestRepository < OAuth2AuthorizationRequest > authorizationRequestRepository = config . authorizationRequestRepository ;
ServerRequestCache requestCache = config . requestCache ;
OAuth2AuthorizationRequest authorizationRequest = TestOAuth2AuthorizationRequests . request ( )
. redirectUri ( "/authorize/oauth2/code/registration-id" )
@ -234,6 +246,7 @@ public class OAuth2ClientSpecTests {
@@ -234,6 +246,7 @@ public class OAuth2ClientSpecTests {
when ( authorizationRequestRepository . loadAuthorizationRequest ( any ( ) ) ) . thenReturn ( Mono . just ( authorizationRequest ) ) ;
when ( converter . convert ( any ( ) ) ) . thenReturn ( Mono . just ( new TestingAuthenticationToken ( "a" , "b" , "c" ) ) ) ;
when ( manager . authenticate ( any ( ) ) ) . thenReturn ( Mono . just ( result ) ) ;
when ( requestCache . getRedirectUri ( any ( ) ) ) . thenReturn ( Mono . just ( URI . create ( "/saved-request" ) ) ) ;
this . client . get ( )
. uri ( uriBuilder - >
@ -246,6 +259,7 @@ public class OAuth2ClientSpecTests {
@@ -246,6 +259,7 @@ public class OAuth2ClientSpecTests {
verify ( converter ) . convert ( any ( ) ) ;
verify ( manager ) . authenticate ( any ( ) ) ;
verify ( requestCache ) . getRedirectUri ( any ( ) ) ;
}
@Configuration
@ -256,6 +270,8 @@ public class OAuth2ClientSpecTests {
@@ -256,6 +270,8 @@ public class OAuth2ClientSpecTests {
ServerAuthorizationRequestRepository < OAuth2AuthorizationRequest > authorizationRequestRepository = mock ( ServerAuthorizationRequestRepository . class ) ;
ServerRequestCache requestCache = mock ( ServerRequestCache . class ) ;
@Bean
public SecurityWebFilterChain springSecurityFilter ( ServerHttpSecurity http ) {
http
@ -263,8 +279,8 @@ public class OAuth2ClientSpecTests {
@@ -263,8 +279,8 @@ public class OAuth2ClientSpecTests {
oauth2Client
. authenticationConverter ( this . authenticationConverter )
. authenticationManager ( this . manager )
. authorizationRequestRepository ( this . authorizationRequestRepository )
) ;
. authorizationRequestRepository ( this . authorizationRequestRepository ) )
. requestCache ( c - > c . requestCache ( this . requestCache ) ) ;
return http . build ( ) ;
}
}