2011-09-05 23:36:14 +02:00
|
|
|
package ftp
|
|
|
|
|
|
|
|
import (
|
|
|
|
"bytes"
|
|
|
|
"io/ioutil"
|
|
|
|
"testing"
|
2015-03-16 23:45:56 +01:00
|
|
|
"time"
|
2011-09-05 23:36:14 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
const (
|
|
|
|
testData = "Just some text"
|
2013-02-17 10:31:56 +01:00
|
|
|
testDir = "mydir"
|
2011-09-05 23:36:14 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
func TestConn(t *testing.T) {
|
2015-03-16 23:45:56 +01:00
|
|
|
c, err := DialTimeout("localhost:21", 5*time.Second)
|
2011-09-06 18:27:30 +02:00
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
err = c.Login("anonymous", "anonymous")
|
2011-09-05 23:36:14 +02:00
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
err = c.NoOp()
|
|
|
|
if err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
data := bytes.NewBufferString(testData)
|
|
|
|
err = c.Stor("test", data)
|
|
|
|
if err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
_, err = c.List(".")
|
|
|
|
if err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
err = c.Rename("test", "tset")
|
|
|
|
if err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
r, err := c.Retr("tset")
|
|
|
|
if err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
} else {
|
|
|
|
buf, err := ioutil.ReadAll(r)
|
|
|
|
if err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
}
|
|
|
|
if string(buf) != testData {
|
|
|
|
t.Errorf("'%s'", buf)
|
|
|
|
}
|
|
|
|
r.Close()
|
|
|
|
}
|
|
|
|
|
2013-07-10 12:18:32 +02:00
|
|
|
r, err = c.Retr("tset")
|
|
|
|
if err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
} else {
|
|
|
|
r.Close()
|
|
|
|
}
|
|
|
|
|
2011-09-06 00:02:01 +02:00
|
|
|
err = c.Delete("tset")
|
|
|
|
if err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
}
|
|
|
|
|
2011-09-07 16:52:52 +02:00
|
|
|
err = c.MakeDir(testDir)
|
2011-09-06 00:02:01 +02:00
|
|
|
if err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
}
|
|
|
|
|
2011-09-07 16:52:52 +02:00
|
|
|
err = c.ChangeDir(testDir)
|
|
|
|
if err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
dir, err := c.CurrentDir()
|
|
|
|
if err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
} else {
|
2013-02-17 10:31:56 +01:00
|
|
|
if dir != "/"+testDir {
|
2011-09-07 16:52:52 +02:00
|
|
|
t.Error("Wrong dir: " + dir)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
err = c.ChangeDirToParent()
|
|
|
|
if err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
err = c.RemoveDir(testDir)
|
2011-09-06 00:02:01 +02:00
|
|
|
if err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
}
|
|
|
|
|
2013-05-19 21:15:23 +02:00
|
|
|
err = c.Logout()
|
|
|
|
if err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
}
|
|
|
|
|
2011-09-05 23:36:14 +02:00
|
|
|
c.Quit()
|
2011-09-07 16:52:52 +02:00
|
|
|
|
|
|
|
err = c.NoOp()
|
|
|
|
if err == nil {
|
|
|
|
t.Error("Expected error")
|
|
|
|
}
|
2011-09-05 23:36:14 +02:00
|
|
|
}
|
2013-07-08 07:48:11 +02:00
|
|
|
|
2013-07-08 08:44:16 +02:00
|
|
|
// ftp.mozilla.org uses multiline 220 response
|
2015-03-16 23:45:56 +01:00
|
|
|
func TestMultiline(t *testing.T) {
|
|
|
|
c, err := DialTimeout("ftp.mozilla.org:21", 5*time.Second)
|
2013-07-08 07:48:11 +02:00
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
err = c.Login("anonymous", "anonymous")
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
_, err = c.List(".")
|
|
|
|
if err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
}
|
2013-07-08 08:44:16 +02:00
|
|
|
|
|
|
|
c.Quit()
|
2013-07-08 07:48:11 +02:00
|
|
|
}
|