8func TestFrom(t *testing.T) {
9 check := func(headers, expAddr string, expErr error) {
12 msg := strings.ReplaceAll(headers, "\n", "\r\n") + "\r\nbody\r\n"
13 addr, _, _, err := From(pkglog.Logger, false, strings.NewReader(msg), nil)
16 tcompare(t, addr.String(), expAddr)
20 check("From: mjl@mox.example\n", "mjl@mox.example", nil)
21 check("From: Mechiel <mjl@mox.example>\n", "mjl@mox.example", nil)
24 check("Subject: test\n", "", errFromHeaders)
25 check("From: mjl@mox.example, other@mox.example\n", "", errFromAddresses)
27 // With multiple from headers we would use the first, while DKIM signs the last, so
29 check("From: attacker@evil.example\nFrom: ceo@bank.example\n", "", errFromHeaders)
30 check("From: ceo@bank.example\nFrom: attacker@evil.example\n", "", errFromHeaders)
31 check("From: mjl@mox.example\nFrom: mjl@mox.example\n", "", errFromHeaders)