Skip to content

Commit ee6ee47

Browse files
committed
add test for IMAP updates while idle
1 parent 74130d2 commit ee6ee47

1 file changed

Lines changed: 47 additions & 0 deletions

File tree

imap/idle_test.go

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,53 @@ func TestIdle(t *testing.T) {
143143
require.NoError(t, err)
144144
require.Equal(t, "+ idling", res)
145145

146+
res, err = c.SendRaw("A01 FINISHED")
147+
require.NoError(t, err)
148+
require.Equal(t, "A01 BAD Expected DONE to end IDLE", res)
149+
},
150+
},
151+
{
152+
name: "send updates while idle",
153+
handler: func(t *testing.T) imap.Handler {
154+
return &imaptest.Handler{
155+
SelectFunc: func(mailbox string, readonly bool, session map[string]interface{}) (*imap.Selected, error) {
156+
return &imap.Selected{}, nil
157+
},
158+
IdleFunc: func(w imap.UpdateWriter, done chan struct{}, session map[string]interface{}) error {
159+
session["idle"] = done
160+
go func() {
161+
err := w.WriteNumMessages(10)
162+
require.NoError(t, err)
163+
err = w.WriteMessageFlags(20, []imap.Flag{imap.FlagSeen})
164+
require.NoError(t, err)
165+
err = w.WriteExpunge(1)
166+
}()
167+
return nil
168+
},
169+
}
170+
},
171+
test: func(t *testing.T, c *imap.Client) {
172+
err := c.PlainAuth("", "bob", "password")
173+
require.NoError(t, err)
174+
_, err = c.Select("INBOX", false)
175+
require.NoError(t, err)
176+
177+
res, err := c.SendRaw("A01 IDLE")
178+
require.NoError(t, err)
179+
require.Equal(t, "+ idling", res)
180+
181+
res, err = c.ReadLine()
182+
require.NoError(t, err)
183+
require.Equal(t, "* 10 EXISTS", res)
184+
185+
res, err = c.ReadLine()
186+
require.NoError(t, err)
187+
require.Equal(t, "* 20 FETCH (\\Seen)", res)
188+
189+
res, err = c.ReadLine()
190+
require.NoError(t, err)
191+
require.Equal(t, "* 1 EXPUNGE", res)
192+
146193
res, err = c.SendRaw("A01 FINISHED")
147194
require.NoError(t, err)
148195
require.Equal(t, "A01 BAD Expected DONE to end IDLE", res)

0 commit comments

Comments
 (0)