text: 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());
  	}
  
  }
  