Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

azfile: File Client #20511

Merged
merged 41 commits into from
Apr 11, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
964e4d2
Adding share client
souravgupta-msft Feb 27, 2023
69446ae
More share client methods
souravgupta-msft Feb 28, 2023
bf3d82f
Adding tests for share client
souravgupta-msft Mar 3, 2023
0f48bdc
More tests
souravgupta-msft Mar 6, 2023
1456741
lint
souravgupta-msft Mar 6, 2023
dc37bbd
More tests
souravgupta-msft Mar 7, 2023
99256a6
Few changes
souravgupta-msft Mar 9, 2023
ecbd69b
directory client ctors
souravgupta-msft Mar 9, 2023
25aa885
Removing check for shared key
souravgupta-msft Mar 10, 2023
b3785f0
Merge branch 'sourav/shareClient' of https://github.com/Azure/azure-s…
souravgupta-msft Mar 10, 2023
4759643
Adding directory client apis
souravgupta-msft Mar 10, 2023
a72172b
Adding list files and directories api
souravgupta-msft Mar 14, 2023
fe3bfd7
Adding generate SAS method in directory client
souravgupta-msft Mar 14, 2023
a37d5d3
List and force close handles api
souravgupta-msft Mar 14, 2023
4e508c9
Adding tests for directory client
souravgupta-msft Mar 15, 2023
207f205
More tests
souravgupta-msft Mar 15, 2023
72fb334
Format check
souravgupta-msft Mar 16, 2023
03de239
Merge branch 'feature/azfile' of https://github.com/Azure/azure-sdk-f…
souravgupta-msft Mar 17, 2023
5dadfaf
FileSignatureValues to SignatureValues
souravgupta-msft Mar 17, 2023
c4f769a
Merge branch 'sourav/shareClient' of https://github.com/Azure/azure-s…
souravgupta-msft Mar 17, 2023
560e382
updating GetSASURL()
souravgupta-msft Mar 17, 2023
6df4890
Merge from feature branch
souravgupta-msft Mar 20, 2023
7ae34f5
file client ctors
souravgupta-msft Mar 20, 2023
a202b9a
Adding file client apis
souravgupta-msft Mar 20, 2023
97a0fe4
List and force close handles
souravgupta-msft Mar 21, 2023
d515768
File lease client
souravgupta-msft Mar 21, 2023
26df11e
Share lease client
souravgupta-msft Mar 21, 2023
49f3814
Adding tests
souravgupta-msft Mar 24, 2023
af21402
More tests
souravgupta-msft Mar 27, 2023
e0181a2
More tests
souravgupta-msft Mar 27, 2023
d620cd9
Few changes
souravgupta-msft Mar 28, 2023
cb306cd
Pull from feature branch
souravgupta-msft Mar 29, 2023
1e842b6
Lease client tests
souravgupta-msft Mar 29, 2023
32f9add
More lease client tests
souravgupta-msft Mar 29, 2023
d21f82f
Adding recordings
souravgupta-msft Mar 30, 2023
3d10edb
More recordings
souravgupta-msft Mar 30, 2023
d4da5b0
Update recordings
souravgupta-msft Mar 30, 2023
6913872
Adding recordings for directory client
souravgupta-msft Mar 30, 2023
530b8c7
Updating assets.json
souravgupta-msft Mar 30, 2023
c9a2aec
Adding recordings for share client
souravgupta-msft Mar 31, 2023
3207b8f
Adding recordings for service client
souravgupta-msft Mar 31, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion sdk/storage/azfile/assets.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@
"AssetsRepo": "Azure/azure-sdk-assets",
"AssetsRepoPrefixPath": "go",
"TagPrefix": "go/storage/azfile",
"Tag": "go/storage/azfile_33b8efd383"
"Tag": "go/storage/azfile_5b5e44362e"
}
103 changes: 64 additions & 39 deletions sdk/storage/azfile/directory/client_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -60,12 +60,12 @@ type DirectoryUnrecordedTestsSuite struct {
suite.Suite
}

