2024-07-18 22:41:02 +02:00
|
|
|
package redis
|
2022-12-23 11:08:12 +02:00
|
|
|
|
|
|
|
import (
|
2024-07-18 22:41:02 +02:00
|
|
|
"bytes"
|
2022-12-23 11:08:12 +02:00
|
|
|
"context"
|
2024-07-18 22:41:02 +02:00
|
|
|
"crypto/tls"
|
|
|
|
"encoding/pem"
|
2022-12-23 11:08:12 +02:00
|
|
|
"log"
|
|
|
|
"os"
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
"github.com/oauth2-proxy/oauth2-proxy/v7/pkg/logger"
|
2024-07-18 22:41:02 +02:00
|
|
|
"github.com/oauth2-proxy/oauth2-proxy/v7/pkg/util"
|
|
|
|
. "github.com/onsi/ginkgo/v2"
|
2022-12-23 11:08:12 +02:00
|
|
|
. "github.com/onsi/gomega"
|
2023-03-05 17:12:55 +00:00
|
|
|
"github.com/redis/go-redis/v9"
|
2022-12-23 11:08:12 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
// wrappedRedisLogger wraps a logger so that we can coerce the logger to
|
|
|
|
// fit the expected signature for go-redis logging
|
|
|
|
type wrappedRedisLogger struct {
|
|
|
|
*log.Logger
|
|
|
|
}
|
|
|
|
|
|
|
|
func (l *wrappedRedisLogger) Printf(_ context.Context, format string, v ...interface{}) {
|
|
|
|
l.Logger.Printf(format, v...)
|
|
|
|
}
|
|
|
|
|
2024-07-18 22:41:02 +02:00
|
|
|
var (
|
|
|
|
cert tls.Certificate
|
|
|
|
caPath string
|
|
|
|
)
|
|
|
|
|
2022-12-23 11:08:12 +02:00
|
|
|
func TestRedis(t *testing.T) {
|
|
|
|
logger.SetOutput(GinkgoWriter)
|
|
|
|
logger.SetErrOutput(GinkgoWriter)
|
|
|
|
|
|
|
|
redisLogger := &wrappedRedisLogger{Logger: log.New(os.Stderr, "redis: ", log.LstdFlags|log.Lshortfile)}
|
|
|
|
redisLogger.SetOutput(GinkgoWriter)
|
|
|
|
redis.SetLogger(redisLogger)
|
|
|
|
|
|
|
|
RegisterFailHandler(Fail)
|
|
|
|
RunSpecs(t, "Redis")
|
|
|
|
}
|
2024-07-18 22:41:02 +02:00
|
|
|
|
|
|
|
var _ = BeforeSuite(func() {
|
|
|
|
var err error
|
|
|
|
certBytes, keyBytes, err := util.GenerateCert("127.0.0.1")
|
|
|
|
Expect(err).ToNot(HaveOccurred())
|
|
|
|
certOut := new(bytes.Buffer)
|
|
|
|
Expect(pem.Encode(certOut, &pem.Block{Type: "CERTIFICATE", Bytes: certBytes})).To(Succeed())
|
|
|
|
certData := certOut.Bytes()
|
|
|
|
keyOut := new(bytes.Buffer)
|
|
|
|
Expect(pem.Encode(keyOut, &pem.Block{Type: "PRIVATE KEY", Bytes: keyBytes})).To(Succeed())
|
|
|
|
cert, err = tls.X509KeyPair(certData, keyOut.Bytes())
|
|
|
|
Expect(err).ToNot(HaveOccurred())
|
|
|
|
|
|
|
|
certFile, err := os.CreateTemp("", "cert.*.pem")
|
|
|
|
Expect(err).ToNot(HaveOccurred())
|
|
|
|
caPath = certFile.Name()
|
|
|
|
_, err = certFile.Write(certData)
|
|
|
|
defer certFile.Close()
|
|
|
|
Expect(err).ToNot(HaveOccurred())
|
|
|
|
})
|
|
|
|
|
|
|
|
var _ = AfterSuite(func() {
|
|
|
|
Expect(os.Remove(caPath)).ToNot(HaveOccurred())
|
|
|
|
})
|