package org.springframework.cloud.heroku; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.when; import java.util.HashMap; import java.util.List; import java.util.Map; import org.junit.Test; import org.springframework.cloud.service.ServiceInfo; import org.springframework.cloud.service.common.RedisServiceInfo; /** * @author Ramnivas Laddad */ public class HerokuConnectorRedisServiceTest extends AbstractHerokuConnectorTest { @Test public void redisServiceCreation() { for (String redisEnv : new String[]{"REDISTOGO_URL", "REDISCLOUD_URL", "OPENREDIS_URL", "REDISGREEN_URL", "REDIS_URL"}) { Map<String, String> env = new HashMap<String, String>(); String redisUrl = getRedisServiceUrl(); env.put(redisEnv, redisUrl); when(mockEnvironment.getEnv()).thenReturn(env); List<ServiceInfo> serviceInfos = testCloudConnector.getServiceInfos(); ServiceInfo serviceInfo = getServiceInfo(serviceInfos, redisEnv.substring(0, redisEnv.length() - 4)); assertNotNull(serviceInfo); assertTrue(serviceInfo instanceof RedisServiceInfo); assertRedisServiceInfo((RedisServiceInfo) serviceInfo); } } private String getRedisServiceUrl() { String template = "redis://$username:$password@$hostname:$port"; return template.replace("$username", username). replace("$password", password). replace("$hostname", hostname). replace("$port", Integer.toString(port)); } protected void assertRedisServiceInfo(RedisServiceInfo serviceInfo) { assertEquals(hostname, serviceInfo.getHost()); assertEquals(port, serviceInfo.getPort()); assertEquals(username, serviceInfo.getUserName()); assertEquals(password, serviceInfo.getPassword()); } }