-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathredis_test.go
93 lines (88 loc) · 1.83 KB
/
redis_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
package coreredis_test
import (
"crypto/tls"
"os"
"reflect"
"testing"
coreredis "github.com/LUSHDigital/core-redis"
"github.com/go-redis/redis"
)
func TestURLFromEnv(t *testing.T) {
a := coreredis.URLFromEnv()
equals(t, coreredis.DefaultURL, a)
os.Setenv("REDIS_URL", "redis://example.com:6379/0")
b := coreredis.URLFromEnv()
equals(t, "redis://example.com:6379/0", b)
}
func TestParse(t *testing.T) {
cases := []struct {
url string
expected *redis.Options
}{
{
url: "redis://example.com:6379",
expected: &redis.Options{
Addr: "example.com:6379",
Password: "",
DB: 0,
},
},
{
url: "redis://example.com:6379?what=1",
expected: &redis.Options{
Addr: "example.com:6379",
Password: "",
DB: 0,
},
},
{
url: "redis://foo:bar@example.com:6379",
expected: &redis.Options{
Addr: "example.com:6379",
Password: "bar",
DB: 0,
},
},
{
url: "redis://foo@example.com:6379",
expected: &redis.Options{
Addr: "example.com:6379",
Password: "foo",
DB: 0,
},
},
{
url: "redis://example.com:6379/1/foobar",
expected: &redis.Options{
Addr: "example.com:6379",
Password: "",
DB: 1,
},
},
{
url: "rediss://passwd@example.com:6379/6/foobar",
expected: &redis.Options{
Addr: "example.com:6379",
Password: "passwd",
DB: 6,
TLSConfig: &tls.Config{
InsecureSkipVerify: true,
},
},
},
}
for _, c := range cases {
t.Run(c.url, func(t *testing.T) {
opt, err := coreredis.Parse(c.url)
if err != nil {
t.Error(err)
}
equals(t, c.expected, opt)
})
}
}
func equals(tb testing.TB, expected, actual interface{}) {
if !reflect.DeepEqual(expected, actual) {
tb.Fatalf("\n\texp: %#[1]v (%[1]T)\n\tgot: %#[2]v (%[2]T)\n", expected, actual)
}
}