HttpSessionListener sessionCreated id contains invalid ':'

Fixes gh-305
This commit is contained in:
Rob Winch
2015-11-16 16:12:35 -06:00
parent f1d0350356
commit 8bd29c1ab2
2 changed files with 32 additions and 3 deletions

View File

@@ -16,8 +16,12 @@
package org.springframework.session.data.redis;
import static org.fest.assertions.Assertions.assertThat;
import static org.mockito.Matchers.*;
import static org.mockito.Mockito.*;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.atLeastOnce;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.springframework.session.data.redis.RedisOperationsSessionRepository.CREATION_TIME_ATTR;
import static org.springframework.session.data.redis.RedisOperationsSessionRepository.LAST_ACCESSED_ATTR;
import static org.springframework.session.data.redis.RedisOperationsSessionRepository.MAX_INACTIVE_ATTR;
@@ -38,15 +42,19 @@ import org.mockito.ArgumentCaptor;
import org.mockito.Captor;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.data.redis.connection.DefaultMessage;
import org.springframework.data.redis.connection.RedisConnection;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.BoundHashOperations;
import org.springframework.data.redis.core.BoundSetOperations;
import org.springframework.data.redis.core.BoundValueOperations;
import org.springframework.data.redis.core.RedisOperations;
import org.springframework.data.redis.serializer.JdkSerializationRedisSerializer;
import org.springframework.session.ExpiringSession;
import org.springframework.session.MapSession;
import org.springframework.session.data.redis.RedisOperationsSessionRepository.RedisSession;
import org.springframework.session.events.AbstractSessionEvent;
@RunWith(MockitoJUnitRunner.class)
@@ -64,6 +72,10 @@ public class RedisOperationsSessionRepositoryTests {
BoundHashOperations<Object, Object, Object> boundHashOperations;
@Mock
BoundSetOperations<Object, Object> boundSetOperations;
@Mock
ApplicationEventPublisher publisher;
@Captor
ArgumentCaptor<AbstractSessionEvent> event;
@Captor
ArgumentCaptor<Map<String,Object>> delta;
@@ -71,6 +83,7 @@ public class RedisOperationsSessionRepositoryTests {
private RedisOperationsSessionRepository redisRepository;
@Before
public void setup() {
this.redisRepository = new RedisOperationsSessionRepository(redisOperations);
@@ -380,6 +393,22 @@ public class RedisOperationsSessionRepositoryTests {
}
}
@Test
public void onMessageCreated() throws Exception {
MapSession session = cached;
byte[] pattern = "".getBytes("UTF-8");
String channel = "spring:session:event:created:" + session.getId();
byte[] body = new JdkSerializationRedisSerializer().serialize(new HashMap());
DefaultMessage message = new DefaultMessage(channel.getBytes("UTF-8"), body);
redisRepository.setApplicationEventPublisher(publisher);
redisRepository.onMessage(message, pattern);
verify(publisher).publishEvent(event.capture());
assertThat(event.getValue().getSessionId()).isEqualTo(session.getId());
}
private String getKey(String id) {
return "spring:session:sessions:" + id;
}