github.com/pkg/sftp@v1.13.6/sftp_test.go (about) 1 package sftp 2 3 import ( 4 "errors" 5 "fmt" 6 "io" 7 "syscall" 8 "testing" 9 10 "github.com/stretchr/testify/assert" 11 ) 12 13 func TestErrFxCode(t *testing.T) { 14 table := []struct { 15 err error 16 fx fxerr 17 }{ 18 {err: errors.New("random error"), fx: ErrSSHFxFailure}, 19 {err: EBADF, fx: ErrSSHFxFailure}, 20 {err: syscall.ENOENT, fx: ErrSSHFxNoSuchFile}, 21 {err: syscall.EPERM, fx: ErrSSHFxPermissionDenied}, 22 {err: io.EOF, fx: ErrSSHFxEOF}, 23 {err: fmt.Errorf("wrapped permission denied error: %w", ErrSSHFxPermissionDenied), fx: ErrSSHFxPermissionDenied}, 24 {err: fmt.Errorf("wrapped op unsupported error: %w", ErrSSHFxOpUnsupported), fx: ErrSSHFxOpUnsupported}, 25 } 26 for _, tt := range table { 27 statusErr := statusFromError(1, tt.err).StatusError 28 assert.Equal(t, statusErr.FxCode(), tt.fx) 29 } 30 } 31 32 func TestSupportedExtensions(t *testing.T) { 33 for _, supportedExtension := range supportedSFTPExtensions { 34 _, err := getSupportedExtensionByName(supportedExtension.Name) 35 assert.NoError(t, err) 36 } 37 _, err := getSupportedExtensionByName("invalid@example.com") 38 assert.Error(t, err) 39 } 40 41 func TestExtensions(t *testing.T) { 42 var supportedExtensions []string 43 for _, supportedExtension := range supportedSFTPExtensions { 44 supportedExtensions = append(supportedExtensions, supportedExtension.Name) 45 } 46 47 testSFTPExtensions := []string{"hardlink@openssh.com"} 48 expectedSFTPExtensions := []sshExtensionPair{ 49 {"hardlink@openssh.com", "1"}, 50 } 51 err := SetSFTPExtensions(testSFTPExtensions...) 52 assert.NoError(t, err) 53 assert.Equal(t, expectedSFTPExtensions, sftpExtensions) 54 55 invalidSFTPExtensions := []string{"invalid@example.com"} 56 err = SetSFTPExtensions(invalidSFTPExtensions...) 57 assert.Error(t, err) 58 assert.Equal(t, expectedSFTPExtensions, sftpExtensions) 59 60 emptySFTPExtensions := []string{} 61 expectedSFTPExtensions = []sshExtensionPair{} 62 err = SetSFTPExtensions(emptySFTPExtensions...) 63 assert.NoError(t, err) 64 assert.Equal(t, expectedSFTPExtensions, sftpExtensions) 65 66 // if we only have an invalid extension nothing will be modified. 67 invalidSFTPExtensions = []string{ 68 "hardlink@openssh.com", 69 "invalid@example.com", 70 } 71 err = SetSFTPExtensions(invalidSFTPExtensions...) 72 assert.Error(t, err) 73 assert.Equal(t, expectedSFTPExtensions, sftpExtensions) 74 75 err = SetSFTPExtensions(supportedExtensions...) 76 assert.NoError(t, err) 77 assert.Equal(t, supportedSFTPExtensions, sftpExtensions) 78 }