package message import ( "errors" "testing" ) func TestMessageIDCanonical(t *testing.T) { check := func(s string, expID string, expRaw bool, expErr error) { t.Helper() id, raw, err := MessageIDCanonical(s) if id != expID || raw != expRaw || (expErr == nil) != (err == nil) || err != nil && !errors.Is(err, expErr) { t.Fatalf("got message-id %q, raw %v, err %v, expected %q %v %v, for message-id %q", id, raw, err, expID, expRaw, expErr, s) } } check("bogus", "", false, errBadMessageID) check("<bogus@host", "", false, errBadMessageID) check("bogus@host>", "", false, errBadMessageID) check("<>", "", false, errBadMessageID) check("<user@domain>", "user@domain", false, nil) check("<USER@DOMAIN>", "user@domain", false, nil) check("<user@[10.0.0.1]>", "user@[10.0.0.1]", true, nil) check("<user@domain> (added by postmaster@isp.example)", "user@domain", false, nil) check("<user@domain> other", "user@domain", false, nil) check("<User@Domain@Time>", "user@domain@time", true, nil) check("<User>", "user", true, nil) }