mirror of
https://github.com/oauth2-proxy/oauth2-proxy.git
synced 2025-02-09 13:46:51 +02:00
61 lines
1.8 KiB
Go
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)
|
||
|
})
|
||
|
}
|