Files
wonderwall/pkg/session/lock_test.go
2023-02-10 14:58:15 +01:00

41 lines
729 B
Go

package session_test
import (
"context"
"testing"
"time"
"github.com/alicebob/miniredis/v2"
"github.com/redis/go-redis/v9"
"github.com/stretchr/testify/assert"
"github.com/nais/wonderwall/pkg/session"
)
func TestRedisLock(t *testing.T) {
s, err := miniredis.Run()
if err != nil {
panic(err)
}
defer s.Close()
client := redis.NewClient(&redis.Options{
Network: "tcp",
Addr: s.Addr(),
})
key := "some-key"
ctx := context.Background()
lock := session.NewRedisLock(client, key)
err = lock.Acquire(ctx, time.Minute)
assert.NoError(t, err)
err = lock.Acquire(ctx, time.Minute)
assert.Error(t, err)
assert.ErrorIs(t, err, session.ErrAcquireLock)
err = lock.Release(ctx)
assert.NoError(t, err)
}