func (d *DirectoryUnrecordedTestsSuite) TestDirNewDirectoryClient() {
func (d *DirectoryRecordedTestsSuite) TestDirNewDirectoryClient() {
_require := require.New(d.T())
testName := d.T().Name()

accountName, err := testcommon.GetRequiredEnv(testcommon.AccountNameEnvVar)
_require.NoError(err)
accountName, _ := testcommon.GetGenericAccountInfo(testcommon.TestAccountDefault)
_require.Greater(len(accountName), 0)

svcClient, err := testcommon.GetServiceClient(d.T(), testcommon.TestAccountDefault, nil)
_require.NoError(err)
Expand All @@ -83,12 +83,12 @@ func (d *DirectoryUnrecordedTestsSuite) TestDirNewDirectoryClient() {
_require.Equal(subDirClient.URL(), correctURL)
}

func (d *DirectoryUnrecordedTestsSuite) TestDirCreateFileURL() {
func (d *DirectoryRecordedTestsSuite) TestDirCreateFileURL() {
_require := require.New(d.T())
testName := d.T().Name()

accountName, err := testcommon.GetRequiredEnv(testcommon.AccountNameEnvVar)
_require.NoError(err)
accountName, _ := testcommon.GetGenericAccountInfo(testcommon.TestAccountDefault)
_require.Greater(len(accountName), 0)

svcClient, err := testcommon.GetServiceClient(d.T(), testcommon.TestAccountDefault, nil)
_require.NoError(err)
Expand All @@ -106,7 +106,7 @@ func (d *DirectoryUnrecordedTestsSuite) TestDirCreateFileURL() {
_require.Equal(fileClient.URL(), correctURL)
}

func (d *DirectoryUnrecordedTestsSuite) TestDirectoryCreateUsingSharedKey() {
func (d *DirectoryRecordedTestsSuite) TestDirectoryCreateUsingSharedKey() {
_require := require.New(d.T())
testName := d.T().Name()

Expand All @@ -122,7 +122,10 @@ func (d *DirectoryUnrecordedTestsSuite) TestDirectoryCreateUsingSharedKey() {

dirName := testcommon.GenerateDirectoryName(testName)
dirURL := "https://" + cred.AccountName() + ".file.core.windows.net/" + shareName + "/" + dirName
dirClient, err := directory.NewClientWithSharedKeyCredential(dirURL, cred, nil)

options := &directory.ClientOptions{}
testcommon.SetClientOptions(d.T(), &options.ClientOptions)
dirClient, err := directory.NewClientWithSharedKeyCredential(dirURL, cred, options)
_require.NoError(err)

resp, err := dirClient.Create(context.Background(), nil)
Expand All @@ -135,7 +138,7 @@ func (d *DirectoryUnrecordedTestsSuite) TestDirectoryCreateUsingSharedKey() {
_require.Equal(resp.FileChangeTime.IsZero(), false)
}

func (d *DirectoryUnrecordedTestsSuite) TestDirectoryCreateUsingConnectionString() {
func (d *DirectoryRecordedTestsSuite) TestDirectoryCreateUsingConnectionString() {
_require := require.New(d.T())
testName := d.T().Name()

Expand All @@ -150,7 +153,9 @@ func (d *DirectoryUnrecordedTestsSuite) TestDirectoryCreateUsingConnectionString
defer testcommon.DeleteShare(context.Background(), _require, shareClient)

dirName := testcommon.GenerateDirectoryName(testName)
dirClient, err := directory.NewClientFromConnectionString(*connString, shareName, dirName, nil)
options := &directory.ClientOptions{}
testcommon.SetClientOptions(d.T(), &options.ClientOptions)
dirClient, err := directory.NewClientFromConnectionString(*connString, shareName, dirName, options)
_require.NoError(err)

resp, err := dirClient.Create(context.Background(), nil)
Expand All @@ -164,7 +169,7 @@ func (d *DirectoryUnrecordedTestsSuite) TestDirectoryCreateUsingConnectionString

innerDirName1 := "innerdir1"
dirPath := dirName + "/" + innerDirName1
dirClient1, err := directory.NewClientFromConnectionString(*connString, shareName, dirPath, nil)
dirClient1, err := directory.NewClientFromConnectionString(*connString, shareName, dirPath, options)
_require.NoError(err)

resp, err = dirClient1.Create(context.Background(), nil)
Expand All @@ -176,7 +181,7 @@ func (d *DirectoryUnrecordedTestsSuite) TestDirectoryCreateUsingConnectionString
innerDirName2 := "innerdir2"
// using '\' as path separator between directories
dirPath = dirName + "\\" + innerDirName1 + "\\" + innerDirName2
dirClient2, err := directory.NewClientFromConnectionString(*connString, shareName, dirPath, nil)
dirClient2, err := directory.NewClientFromConnectionString(*connString, shareName, dirPath, options)
_require.NoError(err)

resp, err = dirClient2.Create(context.Background(), nil)
Expand All @@ -186,7 +191,7 @@ func (d *DirectoryUnrecordedTestsSuite) TestDirectoryCreateUsingConnectionString
_require.Equal(resp.FileCreationTime.IsZero(), false)
}

func (d *DirectoryUnrecordedTestsSuite) TestDirectoryCreateNegativeMultiLevel() {
func (d *DirectoryRecordedTestsSuite) TestDirectoryCreateNegativeMultiLevel() {
_require := require.New(d.T())
testName := d.T().Name()

Expand All @@ -203,7 +208,9 @@ func (d *DirectoryUnrecordedTestsSuite) TestDirectoryCreateNegativeMultiLevel()
dirName := testcommon.GenerateDirectoryName(testName)
// dirPath where parent dir does not exist
dirPath := "a/b/c/d/" + dirName
dirClient, err := directory.NewClientFromConnectionString(*connString, shareName, dirPath, nil)
options := &directory.ClientOptions{}
testcommon.SetClientOptions(d.T(), &options.ClientOptions)
dirClient, err := directory.NewClientFromConnectionString(*connString, shareName, dirPath, options)
_require.NoError(err)

resp, err := dirClient.Create(context.Background(), nil)
Expand All @@ -223,11 +230,7 @@ func (d *DirectoryUnrecordedTestsSuite) TestDirectoryClientUsingSAS() {
shareClient := testcommon.CreateNewShare(context.Background(), _require, shareName, svcClient)
defer testcommon.DeleteShare(context.Background(), _require, shareClient)

dirName := testcommon.GenerateDirectoryName(testName)
dirClient := shareClient.NewDirectoryClient(dirName)

_, err = dirClient.Create(context.Background(), nil)
_require.NoError(err)
dirClient := testcommon.CreateNewDirectory(context.Background(), _require, testcommon.GenerateDirectoryName(testName), shareClient)

permissions := sas.FilePermissions{
Read: true,
Expand All @@ -247,10 +250,33 @@ func (d *DirectoryUnrecordedTestsSuite) TestDirectoryClientUsingSAS() {
_require.Error(err)
testcommon.ValidateFileErrorCode(_require, err, fileerror.AuthenticationFailed)

// TODO: create files using dirSASClient
subDirSASClient := dirSASClient.NewSubdirectoryClient("subdir")
_, err = subDirSASClient.Create(context.Background(), nil)
_require.Error(err)
testcommon.ValidateFileErrorCode(_require, err, fileerror.AuthenticationFailed)

// TODO: directory SAS client unable to do create and get properties on directories.
// Also unable to do create or get properties on files. Validate this behaviour.
fileSASClient := dirSASClient.NewFileClient(testcommon.GenerateFileName(testName))
_, err = fileSASClient.Create(context.Background(), 1024, nil)
_require.Error(err)
testcommon.ValidateFileErrorCode(_require, err, fileerror.AuthenticationFailed)

_, err = fileSASClient.GetProperties(context.Background(), nil)
_require.Error(err)
testcommon.ValidateFileErrorCode(_require, err, fileerror.AuthenticationFailed)

// create file using shared key client
_, err = dirClient.NewFileClient(testcommon.GenerateFileName(testName)).Create(context.Background(), 1024, nil)
_require.NoError(err)

// get properties using SAS client
_, err = fileSASClient.GetProperties(context.Background(), nil)
_require.Error(err)
testcommon.ValidateFileErrorCode(_require, err, fileerror.AuthenticationFailed)
}

func (d *DirectoryUnrecordedTestsSuite) TestDirCreateDeleteDefault() {
func (d *DirectoryRecordedTestsSuite) TestDirCreateDeleteDefault() {
_require := require.New(d.T())
testName := d.T().Name()
svcClient, err := testcommon.GetServiceClient(d.T(), testcommon.TestAccountDefault, nil)
Expand Down Expand Up @@ -395,7 +421,7 @@ func (d *DirectoryUnrecordedTestsSuite) TestDirCreateDeleteNonDefault() {
testcommon.ValidateFileErrorCode(_require, err, fileerror.ResourceNotFound)
}

func (d *DirectoryUnrecordedTestsSuite) TestDirCreateNegativePermissions() {
func (d *DirectoryRecordedTestsSuite) TestDirCreateNegativePermissions() {
_require := require.New(d.T())
testName := d.T().Name()
svcClient, err := testcommon.GetServiceClient(d.T(), testcommon.TestAccountDefault, nil)
Expand Down Expand Up @@ -426,7 +452,7 @@ func (d *DirectoryUnrecordedTestsSuite) TestDirCreateNegativePermissions() {
_require.Error(err)
}

func (d *DirectoryUnrecordedTestsSuite) TestDirCreateNegativeAttributes() {
func (d *DirectoryRecordedTestsSuite) TestDirCreateNegativeAttributes() {
_require := require.New(d.T())
testName := d.T().Name()
svcClient, err := testcommon.GetServiceClient(d.T(), testcommon.TestAccountDefault, nil)
Expand All @@ -448,7 +474,7 @@ func (d *DirectoryUnrecordedTestsSuite) TestDirCreateNegativeAttributes() {
testcommon.ValidateFileErrorCode(_require, err, fileerror.InvalidHeaderValue)
}

func (d *DirectoryUnrecordedTestsSuite) TestDirCreateDeleteNegativeMultiLevelDir() {
func (d *DirectoryRecordedTestsSuite) TestDirCreateDeleteNegativeMultiLevelDir() {
_require := require.New(d.T())
testName := d.T().Name()
svcClient, err := testcommon.GetServiceClient(d.T(), testcommon.TestAccountDefault, nil)
Expand Down Expand Up @@ -491,7 +517,7 @@ func (d *DirectoryUnrecordedTestsSuite) TestDirCreateDeleteNegativeMultiLevelDir
_require.NoError(err)
}

func (d *DirectoryUnrecordedTestsSuite) TestDirCreateEndWithSlash() {
func (d *DirectoryRecordedTestsSuite) TestDirCreateEndWithSlash() {
_require := require.New(d.T())
testName := d.T().Name()
svcClient, err := testcommon.GetServiceClient(d.T(), testcommon.TestAccountDefault, nil)
Expand All @@ -516,7 +542,7 @@ func (d *DirectoryUnrecordedTestsSuite) TestDirCreateEndWithSlash() {
_require.NoError(err)
}

func (d *DirectoryUnrecordedTestsSuite) TestDirGetSetMetadataDefault() {
func (d *DirectoryRecordedTestsSuite) TestDirGetSetMetadataDefault() {
_require := require.New(d.T())
testName := d.T().Name()
svcClient, err := testcommon.GetServiceClient(d.T(), testcommon.TestAccountDefault, nil)
Expand Down Expand Up @@ -549,7 +575,7 @@ func (d *DirectoryUnrecordedTestsSuite) TestDirGetSetMetadataDefault() {
_require.Len(gResp.Metadata, 0)
}

func (d *DirectoryUnrecordedTestsSuite) TestDirGetSetMetadataNonDefault() {
func (d *DirectoryRecordedTestsSuite) TestDirGetSetMetadataNonDefault() {
_require := require.New(d.T())
testName := d.T().Name()
svcClient, err := testcommon.GetServiceClient(d.T(), testcommon.TestAccountDefault, nil)
Expand Down Expand Up @@ -589,7 +615,7 @@ func (d *DirectoryUnrecordedTestsSuite) TestDirGetSetMetadataNonDefault() {
_require.EqualValues(gResp.Metadata, md)
}

func (d *DirectoryUnrecordedTestsSuite) TestDirSetMetadataNegative() {
func (d *DirectoryRecordedTestsSuite) TestDirSetMetadataNegative() {
_require := require.New(d.T())
testName := d.T().Name()
svcClient, err := testcommon.GetServiceClient(d.T(), testcommon.TestAccountDefault, nil)
Expand All @@ -613,7 +639,7 @@ func (d *DirectoryUnrecordedTestsSuite) TestDirSetMetadataNegative() {
_require.Error(err)
}

func (d *DirectoryUnrecordedTestsSuite) TestDirGetPropertiesNegative() {
func (d *DirectoryRecordedTestsSuite) TestDirGetPropertiesNegative() {
_require := require.New(d.T())
testName := d.T().Name()
svcClient, err := testcommon.GetServiceClient(d.T(), testcommon.TestAccountDefault, nil)
Expand All @@ -631,7 +657,7 @@ func (d *DirectoryUnrecordedTestsSuite) TestDirGetPropertiesNegative() {
testcommon.ValidateFileErrorCode(_require, err, fileerror.ResourceNotFound)
}

func (d *DirectoryUnrecordedTestsSuite) TestDirGetPropertiesWithBaseDirectory() {
func (d *DirectoryRecordedTestsSuite) TestDirGetPropertiesWithBaseDirectory() {
_require := require.New(d.T())
testName := d.T().Name()
svcClient, err := testcommon.GetServiceClient(d.T(), testcommon.TestAccountDefault, nil)
Expand All @@ -656,7 +682,7 @@ func (d *DirectoryUnrecordedTestsSuite) TestDirGetPropertiesWithBaseDirectory()
_require.NotNil(gResp.IsServerEncrypted)
}

func (d *DirectoryUnrecordedTestsSuite) TestDirGetSetMetadataMergeAndReplace() {
func (d *DirectoryRecordedTestsSuite) TestDirGetSetMetadataMergeAndReplace() {
_require := require.New(d.T())
testName := d.T().Name()
svcClient, err := testcommon.GetServiceClient(d.T(), testcommon.TestAccountDefault, nil)
Expand Down Expand Up @@ -713,10 +739,10 @@ func (d *DirectoryUnrecordedTestsSuite) TestDirGetSetMetadataMergeAndReplace() {
_require.EqualValues(gResp.Metadata, md2)
}

func (d *DirectoryUnrecordedTestsSuite) TestSASDirectoryClientNoKey() {
func (d *DirectoryRecordedTestsSuite) TestSASDirectoryClientNoKey() {
_require := require.New(d.T())
accountName, err := testcommon.GetRequiredEnv(testcommon.AccountNameEnvVar)
_require.NoError(err)
accountName, _ := testcommon.GetGenericAccountInfo(testcommon.TestAccountDefault)
_require.Greater(len(accountName), 0)

testName := d.T().Name()
shareName := testcommon.GenerateShareName(testName)
Expand All @@ -736,12 +762,11 @@ func (d *DirectoryUnrecordedTestsSuite) TestSASDirectoryClientNoKey() {
_require.Equal(err, fileerror.MissingSharedKeyCredential)
}

func (d *DirectoryUnrecordedTestsSuite) TestSASDirectoryClientSignNegative() {
func (d *DirectoryRecordedTestsSuite) TestSASDirectoryClientSignNegative() {
_require := require.New(d.T())
accountName, err := testcommon.GetRequiredEnv(testcommon.AccountNameEnvVar)
_require.NoError(err)
accountKey, err := testcommon.GetRequiredEnv(testcommon.AccountKeyEnvVar)
_require.NoError(err)
accountName, accountKey := testcommon.GetGenericAccountInfo(testcommon.TestAccountDefault)
_require.Greater(len(accountName), 0)
_require.Greater(len(accountKey), 0)

cred, err := service.NewSharedKeyCredential(accountName, accountKey)
_require.NoError(err)
Expand Down
2 changes: 0 additions & 2 deletions sdk/storage/azfile/directory/models.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ type SharedKeyCredential = exported.SharedKeyCredential
// CreateOptions contains the optional parameters for the Client.Create method.
type CreateOptions struct {
// The default value is 'Directory' for Attributes and 'now' for CreationTime and LastWriteTime fields in file.SMBProperties.
// TODO: Change the types of creation time and last write time to string from time.Time to include values like 'now', 'preserve', etc.
FileSMBProperties *file.SMBProperties
// The default value is 'inherit' for Permission field in file.Permissions.
FilePermissions *file.Permissions
Expand Down Expand Up @@ -86,7 +85,6 @@ func (o *GetPropertiesOptions) format() *generated.DirectoryClientGetPropertiesO
// SetPropertiesOptions contains the optional parameters for the Client.SetProperties method.
type SetPropertiesOptions struct {
// The default value is 'preserve' for Attributes, CreationTime and LastWriteTime fields in file.SMBProperties.
// TODO: Change the types of creation time and last write time to string from time.Time to include values like 'now', 'preserve', etc.
FileSMBProperties *file.SMBProperties
// The default value is 'preserve' for Permission field in file.Permissions.
FilePermissions *file.Permissions
Expand Down
Loading