Retrのテストの追加と全体の最適化。
This commit is contained in:
153
pop3_test.go
153
pop3_test.go
@@ -16,25 +16,8 @@ func TestSingleLineResponse(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for i := 0; i < len(helloServer); i++ {
|
for i := 0; i < len(helloServer); i++ {
|
||||||
server := strings.Join(strings.Split(baseHelloServer+helloServer[i], "\n"), "\r\n")
|
execute(t, helloServer[i], helloClient[i], func(t *testing.T, c *Client) {
|
||||||
client := strings.Join(strings.Split(baseHelloClient+helloClient[i], "\n"), "\r\n")
|
var err error
|
||||||
|
|
||||||
var cmdbuf bytes.Buffer
|
|
||||||
|
|
||||||
bcmdbuf := bufio.NewWriter(&cmdbuf)
|
|
||||||
|
|
||||||
var fake faker
|
|
||||||
fake.ReadWriter = bufio.NewReadWriter(bufio.NewReader(strings.NewReader(server)), bcmdbuf)
|
|
||||||
|
|
||||||
c, err := NewClient(fake)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("NewClient: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
defer c.Close()
|
|
||||||
|
|
||||||
err = nil
|
|
||||||
|
|
||||||
switch i {
|
switch i {
|
||||||
case 0:
|
case 0:
|
||||||
@@ -81,7 +64,7 @@ func TestSingleLineResponse(t *testing.T) {
|
|||||||
t.Errorf("Uidl number:\nexpected:\n[%d]\nactual:\n[%d]\n", 1, number)
|
t.Errorf("Uidl number:\nexpected:\n[%d]\nactual:\n[%d]\n", 1, number)
|
||||||
}
|
}
|
||||||
if uid != "DJzjbtr5hb2Lefq5Ass6eMjtEBV" {
|
if uid != "DJzjbtr5hb2Lefq5Ass6eMjtEBV" {
|
||||||
t.Errorf("Uidl uid:\nexpected:\n[%s]\nactual:\n[%s]\n", "ALAdT7cAAKixUXp+aAhZJGlPYC8", uid)
|
t.Errorf("Uidl uid:\nexpected:\n[%s]\nactual:\n[%s]\n", "DJzjbtr5hb2Lefq5Ass6eMjtEBV", uid)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case 7:
|
case 7:
|
||||||
@@ -101,41 +84,43 @@ func TestSingleLineResponse(t *testing.T) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("Command %d failed: %v", i, err)
|
t.Errorf("Command %d failed: %v", i, err)
|
||||||
}
|
}
|
||||||
|
})
|
||||||
bcmdbuf.Flush()
|
|
||||||
|
|
||||||
actualcmds := cmdbuf.String()
|
|
||||||
|
|
||||||
if client != actualcmds {
|
|
||||||
t.Errorf("Got:\n[%s]\nExpected:\n[%s]", actualcmds, client)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestRetr(t *testing.T) {
|
func TestRetr(t *testing.T) {
|
||||||
|
execute(t, retrServer, retrClient, func(t *testing.T, c *Client) {
|
||||||
|
var err error
|
||||||
|
var content string
|
||||||
|
|
||||||
|
content, err = c.Retr(1)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("Command failed: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
expected := `Date: Sat, 15 Feb 2014 13:49:28 +0900 (JST)
|
||||||
|
From: <from@example.com>
|
||||||
|
Subject: test mail
|
||||||
|
To: to@example.com
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=utf-8
|
||||||
|
Content-Transfer-Encoding: quoted-printable
|
||||||
|
|
||||||
|
This is a test mail.`
|
||||||
|
|
||||||
|
expected = strings.Replace(expected, "\n", "\r\n", -1)
|
||||||
|
|
||||||
|
if content != expected {
|
||||||
|
t.Fatalf("excepted:\n[%s]\nactual:\n[%s]\n", expected, content)
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestListAll(t *testing.T) {
|
func TestListAll(t *testing.T) {
|
||||||
server := strings.Join(strings.Split(baseHelloServer+listAllServer, "\n"), "\r\n")
|
execute(t, listAllServer, listAllClient, func(t *testing.T, c *Client) {
|
||||||
client := strings.Join(strings.Split(baseHelloClient+listAllClient, "\n"), "\r\n")
|
var err error
|
||||||
|
|
||||||
var cmdbuf bytes.Buffer
|
|
||||||
|
|
||||||
bcmdbuf := bufio.NewWriter(&cmdbuf)
|
|
||||||
|
|
||||||
var fake faker
|
|
||||||
fake.ReadWriter = bufio.NewReadWriter(bufio.NewReader(strings.NewReader(server)), bcmdbuf)
|
|
||||||
|
|
||||||
c, err := NewClient(fake)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("NewClient: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
defer c.Close()
|
|
||||||
|
|
||||||
err = nil
|
|
||||||
exceptedMis := []MessageInfo{
|
exceptedMis := []MessageInfo{
|
||||||
MessageInfo{Number: 1, Size: 4404},
|
MessageInfo{Number: 1, Size: 4404},
|
||||||
MessageInfo{Number: 2, Size: 3921},
|
MessageInfo{Number: 2, Size: 3921},
|
||||||
@@ -162,36 +147,13 @@ func TestListAll(t *testing.T) {
|
|||||||
t.Fatalf("%d: Size\nexcepted:\n[%d]\nactual:\n[%d]\n", i, exceptedMis[i].Size, mi.Size)
|
t.Fatalf("%d: Size\nexcepted:\n[%d]\nactual:\n[%d]\n", i, exceptedMis[i].Size, mi.Size)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
})
|
||||||
bcmdbuf.Flush()
|
|
||||||
|
|
||||||
actualcmds := cmdbuf.String()
|
|
||||||
|
|
||||||
if client != actualcmds {
|
|
||||||
t.Errorf("Got:\n[%s]\nExpected:\n[%s]", actualcmds, client)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestUidlAll(t *testing.T) {
|
func TestUidlAll(t *testing.T) {
|
||||||
server := strings.Join(strings.Split(baseHelloServer+uidlAllServer, "\n"), "\r\n")
|
execute(t, uidlAllServer, uidlAllClient, func(t *testing.T, c *Client) {
|
||||||
client := strings.Join(strings.Split(baseHelloClient+uidlAllClient, "\n"), "\r\n")
|
var err error
|
||||||
|
|
||||||
var cmdbuf bytes.Buffer
|
|
||||||
|
|
||||||
bcmdbuf := bufio.NewWriter(&cmdbuf)
|
|
||||||
|
|
||||||
var fake faker
|
|
||||||
fake.ReadWriter = bufio.NewReadWriter(bufio.NewReader(strings.NewReader(server)), bcmdbuf)
|
|
||||||
|
|
||||||
c, err := NewClient(fake)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("NewClient: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
defer c.Close()
|
|
||||||
|
|
||||||
err = nil
|
|
||||||
exceptedMis := []MessageInfo{
|
exceptedMis := []MessageInfo{
|
||||||
MessageInfo{Number: 1, Uid: "DJzjbtr5hb2Lefq5Ass6eMjtEBV"},
|
MessageInfo{Number: 1, Uid: "DJzjbtr5hb2Lefq5Ass6eMjtEBV"},
|
||||||
MessageInfo{Number: 2, Uid: "IeHR1LtUfd5MI1gz1sYOU4TG1rx"},
|
MessageInfo{Number: 2, Uid: "IeHR1LtUfd5MI1gz1sYOU4TG1rx"},
|
||||||
@@ -218,6 +180,29 @@ func TestUidlAll(t *testing.T) {
|
|||||||
t.Fatalf("%d: Uid\nexcepted:\n[%s]\nactual:\n[%s]\n", i, exceptedMis[i].Uid, mi.Uid)
|
t.Fatalf("%d: Uid\nexcepted:\n[%s]\nactual:\n[%s]\n", i, exceptedMis[i].Uid, mi.Uid)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func execute(t *testing.T, sServer, sClient string, processFn processFunc) {
|
||||||
|
server := strings.Join(strings.Split(baseHelloServer+sServer, "\n"), "\r\n")
|
||||||
|
client := strings.Join(strings.Split(baseHelloClient+sClient, "\n"), "\r\n")
|
||||||
|
|
||||||
|
var cmdbuf bytes.Buffer
|
||||||
|
|
||||||
|
bcmdbuf := bufio.NewWriter(&cmdbuf)
|
||||||
|
|
||||||
|
var fake faker
|
||||||
|
fake.ReadWriter = bufio.NewReadWriter(bufio.NewReader(strings.NewReader(server)), bcmdbuf)
|
||||||
|
|
||||||
|
c, err := NewClient(fake)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("NewClient: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
defer c.Close()
|
||||||
|
|
||||||
|
processFn(t, c)
|
||||||
|
|
||||||
bcmdbuf.Flush()
|
bcmdbuf.Flush()
|
||||||
|
|
||||||
@@ -228,6 +213,8 @@ func TestUidlAll(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type processFunc func(t *testing.T, c *Client)
|
||||||
|
|
||||||
var baseHelloServer = `+OK hello from popgate(2.35.25)
|
var baseHelloServer = `+OK hello from popgate(2.35.25)
|
||||||
`
|
`
|
||||||
|
|
||||||
@@ -252,17 +239,33 @@ var helloClient = []string{
|
|||||||
"USER testuser\n",
|
"USER testuser\n",
|
||||||
"PASS testpassword\n",
|
"PASS testpassword\n",
|
||||||
"STAT\n",
|
"STAT\n",
|
||||||
"",//"RETR 1\n",
|
"", //"RETR 1\n",
|
||||||
"LIST 1\n",
|
"LIST 1\n",
|
||||||
"",//"LIST\n",
|
"", //"LIST\n",
|
||||||
"UIDL 1\n",
|
"UIDL 1\n",
|
||||||
"",//"UIDL\n",
|
"", //"UIDL\n",
|
||||||
"DELE 1\n",
|
"DELE 1\n",
|
||||||
"NOOP\n",
|
"NOOP\n",
|
||||||
"RSET\n",
|
"RSET\n",
|
||||||
"QUIT\n",
|
"QUIT\n",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var retrServer = `+OK 3970 octets
|
||||||
|
Date: Sat, 15 Feb 2014 13:49:28 +0900 (JST)
|
||||||
|
From: <from@example.com>
|
||||||
|
Subject: test mail
|
||||||
|
To: to@example.com
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=utf-8
|
||||||
|
Content-Transfer-Encoding: quoted-printable
|
||||||
|
|
||||||
|
This is a test mail.
|
||||||
|
.
|
||||||
|
`
|
||||||
|
|
||||||
|
var retrClient = `RETR 1
|
||||||
|
`
|
||||||
|
|
||||||
var listAllServer = `+OK 6 messages (78680 octets)
|
var listAllServer = `+OK 6 messages (78680 octets)
|
||||||
1 4404
|
1 4404
|
||||||
2 3921
|
2 3921
|
||||||
|
|||||||
Reference in New Issue
Block a user