Initial feature-complete implementation of the v1.0 specification (phases 0-11 of `docs/implementation-plan.md`). Added: - Panel (Go, single static binary) with SQLite persistence, one-time - Domain management with per-domain DKIM (RSA-2048, generated in pure Go) and - Application (sender identity) management: SASL credentials via `sasldb2`, - Full Postfix relay config generated from env at container start: SMTPS 465, - Journal milter (pure Go, `go-milter`) recording every send to `send_log`; … (6 more in CHANGELOG) Full detail: CHANGELOG.md (0.1.0).
22 lines
604 B
Go
22 lines
604 B
Go
package web
|
|
|
|
import (
|
|
"path/filepath"
|
|
"testing"
|
|
)
|
|
|
|
// After log rotation renames mail.log away, Postfix takes about a second to
|
|
// recreate it on reload (spec B.2); a missing file in that window is a normal,
|
|
// transient gap, not an operator-facing failure.
|
|
func TestReadLogTailMissingFileIsNotAnError(t *testing.T) {
|
|
s := &Server{cfg: Config{MailLogPath: filepath.Join(t.TempDir(), "mail.log")}}
|
|
|
|
lines, errText := s.readLogTail()
|
|
if lines != nil {
|
|
t.Errorf("lines = %v, want nil", lines)
|
|
}
|
|
if errText != "" {
|
|
t.Errorf("errText = %q, want empty (missing file is not an error)", errText)
|
|
}
|
|
}
|