e08e64b311
Signed-off-by: Andrea Luzzardi <aluzzardi@gmail.com>
100 lines
2.4 KiB
Go
100 lines
2.4 KiB
Go
package dagger
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestStoreLoad(t *testing.T) {
|
|
ctx := context.TODO()
|
|
|
|
root, err := os.MkdirTemp(os.TempDir(), "dagger-*")
|
|
require.NoError(t, err)
|
|
store, err := NewStore(root)
|
|
require.NoError(t, err)
|
|
|
|
_, err = store.LookupRouteByName(ctx, "notexist")
|
|
require.Error(t, err)
|
|
require.True(t, errors.Is(err, os.ErrNotExist))
|
|
|
|
st := &RouteState{
|
|
Name: "test",
|
|
}
|
|
require.NoError(t, store.CreateRoute(ctx, st))
|
|
|
|
checkRoutes := func(store *Store) {
|
|
r, err := store.LookupRouteByID(ctx, st.ID)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, r)
|
|
require.Equal(t, "test", r.Name)
|
|
|
|
r, err = store.LookupRouteByName(ctx, "test")
|
|
require.NoError(t, err)
|
|
require.NotNil(t, r)
|
|
require.Equal(t, "test", r.Name)
|
|
|
|
routes, err := store.ListRoutes(ctx)
|
|
require.NoError(t, err)
|
|
require.Len(t, routes, 1)
|
|
require.Equal(t, "test", routes[0].Name)
|
|
}
|
|
|
|
checkRoutes(store)
|
|
|
|
// Reload the routes from disk and check again
|
|
newStore, err := NewStore(root)
|
|
require.NoError(t, err)
|
|
checkRoutes(newStore)
|
|
}
|
|
|
|
func TestStoreLookupByPath(t *testing.T) {
|
|
ctx := context.TODO()
|
|
|
|
root, err := os.MkdirTemp(os.TempDir(), "dagger-*")
|
|
require.NoError(t, err)
|
|
store, err := NewStore(root)
|
|
require.NoError(t, err)
|
|
|
|
st := &RouteState{
|
|
Name: "test",
|
|
}
|
|
require.NoError(t, st.AddInput("foo", DirInput("/test/path", []string{})))
|
|
require.NoError(t, store.CreateRoute(ctx, st))
|
|
|
|
// Lookup by path
|
|
r, err := store.LookupRouteByPath(ctx, "/test/path")
|
|
require.NoError(t, err)
|
|
require.NotNil(t, r)
|
|
require.Equal(t, st.ID, r.ID)
|
|
|
|
// Add a new path
|
|
require.NoError(t, st.AddInput("bar", DirInput("/test/anotherpath", []string{})))
|
|
require.NoError(t, store.UpdateRoute(ctx, st, nil))
|
|
|
|
// Lookup by the previous path
|
|
r, err = store.LookupRouteByPath(ctx, "/test/path")
|
|
require.NoError(t, err)
|
|
require.Equal(t, st.ID, r.ID)
|
|
|
|
// Lookup by the new path
|
|
r, err = store.LookupRouteByPath(ctx, "/test/anotherpath")
|
|
require.NoError(t, err)
|
|
require.Equal(t, st.ID, r.ID)
|
|
|
|
// Remove a path
|
|
require.NoError(t, st.RemoveInputs("foo"))
|
|
require.NoError(t, store.UpdateRoute(ctx, st, nil))
|
|
|
|
// Lookup by the removed path should fail
|
|
_, err = store.LookupRouteByPath(ctx, "/test/path")
|
|
require.Error(t, err)
|
|
|
|
// Lookup by the other path should still work
|
|
_, err = store.LookupRouteByPath(ctx, "/test/anotherpath")
|
|
require.NoError(t, err)
|
|
}
|