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 }