package redisStore import ( "fmt" "testing" "time" "github.com/gofiber/utils" "github.com/gomodule/redigo/redis" ) // The tests here assume that you have a local Redis sever running on the default port. // The Redis address can be changed using the redisLocation variable. var ( redisLocation = "127.0.0.1:6379" getConn = func() (redis.Conn, error) { return redis.Dial("tcp", redisLocation) } ) func Test_Set(t *testing.T) { topLevelKey := "store" store := New(getConn, topLevelKey) key := "aaaa" val := []byte("This is a value") err := store.Set(key, val, 0) utils.AssertEqual(t, nil, err) key = fmt.Sprintf("%s:%s", topLevelKey, key) redisConn, err := getConn() defer redisConn.Close() utils.AssertEqual(t, nil, err) exists, err := redis.Bool(redisConn.Do("EXISTS", key)) utils.AssertEqual(t, nil, err) utils.AssertEqual(t, true, exists) output, err := redis.Bytes(redisConn.Do("GET", key)) utils.AssertEqual(t, nil, err) utils.AssertEqual(t, val, output) } func Test_SetExpiry(t *testing.T) { topLevelKey := "store" store := New(getConn, topLevelKey) key := "aaaa" val := []byte("This is a value") expiry := time.Second * 60 err := store.Set(key, val, expiry) utils.AssertEqual(t, nil, err) key = fmt.Sprintf("%s:%s", topLevelKey, key) redisConn, err := getConn() defer redisConn.Close() utils.AssertEqual(t, nil, err) exists, err := redis.Bool(redisConn.Do("EXISTS", key)) utils.AssertEqual(t, nil, err) utils.AssertEqual(t, true, exists) ttl, err := redis.Int(redisConn.Do("TTL", key)) utils.AssertEqual(t, nil, err) if !(float64(ttl) <= expiry.Seconds() && float64(ttl) > expiry.Seconds()-5) { t.Fatalf("Test_SetExpiry: expiry out of bounds (is %d, must be %d