62 lines
1.1 KiB
Go
62 lines
1.1 KiB
Go
package email
|
|
|
|
import (
|
|
"crypto/tls"
|
|
"io"
|
|
"net/smtp"
|
|
)
|
|
|
|
type MockCallbackFn func(params ...interface{})
|
|
|
|
func NewMockMailService(callbackFn MockCallbackFn, params ...interface{}) *EmailService {
|
|
return &EmailService{
|
|
auth: smtp.PlainAuth("", "", "", ""),
|
|
host: "",
|
|
port: "",
|
|
from: "",
|
|
tlsconfig: &tls.Config{
|
|
InsecureSkipVerify: true,
|
|
ServerName: "",
|
|
},
|
|
dial: func(hostPort string) (SMTPClientIface, error) {
|
|
callbackFn(params)
|
|
return &mockSMTP{}, nil
|
|
},
|
|
}
|
|
|
|
}
|
|
|
|
type mockWriter struct{}
|
|
|
|
func (w *mockWriter) Close() error {
|
|
return nil
|
|
}
|
|
func (w *mockWriter) Write(p []byte) (n int, err error) {
|
|
return 10, nil
|
|
}
|
|
|
|
// Mock SMTP Client
|
|
type mockSMTP struct{}
|
|
|
|
func (m *mockSMTP) StartTLS(*tls.Config) error {
|
|
return nil
|
|
}
|
|
func (m *mockSMTP) Auth(a smtp.Auth) error {
|
|
return nil
|
|
}
|
|
func (m *mockSMTP) Close() error {
|
|
return nil
|
|
}
|
|
func (m *mockSMTP) Data() (io.WriteCloser, error) {
|
|
return &mockWriter{}, nil
|
|
}
|
|
func (m *mockSMTP) Mail(from string) error {
|
|
return nil
|
|
}
|
|
func (m *mockSMTP) Quit() error {
|
|
return nil
|
|
}
|
|
func (m *mockSMTP) Rcpt(to string) error {
|
|
return nil
|
|
}
|