mirror of
https://github.com/spring-projects/spring-security.git
synced 2025-05-31 09:12:14 +00:00
Add DelegatingServerLogoutHandler(List<ServerLogoutHandler> delegates)
Issue: gh-4839
This commit is contained in:
parent
8c3fdb3bcf
commit
6a12415d23
@ -16,6 +16,7 @@
|
||||
|
||||
package org.springframework.security.web.server.authentication.logout;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
@ -41,6 +42,11 @@ public class DelegatingServerLogoutHandler implements ServerLogoutHandler {
|
||||
this.delegates = Arrays.asList(delegates);
|
||||
}
|
||||
|
||||
public DelegatingServerLogoutHandler(List<ServerLogoutHandler> delegates) {
|
||||
Assert.notEmpty(delegates, "delegates cannot be null or empty");
|
||||
this.delegates = new ArrayList<>(delegates);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Mono<Void> logout(WebFilterExchange exchange, Authentication authentication) {
|
||||
Stream<Mono<Void>> results = this.delegates.stream().map(delegate -> delegate.logout(exchange, authentication));
|
||||
|
@ -30,6 +30,8 @@ import org.springframework.security.web.server.WebFilterExchange;
|
||||
|
||||
import reactor.test.publisher.PublisherProbe;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Eric Deandrea
|
||||
* @since 5.1
|
||||
@ -57,13 +59,21 @@ public class DelegatingServerLogoutHandlerTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void constructorWhenNullThenIllegalArgumentException() {
|
||||
public void constructorWhenNullVargsThenIllegalArgumentException() {
|
||||
assertThatThrownBy(() -> new DelegatingServerLogoutHandler((ServerLogoutHandler[]) null))
|
||||
.isExactlyInstanceOf(IllegalArgumentException.class)
|
||||
.hasMessage("delegates cannot be null or empty")
|
||||
.hasNoCause();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void constructorWhenNullListThenIllegalArgumentException() {
|
||||
assertThatThrownBy(() -> new DelegatingServerLogoutHandler((List<ServerLogoutHandler>) null))
|
||||
.isExactlyInstanceOf(IllegalArgumentException.class)
|
||||
.hasMessage("delegates cannot be null or empty")
|
||||
.hasNoCause();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void constructorWhenEmptyThenIllegalArgumentException() {
|
||||
assertThatThrownBy(() -> new DelegatingServerLogoutHandler(new ServerLogoutHandler[0]))
|
||||
|
Loading…
x
Reference in New Issue
Block a user