mirror of
https://github.com/1f349/lotus.git
synced 2024-12-22 08:04:06 +00:00
Add some extra tests and improve errors
This commit is contained in:
parent
9b87a8a857
commit
306f2c1e8e
@ -3,6 +3,7 @@ package api
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
postfixLookup "github.com/1f349/lotus/postfix-lookup"
|
||||
"github.com/1f349/lotus/smtp"
|
||||
"github.com/julienschmidt/httprouter"
|
||||
@ -34,12 +35,11 @@ func MessageSender(send Smtp) func(rw http.ResponseWriter, req *http.Request, pa
|
||||
// prepare the mail for sending
|
||||
mail, err := j.PrepareMail(timeNow())
|
||||
if err != nil {
|
||||
apiError(rw, http.StatusBadRequest, "Invalid mail message")
|
||||
apiError(rw, http.StatusBadRequest, fmt.Sprintf("Invalid mail message: %s", err))
|
||||
return
|
||||
}
|
||||
|
||||
// this looks up the underlying account for the sender alias
|
||||
println(mail.From)
|
||||
lookup, err := defaultPostfixLookup(mail.From)
|
||||
|
||||
// the alias does not exist
|
||||
|
@ -144,7 +144,67 @@ var messageSenderTestData = []struct {
|
||||
smtp: &fakeSmtp{},
|
||||
claims: makeFakeAuthClaims("admin@example.com"),
|
||||
status: http.StatusBadRequest,
|
||||
output: "Invalid mail message",
|
||||
output: "Invalid mail message: multiple from addresses",
|
||||
},
|
||||
{
|
||||
req: func() (*http.Request, error) {
|
||||
j, err := json.Marshal(smtp.Json{
|
||||
From: "noreply@example.com",
|
||||
ReplyTo: "admin@example.com",
|
||||
To: "user@example.com",
|
||||
Subject: "Test Subject",
|
||||
BodyType: "no",
|
||||
Body: "Plain text",
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return http.NewRequest(http.MethodPost, "https://api.example.com/v1/mail/message", bytes.NewReader(j))
|
||||
},
|
||||
smtp: &fakeSmtp{},
|
||||
claims: makeFakeAuthClaims("admin@example.com"),
|
||||
status: http.StatusBadRequest,
|
||||
output: "Invalid mail message: invalid body type",
|
||||
},
|
||||
{
|
||||
req: func() (*http.Request, error) {
|
||||
j, err := json.Marshal(smtp.Json{
|
||||
From: "noreply@example.com",
|
||||
ReplyTo: "admin@example.com",
|
||||
To: "a <user@example.com",
|
||||
Subject: "Test Subject",
|
||||
BodyType: "no",
|
||||
Body: "Plain text",
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return http.NewRequest(http.MethodPost, "https://api.example.com/v1/mail/message", bytes.NewReader(j))
|
||||
},
|
||||
smtp: &fakeSmtp{},
|
||||
claims: makeFakeAuthClaims("admin@example.com"),
|
||||
status: http.StatusBadRequest,
|
||||
output: "Invalid mail message: mail: unclosed angle-addr",
|
||||
},
|
||||
{
|
||||
req: func() (*http.Request, error) {
|
||||
j, err := json.Marshal(smtp.Json{
|
||||
From: "noreply@example.com",
|
||||
ReplyTo: "admin@example.com",
|
||||
To: "a <user>",
|
||||
Subject: "Test Subject",
|
||||
BodyType: "no",
|
||||
Body: "Plain text",
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return http.NewRequest(http.MethodPost, "https://api.example.com/v1/mail/message", bytes.NewReader(j))
|
||||
},
|
||||
smtp: &fakeSmtp{},
|
||||
claims: makeFakeAuthClaims("admin@example.com"),
|
||||
status: http.StatusBadRequest,
|
||||
output: "Invalid mail message: mail: missing @ in addr-spec",
|
||||
},
|
||||
{
|
||||
req: func() (*http.Request, error) {
|
||||
|
Loading…
Reference in New Issue
Block a user