delivery: send thread emails through the delivery queuebf66eab13 days ago51 lines · 1.6 KB | 1 | package main |
| 2 | |
| 3 | import ( |
| 4 | "encoding/json" |
| 5 | "net/http" |
| 6 | "net/http/httptest" |
| 7 | "strings" |
| 8 | "testing" |
| 9 | ) |
| 10 | |
| 11 | func TestRelaySenderPostsTheProxyTransportBody(t * |
| 12 | var got map[string |
| 13 | relay := httptest. |
| 14 | if ct := r |
| 15 | t.Errorf("Content-Type = |
| 16 | } |
| 17 | if err := json |
| 18 | t.Error(err |
| 19 | } |
| 20 | })) |
| 21 | defer relay.Close() |
| 22 | |
| 23 | s := relaySender |
| 24 | job := Job |
| 25 | if err := s |
| 26 | t.Fatal(err |
| 27 | } |
| 28 | |
| 29 | want := map[string |
| 30 | "to": "bob@example.com", |
| 31 | "htmlBody": "<p>Hi</p>", |
| 32 | } |
| 33 | for k, v |
| 34 | if got[k] |
| 35 | t.Errorf("%s |
| 36 | } |
| 37 | } |
| 38 | } |
| 39 | |
| 40 | func TestRelaySenderFailsOnErrorStatus(t * |
| 41 | relay := httptest. |
| 42 | http.Error(w |
| 43 | })) |
| 44 | defer relay.Close() |
| 45 | |
| 46 | s := relaySender |
| 47 | err := s. |
| 48 | if err == nil |
| 49 | t.Errorf("err = |
| 50 | } |
| 51 | } |
testing
.
T
)
{
]
string
NewServer
(
http
.
HandlerFunc
(
func
(
w
http
.
ResponseWriter
,
r
*
http
.
Request
)
{
.
Header
.
Get
(
"
Content-Type
"
)
;
ct
!=
"
application/json
"
{
%q
"
,
ct
)
.
NewDecoder
(
r
.
Body
)
.
Decode
(
&
got
)
;
err
!=
nil
{
)
{
url
:
relay
.
URL
,
secret
:
"
s3cret
"
,
from
:
"
Ghost <noreply@ghost.local>
"
,
client
:
relay
.
Client
()}
{
Kind
:
"
email
"
,
Payload
:
json
.
RawMessage
(
`
{"to":"bob@example.com","subject":"Hi","html":"<p>Hi</p>","text":"Hi"}
`
)}
.
send
(
t
.
Context
()
,
job
)
;
err
!=
nil
{
)
]
string
{
"
from
"
:
"
Ghost <noreply@ghost.local>
"
,
"
subject
"
:
"
Hi
"
,
"
textBody
"
:
"
Hi
"
,
"
secret
"
:
"
s3cret
"
,
:=
range
want
{
!=
v
{
=
%q
, want
%q
"
,
k
,
got
[
k
]
,
v
)
testing
.
T
)
{
NewServer
(
http
.
HandlerFunc
(
func
(
w
http
.
ResponseWriter
,
r
*
http
.
Request
)
{
,
"
relay down
"
,
http
.
StatusBadGateway
)
{
url
:
relay
.
URL
,
client
:
relay
.
Client
()}
send
(
t
.
Context
()
,
Job
{
Payload
:
json
.
RawMessage
(
`
{}
`
)})
||
!
strings
.
Contains
(
err
.
Error
()
,
"
502
"
)
||
!
strings
.
Contains
(
err
.
Error
()
,
"
relay down
"
)
{
%v
, want it to name the 502 and the relay's message
"
,
err
)