| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- package remotecache
- import (
- "crypto/tls"
- "fmt"
- "testing"
- "github.com/stretchr/testify/assert"
- redis "gopkg.in/redis.v5"
- )
- func Test_parseRedisConnStr(t *testing.T) {
- cases := map[string]struct {
- InputConnStr string
- OutputOptions *redis.Options
- ShouldErr bool
- }{
- "all redis options should parse": {
- "addr=127.0.0.1:6379,pool_size=100,db=1,password=grafanaRocks,ssl=false",
- &redis.Options{
- Addr: "127.0.0.1:6379",
- PoolSize: 100,
- DB: 1,
- Password: "grafanaRocks",
- Network: "tcp",
- TLSConfig: nil,
- },
- false,
- },
- "subset of redis options should parse": {
- "addr=127.0.0.1:6379,pool_size=100",
- &redis.Options{
- Addr: "127.0.0.1:6379",
- PoolSize: 100,
- Network: "tcp",
- },
- false,
- },
- "ssl set to true should result in default TLS configuration with tls set to addr's host": {
- "addr=grafana.com:6379,ssl=true",
- &redis.Options{
- Addr: "grafana.com:6379",
- Network: "tcp",
- TLSConfig: &tls.Config{ServerName: "grafana.com"},
- },
- false,
- },
- "ssl to insecure should result in TLS configuration with InsecureSkipVerify": {
- "addr=127.0.0.1:6379,ssl=insecure",
- &redis.Options{
- Addr: "127.0.0.1:6379",
- Network: "tcp",
- TLSConfig: &tls.Config{InsecureSkipVerify: true},
- },
- false,
- },
- "invalid SSL option should err": {
- "addr=127.0.0.1:6379,ssl=dragons",
- nil,
- true,
- },
- "invalid pool_size value should err": {
- "addr=127.0.0.1:6379,pool_size=seven",
- nil,
- true,
- },
- "invalid db value should err": {
- "addr=127.0.0.1:6379,db=seven",
- nil,
- true,
- },
- "trailing comma should err": {
- "addr=127.0.0.1:6379,pool_size=100,",
- nil,
- true,
- },
- "invalid key should err": {
- "addr=127.0.0.1:6379,puddle_size=100",
- nil,
- true,
- },
- "empty connection string should err": {
- "",
- nil,
- true,
- },
- }
- for reason, testCase := range cases {
- options, err := parseRedisConnStr(testCase.InputConnStr)
- if testCase.ShouldErr {
- assert.Error(t, err, fmt.Sprintf("error cases should return non-nil error for test case %v", reason))
- assert.Nil(t, options, fmt.Sprintf("error cases should return nil for redis options for test case %v", reason))
- continue
- }
- assert.NoError(t, err, reason)
- assert.EqualValues(t, testCase.OutputOptions, options, reason)
- }
- }
|