fix: add tests for configure options and URL overrides when empty

Signed-off-by: Richard Hagen <richard.hagen@gmail.com>
This commit is contained in:
Richard Hagen 2026-02-19 10:14:05 +01:00
parent 178532741f
commit 7747a88404
1 changed files with 50 additions and 0 deletions

View File

@ -1,6 +1,7 @@
package redis
import (
"fmt"
"time"
"github.com/Bose/minisentinel"
@ -246,6 +247,55 @@ var _ = Describe("Redis SessionStore Tests", func() {
})
Describe("Redis URL Parsing", func() {
It("should prefer configured username password and timeout over URL parameters", func() {
configuredUsername := "configured-user"
configuredPassword := "configured-password"
configuredIdleTimeout := 90
urlUsername := "url-user"
urlPassword := "url-password"
urlIdleTimeout := 30
redisClient, err := buildStandaloneClient(options.RedisStoreOptions{
ConnectionURL: fmt.Sprintf("redis://%s:%s@localhost:6379?conn_max_idle_time=%d", urlUsername, urlPassword, urlIdleTimeout),
Username: configuredUsername,
Password: configuredPassword,
IdleTimeout: configuredIdleTimeout,
})
Expect(err).ToNot(HaveOccurred())
rc, ok := redisClient.(*client)
Expect(ok).To(BeTrue())
Expect(rc.Close()).To(Succeed())
redisOptions := rc.Options()
Expect(redisOptions.Username).To(Equal(configuredUsername))
Expect(redisOptions.Password).To(Equal(configuredPassword))
Expect(redisOptions.ConnMaxIdleTime).To(Equal(time.Duration(configuredIdleTimeout) * time.Second))
})
It("should prefer URL username password and timeout when configured values are empty", func() {
urlUsername := "url-user"
urlPassword := "url-password"
urlIdleTimeout := 30
redisClient, err := buildStandaloneClient(options.RedisStoreOptions{
ConnectionURL: fmt.Sprintf("redis://%s:%s@localhost:6379?conn_max_idle_time=%d", urlUsername, urlPassword, urlIdleTimeout),
Username: "",
Password: "",
IdleTimeout: 0,
})
Expect(err).ToNot(HaveOccurred())
rc, ok := redisClient.(*client)
Expect(ok).To(BeTrue())
Expect(rc.Close()).To(Succeed())
redisOptions := rc.Options()
Expect(redisOptions.Username).To(Equal(urlUsername))
Expect(redisOptions.Password).To(Equal(urlPassword))
Expect(redisOptions.ConnMaxIdleTime).To(Equal(time.Duration(urlIdleTimeout) * time.Second))
})
It("should parse valid redis URL", func() {
addrs, opts, err := parseRedisURLs([]string{"redis://localhost:6379"})
Expect(err).ToNot(HaveOccurred())