internal/imapc/fuzz_test.go
25 lines · 580 bytes
1 symbol in this file
1package imapc
2
3import (
4 "bufio"
5 "bytes"
6 "net"
7 "testing"
8)
9
10// FuzzReadResponse feeds server bytes to the response reader, literals
11// included.
12func FuzzReadResponse(f *testing.F) {
13 f.Add([]byte("* 1 FETCH (UID 3 BODY[] {5}\r\nhello)\r\ng1 OK done\r\n"))
14 f.Add([]byte("* SEARCH 1 2 3\r\n* OK {99999999999}\r\n"))
15 f.Fuzz(func(t *testing.T, in []byte) {
16 a, b := net.Pipe()
17 defer b.Close()
18 c := &Client{conn: a, r: bufio.NewReader(bytes.NewReader(in)), left: cmdBudget}
19 for i := 0; i < 8; i++ {
20 if _, err := c.readResponse(); err != nil {
21 return
22 }
23 }
24 })
25}