1
0
mirror of https://blitiri.com.ar/repos/chasquid synced 2025-12-17 14:37:02 +00:00
Files
go-chasquid-smtp/internal/maillog/maillog_test.go
Alberto Bertogli febe96697a maillog: Introduce a special-purpose mail logging package
The default INFO logs are more oriented towards debugging and can be
a bit too verbose when looking for high-level information.

This patch introduces a new "maillog" package, used to log messages of
particular relevance to mail transmission at a higher level.
2016-10-21 22:20:47 +01:00

117 lines
3.0 KiB
Go

package maillog
import (
"bytes"
"fmt"
"net"
"strings"
"testing"
"time"
)
var netAddr = &net.TCPAddr{
IP: net.ParseIP("1.2.3.4"),
Port: 4321,
}
func expect(t *testing.T, buf *bytes.Buffer, s string) {
if strings.Contains(buf.String(), s) {
return
}
t.Errorf("buffer mismatch:")
t.Errorf(" expected to contain: %q", s)
t.Errorf(" got: %q", buf.String())
}
func TestLogger(t *testing.T) {
buf := &bytes.Buffer{}
l := New(buf)
l.Listening("1.2.3.4:4321")
expect(t, buf, "daemon listening on 1.2.3.4:4321")
buf.Reset()
l.Auth(netAddr, "user@domain", false)
expect(t, buf, "1.2.3.4:4321 authentication failed for user@domain")
buf.Reset()
l.Auth(netAddr, "user@domain", true)
expect(t, buf, "1.2.3.4:4321 authentication successful for user@domain")
buf.Reset()
l.Rejected(netAddr, "from", []string{"to1", "to2"}, "error")
expect(t, buf, "1.2.3.4:4321 rejected from=from to=[to1 to2] - error")
buf.Reset()
l.Queued(netAddr, "from", []string{"to1", "to2"}, "qid")
expect(t, buf, "qid from=from queued ip=1.2.3.4:4321 to=[to1 to2]")
buf.Reset()
l.SendAttempt("qid", "from", "to", nil, false)
expect(t, buf, "qid from=from to=to sent successfully")
buf.Reset()
l.SendAttempt("qid", "from", "to", fmt.Errorf("error"), false)
expect(t, buf, "qid from=from to=to sent failed (temporary): error")
buf.Reset()
l.SendAttempt("qid", "from", "to", fmt.Errorf("error"), true)
expect(t, buf, "qid from=from to=to sent failed (permanent): error")
buf.Reset()
l.QueueLoop("qid", 17*time.Second)
expect(t, buf, "qid completed loop, next in 17s")
buf.Reset()
l.QueueLoop("qid", 0)
expect(t, buf, "qid all done")
buf.Reset()
}
// Test that the default actions go reasonably to the default logger.
// Unfortunately this is almost the same as TestLogger.
func TestDefault(t *testing.T) {
buf := &bytes.Buffer{}
Default = New(buf)
Listening("1.2.3.4:4321")
expect(t, buf, "daemon listening on 1.2.3.4:4321")
buf.Reset()
Auth(netAddr, "user@domain", false)
expect(t, buf, "1.2.3.4:4321 authentication failed for user@domain")
buf.Reset()
Auth(netAddr, "user@domain", true)
expect(t, buf, "1.2.3.4:4321 authentication successful for user@domain")
buf.Reset()
Rejected(netAddr, "from", []string{"to1", "to2"}, "error")
expect(t, buf, "1.2.3.4:4321 rejected from=from to=[to1 to2] - error")
buf.Reset()
Queued(netAddr, "from", []string{"to1", "to2"}, "qid")
expect(t, buf, "qid from=from queued ip=1.2.3.4:4321 to=[to1 to2]")
buf.Reset()
SendAttempt("qid", "from", "to", nil, false)
expect(t, buf, "qid from=from to=to sent successfully")
buf.Reset()
SendAttempt("qid", "from", "to", fmt.Errorf("error"), false)
expect(t, buf, "qid from=from to=to sent failed (temporary): error")
buf.Reset()
SendAttempt("qid", "from", "to", fmt.Errorf("error"), true)
expect(t, buf, "qid from=from to=to sent failed (permanent): error")
buf.Reset()
QueueLoop("qid", 17*time.Second)
expect(t, buf, "qid completed loop, next in 17s")
buf.Reset()
QueueLoop("qid", 0)
expect(t, buf, "qid all done")
buf.Reset()
}