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  }