release: 1.5.0: Send-log retention configurable in panel Settings
Send-log retention is configurable from panel **Settings** (global administrator); `SEND_LOG_RETENTION_DAYS` seeds the initial default only. Added: - Panel **Settings** (global administrator): **Send log retention (days)** — Changed: - Deliveries list and delivery detail pages show the configured retention Full detail: CHANGELOG.md (1.5.0).
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
package store
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestSendLogRetentionDaysSaveLoad(t *testing.T) {
|
||||
st := openTestStore(t)
|
||||
|
||||
if err := st.SetSendLogRetentionDays(45); err != nil {
|
||||
t.Fatalf("SetSendLogRetentionDays: %v", err)
|
||||
}
|
||||
got, err := st.GetSendLogRetentionDays(90)
|
||||
if err != nil {
|
||||
t.Fatalf("GetSendLogRetentionDays: %v", err)
|
||||
}
|
||||
if got != 45 {
|
||||
t.Fatalf("got %d, want 45", got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSendLogRetentionDaysRejectsOutOfRange(t *testing.T) {
|
||||
st := openTestStore(t)
|
||||
|
||||
for _, days := range []int{0, 6, 366, -1} {
|
||||
if err := st.SetSendLogRetentionDays(days); err == nil {
|
||||
t.Fatalf("SetSendLogRetentionDays(%d) want error", days)
|
||||
} else if !errors.Is(err, ErrSendLogRetentionDaysOutOfRange) {
|
||||
t.Fatalf("SetSendLogRetentionDays(%d) = %v, want ErrSendLogRetentionDaysOutOfRange", days, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestSendLogRetentionDaysBootstrapFromEnv(t *testing.T) {
|
||||
st := openTestStore(t)
|
||||
|
||||
if err := st.EnsureSendLogRetentionDays(120); err != nil {
|
||||
t.Fatalf("EnsureSendLogRetentionDays: %v", err)
|
||||
}
|
||||
got, err := st.GetSendLogRetentionDays(90)
|
||||
if err != nil {
|
||||
t.Fatalf("GetSendLogRetentionDays: %v", err)
|
||||
}
|
||||
if got != 120 {
|
||||
t.Fatalf("got %d, want 120", got)
|
||||
}
|
||||
|
||||
// Second call is a no-op.
|
||||
if err := st.EnsureSendLogRetentionDays(30); err != nil {
|
||||
t.Fatalf("EnsureSendLogRetentionDays again: %v", err)
|
||||
}
|
||||
got, err = st.GetSendLogRetentionDays(90)
|
||||
if err != nil {
|
||||
t.Fatalf("GetSendLogRetentionDays: %v", err)
|
||||
}
|
||||
if got != 120 {
|
||||
t.Fatalf("after second ensure got %d, want 120", got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSendLogRetentionDaysMissingUsesEnvDefault(t *testing.T) {
|
||||
st := openTestStore(t)
|
||||
|
||||
got, err := st.GetSendLogRetentionDays(60)
|
||||
if err != nil {
|
||||
t.Fatalf("GetSendLogRetentionDays: %v", err)
|
||||
}
|
||||
if got != 60 {
|
||||
t.Fatalf("got %d, want 60", got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSendLogRetentionDaysInvalidStoredFallsBack(t *testing.T) {
|
||||
st := openTestStore(t)
|
||||
|
||||
if err := st.SetSetting(SendLogRetentionDaysKey, "not-a-number"); err != nil {
|
||||
t.Fatalf("SetSetting: %v", err)
|
||||
}
|
||||
got, err := st.GetSendLogRetentionDays(60)
|
||||
if err != nil {
|
||||
t.Fatalf("GetSendLogRetentionDays: %v", err)
|
||||
}
|
||||
if got != 60 {
|
||||
t.Fatalf("got %d, want env fallback 60", got)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user