86 lines
1.4 KiB
Go
86 lines
1.4 KiB
Go
package database
|
|
|
|
import (
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/Xe/uuid"
|
|
"golang.org/x/net/context"
|
|
)
|
|
|
|
const (
|
|
creator = "shachi"
|
|
hostBase = "shachi.loves."
|
|
)
|
|
|
|
func testRoutes(ctx context.Context, t *testing.T, r Routes) {
|
|
hostname := hostBase + uuid.New()
|
|
id := uuid.New()
|
|
|
|
t.Run("put", func(t *testing.T) {
|
|
rt := Route{
|
|
ID: id,
|
|
Creator: creator,
|
|
Hostname: hostname,
|
|
}
|
|
|
|
_, err := r.Put(ctx, rt)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
})
|
|
|
|
t.Run("get", func(t *testing.T) {
|
|
_, err := r.Get(ctx, id)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
})
|
|
|
|
t.Run("getHost", func(t *testing.T) {
|
|
_, err := r.GetHost(ctx, hostname)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
})
|
|
|
|
t.Run("getAll", func(t *testing.T) {
|
|
res, err := r.GetAll(ctx, creator)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if len(res) == 0 {
|
|
t.Fatal("didn't get any routes back for shachi")
|
|
}
|
|
})
|
|
|
|
t.Run("delete", func(t *testing.T) {
|
|
_, err := r.Delete(ctx, Route{ID: id})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
_, err = r.Get(ctx, id)
|
|
if err == nil {
|
|
t.Fatal("able to fetch a deleted item")
|
|
}
|
|
})
|
|
}
|
|
|
|
func TestBoltDBRouteStorage(t *testing.T) {
|
|
st, p, ctx, cancel := newTestBoltStorage(t)
|
|
defer os.RemoveAll(p)
|
|
defer st.Close()
|
|
defer cancel()
|
|
|
|
testRoutes(ctx, t, st.Routes())
|
|
}
|
|
|
|
func TestPostgresRouteStorage(t *testing.T) {
|
|
st, ctx, cancel := newTestPostgresStorage(t, os.Getenv("DATABASE_URL"))
|
|
defer st.Close()
|
|
defer cancel()
|
|
|
|
testRoutes(ctx, t, st.Routes())
|
|
}
|