internal/imapc/fuzz_test.go

v1.43.0
gitbay/internal/imapc/fuzz_test.go history · blame · raw

25 lines · 580 bytes

 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}