github.com/treeverse/lakefs@v1.24.1-0.20240520134607-95648127bfb0/pkg/block/gs/adapter_test.go (about) 1 package gs_test 2 3 import ( 4 "net/url" 5 "regexp" 6 "testing" 7 8 "github.com/stretchr/testify/require" 9 "github.com/treeverse/lakefs/pkg/block/blocktest" 10 "github.com/treeverse/lakefs/pkg/block/gs" 11 ) 12 13 func newAdapter() *gs.Adapter { 14 return gs.NewAdapter(client) 15 } 16 17 func TestAdapter(t *testing.T) { 18 basePath, err := url.JoinPath("gs://", bucketName) 19 require.NoError(t, err) 20 localPath, err := url.JoinPath(basePath, "lakefs") 21 require.NoError(t, err) 22 externalPath, err := url.JoinPath(basePath, "external") 23 require.NoError(t, err) 24 25 adapter := newAdapter() 26 defer func() { 27 require.NoError(t, adapter.Close()) 28 }() 29 30 blocktest.AdapterTest(t, adapter, localPath, externalPath) 31 } 32 33 func TestAdapterNamespace(t *testing.T) { 34 adapter := newAdapter() 35 defer func() { 36 require.NoError(t, adapter.Close()) 37 }() 38 39 expr, err := regexp.Compile(adapter.GetStorageNamespaceInfo().ValidityRegex) 40 require.NoError(t, err) 41 42 tests := []struct { 43 Name string 44 Namespace string 45 Success bool 46 }{ 47 { 48 Name: "valid_path", 49 Namespace: "gs://bucket/path/to/repo1", 50 Success: true, 51 }, 52 { 53 Name: "double_slash", 54 Namespace: "gs://bucket/path//to/repo1", 55 Success: true, 56 }, 57 { 58 Name: "invalid_schema", 59 Namespace: "s3:/test/adls/core/windows/net", 60 Success: false, 61 }, 62 { 63 Name: "invalid_path", 64 Namespace: "https://test/adls/core/windows/net", 65 Success: false, 66 }, 67 { 68 Name: "invalid_string", 69 Namespace: "this is a bad string", 70 Success: false, 71 }, 72 } 73 for _, tt := range tests { 74 t.Run(tt.Name, func(t *testing.T) { 75 require.Equal(t, tt.Success, expr.MatchString(tt.Namespace)) 76 }) 77 } 78 }