github.com/orderbynull/buffalo@v0.11.1/mail/smtp_sender_test.go (about) 1 package mail_test 2 3 import ( 4 "bytes" 5 "testing" 6 7 "github.com/gobuffalo/buffalo/mail" 8 "github.com/gobuffalo/buffalo/render" 9 "github.com/gobuffalo/x/fakesmtp" 10 "github.com/stretchr/testify/require" 11 ) 12 13 var sender mail.Sender 14 var rend *render.Engine 15 var smtpServer *fakesmtp.Server 16 17 const smtpPort = "2002" 18 19 func init() { 20 rend = render.New(render.Options{}) 21 smtpServer, _ = fakesmtp.New(smtpPort) 22 sender, _ = mail.NewSMTPSender("127.0.0.1", smtpPort, "username", "password") 23 24 go smtpServer.Start(smtpPort) 25 } 26 27 func TestSendPlain(t *testing.T) { 28 smtpServer.Clear() 29 r := require.New(t) 30 31 m := mail.NewMessage() 32 m.From = "mark@example.com" 33 m.To = []string{"something@something.com"} 34 m.Subject = "Cool Message" 35 m.CC = []string{"other@other.com", "my@other.com"} 36 m.Bcc = []string{"secret@other.com"} 37 38 m.AddAttachment("someFile.txt", "text/plain", bytes.NewBuffer([]byte("hello"))) 39 m.AddBody(rend.String("Hello <%= Name %>"), render.Data{"Name": "Antonio"}) 40 r.Equal(m.Bodies[0].Content, "Hello Antonio") 41 42 m.SetHeader("X-SMTPAPI", `{"send_at": 1409348513}`) 43 44 err := sender.Send(m) 45 r.Nil(err) 46 47 lastMessage := smtpServer.LastMessage() 48 49 r.Contains(lastMessage, "FROM:<mark@example.com>") 50 r.Contains(lastMessage, "RCPT TO:<other@other.com>") 51 r.Contains(lastMessage, "RCPT TO:<my@other.com>") 52 r.Contains(lastMessage, "RCPT TO:<secret@other.com>") 53 r.Contains(lastMessage, "Subject: Cool Message") 54 r.Contains(lastMessage, "Cc: other@other.com, my@other.com") 55 r.Contains(lastMessage, "Content-Type: text/plain") 56 r.Contains(lastMessage, "Hello Antonio") 57 r.Contains(lastMessage, "Content-Disposition: attachment; filename=\"someFile.txt\"") 58 r.Contains(lastMessage, "aGVsbG8=") //base64 of the file content 59 r.Contains(lastMessage, `X-SMTPAPI: {"send_at": 1409348513}`) 60 }