From cc1d3a7e9ef85e68835800dd5fdfdeacf66c0444 Mon Sep 17 00:00:00 2001 From: Rob Winch Date: Thu, 4 Feb 2016 14:12:24 -0600 Subject: [PATCH] Add test for Redis onMessage w/ custom serializer Issue gh-309 --- ...RedisOperationsSessionRepositoryTests.java | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/spring-session/src/test/java/org/springframework/session/data/redis/RedisOperationsSessionRepositoryTests.java b/spring-session/src/test/java/org/springframework/session/data/redis/RedisOperationsSessionRepositoryTests.java index eecbf57..d8edb35 100644 --- a/spring-session/src/test/java/org/springframework/session/data/redis/RedisOperationsSessionRepositoryTests.java +++ b/spring-session/src/test/java/org/springframework/session/data/redis/RedisOperationsSessionRepositoryTests.java @@ -51,6 +51,7 @@ 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.data.redis.serializer.RedisSerializer; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.Authentication; import org.springframework.security.core.authority.AuthorityUtils; @@ -83,6 +84,8 @@ public class RedisOperationsSessionRepositoryTests { BoundSetOperations boundSetOperations; @Mock ApplicationEventPublisher publisher; + @Mock + RedisSerializer defaultSerializer; @Captor ArgumentCaptor event; @Captor @@ -96,6 +99,7 @@ public class RedisOperationsSessionRepositoryTests { @Before public void setup() { this.redisRepository = new RedisOperationsSessionRepository(redisOperations); + this.redisRepository.setDefaultSerializer(defaultSerializer); cached = new MapSession(); cached.setId("session-id"); @@ -406,7 +410,9 @@ public class RedisOperationsSessionRepositoryTests { MapSession session = cached; byte[] pattern = "".getBytes("UTF-8"); String channel = "spring:session:event:created:" + session.getId(); - byte[] body = new JdkSerializationRedisSerializer().serialize(new HashMap()); + JdkSerializationRedisSerializer defaultSerailizer = new JdkSerializationRedisSerializer(); + redisRepository.setDefaultSerializer(defaultSerailizer); + byte[] body = defaultSerailizer.serialize(new HashMap()); DefaultMessage message = new DefaultMessage(channel.getBytes("UTF-8"), body); redisRepository.setApplicationEventPublisher(publisher); @@ -417,6 +423,24 @@ public class RedisOperationsSessionRepositoryTests { assertThat(event.getValue().getSessionId()).isEqualTo(session.getId()); } + // gh-309 + @Test + public void onMessageCreatedCustomSerializer() throws Exception { + MapSession session = cached; + byte[] pattern = "".getBytes("UTF-8"); + byte[] body = new byte[0]; + String channel = "spring:session:event:created:" + session.getId(); + when(defaultSerializer.deserialize(body)).thenReturn(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()); + verify(defaultSerializer).deserialize(body); + } + @Test public void resolvePrincipalIndex() { PrincipalNameResolver resolver = RedisOperationsSessionRepository.PRINCIPAL_NAME_RESOLVER;