github.com/jordwest/imap-server@v0.0.0-20200627020849-1cf758ba359f/conn/command_append_test.go (about) 1 package conn_test 2 3 import ( 4 "github.com/jordwest/imap-server/conn" 5 . "github.com/onsi/ginkgo" 6 . "github.com/onsi/gomega" 7 ) 8 9 var _ = Describe("APPEND Command", func() { 10 Context("When a user is logged in", func() { 11 BeforeEach(func() { 12 tConn.SetState(conn.StateAuthenticated) 13 tConn.User = mStore.User 14 }) 15 16 It("should append a message with flags and date", func() { 17 SendLine("abcd.123 append \"INBOX\" (\\Seen) \"21-Jun-2015 01:00:25 +0900\" {123}") 18 ExpectResponse("+ go ahead, feed me your message") 19 SendLine("To: you@testing.com") 20 SendLine("From: me@testing.com") 21 SendLine("Subject: This is a newly appended email") 22 SendLine("") 23 SendLine("Hello! This is the body.") 24 SendLine("From me") 25 SendLine("") 26 ExpectResponse("abcd.123 OK APPEND completed") 27 28 // Ensure that the email was indeed appended 29 mbox := tConn.User.Mailboxes()[0] 30 Expect(mbox.Messages()).To(Equal(uint32(4))) 31 Expect(mbox.NextUID()).To(Equal(uint32(14))) 32 33 msg := mbox.MessageByUID(13) 34 Expect(msg.Header().Get("From")).To(Equal("me@testing.com")) 35 Expect(msg.Header().Get("To")).To(Equal("you@testing.com")) 36 Expect(msg.Header().Get("Subject")).To(Equal("This is a newly appended email")) 37 38 // Ensure no other emails were interfered with 39 msg = mbox.MessageBySequenceNumber(1) 40 Expect(msg.Header().Get("Subject")).To(Equal("Test email")) 41 msg = mbox.MessageBySequenceNumber(2) 42 Expect(msg.Header().Get("Subject")).To(Equal("Another test email")) 43 msg = mbox.MessageBySequenceNumber(3) 44 Expect(msg.Header().Get("Subject")).To(Equal("Last email")) 45 msg = mbox.MessageBySequenceNumber(4) 46 Expect(msg.Header().Get("Subject")).To(Equal("This is a newly appended email")) 47 }) 48 }) 49 })