78 lines
1.2 KiB
Go
78 lines
1.2 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())
|
||
|
}
|