|
@@ -28,9 +28,8 @@ import org.junit.rules.ExpectedException;
|
|
import org.mockito.InOrder;
|
|
import org.mockito.InOrder;
|
|
|
|
|
|
import org.springframework.security.core.Authentication;
|
|
import org.springframework.security.core.Authentication;
|
|
-import org.springframework.test.util.ReflectionTestUtils;
|
|
|
|
|
|
|
|
-import static org.assertj.core.api.Assertions.assertThat;
|
|
|
|
|
|
+import static org.assertj.core.api.Assertions.fail;
|
|
import static org.mockito.Matchers.any;
|
|
import static org.mockito.Matchers.any;
|
|
import static org.mockito.Mockito.doThrow;
|
|
import static org.mockito.Mockito.doThrow;
|
|
import static org.mockito.Mockito.inOrder;
|
|
import static org.mockito.Mockito.inOrder;
|
|
@@ -41,6 +40,8 @@ import static org.mockito.Mockito.verify;
|
|
|
|
|
|
/**
|
|
/**
|
|
* @author Eddú Meléndez
|
|
* @author Eddú Meléndez
|
|
|
|
+ * @author Rob Winch
|
|
|
|
+ * @since 4.2.0
|
|
*/
|
|
*/
|
|
public class CompositeLogoutHandlerTests {
|
|
public class CompositeLogoutHandlerTests {
|
|
|
|
|
|
@@ -55,24 +56,16 @@ public class CompositeLogoutHandlerTests {
|
|
}
|
|
}
|
|
|
|
|
|
@Test
|
|
@Test
|
|
- public void buildCompositeLogoutHandlerWithArray() {
|
|
|
|
- LogoutHandler[] logoutHandlers = {new SecurityContextLogoutHandler()};
|
|
|
|
- LogoutHandler handler = new CompositeLogoutHandler(logoutHandlers);
|
|
|
|
- assertThat(ReflectionTestUtils.getField(handler, "logoutHandlers")).isNotNull();
|
|
|
|
- assertThat(((List<LogoutHandler>)ReflectionTestUtils.getField(handler,
|
|
|
|
- "logoutHandlers")).size())
|
|
|
|
- .isEqualTo(1);
|
|
|
|
- }
|
|
|
|
|
|
+ public void callLogoutHandlersSuccessfullyWithArray() {
|
|
|
|
+ LogoutHandler securityContextLogoutHandler = mock(SecurityContextLogoutHandler.class);
|
|
|
|
+ LogoutHandler csrfLogoutHandler = mock(SecurityContextLogoutHandler.class);
|
|
|
|
|
|
- @Test
|
|
|
|
- public void buildCompositeLogoutHandlerWithList() {
|
|
|
|
- LogoutHandler securityContextLogoutHandler = new SecurityContextLogoutHandler();
|
|
|
|
- List<LogoutHandler> logoutHandlers = Arrays.asList(securityContextLogoutHandler);
|
|
|
|
- LogoutHandler handler = new CompositeLogoutHandler(logoutHandlers);
|
|
|
|
- assertThat(ReflectionTestUtils.getField(handler, "logoutHandlers")).isNotNull();
|
|
|
|
- assertThat(((List<LogoutHandler>)ReflectionTestUtils.getField(handler,
|
|
|
|
- "logoutHandlers")).size())
|
|
|
|
- .isEqualTo(1);
|
|
|
|
|
|
+ LogoutHandler handler = new CompositeLogoutHandler(securityContextLogoutHandler, csrfLogoutHandler);
|
|
|
|
+
|
|
|
|
+ handler.logout(mock(HttpServletRequest.class), mock(HttpServletResponse.class), mock(Authentication.class));
|
|
|
|
+
|
|
|
|
+ verify(securityContextLogoutHandler, times(1)).logout(any(HttpServletRequest.class), any(HttpServletResponse.class), any(Authentication.class));
|
|
|
|
+ verify(csrfLogoutHandler, times(1)).logout(any(HttpServletRequest.class), any(HttpServletResponse.class), any(Authentication.class));
|
|
}
|
|
}
|
|
|
|
|
|
@Test
|
|
@Test
|
|
@@ -82,8 +75,6 @@ public class CompositeLogoutHandlerTests {
|
|
|
|
|
|
List<LogoutHandler> logoutHandlers = Arrays.asList(securityContextLogoutHandler, csrfLogoutHandler);
|
|
List<LogoutHandler> logoutHandlers = Arrays.asList(securityContextLogoutHandler, csrfLogoutHandler);
|
|
LogoutHandler handler = new CompositeLogoutHandler(logoutHandlers);
|
|
LogoutHandler handler = new CompositeLogoutHandler(logoutHandlers);
|
|
- assertThat(ReflectionTestUtils.getField(handler, "logoutHandlers")).isNotNull();
|
|
|
|
- assertThat(((List<LogoutHandler>)ReflectionTestUtils.getField(handler, "logoutHandlers")).size()).isEqualTo(2);
|
|
|
|
|
|
|
|
handler.logout(mock(HttpServletRequest.class), mock(HttpServletResponse.class), mock(Authentication.class));
|
|
handler.logout(mock(HttpServletRequest.class), mock(HttpServletResponse.class), mock(Authentication.class));
|
|
|
|
|
|
@@ -93,42 +84,24 @@ public class CompositeLogoutHandlerTests {
|
|
|
|
|
|
@Test
|
|
@Test
|
|
public void callLogoutHandlersThrowException() {
|
|
public void callLogoutHandlersThrowException() {
|
|
- LogoutHandler firstLogoutHandler = mock(FirstLogoutHandler.class);
|
|
|
|
- LogoutHandler secondLogoutHandler = mock(SecondLogoutHandler.class);
|
|
|
|
|
|
+ LogoutHandler firstLogoutHandler = mock(LogoutHandler.class);
|
|
|
|
+ LogoutHandler secondLogoutHandler = mock(LogoutHandler.class);
|
|
|
|
|
|
doThrow(new IllegalArgumentException()).when(firstLogoutHandler).logout(any(HttpServletRequest.class), any(HttpServletResponse.class), any(Authentication.class));
|
|
doThrow(new IllegalArgumentException()).when(firstLogoutHandler).logout(any(HttpServletRequest.class), any(HttpServletResponse.class), any(Authentication.class));
|
|
|
|
|
|
List<LogoutHandler> logoutHandlers = Arrays.asList(firstLogoutHandler, secondLogoutHandler);
|
|
List<LogoutHandler> logoutHandlers = Arrays.asList(firstLogoutHandler, secondLogoutHandler);
|
|
LogoutHandler handler = new CompositeLogoutHandler(logoutHandlers);
|
|
LogoutHandler handler = new CompositeLogoutHandler(logoutHandlers);
|
|
- assertThat(ReflectionTestUtils.getField(handler, "logoutHandlers")).isNotNull();
|
|
|
|
- assertThat(((List<LogoutHandler>)ReflectionTestUtils.getField(handler, "logoutHandlers")).size()).isEqualTo(2);
|
|
|
|
|
|
|
|
try {
|
|
try {
|
|
handler.logout(mock(HttpServletRequest.class), mock(HttpServletResponse.class), mock(Authentication.class));
|
|
handler.logout(mock(HttpServletRequest.class), mock(HttpServletResponse.class), mock(Authentication.class));
|
|
- } catch (IllegalArgumentException ex) {
|
|
|
|
- // Do nothing
|
|
|
|
- } finally {
|
|
|
|
- InOrder logoutHandlersInOrder = inOrder(firstLogoutHandler, secondLogoutHandler);
|
|
|
|
-
|
|
|
|
- logoutHandlersInOrder.verify(firstLogoutHandler, times(1)).logout(any(HttpServletRequest.class), any(HttpServletResponse.class), any(Authentication.class));
|
|
|
|
- logoutHandlersInOrder.verify(secondLogoutHandler, never()).logout(any(HttpServletRequest.class), any(HttpServletResponse.class), any(Authentication.class));
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- static class FirstLogoutHandler implements LogoutHandler {
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public void logout(HttpServletRequest request, HttpServletResponse response, Authentication authentication) {
|
|
|
|
-
|
|
|
|
|
|
+ fail("Expected Exception");
|
|
|
|
+ } catch (IllegalArgumentException success) {
|
|
}
|
|
}
|
|
- }
|
|
|
|
|
|
|
|
- static class SecondLogoutHandler implements LogoutHandler {
|
|
|
|
|
|
+ InOrder logoutHandlersInOrder = inOrder(firstLogoutHandler, secondLogoutHandler);
|
|
|
|
|
|
- @Override
|
|
|
|
- public void logout(HttpServletRequest request, HttpServletResponse response, Authentication authentication) {
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
|
|
+ logoutHandlersInOrder.verify(firstLogoutHandler, times(1)).logout(any(HttpServletRequest.class), any(HttpServletResponse.class), any(Authentication.class));
|
|
|
|
+ logoutHandlersInOrder.verify(secondLogoutHandler, never()).logout(any(HttpServletRequest.class), any(HttpServletResponse.class), any(Authentication.class));
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|