40 lines
1020 B
Go
40 lines
1020 B
Go
package imapclient_test
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/emersion/go-imap/v2"
|
|
)
|
|
|
|
func TestFetch(t *testing.T) {
|
|
client, server := newClientServerPair(t, imap.ConnStateSelected)
|
|
defer client.Close()
|
|
defer server.Close()
|
|
|
|
seqSet := imap.SeqSetNum(1)
|
|
bodySection := &imap.FetchItemBodySection{}
|
|
fetchOptions := &imap.FetchOptions{
|
|
BodySection: []*imap.FetchItemBodySection{bodySection},
|
|
}
|
|
messages, err := client.Fetch(seqSet, fetchOptions).Collect()
|
|
if err != nil {
|
|
t.Fatalf("failed to fetch first message: %v", err)
|
|
} else if len(messages) != 1 {
|
|
t.Fatalf("len(messages) = %v, want 1", len(messages))
|
|
}
|
|
|
|
msg := messages[0]
|
|
if len(msg.BodySection) != 1 {
|
|
t.Fatalf("len(msg.BodySection) = %v, want 1", len(msg.BodySection))
|
|
}
|
|
b := msg.FindBodySection(bodySection)
|
|
if b == nil {
|
|
t.Fatalf("FindBodySection() = nil")
|
|
}
|
|
body := strings.ReplaceAll(string(b), "\r\n", "\n")
|
|
if body != simpleRawMessage {
|
|
t.Errorf("body mismatch: got \n%v\n but want \n%v", body, simpleRawMessage)
|
|
}
|
|
}
|