mirror of
https://github.com/drakkan/sftpgo.git
synced 2025-12-07 06:40:54 +03:00
@@ -1069,6 +1069,78 @@ func TestSCPFileMode(t *testing.T) {
|
||||
assert.Equal(t, "1044", mode)
|
||||
}
|
||||
|
||||
func TestSCPUploadError(t *testing.T) {
|
||||
buf := make([]byte, 65535)
|
||||
stdErrBuf := make([]byte, 65535)
|
||||
writeErr := fmt.Errorf("test write error")
|
||||
mockSSHChannel := MockChannel{
|
||||
Buffer: bytes.NewBuffer(buf),
|
||||
StdErrBuffer: bytes.NewBuffer(stdErrBuf),
|
||||
ReadError: nil,
|
||||
WriteError: writeErr,
|
||||
}
|
||||
user := dataprovider.User{
|
||||
HomeDir: filepath.Join(os.TempDir()),
|
||||
Permissions: make(map[string][]string),
|
||||
}
|
||||
user.Permissions["/"] = []string{dataprovider.PermAny}
|
||||
fs := vfs.NewOsFs("", user.HomeDir, nil)
|
||||
|
||||
connection := &Connection{
|
||||
BaseConnection: common.NewBaseConnection("", common.ProtocolSFTP, user, fs),
|
||||
channel: &mockSSHChannel,
|
||||
}
|
||||
scpCommand := scpCommand{
|
||||
sshCommand: sshCommand{
|
||||
command: "scp",
|
||||
connection: connection,
|
||||
args: []string{"-t", "/"},
|
||||
},
|
||||
}
|
||||
err := scpCommand.handle()
|
||||
assert.EqualError(t, err, writeErr.Error())
|
||||
|
||||
mockSSHChannel = MockChannel{
|
||||
Buffer: bytes.NewBuffer([]byte("D0755 0 testdir\n")),
|
||||
StdErrBuffer: bytes.NewBuffer(stdErrBuf),
|
||||
ReadError: nil,
|
||||
WriteError: writeErr,
|
||||
}
|
||||
err = scpCommand.handleRecursiveUpload()
|
||||
assert.EqualError(t, err, writeErr.Error())
|
||||
|
||||
mockSSHChannel = MockChannel{
|
||||
Buffer: bytes.NewBuffer([]byte("D0755 a testdir\n")),
|
||||
StdErrBuffer: bytes.NewBuffer(stdErrBuf),
|
||||
ReadError: nil,
|
||||
WriteError: nil,
|
||||
}
|
||||
err = scpCommand.handleRecursiveUpload()
|
||||
assert.Error(t, err)
|
||||
}
|
||||
|
||||
func TestSCPInvalidEndDir(t *testing.T) {
|
||||
stdErrBuf := make([]byte, 65535)
|
||||
mockSSHChannel := MockChannel{
|
||||
Buffer: bytes.NewBuffer([]byte("E\n")),
|
||||
StdErrBuffer: bytes.NewBuffer(stdErrBuf),
|
||||
}
|
||||
fs := vfs.NewOsFs("", os.TempDir(), nil)
|
||||
connection := &Connection{
|
||||
BaseConnection: common.NewBaseConnection("", common.ProtocolSFTP, dataprovider.User{}, fs),
|
||||
channel: &mockSSHChannel,
|
||||
}
|
||||
scpCommand := scpCommand{
|
||||
sshCommand: sshCommand{
|
||||
command: "scp",
|
||||
connection: connection,
|
||||
args: []string{"-t", "/tmp"},
|
||||
},
|
||||
}
|
||||
err := scpCommand.handleRecursiveUpload()
|
||||
assert.EqualError(t, err, "unacceptable end dir command")
|
||||
}
|
||||
|
||||
func TestSCPParseUploadMessage(t *testing.T) {
|
||||
buf := make([]byte, 65535)
|
||||
stdErrBuf := make([]byte, 65535)
|
||||
|
||||
Reference in New Issue
Block a user