Files
go-imap/responses/list_test.go

66 lines
1.2 KiB
Go

package responses
import (
"bytes"
"testing"
"github.com/emersion/go-imap"
)
func TestListSlashDelimiter(t *testing.T) {
mbox := &imap.MailboxInfo{}
if err := mbox.Parse([]interface{}{
[]interface{}{"\\Unseen"},
"/",
"INBOX",
}); err != nil {
t.Error(err)
t.FailNow()
}
if response := getListResponse(t, mbox); response != `* LIST (\Unseen) "/" INBOX`+"\r\n" {
t.Error("Unexpected response:", response)
}
}
func TestListNILDelimiter(t *testing.T) {
mbox := &imap.MailboxInfo{}
if err := mbox.Parse([]interface{}{
[]interface{}{"\\Unseen"},
nil,
"INBOX",
}); err != nil {
t.Error(err)
t.FailNow()
}
if response := getListResponse(t, mbox); response != `* LIST (\Unseen) NIL INBOX`+"\r\n" {
t.Error("Unexpected response:", response)
}
}
func newListResponse(mbox *imap.MailboxInfo) (l *List) {
l = &List{Mailboxes: make(chan *imap.MailboxInfo)}
go func() {
l.Mailboxes <- mbox
close(l.Mailboxes)
}()
return
}
func getListResponse(t *testing.T, mbox *imap.MailboxInfo) string {
b := &bytes.Buffer{}
w := imap.NewWriter(b)
if err := newListResponse(mbox).WriteTo(w); err != nil {
t.Error(err)
t.FailNow()
}
return b.String()
}