Add SessionExpiredEvent and SessionDeletedEvent
Fixes gh-258
This commit is contained in:
@@ -31,6 +31,7 @@ import org.springframework.context.ApplicationEvent;
|
||||
import org.springframework.context.ApplicationEventPublisher;
|
||||
import org.springframework.data.redis.connection.Message;
|
||||
import org.springframework.session.events.SessionDestroyedEvent;
|
||||
import org.springframework.session.events.SessionExpiredEvent;
|
||||
|
||||
|
||||
/**
|
||||
@@ -47,7 +48,10 @@ public class SessionMessageListenerTests {
|
||||
Message message;
|
||||
|
||||
@Captor
|
||||
ArgumentCaptor<SessionDestroyedEvent> event;
|
||||
ArgumentCaptor<SessionDestroyedEvent> deletedEvent;
|
||||
|
||||
@Captor
|
||||
ArgumentCaptor<SessionExpiredEvent> expiredEvent;
|
||||
|
||||
byte[] pattern;
|
||||
|
||||
@@ -76,18 +80,28 @@ public class SessionMessageListenerTests {
|
||||
|
||||
listener.onMessage(message, pattern);
|
||||
|
||||
verify(eventPublisher).publishEvent(event.capture());
|
||||
assertThat(event.getValue().getSessionId()).isEqualTo("123");
|
||||
verify(eventPublisher).publishEvent(deletedEvent.capture());
|
||||
assertThat(deletedEvent.getValue().getSessionId()).isEqualTo("123");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onMessageSource() throws Exception {
|
||||
public void onMessageDelSource() throws Exception {
|
||||
mockMessage("__keyevent@0__:del","spring:session:sessions:123");
|
||||
|
||||
listener.onMessage(message, pattern);
|
||||
|
||||
verify(eventPublisher).publishEvent(event.capture());
|
||||
assertThat(event.getValue().getSource()).isEqualTo(listener);
|
||||
verify(eventPublisher).publishEvent(deletedEvent.capture());
|
||||
assertThat(deletedEvent.getValue().getSource()).isEqualTo(listener);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onMessageExpiredSource() throws Exception {
|
||||
mockMessage("__keyevent@0__:expired","spring:session:sessions:123");
|
||||
|
||||
listener.onMessage(message, pattern);
|
||||
|
||||
verify(eventPublisher).publishEvent(expiredEvent.capture());
|
||||
assertThat(expiredEvent.getValue().getSource()).isEqualTo(listener);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -96,8 +110,8 @@ public class SessionMessageListenerTests {
|
||||
|
||||
listener.onMessage(message, pattern);
|
||||
|
||||
verify(eventPublisher).publishEvent(event.capture());
|
||||
assertThat(event.getValue().getSessionId()).isEqualTo("543");
|
||||
verify(eventPublisher).publishEvent(expiredEvent.capture());
|
||||
assertThat(expiredEvent.getValue().getSessionId()).isEqualTo("543");
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -33,7 +33,8 @@ import org.mockito.runners.MockitoJUnitRunner;
|
||||
import org.springframework.messaging.Message;
|
||||
import org.springframework.messaging.MessageHeaders;
|
||||
import org.springframework.messaging.simp.SimpMessageHeaderAccessor;
|
||||
import org.springframework.session.events.SessionDestroyedEvent;
|
||||
import org.springframework.session.events.SessionDeletedEvent;
|
||||
import org.springframework.session.events.SessionExpiredEvent;
|
||||
import org.springframework.session.web.socket.events.SessionConnectEvent;
|
||||
import org.springframework.session.web.socket.server.SessionRepositoryMessageInterceptor;
|
||||
import org.springframework.test.util.ReflectionTestUtils;
|
||||
@@ -58,7 +59,9 @@ public class WebSocketRegistryListenerTests {
|
||||
|
||||
SessionDisconnectEvent disconnect;
|
||||
|
||||
SessionDestroyedEvent destroyed;
|
||||
SessionDeletedEvent deleted;
|
||||
|
||||
SessionExpiredEvent expired;
|
||||
|
||||
Map<String, Object> attributes;
|
||||
|
||||
@@ -89,24 +92,35 @@ public class WebSocketRegistryListenerTests {
|
||||
connect = new SessionConnectEvent(listener,wsSession);
|
||||
connect2 = new SessionConnectEvent(listener,wsSession2);
|
||||
disconnect = new SessionDisconnectEvent(listener, message, wsSession.getId(), CloseStatus.NORMAL);
|
||||
destroyed = new SessionDestroyedEvent(listener, sessionId);
|
||||
deleted = new SessionDeletedEvent(listener, sessionId);
|
||||
expired = new SessionExpiredEvent(listener, sessionId);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onApplicationEventConnectSessionDestroyed() throws Exception {
|
||||
public void onApplicationEventConnectSessionDeleted() throws Exception {
|
||||
listener.onApplicationEvent(connect);
|
||||
|
||||
listener.onApplicationEvent(destroyed);
|
||||
listener.onApplicationEvent(deleted);
|
||||
|
||||
verify(wsSession).close(WebSocketRegistryListener.SESSION_EXPIRED_STATUS);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onApplicationEventConnectSessionExpired() throws Exception {
|
||||
listener.onApplicationEvent(connect);
|
||||
|
||||
listener.onApplicationEvent(expired);
|
||||
|
||||
verify(wsSession).close(WebSocketRegistryListener.SESSION_EXPIRED_STATUS);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void onApplicationEventConnectSessionDestroyedNullPrincipal() throws Exception {
|
||||
public void onApplicationEventConnectSessionDeletedNullPrincipal() throws Exception {
|
||||
when(wsSession.getPrincipal()).thenReturn(null);
|
||||
listener.onApplicationEvent(connect);
|
||||
|
||||
listener.onApplicationEvent(destroyed);
|
||||
listener.onApplicationEvent(deleted);
|
||||
|
||||
verify(wsSession,times(0)).close(any(CloseStatus.class));
|
||||
}
|
||||
@@ -116,7 +130,7 @@ public class WebSocketRegistryListenerTests {
|
||||
listener.onApplicationEvent(connect);
|
||||
listener.onApplicationEvent(disconnect);
|
||||
|
||||
listener.onApplicationEvent(destroyed);
|
||||
listener.onApplicationEvent(deleted);
|
||||
|
||||
verify(wsSession,times(0)).close(any(CloseStatus.class));
|
||||
}
|
||||
@@ -150,7 +164,7 @@ public class WebSocketRegistryListenerTests {
|
||||
listener.onApplicationEvent(connect2);
|
||||
listener.onApplicationEvent(disconnect);
|
||||
|
||||
listener.onApplicationEvent(destroyed);
|
||||
listener.onApplicationEvent(deleted);
|
||||
|
||||
verify(wsSession2).close(WebSocketRegistryListener.SESSION_EXPIRED_STATUS);
|
||||
verify(wsSession,times(0)).close(any(CloseStatus.class));
|
||||
|
||||
Reference in New Issue
Block a user