supabase-cli/internal/seed/buckets/buckets_test.go

68 lines
1.8 KiB
Go

package buckets
import (
"context"
"net/http"
"path/filepath"
"testing"
"github.com/BurntSushi/toml"
"github.com/h2non/gock"
"github.com/spf13/afero"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/supabase/cli/internal/testing/apitest"
"github.com/supabase/cli/internal/utils"
"github.com/supabase/cli/pkg/storage"
)
func TestSeedBuckets(t *testing.T) {
t.Run("seeds buckets", func(t *testing.T) {
t.Cleanup(func() { clear(utils.Config.Storage.Buckets) })
config := `
[test]
public = true
[private]
public = false`
require.NoError(t, toml.Unmarshal([]byte(config), &utils.Config.Storage.Buckets))
// Setup in-memory fs
fsys := afero.NewMemMapFs()
bucketPath := filepath.Join(utils.SupabaseDirPath, "images")
require.NoError(t, fsys.Mkdir(bucketPath, 0755))
// Setup mock api
gock.New(utils.Config.Api.ExternalUrl).
Get("/storage/v1/bucket").
Reply(http.StatusOK).
JSON([]storage.BucketResponse{{
Name: "test",
Id: "test",
}})
gock.New(utils.Config.Api.ExternalUrl).
Put("/storage/v1/bucket/test").
Reply(http.StatusOK).
JSON(storage.UpdateBucketResponse{})
gock.New(utils.Config.Api.ExternalUrl).
Post("/storage/v1/bucket").
Reply(http.StatusOK).
JSON(storage.CreateBucketResponse{Name: "private"})
// Run test
err := Run(context.Background(), "", false, fsys)
// Check error
assert.NoError(t, err)
assert.Empty(t, apitest.ListUnmatchedRequests())
})
t.Run("ignores unconfigured buckets", func(t *testing.T) {
// Setup mock api
gock.New(utils.Config.Api.ExternalUrl).
Get("/storage/v1/bucket").
Reply(http.StatusOK).
JSON([]storage.BucketResponse{})
// Run test
err := Run(context.Background(), "", false, afero.NewMemMapFs())
// Check error
assert.NoError(t, err)
assert.Empty(t, apitest.ListUnmatchedRequests())
})
}