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)
 | |
| 	})
 | |
| }
 |