git.iko.soy/typeable/oauth2-proxy
on master help sign in
fix: add tests for configure options and URL overrides when empty

Signed-off-by: Richard Hagen <richard.hagen@gmail.com>

commit7747a884049fca383f7c6ec1e804a4ad39f59c65 authorRichard Hagen <richard.hagen@gmail.com> dateThu 19 Feb 2026, 10:14 (8 months ago) parent1785327
1 file changed+50
pkg/sessions/redis/redis_store_test.go+50
pkg/sessions/redis/redis_store_test.go+50
@@ -1,6 +1,7 @@
11package redis
22
33import (
4+ "fmt"
45 "time"
56
67 "github.com/Bose/minisentinel"
@@ -246,6 +247,55 @@ var _ = Describe("Redis SessionStore Tests", func() {
246247 })
247248
248249 Describe("Redis URL Parsing", func() {
250+ It("should prefer configured username password and timeout over URL parameters", func() {
251+ configuredUsername := "configured-user"
252+ configuredPassword := "configured-password"
253+ configuredIdleTimeout := 90
254+
255+ urlUsername := "url-user"
256+ urlPassword := "url-password"
257+ urlIdleTimeout := 30
258+
259+ redisClient, err := buildStandaloneClient(options.RedisStoreOptions{
260+ ConnectionURL: fmt.Sprintf("redis://%s:%s@localhost:6379?conn_max_idle_time=%d", urlUsername, urlPassword, urlIdleTimeout),
261+ Username: configuredUsername,
262+ Password: configuredPassword,
263+ IdleTimeout: configuredIdleTimeout,
264+ })
265+ Expect(err).ToNot(HaveOccurred())
266+
267+ rc, ok := redisClient.(*client)
268+ Expect(ok).To(BeTrue())
269+ Expect(rc.Close()).To(Succeed())
270+
271+ redisOptions := rc.Options()
272+ Expect(redisOptions.Username).To(Equal(configuredUsername))
273+ Expect(redisOptions.Password).To(Equal(configuredPassword))
274+ Expect(redisOptions.ConnMaxIdleTime).To(Equal(time.Duration(configuredIdleTimeout) * time.Second))
275+ })
276+ It("should prefer URL username password and timeout when configured values are empty", func() {
277+ urlUsername := "url-user"
278+ urlPassword := "url-password"
279+ urlIdleTimeout := 30
280+
281+ redisClient, err := buildStandaloneClient(options.RedisStoreOptions{
282+ ConnectionURL: fmt.Sprintf("redis://%s:%s@localhost:6379?conn_max_idle_time=%d", urlUsername, urlPassword, urlIdleTimeout),
283+ Username: "",
284+ Password: "",
285+ IdleTimeout: 0,
286+ })
287+ Expect(err).ToNot(HaveOccurred())
288+
289+ rc, ok := redisClient.(*client)
290+ Expect(ok).To(BeTrue())
291+ Expect(rc.Close()).To(Succeed())
292+
293+ redisOptions := rc.Options()
294+ Expect(redisOptions.Username).To(Equal(urlUsername))
295+ Expect(redisOptions.Password).To(Equal(urlPassword))
296+ Expect(redisOptions.ConnMaxIdleTime).To(Equal(time.Duration(urlIdleTimeout) * time.Second))
297+ })
298+
249299 It("should parse valid redis URL", func() {
250300 addrs, opts, err := parseRedisURLs([]string{"redis://localhost:6379"})
251301 Expect(err).ToNot(HaveOccurred())