@@ -2,12 +2,14 @@ package imap_test
22
33import (
44 "fmt"
5- "github.com/stretchr/testify/require"
65 "mokapi/imap"
76 "mokapi/imap/imaptest"
87 "mokapi/smtp"
98 "mokapi/try"
109 "testing"
10+ "time"
11+
12+ "github.com/stretchr/testify/require"
1113)
1214
1315func TestAppend (t * testing.T ) {
@@ -37,7 +39,7 @@ func TestAppend(t *testing.T) {
3739 }()
3840
3941 c := imap .NewClient (fmt .Sprintf ("localhost:%v" , p ))
40- defer c .Close ()
42+ defer func () { _ = c .Close () } ()
4143
4244 _ , err := c .Dial ()
4345 require .NoError (t , err )
@@ -73,6 +75,7 @@ func TestAppend_Flags(t *testing.T) {
7375 handler := & imaptest.Handler {
7476 AppendFunc : func (mailbox string , msg * smtp.Message , opt imap.AppendOptions ) error {
7577 require .Equal (t , []imap.Flag {imap .FlagSeen }, opt .Flags )
78+ require .Greater (t , opt .Date , time.Time {})
7679 return nil
7780 },
7881 }
@@ -89,7 +92,7 @@ func TestAppend_Flags(t *testing.T) {
8992 }()
9093
9194 c := imap .NewClient (fmt .Sprintf ("localhost:%v" , p ))
92- defer c .Close ()
95+ defer func () { _ = c .Close () } ()
9396
9497 _ , err := c .Dial ()
9598 require .NoError (t , err )
@@ -119,3 +122,56 @@ func TestAppend_Flags(t *testing.T) {
119122 require .Equal (t , "A003 OK APPEND completed" , res2 )
120123
121124}
125+
126+ func TestAppend_Flags_And_Time (t * testing.T ) {
127+
128+ handler := & imaptest.Handler {
129+ AppendFunc : func (mailbox string , msg * smtp.Message , opt imap.AppendOptions ) error {
130+ require .Equal (t , []imap.Flag {imap .FlagSeen }, opt .Flags )
131+ require .Equal (t , "2026-04-26T14:20:31+02:00" , opt .Date .Format (time .RFC3339 ))
132+ return nil
133+ },
134+ }
135+
136+ p := try .GetFreePort ()
137+ s := & imap.Server {
138+ Addr : fmt .Sprintf (":%v" , p ),
139+ Handler : handler ,
140+ }
141+ defer s .Close ()
142+ go func () {
143+ err := s .ListenAndServe ()
144+ require .ErrorIs (t , err , imap .ErrServerClosed )
145+ }()
146+
147+ c := imap .NewClient (fmt .Sprintf ("localhost:%v" , p ))
148+ defer func () { _ = c .Close () }()
149+
150+ _ , err := c .Dial ()
151+ require .NoError (t , err )
152+
153+ err = c .PlainAuth ("" , "" , "" )
154+ require .NoError (t , err )
155+
156+ res , err := c .SendRaw ("A003 APPEND Sent (\\ Seen) \" 26-Apr-2026 14:20:31 +0200\" {310}" )
157+ require .NoError (t , err )
158+ require .Equal (t , "+ Ready for literal data" , res )
159+
160+ request := []string {
161+ "Date: Mon, 7 Feb 1994 21:52:25 -0800 (PST)" ,
162+ "From: Fred Foobar <foobar@Blurdybloop.COM>" ,
163+ "Subject: afternoon meeting" ,
164+ "To: mooch@owatagu.siam.edu" ,
165+ "Message-Id: <B27397-0100000@Blurdybloop.COM>" ,
166+ "MIME-Version: 1.0" ,
167+ "Content-Type: TEXT/PLAIN; CHARSET=US-ASCII" ,
168+ "" ,
169+ "Hello Joe, do you think we can meet at 3:30 tomorrow?" ,
170+ "" ,
171+ }
172+
173+ res2 , err := c .SendRawLines (request )
174+ require .NoError (t , err )
175+ require .Equal (t , "A003 OK APPEND completed" , res2 )
176+
177+ }
0 commit comments