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  }