1
0
mirror of https://github.com/oauth2-proxy/oauth2-proxy.git synced 2025-02-07 13:41:38 +02:00
oauth2-proxy/pkg/sessions/redis/redis_store_test.go
Amnay 6a88da7f7a
Parse Redis cluster and sentinel urls (#573)
* Parse Redis cluster and sentinel urls

* Add changelog entry for #573

* Add unit tests for redis session store

* Use %v for error fmt

Co-authored-by: Amnay Mokhtari <amnay.mokhtari@adevinta.com>
Co-authored-by: Joel Speed <Joel.speed@hotmail.co.uk>
2020-05-27 18:40:50 +01:00

61 lines
1.8 KiB
Go

package redis
import (
"net/http"
"net/http/httptest"
"net/url"
"testing"
"github.com/Bose/minisentinel"
"github.com/alicebob/miniredis/v2"
"github.com/oauth2-proxy/oauth2-proxy/pkg/apis/options"
"github.com/oauth2-proxy/oauth2-proxy/pkg/apis/sessions"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestRedisStore(t *testing.T) {
t.Run("save session on redis standalone", func(t *testing.T) {
redisServer, err := miniredis.Run()
require.NoError(t, err)
defer redisServer.Close()
opts := options.NewOptions()
redisURL := url.URL{
Scheme: "redis",
Host: redisServer.Addr(),
}
opts.Session.Redis.ConnectionURL = redisURL.String()
redisStore, err := NewRedisSessionStore(&opts.Session, &opts.Cookie)
require.NoError(t, err)
err = redisStore.Save(
httptest.NewRecorder(),
httptest.NewRequest(http.MethodGet, "/", nil),
&sessions.SessionState{})
assert.NoError(t, err)
})
t.Run("save session on redis sentinel", func(t *testing.T) {
redisServer, err := miniredis.Run()
require.NoError(t, err)
defer redisServer.Close()
sentinel := minisentinel.NewSentinel(redisServer)
err = sentinel.Start()
require.NoError(t, err)
defer sentinel.Close()
opts := options.NewOptions()
sentinelURL := url.URL{
Scheme: "redis",
Host: sentinel.Addr(),
}
opts.Session.Redis.SentinelConnectionURLs = []string{sentinelURL.String()}
opts.Session.Redis.UseSentinel = true
opts.Session.Redis.SentinelMasterName = sentinel.MasterInfo().Name
redisStore, err := NewRedisSessionStore(&opts.Session, &opts.Cookie)
require.NoError(t, err)
err = redisStore.Save(
httptest.NewRecorder(),
httptest.NewRequest(http.MethodGet, "/", nil),
&sessions.SessionState{})
assert.NoError(t, err)
})
}