From 220b2a899431d807029834b7ef2d0899396d4730 Mon Sep 17 00:00:00 2001 From: Christine Dodrill Date: Sun, 21 Jan 2018 12:19:54 -0800 Subject: [PATCH] internal/database: write the rest of the tests --- internal/database/boltdb.go | 1 + internal/database/cert_test.go | 15 +------ internal/database/common_test.go | 27 +++++++++++ internal/database/route_test.go | 77 ++++++++++++++++++++++++++++++++ internal/database/token_test.go | 74 ++++++++++++++++++++++++++++++ 5 files changed, 180 insertions(+), 14 deletions(-) create mode 100644 internal/database/common_test.go create mode 100644 internal/database/route_test.go create mode 100644 internal/database/token_test.go diff --git a/internal/database/boltdb.go b/internal/database/boltdb.go index f559f09..35890f6 100644 --- a/internal/database/boltdb.go +++ b/internal/database/boltdb.go @@ -189,6 +189,7 @@ func (b *boltTokenStorage) Put(ctx context.Context, t Token) (Token, error) { t.ID = uuid.New() t.CreatedAt = time.Now() t.Active = true + t.Body = uuid.New() } err := b.db.Save(&t) diff --git a/internal/database/cert_test.go b/internal/database/cert_test.go index 6bb042f..7903821 100644 --- a/internal/database/cert_test.go +++ b/internal/database/cert_test.go @@ -5,7 +5,6 @@ import ( "os" "testing" - "git.xeserv.us/xena/route/internal/routecrypto" "github.com/Xe/uuid" ) @@ -57,21 +56,9 @@ func testCerts(ctx context.Context, t *testing.T, c Certs) { } func TestBoltDBCertStorage(t *testing.T) { - k, err := routecrypto.ParseKey(cryptoKey) - if err != nil { - t.Fatal(err) - } - - p := uuid.New() + st, p, ctx, cancel := newTestBoltStorage(t) defer os.RemoveAll(p) - - st, err := NewBoltStorage(p, k) - if err != nil { - t.Fatal(err) - } defer st.Close() - - ctx, cancel := context.WithCancel(context.Background()) defer cancel() testCerts(ctx, t, st.Certs()) diff --git a/internal/database/common_test.go b/internal/database/common_test.go new file mode 100644 index 0000000..73722d0 --- /dev/null +++ b/internal/database/common_test.go @@ -0,0 +1,27 @@ +package database + +import ( + "testing" + + "git.xeserv.us/xena/route/internal/routecrypto" + "github.com/Xe/uuid" + "golang.org/x/net/context" +) + +func newTestBoltStorage(t *testing.T) (Storage, string, context.Context, context.CancelFunc) { + k, err := routecrypto.ParseKey(cryptoKey) + if err != nil { + t.Fatal(err) + } + + p := uuid.New() + + st, err := NewBoltStorage(p, k) + if err != nil { + t.Fatal(err) + } + + ctx, cancel := context.WithCancel(context.Background()) + + return st, p, ctx, cancel +} diff --git a/internal/database/route_test.go b/internal/database/route_test.go new file mode 100644 index 0000000..6c28efd --- /dev/null +++ b/internal/database/route_test.go @@ -0,0 +1,77 @@ +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()) +} diff --git a/internal/database/token_test.go b/internal/database/token_test.go new file mode 100644 index 0000000..c393783 --- /dev/null +++ b/internal/database/token_test.go @@ -0,0 +1,74 @@ +package database + +import ( + "os" + "testing" + + "golang.org/x/net/context" +) + +func testTokens(ctx context.Context, t *testing.T, tk Tokens) { + var ( + tokenID string + tokenBody string + ) + + t.Run("put", func(t *testing.T) { + tok := Token{ + Owner: creator, + } + + tok2, err := tk.Put(ctx, tok) + if err != nil { + t.Fatal(err) + } + + tokenID = tok2.ID + tokenBody = tok2.Body + }) + + t.Run("get", func(t *testing.T) { + _, err := tk.Get(ctx, tokenID) + if err != nil { + t.Fatal(err) + } + }) + + t.Run("getBody", func(t *testing.T) { + _, err := tk.GetBody(ctx, tokenBody) + if err != nil { + t.Fatal(err) + } + }) + + t.Run("getAll", func(t *testing.T) { + lis, err := tk.GetAll(ctx, creator) + if err != nil { + t.Fatal(err) + } + if len(lis) == 0 { + t.Fatal("expected results but got none") + } + }) + + t.Run("delete", func(t *testing.T) { + _, err := tk.Delete(ctx, tokenID) + if err != nil { + t.Fatal(err) + } + + _, err = tk.Get(ctx, tokenID) + if err == nil { + t.Fatal("can fetch a deleted resource") + } + }) +} + +func TestBoltDBTokenStorage(t *testing.T) { + st, p, ctx, cancel := newTestBoltStorage(t) + defer os.RemoveAll(p) + defer st.Close() + defer cancel() + + testTokens(ctx, t, st.Tokens()) +}