func (m *Mother) MailClient() *mail.Client { env := NewEnvironment() mailConfig := mail.Config{ User: env.SMTPUser, Pass: env.SMTPPass, Host: env.SMTPHost, Port: env.SMTPPort, Secret: env.SMTPCRAMMD5Secret, TestMode: env.TestMode, SkipVerifySSL: !env.VerifySSL, DisableTLS: !env.SMTPTLS, LoggingEnabled: env.SMTPLoggingEnabled, } switch env.SMTPAuthMechanism { case SMTPAuthNone: mailConfig.AuthMechanism = mail.AuthNone case SMTPAuthPlain: mailConfig.AuthMechanism = mail.AuthPlain case SMTPAuthCRAMMD5: mailConfig.AuthMechanism = mail.AuthCRAMMD5 } return mail.NewClient(mailConfig) }
} ok, params := client.Extension("AUTH") Expect(ok).To(BeTrue()) Expect(params).To(Equal("PLAIN LOGIN")) ok, params = client.Extension("STARTTLS") Expect(ok).To(BeTrue()) Expect(params).To(Equal("")) }) }) Describe("AuthMechanism", func() { Context("when configured to use PLAIN auth", func() { BeforeEach(func() { config.AuthMechanism = mail.AuthPlain client = mail.NewClient(config) }) It("creates a PlainAuth strategy", func() { auth := smtp.PlainAuth("", config.User, config.Pass, config.Host) mechanism := client.AuthMechanism(logger) Expect(mechanism).To(BeAssignableToTypeOf(auth)) }) }) Context("when configured to use CRAMMD5 auth", func() { BeforeEach(func() { config.AuthMechanism = mail.AuthCRAMMD5 client = mail.NewClient(config)