improve error messages for generic failures

This commit is contained in:
Nicola Murino
2021-08-08 19:30:21 +02:00
parent a20373b613
commit 0de0d3308c
7 changed files with 48 additions and 18 deletions

View File

@@ -346,7 +346,7 @@ func (c *Connection) handleSFTPUploadToNewFile(fs vfs.Fs, resolvedPath, filePath
quotaResult := c.HasSpace(true, false, requestPath)
if !quotaResult.HasSpace {
c.Log(logger.LevelInfo, "denying file write due to quota limits")
return nil, sftp.ErrSSHFxFailure
return nil, c.GetQuotaExceededError()
}
if err := common.ExecutePreAction(&c.User, common.OperationPreUpload, resolvedPath, requestPath, c.GetProtocol(), 0, 0); err != nil {
@@ -378,7 +378,7 @@ func (c *Connection) handleSFTPUploadToExistingFile(fs vfs.Fs, pflags sftp.FileO
quotaResult := c.HasSpace(false, false, requestPath)
if !quotaResult.HasSpace {
c.Log(logger.LevelInfo, "denying file write due to quota limits")
return nil, sftp.ErrSSHFxFailure
return nil, c.GetQuotaExceededError()
}
osFlags := getOSOpenFlags(pflags)

View File

@@ -173,7 +173,8 @@ func TestUploadResumeInvalidOffset(t *testing.T) {
err = transfer.Close()
if assert.Error(t, err) {
assert.EqualError(t, err, sftp.ErrSSHFxFailure.Error())
assert.ErrorIs(t, err, sftp.ErrSSHFxFailure)
assert.Contains(t, err.Error(), "invalid write offset")
}
err = os.Remove(testfile)
@@ -270,7 +271,8 @@ func TestTransferCancelFn(t *testing.T) {
transfer.TransferError(errFake)
err = transfer.Close()
if assert.Error(t, err) {
assert.EqualError(t, err, sftp.ErrSSHFxFailure.Error())
assert.ErrorIs(t, err, sftp.ErrSSHFxFailure)
assert.Contains(t, err.Error(), errFake.Error())
}
if assert.Error(t, transfer.ErrTransfer) {
assert.EqualError(t, transfer.ErrTransfer, errFake.Error())

View File

@@ -3564,7 +3564,10 @@ func TestQuotaLimits(t *testing.T) {
err = sftpUploadFile(testFilePath, testFileName+".quota", testFileSize, client)
assert.NoError(t, err)
err = sftpUploadFile(testFilePath, testFileName+".quota.1", testFileSize, client)
assert.Error(t, err, "user is over quota files, upload must fail")
if assert.Error(t, err, "user is over quota files, upload must fail") {
assert.Contains(t, err.Error(), "SSH_FX_FAILURE")
assert.Contains(t, err.Error(), common.ErrQuotaExceeded.Error())
}
// rename should work
err = client.Rename(testFileName+".quota", testFileName)
assert.NoError(t, err)
@@ -3579,7 +3582,10 @@ func TestQuotaLimits(t *testing.T) {
defer conn.Close()
defer client.Close()
err = sftpUploadFile(testFilePath, testFileName+".quota.1", testFileSize, client)
assert.Error(t, err, "user is over quota size, upload must fail")
if assert.Error(t, err, "user is over quota size, upload must fail") {
assert.Contains(t, err.Error(), "SSH_FX_FAILURE")
assert.Contains(t, err.Error(), common.ErrQuotaExceeded.Error())
}
err = client.Rename(testFileName, testFileName+".quota")
assert.NoError(t, err)
err = client.Rename(testFileName+".quota", testFileName)
@@ -3595,7 +3601,10 @@ func TestQuotaLimits(t *testing.T) {
defer conn.Close()
defer client.Close()
err = sftpUploadFile(testFilePath1, testFileName1, testFileSize1, client)
assert.Error(t, err)
if assert.Error(t, err) {
assert.Contains(t, err.Error(), "SSH_FX_FAILURE")
assert.Contains(t, err.Error(), common.ErrQuotaExceeded.Error())
}
_, err = client.Stat(testFileName1)
assert.Error(t, err)
_, err = client.Lstat(testFileName1)