argo-cd/util/cache/redis_test.go
jannfis 1b1df76ef2
chore: Code coverage offensive 03: util/cache (#3335)
* Add dependency for miniredis, used for unit testing Redis cache

* Add more tests
2020-04-02 09:16:42 -07:00

47 lines
1.2 KiB
Go

package cache
import (
"testing"
"time"
"github.com/alicebob/miniredis"
"github.com/go-redis/redis"
"github.com/stretchr/testify/assert"
)
func TestRedisSetCache(t *testing.T) {
mr, err := miniredis.Run()
if err != nil {
panic(err)
}
defer mr.Close()
assert.NotNil(t, mr)
t.Run("Successfull set", func(t *testing.T) {
client := NewRedisCache(redis.NewClient(&redis.Options{Addr: mr.Addr()}), 60*time.Second)
err = client.Set(&Item{Key: "foo", Object: "bar"})
assert.NoError(t, err)
})
t.Run("Successfull get", func(t *testing.T) {
var res string
client := NewRedisCache(redis.NewClient(&redis.Options{Addr: mr.Addr()}), 10*time.Second)
err = client.Get("foo", &res)
assert.NoError(t, err)
assert.Equal(t, res, "bar")
})
t.Run("Successfull delete", func(t *testing.T) {
client := NewRedisCache(redis.NewClient(&redis.Options{Addr: mr.Addr()}), 10*time.Second)
err = client.Delete("foo")
assert.NoError(t, err)
})
t.Run("Cache miss", func(t *testing.T) {
var res string
client := NewRedisCache(redis.NewClient(&redis.Options{Addr: mr.Addr()}), 10*time.Second)
err = client.Get("foo", &res)
assert.Error(t, err)
assert.Contains(t, err.Error(), "cache: key is missing")
})
}