diff --git a/spring-reactive-modules/spring-reactive/pom.xml b/spring-reactive-modules/spring-reactive/pom.xml index 2281e6b0b4..f19809e302 100644 --- a/spring-reactive-modules/spring-reactive/pom.xml +++ b/spring-reactive-modules/spring-reactive/pom.xml @@ -6,9 +6,10 @@ spring-reactive - com.baeldung.spring.reactive - spring-reactive-modules - 1.0.0-SNAPSHOT + com.baeldung + parent-boot-3 + 0.0.1-SNAPSHOT + ../../parent-boot-3 @@ -90,6 +91,18 @@ + + + + org.springframework.boot + spring-boot-maven-plugin + + true + + + + + 3.4.16 1.3.10 diff --git a/spring-reactive-modules/spring-reactive/src/main/java/com/baeldung/reactive/debugging/consumer/ConsumerDebuggingApplication.java b/spring-reactive-modules/spring-reactive/src/main/java/com/baeldung/reactive/debugging/consumer/ConsumerDebuggingApplication.java index fa10383c95..9cb8cdf003 100644 --- a/spring-reactive-modules/spring-reactive/src/main/java/com/baeldung/reactive/debugging/consumer/ConsumerDebuggingApplication.java +++ b/spring-reactive-modules/spring-reactive/src/main/java/com/baeldung/reactive/debugging/consumer/ConsumerDebuggingApplication.java @@ -24,10 +24,10 @@ public class ConsumerDebuggingApplication { @Bean public SecurityWebFilterChain debuggingConsumerSpringSecurityFilterChain(ServerHttpSecurity http) { - http.authorizeExchange() - .anyExchange() - .permitAll(); - http.csrf().disable(); + http.authorizeExchange(exchanges -> exchanges + .anyExchange() + .permitAll()); + http.csrf(csrf -> csrf.disable()); return http.build(); } } diff --git a/spring-reactive-modules/spring-reactive/src/main/java/com/baeldung/reactive/debugging/server/ServerDebuggingApplication.java b/spring-reactive-modules/spring-reactive/src/main/java/com/baeldung/reactive/debugging/server/ServerDebuggingApplication.java index ddf97ee5a8..d836a892aa 100644 --- a/spring-reactive-modules/spring-reactive/src/main/java/com/baeldung/reactive/debugging/server/ServerDebuggingApplication.java +++ b/spring-reactive-modules/spring-reactive/src/main/java/com/baeldung/reactive/debugging/server/ServerDebuggingApplication.java @@ -22,9 +22,9 @@ public class ServerDebuggingApplication { @Bean public SecurityWebFilterChain debuggingServerSpringSecurityFilterChain(ServerHttpSecurity http) { - http.authorizeExchange() - .anyExchange() - .permitAll(); + http.authorizeExchange(exchanges -> exchanges + .anyExchange() + .permitAll()); return http.build(); } } diff --git a/spring-reactive-modules/spring-reactive/src/main/java/com/baeldung/reactive/security/SecurityConfig.java b/spring-reactive-modules/spring-reactive/src/main/java/com/baeldung/reactive/security/SecurityConfig.java index 67e54ad26a..69683452cd 100644 --- a/spring-reactive-modules/spring-reactive/src/main/java/com/baeldung/reactive/security/SecurityConfig.java +++ b/spring-reactive-modules/spring-reactive/src/main/java/com/baeldung/reactive/security/SecurityConfig.java @@ -1,6 +1,7 @@ package com.baeldung.reactive.security; import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.method.configuration.EnableReactiveMethodSecurity; import org.springframework.security.config.annotation.web.reactive.EnableWebFluxSecurity; import org.springframework.security.config.web.server.ServerHttpSecurity; @@ -12,18 +13,19 @@ import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.web.server.SecurityWebFilterChain; @EnableWebFluxSecurity +@Configuration @EnableReactiveMethodSecurity public class SecurityConfig { @Bean public SecurityWebFilterChain securityWebFilterChain(ServerHttpSecurity http) { - return http.authorizeExchange() - .pathMatchers("/admin").hasAuthority("ROLE_ADMIN") - .anyExchange().authenticated() - .and() - .formLogin() - .and() - .csrf().disable() + return http + .authorizeExchange(exchanges -> exchanges + .pathMatchers("/admin").hasAuthority("ROLE_ADMIN") + .anyExchange().authenticated()) + .formLogin(formLogin -> formLogin + .loginPage("/login")) + .csrf(csrf -> csrf.disable()) .build(); } diff --git a/spring-reactive-modules/spring-reactive/src/main/java/com/baeldung/reactive/security/SpringSecurity5Application.java b/spring-reactive-modules/spring-reactive/src/main/java/com/baeldung/reactive/security/SpringSecurity6Application.java similarity index 94% rename from spring-reactive-modules/spring-reactive/src/main/java/com/baeldung/reactive/security/SpringSecurity5Application.java rename to spring-reactive-modules/spring-reactive/src/main/java/com/baeldung/reactive/security/SpringSecurity6Application.java index bc0895a38b..4b20c678b5 100644 --- a/spring-reactive-modules/spring-reactive/src/main/java/com/baeldung/reactive/security/SpringSecurity5Application.java +++ b/spring-reactive-modules/spring-reactive/src/main/java/com/baeldung/reactive/security/SpringSecurity6Application.java @@ -13,11 +13,11 @@ import reactor.netty.http.server.HttpServer; @ComponentScan(basePackages = {"com.baeldung.reactive.security"}) @EnableWebFlux -public class SpringSecurity5Application { +public class SpringSecurity6Application { public static void main(String[] args) { try (AnnotationConfigApplicationContext context = - new AnnotationConfigApplicationContext(SpringSecurity5Application.class)) { + new AnnotationConfigApplicationContext(SpringSecurity6Application.class)) { context.getBean(DisposableServer.class).onDispose().block(); } } diff --git a/spring-reactive-modules/spring-reactive/src/main/java/com/baeldung/reactive/webclient/WebClientApplication.java b/spring-reactive-modules/spring-reactive/src/main/java/com/baeldung/reactive/webclient/WebClientApplication.java index 3a62e7b8a5..c756f43893 100644 --- a/spring-reactive-modules/spring-reactive/src/main/java/com/baeldung/reactive/webclient/WebClientApplication.java +++ b/spring-reactive-modules/spring-reactive/src/main/java/com/baeldung/reactive/webclient/WebClientApplication.java @@ -16,9 +16,8 @@ public class WebClientApplication { @Bean public SecurityWebFilterChain filterChain(ServerHttpSecurity http) { - http.csrf().disable() - .authorizeExchange() - .anyExchange().permitAll(); + http.csrf(csrf -> csrf.disable()) + .authorizeExchange(exchanges -> exchanges.anyExchange().permitAll()); return http.build(); } } diff --git a/spring-reactive-modules/spring-reactive/src/main/java/com/baeldung/reactive/webflux/annotation/EmployeeWebSecurityConfig.java b/spring-reactive-modules/spring-reactive/src/main/java/com/baeldung/reactive/webflux/annotation/EmployeeWebSecurityConfig.java index fc98b70c0f..67c10e12a2 100644 --- a/spring-reactive-modules/spring-reactive/src/main/java/com/baeldung/reactive/webflux/annotation/EmployeeWebSecurityConfig.java +++ b/spring-reactive-modules/spring-reactive/src/main/java/com/baeldung/reactive/webflux/annotation/EmployeeWebSecurityConfig.java @@ -1,7 +1,9 @@ package com.baeldung.reactive.webflux.annotation; import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.http.HttpMethod; +import org.springframework.security.config.Customizer; import org.springframework.security.config.annotation.web.reactive.EnableWebFluxSecurity; import org.springframework.security.config.web.server.ServerHttpSecurity; import org.springframework.security.core.userdetails.MapReactiveUserDetailsService; @@ -12,6 +14,7 @@ import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.web.server.SecurityWebFilterChain; @EnableWebFluxSecurity +@Configuration public class EmployeeWebSecurityConfig { @Bean @@ -27,12 +30,11 @@ public class EmployeeWebSecurityConfig { @Bean public SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http) { http - .csrf().disable() - .authorizeExchange() + .csrf(csrf -> csrf.disable()) + .authorizeExchange(exchanges -> exchanges .pathMatchers(HttpMethod.POST, "/employees/update").hasRole("ADMIN") - .pathMatchers("/**").permitAll() - .and() - .httpBasic(); + .pathMatchers("/**").permitAll()) + .httpBasic(Customizer.withDefaults()); return http.build(); } diff --git a/spring-reactive-modules/spring-reactive/src/test/java/com/baeldung/reactive/security/SecurityIntegrationTest.java b/spring-reactive-modules/spring-reactive/src/test/java/com/baeldung/reactive/security/SecurityIntegrationTest.java index 6bf39e4791..161c739ffb 100644 --- a/spring-reactive-modules/spring-reactive/src/test/java/com/baeldung/reactive/security/SecurityIntegrationTest.java +++ b/spring-reactive-modules/spring-reactive/src/test/java/com/baeldung/reactive/security/SecurityIntegrationTest.java @@ -8,7 +8,7 @@ import org.springframework.context.ApplicationContext; import org.springframework.security.test.context.support.WithMockUser; import org.springframework.test.web.reactive.server.WebTestClient; -@SpringBootTest(classes = SpringSecurity5Application.class) +@SpringBootTest(classes = SpringSecurity6Application.class) class SecurityIntegrationTest { @Autowired diff --git a/spring-reactive-modules/spring-reactive/src/test/java/com/baeldung/reactive/webclient/WebClientIntegrationTest.java b/spring-reactive-modules/spring-reactive/src/test/java/com/baeldung/reactive/webclient/WebClientIntegrationTest.java index aaecb6498c..f109ab4887 100644 --- a/spring-reactive-modules/spring-reactive/src/test/java/com/baeldung/reactive/webclient/WebClientIntegrationTest.java +++ b/spring-reactive-modules/spring-reactive/src/test/java/com/baeldung/reactive/webclient/WebClientIntegrationTest.java @@ -7,7 +7,7 @@ import io.netty.handler.timeout.WriteTimeoutHandler; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; -import org.springframework.boot.web.server.LocalServerPort; +import org.springframework.boot.test.web.server.LocalServerPort; import org.springframework.core.ParameterizedTypeReference; import org.springframework.core.codec.CodecException; import org.springframework.http.HttpHeaders; diff --git a/spring-reactive-modules/spring-reactive/src/test/java/com/baeldung/reactive/webclient/WebControllerIntegrationTest.java b/spring-reactive-modules/spring-reactive/src/test/java/com/baeldung/reactive/webclient/WebControllerIntegrationTest.java index f4d2f4384f..9274f836e6 100644 --- a/spring-reactive-modules/spring-reactive/src/test/java/com/baeldung/reactive/webclient/WebControllerIntegrationTest.java +++ b/spring-reactive-modules/spring-reactive/src/test/java/com/baeldung/reactive/webclient/WebControllerIntegrationTest.java @@ -5,7 +5,7 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; -import org.springframework.boot.web.server.LocalServerPort; +import org.springframework.boot.test.web.server.LocalServerPort; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.web.reactive.server.WebTestClient; diff --git a/spring-reactive-modules/spring-reactive/src/test/java/com/baeldung/reactive/webclient/WebTestClientIntegrationTest.java b/spring-reactive-modules/spring-reactive/src/test/java/com/baeldung/reactive/webclient/WebTestClientIntegrationTest.java index 6c7433dfe3..d476fb1e9a 100644 --- a/spring-reactive-modules/spring-reactive/src/test/java/com/baeldung/reactive/webclient/WebTestClientIntegrationTest.java +++ b/spring-reactive-modules/spring-reactive/src/test/java/com/baeldung/reactive/webclient/WebTestClientIntegrationTest.java @@ -4,7 +4,7 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; -import org.springframework.boot.web.server.LocalServerPort; +import org.springframework.boot.test.web.server.LocalServerPort; import org.springframework.context.ApplicationContext; import org.springframework.security.test.context.support.WithMockUser; import org.springframework.test.web.reactive.server.WebTestClient; diff --git a/spring-reactive-modules/spring-reactive/src/test/java/com/baeldung/reactive/webclientrequests/WebClientRequestsWithParametersUnitTest.java b/spring-reactive-modules/spring-reactive/src/test/java/com/baeldung/reactive/webclientrequests/WebClientRequestsWithParametersUnitTest.java index 3e09521e04..bf407dbbf7 100644 --- a/spring-reactive-modules/spring-reactive/src/test/java/com/baeldung/reactive/webclientrequests/WebClientRequestsWithParametersUnitTest.java +++ b/spring-reactive-modules/spring-reactive/src/test/java/com/baeldung/reactive/webclientrequests/WebClientRequestsWithParametersUnitTest.java @@ -14,10 +14,7 @@ import org.springframework.web.util.DefaultUriBuilderFactory; import reactor.core.publisher.Mono; import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.verifyNoMoreInteractions; -import static org.mockito.Mockito.when; +import static org.mockito.Mockito.*; @WebFluxTest class WebClientRequestsWithParametersUnitTest { @@ -51,6 +48,7 @@ class WebClientRequestsWithParametersUnitTest { .uri("/products") .retrieve() .bodyToMono(String.class) + .onErrorResume(e -> Mono.empty()) .block(); verifyCalledUrl("/products"); @@ -64,6 +62,7 @@ class WebClientRequestsWithParametersUnitTest { .build(2)) .retrieve() .bodyToMono(String.class) + .onErrorResume(e -> Mono.empty()) .block(); verifyCalledUrl("/products/2"); @@ -77,6 +76,7 @@ class WebClientRequestsWithParametersUnitTest { .build(2, 13)) .retrieve() .bodyToMono(String.class) + .onErrorResume(e -> Mono.empty()) .block(); verifyCalledUrl("/products/2/attributes/13"); @@ -93,6 +93,7 @@ class WebClientRequestsWithParametersUnitTest { .build()) .retrieve() .bodyToMono(String.class) + .onErrorResume(e -> Mono.empty()) .block(); verifyCalledUrl("/products/?name=AndroidPhone&color=black&deliveryDate=13/04/2019"); @@ -109,6 +110,7 @@ class WebClientRequestsWithParametersUnitTest { .build("AndroidPhone", "black", "13/04/2019")) .retrieve() .bodyToMono(String.class) + .onErrorResume(e -> Mono.empty()) .block(); verifyCalledUrl("/products/?name=AndroidPhone&color=black&deliveryDate=13%2F04%2F2019"); @@ -123,6 +125,7 @@ class WebClientRequestsWithParametersUnitTest { .build()) .retrieve() .bodyToMono(String.class) + .onErrorResume(e -> Mono.empty()) .block(); verifyCalledUrl("/products/?tag%5B%5D=Snapdragon&tag%5B%5D=NFC"); @@ -137,6 +140,7 @@ class WebClientRequestsWithParametersUnitTest { .build()) .retrieve() .bodyToMono(String.class) + .onErrorResume(e -> Mono.empty()) .block(); verifyCalledUrl("/products/?category=Phones&category=Tablets"); @@ -151,6 +155,7 @@ class WebClientRequestsWithParametersUnitTest { .build()) .retrieve() .bodyToMono(String.class) + .onErrorResume(e -> Mono.empty()) .block(); verifyCalledUrl("/products/?category=Phones,Tablets"); @@ -176,6 +181,7 @@ class WebClientRequestsWithParametersUnitTest { .build()) .retrieve() .bodyToMono(String.class) + .onErrorResume(e -> Mono.empty()) .block(); verifyCalledUrl("/products/?name=AndroidPhone&color=black&deliveryDate=13/04/2019");