diff --git a/pom.xml b/pom.xml index e6d868411f..86b3181b77 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.springframework.data spring-data-redis - 1.8.0.BUILD-SNAPSHOT + 1.8.0.DATAREDIS-537-SNAPSHOT Spring Data Redis diff --git a/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionFactory.java b/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionFactory.java index 1e8e305816..5d606d8a14 100644 --- a/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionFactory.java +++ b/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionFactory.java @@ -565,6 +565,10 @@ private AbstractRedisClient createRedisClient() { RedisURI redisURI = new RedisURI(node.getHost(), node.getPort(), timeout, TimeUnit.MILLISECONDS); + redisURI.setSsl(useSsl); + redisURI.setVerifyPeer(verifyPeer); + redisURI.setStartTls(startTls); + if (StringUtils.hasText(password)) { redisURI.setPassword(password); } diff --git a/src/test/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionFactoryUnitTests.java b/src/test/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionFactoryUnitTests.java index da2e5e4e42..f89c28a305 100644 --- a/src/test/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionFactoryUnitTests.java +++ b/src/test/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionFactoryUnitTests.java @@ -28,6 +28,7 @@ import org.junit.Before; import org.junit.Test; import org.springframework.data.redis.ConnectionFactoryTracker; +import org.springframework.data.redis.connection.ClusterTestVariables; import org.springframework.data.redis.connection.RedisClusterConfiguration; import org.springframework.data.redis.connection.RedisSentinelConfiguration; @@ -243,4 +244,69 @@ public void startTLSOptionShouldBeSetCorrectlyOnClient() { assertThat(connectionFactory.isStartTls(), is(true)); } + /** + * @see DATAREDIS-537 + */ + @Test + public void sslShouldBeSetCorrectlyOnClusterClient() { + + LettuceConnectionFactory connectionFactory = new LettuceConnectionFactory(new RedisClusterConfiguration().clusterNode(ClusterTestVariables.CLUSTER_NODE_1)); + connectionFactory.setClientResources(LettuceTestClientResources.getSharedClientResources()); + connectionFactory.setUseSsl(true); + connectionFactory.afterPropertiesSet(); + ConnectionFactoryTracker.add(connectionFactory); + + AbstractRedisClient client = (AbstractRedisClient) getField(connectionFactory, "client"); + assertThat(client, instanceOf(RedisClusterClient.class)); + + Iterable initialUris = (Iterable) getField(client, "initialUris"); + + for (RedisURI uri : initialUris) { + assertThat(uri.isSsl(), is(true)); + } + } + + /** + * @see DATAREDIS-537 + */ + @Test + public void startTLSOptionShouldBeSetCorrectlyOnClusterClient() { + + LettuceConnectionFactory connectionFactory = new LettuceConnectionFactory(new RedisClusterConfiguration().clusterNode(ClusterTestVariables.CLUSTER_NODE_1)); + connectionFactory.setClientResources(LettuceTestClientResources.getSharedClientResources()); + connectionFactory.setStartTls(true); + connectionFactory.afterPropertiesSet(); + ConnectionFactoryTracker.add(connectionFactory); + + AbstractRedisClient client = (AbstractRedisClient) getField(connectionFactory, "client"); + assertThat(client, instanceOf(RedisClusterClient.class)); + + Iterable initialUris = (Iterable) getField(client, "initialUris"); + + for (RedisURI uri : initialUris) { + assertThat(uri.isStartTls(), is(true)); + } + } + + /** + * @see DATAREDIS-537 + */ + @Test + public void verifyPeerTLSOptionShouldBeSetCorrectlyOnClusterClient() { + + LettuceConnectionFactory connectionFactory = new LettuceConnectionFactory(new RedisClusterConfiguration().clusterNode(ClusterTestVariables.CLUSTER_NODE_1)); + connectionFactory.setClientResources(LettuceTestClientResources.getSharedClientResources()); + connectionFactory.setVerifyPeer(true); + connectionFactory.afterPropertiesSet(); + ConnectionFactoryTracker.add(connectionFactory); + + AbstractRedisClient client = (AbstractRedisClient) getField(connectionFactory, "client"); + assertThat(client, instanceOf(RedisClusterClient.class)); + + Iterable initialUris = (Iterable) getField(client, "initialUris"); + + for (RedisURI uri : initialUris) { + assertThat(uri.isVerifyPeer(), is(true)); + } + } }