github.com/treeverse/lakefs@v1.24.1-0.20240520134607-95648127bfb0/pkg/block/azure/client_test.go (about)

     1  package azure_test
     2  
     3  import (
     4  	"net/url"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/require"
     8  	"github.com/treeverse/lakefs/pkg/block"
     9  	"github.com/treeverse/lakefs/pkg/block/azure"
    10  )
    11  
    12  func TestExtraction(t *testing.T) {
    13  	parse := func(p string) *url.URL {
    14  		u, err := url.Parse(p)
    15  		require.NoError(t, err)
    16  		return u
    17  	}
    18  	tests := []struct {
    19  		name                   string
    20  		url                    *url.URL
    21  		expectedErr            error
    22  		expectedStorageAccount string
    23  	}{
    24  		{
    25  			name:                   "simple",
    26  			url:                    parse("https://somestorageaccount.blob.core.windows.net/newcontainer/2023/"),
    27  			expectedStorageAccount: "somestorageaccount",
    28  		},
    29  		{
    30  			name:                   "no container",
    31  			url:                    parse("https://somestorageaccount.blob.core.windows.net/"),
    32  			expectedStorageAccount: "somestorageaccount",
    33  		},
    34  		{
    35  			name:                   "long prefix",
    36  			url:                    parse("https://somestorageaccount.blob.core.windows.net/container/somestorageaccount.blob.core.windows.net"),
    37  			expectedStorageAccount: "somestorageaccount",
    38  		},
    39  		{
    40  			name:        "No subdomains",
    41  			url:         parse("https://Rgeaccountblobcorewindowsnet/newcontainer/2023/"),
    42  			expectedErr: block.ErrInvalidAddress,
    43  		},
    44  	}
    45  
    46  	for _, tt := range tests {
    47  		t.Run(tt.name, func(t *testing.T) {
    48  			actualStorageAccount, err := azure.ExtractStorageAccount(tt.url)
    49  			if tt.expectedErr == nil {
    50  				require.NoError(t, err)
    51  				require.Equal(t, tt.expectedStorageAccount, actualStorageAccount)
    52  			} else {
    53  				require.ErrorIs(t, err, tt.expectedErr)
    54  			}
    55  		})
    56  	}
    57  }