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  })