content: package redis.clients.jedis.tests.utils;
  
  import static org.junit.Assert.assertEquals;
  import static org.junit.Assert.assertFalse;
  import static org.junit.Assert.assertNull;
  
  import java.net.URI;
  import java.net.URISyntaxException;
  
  import org.junit.Test;
  
  import redis.clients.util.JedisURIHelper;
  
  public class JedisURIHelperTest {
  
    @Test
    public void shouldGetPasswordFromURIWithCredentials() throws URISyntaxException {
      URI uri = new URI("redis://user:password@host:9000/0");
      assertEquals("password", JedisURIHelper.getPassword(uri));
    }
  
    @Test
    public void shouldReturnNullIfURIDoesNotHaveCredentials() throws URISyntaxException {
      URI uri = new URI("redis://host:9000/0");
      assertNull(JedisURIHelper.getPassword(uri));
    }
  
    @Test
    public void shouldGetDbFromURIWithCredentials() throws URISyntaxException {
      URI uri = new URI("redis://user:password@host:9000/3");
      assertEquals(3, JedisURIHelper.getDBIndex(uri));
    }
  
    @Test
    public void shouldGetDbFromURIWithoutCredentials() throws URISyntaxException {
      URI uri = new URI("redis://host:9000/4");
      assertEquals(4, JedisURIHelper.getDBIndex(uri));
    }
  
    @Test
    public void shouldGetDefaultDbFromURIIfNoDbWasSpecified() throws URISyntaxException {
      URI uri = new URI("redis://host:9000");
      assertEquals(0, JedisURIHelper.getDBIndex(uri));
    }
  
    @Test
    public void shouldValidateInvalidURIs() throws URISyntaxException {
      assertFalse(JedisURIHelper.isValid(new URI("host:9000")));
      assertFalse(JedisURIHelper.isValid(new URI("user:password@host:9000/0")));
      assertFalse(JedisURIHelper.isValid(new URI("host:9000/0")));
      assertFalse(JedisURIHelper.isValid(new URI("redis://host/0")));
    }
  
  }
  