DefaultJedisClientConfigTest.java
package redis.clients.jedis;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.containsString;
import static org.hamcrest.Matchers.equalTo;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
import java.net.URI;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
class DefaultJedisClientConfigTest {
@Nested
class BuilderTests {
@Test
void builderFromUri_credentials() {
URI uri = URI.create("redis://testuser:testpass@localhost:6379/0");
DefaultJedisClientConfig config = DefaultJedisClientConfig.builder(uri).build();
assertThat(config.getUser(), equalTo("testuser"));
assertThat(config.getPassword(), equalTo("testpass"));
assertThat(config.getDatabase(), equalTo(0));
}
@Test
void builderFromUri_database() {
URI uri = URI.create("redis://localhost:6379/5");
DefaultJedisClientConfig config = DefaultJedisClientConfig.builder(uri).build();
assertThat(config.getDatabase(), equalTo(5));
}
@Test
void builderFromUri_ssl() {
URI uri = URI.create("rediss://localhost:6380");
DefaultJedisClientConfig config = DefaultJedisClientConfig.builder(uri).build();
assertTrue(config.isSsl());
}
@Test
void builderFromUri_nossl() {
URI uri = URI.create("redis://localhost:6380");
DefaultJedisClientConfig config = DefaultJedisClientConfig.builder(uri).build();
assertFalse(config.isSsl());
}
@Test
void builderFromUri_protocol() {
URI uri = URI.create("redis://localhost:6379?protocol=3");
DefaultJedisClientConfig config = DefaultJedisClientConfig.builder(uri).build();
assertThat(config.getRedisProtocol(), equalTo(RedisProtocol.RESP3));
}
@Test
void builderFromUri_combined() {
URI uri = URI.create("rediss://admin:secret123@localhost:6380/2?protocol=3");
DefaultJedisClientConfig config = DefaultJedisClientConfig.builder(uri).build();
assertThat(config.getUser(), equalTo("admin"));
assertThat(config.getPassword(), equalTo("secret123"));
assertThat(config.getDatabase(), equalTo(2));
assertThat(config.isSsl(), equalTo(true));
assertThat(config.getRedisProtocol(), equalTo(RedisProtocol.RESP3));
}
@Test
void builderFromUri_noCredentials() {
URI uri = URI.create("redis://localhost:6379");
DefaultJedisClientConfig config = DefaultJedisClientConfig.builder(uri).build();
// Should have default/null credentials
assertThat(config.getDatabase(), equalTo(Protocol.DEFAULT_DATABASE));
assertThat(config.isSsl(), equalTo(false));
}
@Test
void builderFromUri_passwordOnly() {
URI uri = URI.create("redis://:password@localhost:6379");
assertThat(DefaultJedisClientConfig.builder(uri).build().getPassword(), equalTo("password"));
assertNull(DefaultJedisClientConfig.builder(uri).build().getUser());
}
@Test
void builderFromUri_usernameOnlyThrowsException() {
URI uri = URI.create("redis://onlyuser@localhost:6379");
IllegalArgumentException ex = assertThrows(IllegalArgumentException.class,
() -> DefaultJedisClientConfig.builder(uri));
assertThat(ex.getMessage(), containsString("Password not provided in uri"));
}
@Test
void builderFromUri_InvalidUri() {
URI uri = URI.create("localhost:6379/0");
Exception ex = assertThrows(IllegalArgumentException.class,
() -> DefaultJedisClientConfig.builder(uri).build());
assertThat(ex.getMessage(), containsString("Invalid Redis URI"));
}
}
}