Alerting: Add abstraction layer and testing hooks in front of SMTP dialer (#43875)

* Add abstraction layer above SMTP communication

* Fix issues with attachments and sync command

* Tests for bad SMTP behavior

* Separate tests between async and sync entry points. Test difference between them

* Return interface so Wire can properly map types

* Address feedback from George
This commit is contained in:
Alexander Weaver
2022-01-13 15:19:15 -06:00
committed by GitHub
parent 8114f6b065
commit c68eefd398
8 changed files with 551 additions and 183 deletions
+32
View File
@@ -0,0 +1,32 @@
package notifications
import "fmt"
type FakeMailer struct {
Sent []*Message
}
func NewFakeMailer() *FakeMailer {
return &FakeMailer{
Sent: make([]*Message, 0),
}
}
func (fm *FakeMailer) Send(messages ...*Message) (int, error) {
sentEmailsCount := 0
for _, msg := range messages {
fm.Sent = append(fm.Sent, msg)
sentEmailsCount++
}
return sentEmailsCount, nil
}
type FakeDisconnectedMailer struct{}
func NewFakeDisconnectedMailer() *FakeDisconnectedMailer {
return &FakeDisconnectedMailer{}
}
func (fdm *FakeDisconnectedMailer) Send(messages ...*Message) (int, error) {
return 0, fmt.Errorf("connect: connection refused")
}