ftp/client_test.go

171 lines
2.4 KiB
Go
Raw Normal View History

package ftp
import (
"bytes"
"io/ioutil"
"testing"
"time"
)
const (
testData = "Just some text"
2013-02-17 10:31:56 +01:00
testDir = "mydir"
)
func TestConn(t *testing.T) {
2015-08-18 18:39:31 +02:00
if testing.Short() {
t.Skip("skipping test in short mode.")
}
c, err := DialTimeout("localhost:21", 5*time.Second)
if err != nil {
t.Fatal(err)
}
err = c.Login("anonymous", "anonymous")
if err != nil {
t.Fatal(err)
}
err = c.NoOp()
if err != nil {
t.Error(err)
}
2015-08-18 19:34:22 +02:00
err = c.ChangeDir("incoming")
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()
}
r, err = c.Retr("tset")
if err != nil {
t.Error(err)
} else {
r.Close()
}
err = c.Delete("tset")
if err != nil {
t.Error(err)
}
err = c.MakeDir(testDir)
if err != nil {
t.Error(err)
}
err = c.ChangeDir(testDir)
if err != nil {
t.Error(err)
}
dir, err := c.CurrentDir()
if err != nil {
t.Error(err)
} else {
2015-08-18 19:34:22 +02:00
if dir != "/incoming/"+testDir {
t.Error("Wrong dir: " + dir)
}
}
err = c.ChangeDirToParent()
if err != nil {
t.Error(err)
}
err = c.RemoveDir(testDir)
if err != nil {
t.Error(err)
}
2013-05-19 21:15:23 +02:00
err = c.Logout()
if err != nil {
t.Error(err)
}
c.Quit()
err = c.NoOp()
if err == nil {
t.Error("Expected error")
}
}
2013-07-08 07:48:11 +02:00
// ftp.mozilla.org uses multiline 220 response
func TestMultiline(t *testing.T) {
2015-08-18 18:39:31 +02:00
if testing.Short() {
t.Skip("skipping test in short mode.")
}
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)
}
c.Quit()
2013-07-08 07:48:11 +02:00
}
// antioche.antioche.eu.org with IPv6
func TestConnIPv6(t *testing.T) {
2015-08-18 19:02:23 +02:00
if testing.Short() {
t.Skip("skipping test in short mode.")
}
2015-08-18 19:03:26 +02:00
c, err := DialTimeout("[2001:660:3302:282a:204:75ff:fe9f:9e11]:21", 5*time.Second)
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)
}
c.Quit()
}