tusd/consullocker/consullocker_test.go

56 lines
1.1 KiB
Go

package consullocker
import (
"testing"
"time"
consul "github.com/hashicorp/consul/api"
consultestutil "github.com/hashicorp/consul/testutil"
"github.com/stretchr/testify/assert"
"github.com/tus/tusd"
)
func TestConsulLocker(t *testing.T) {
a := assert.New(t)
server := consultestutil.NewTestServer(t)
defer server.Stop()
client, err := consul.NewClient(&consul.Config{
Address: server.HTTPAddr,
})
a.NoError(err)
locker := New(client)
a.NoError(locker.LockUpload("one"))
a.Equal(tusd.ErrFileLocked, locker.LockUpload("one"))
a.NoError(locker.UnlockUpload("one"))
a.Equal(consul.ErrLockNotHeld, locker.UnlockUpload("one"))
}
func TestLockLost(t *testing.T) {
// This test will panic because the connection to Consul will be cut, which
// is indented.
// TODO: find a way to test this
t.SkipNow()
a := assert.New(t)
server := consultestutil.NewTestServer(t)
client, err := consul.NewClient(&consul.Config{
Address: server.HTTPAddr,
})
a.NoError(err)
locker := New(client)
locker.ConnectionName = server.HTTPAddr
a.NoError(locker.LockUpload("two"))
server.Stop()
time.Sleep(time.Hour)
}