Skip to content

Commit 4a8703a

Browse files
committed
fix test: DONE terminator should have no tag
add test: accept lowercase DONE
1 parent 1564865 commit 4a8703a

1 file changed

Lines changed: 44 additions & 3 deletions

File tree

imap/idle_test.go

Lines changed: 44 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,13 @@ package imap_test
22

33
import (
44
"fmt"
5-
"github.com/stretchr/testify/require"
65
"mokapi/imap"
76
"mokapi/imap/imaptest"
87
"mokapi/try"
98
"testing"
109
"time"
10+
11+
"github.com/stretchr/testify/require"
1112
)
1213

1314
func TestIdle(t *testing.T) {
@@ -62,7 +63,47 @@ func TestIdle(t *testing.T) {
6263
require.NoError(t, err)
6364
require.Equal(t, "+ idling", res)
6465

65-
res, err = c.SendRaw("A01 DONE")
66+
res, err = c.SendRaw("DONE")
67+
require.NoError(t, err)
68+
require.Equal(t, "A01 OK IDLE terminated", res)
69+
},
70+
},
71+
{
72+
name: "idle and done with lower case",
73+
handler: func(t *testing.T) imap.Handler {
74+
return &imaptest.Handler{
75+
SelectFunc: func(mailbox string, readonly bool, session map[string]interface{}) (*imap.Selected, error) {
76+
return &imap.Selected{}, nil
77+
},
78+
IdleFunc: func(w imap.UpdateWriter, done chan struct{}, session map[string]interface{}) error {
79+
session["idle"] = done
80+
return nil
81+
},
82+
UnselectFunc: func(session map[string]interface{}) error {
83+
done := session["idle"].(chan struct{})
84+
doneClosed := false
85+
select {
86+
case <-done:
87+
doneClosed = true
88+
case <-time.After(time.Second):
89+
}
90+
91+
require.True(t, doneClosed, "done is closed")
92+
return nil
93+
},
94+
}
95+
},
96+
test: func(t *testing.T, c *imap.Client) {
97+
err := c.PlainAuth("", "bob", "password")
98+
require.NoError(t, err)
99+
_, err = c.Select("INBOX", false)
100+
require.NoError(t, err)
101+
102+
res, err := c.SendRaw("A01 idle")
103+
require.NoError(t, err)
104+
require.Equal(t, "+ idling", res)
105+
106+
res, err = c.SendRaw("done")
66107
require.NoError(t, err)
67108
require.Equal(t, "A01 OK IDLE terminated", res)
68109
},
@@ -125,7 +166,7 @@ func TestIdle(t *testing.T) {
125166
}()
126167

127168
c := imap.NewClient(fmt.Sprintf("localhost:%v", p))
128-
defer c.Close()
169+
defer func() { _ = c.Close() }()
129170

130171
_, err := c.Dial()
131172
require.NoError(t, err)

0 commit comments

Comments
 (0)