github.com/supabase/cli@v1.168.1/internal/storage/client/scheme_test.go (about) 1 package client 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7 ) 8 9 func TestParseStorageURL(t *testing.T) { 10 t.Run("parses valid url", func(t *testing.T) { 11 path, err := ParseStorageURL("ss:///bucket/folder/name.png") 12 assert.NoError(t, err) 13 assert.Equal(t, path, "/bucket/folder/name.png") 14 }) 15 16 t.Run("throws error on invalid host", func(t *testing.T) { 17 path, err := ParseStorageURL("ss://bucket") 18 assert.ErrorIs(t, err, ErrInvalidURL) 19 assert.Empty(t, path) 20 }) 21 22 t.Run("throws error on missing path", func(t *testing.T) { 23 path, err := ParseStorageURL("ss:") 24 assert.ErrorIs(t, err, ErrInvalidURL) 25 assert.Empty(t, path) 26 }) 27 28 t.Run("throws error on invalid scheme", func(t *testing.T) { 29 path, err := ParseStorageURL(".") 30 assert.ErrorIs(t, err, ErrInvalidURL) 31 assert.Empty(t, path) 32 }) 33 34 t.Run("throws error on invalid url", func(t *testing.T) { 35 path, err := ParseStorageURL(":") 36 assert.ErrorContains(t, err, "missing protocol scheme") 37 assert.Empty(t, path) 38 }) 39 } 40 41 func TestSplitBucketPrefix(t *testing.T) { 42 t.Run("splits empty path", func(t *testing.T) { 43 bucket, prefix := SplitBucketPrefix("") 44 assert.Equal(t, bucket, "") 45 assert.Equal(t, prefix, "") 46 }) 47 48 t.Run("splits root path", func(t *testing.T) { 49 bucket, prefix := SplitBucketPrefix("/") 50 assert.Equal(t, bucket, "") 51 assert.Equal(t, prefix, "") 52 }) 53 54 t.Run("splits no slash", func(t *testing.T) { 55 bucket, prefix := SplitBucketPrefix("bucket") 56 assert.Equal(t, bucket, "bucket") 57 assert.Equal(t, prefix, "") 58 }) 59 60 t.Run("splits prefix slash", func(t *testing.T) { 61 bucket, prefix := SplitBucketPrefix("/bucket") 62 assert.Equal(t, bucket, "bucket") 63 assert.Equal(t, prefix, "") 64 }) 65 66 t.Run("splits suffix slash", func(t *testing.T) { 67 bucket, prefix := SplitBucketPrefix("bucket/") 68 assert.Equal(t, bucket, "bucket") 69 assert.Equal(t, prefix, "") 70 }) 71 72 t.Run("splits file path", func(t *testing.T) { 73 bucket, prefix := SplitBucketPrefix("/bucket/folder/name.png") 74 assert.Equal(t, bucket, "bucket") 75 assert.Equal(t, prefix, "folder/name.png") 76 }) 77 78 t.Run("splits dir path", func(t *testing.T) { 79 bucket, prefix := SplitBucketPrefix("/bucket/folder/") 80 assert.Equal(t, bucket, "bucket") 81 assert.Equal(t, prefix, "folder/") 82 }) 83 }