The first MINOR after 1.0.0: send-only DMARC guidance in the panel, AGPL packaging on every page, and an internal split of `internal/web` ahead of domain-admin work. Upgrading runs one SQLite migration (empty defaults; existing DNS guidance is unchanged until you set a report address). Changed: - `internal/web` split into subpackages (`web/view`, `web/auth`, `web/validate`, Added: - panel: DMARC guidance for send-only relays — the suggested `_dmarc` record - AGPL packaging hygiene: [NOTICE](NOTICE) names the copyright holder and the - [docs/roadmap.md](docs/roadmap.md) — candidate item **visual-style** (panel Full detail: CHANGELOG.md (1.1.0).
46 lines
1.2 KiB
Go
46 lines
1.2 KiB
Go
package store
|
|
|
|
import (
|
|
"database/sql"
|
|
"testing"
|
|
)
|
|
|
|
func TestDomainDMARCRua(t *testing.T) {
|
|
st := openTestStore(t)
|
|
d, err := st.AddDomain("example.com", "sel")
|
|
if err != nil {
|
|
t.Fatalf("AddDomain: %v", err)
|
|
}
|
|
got, err := st.GetDomain(d.ID)
|
|
if err != nil {
|
|
t.Fatalf("GetDomain: %v", err)
|
|
}
|
|
if got.DMARCRua.Valid {
|
|
t.Fatal("new domain should inherit profile")
|
|
}
|
|
|
|
if err := st.UpdateDomainDMARCRua(d.ID, sql.NullString{Valid: true, String: "reports@hub.com"}); err != nil {
|
|
t.Fatalf("UpdateDomainDMARCRua custom: %v", err)
|
|
}
|
|
got, err = st.GetDomain(d.ID)
|
|
if err != nil || got.DMARCRua.String != "reports@hub.com" {
|
|
t.Fatalf("custom = %+v, err=%v", got.DMARCRua, err)
|
|
}
|
|
|
|
if err := st.UpdateDomainDMARCRua(d.ID, sql.NullString{Valid: true}); err != nil {
|
|
t.Fatalf("UpdateDomainDMARCRua none: %v", err)
|
|
}
|
|
got, _ = st.GetDomain(d.ID)
|
|
if !got.DMARCRua.Valid || got.DMARCRua.String != "" {
|
|
t.Fatalf("none = %+v", got.DMARCRua)
|
|
}
|
|
|
|
if err := st.UpdateDomainDMARCRua(d.ID, sql.NullString{}); err != nil {
|
|
t.Fatalf("UpdateDomainDMARCRua inherit: %v", err)
|
|
}
|
|
got, _ = st.GetDomain(d.ID)
|
|
if got.DMARCRua.Valid {
|
|
t.Fatalf("inherit = %+v", got.DMARCRua)
|
|
}
|
|
}
|