forked from go-pkgz/notify
-
Notifications
You must be signed in to change notification settings - Fork 0
/
email_test.go
75 lines (61 loc) · 2.71 KB
/
email_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
package notify
import (
"context"
"testing"
"time"
"github.com/stretchr/testify/assert"
)
func TestEmailNew(t *testing.T) {
smtpParams := SMTPParams{
Host: "test@host",
Port: 1000,
TLS: true,
Username: "test@username",
Password: "test@password",
LoginAuth: true,
ContentType: "text/html",
Charset: "UTF-8",
TimeOut: time.Second,
}
email := NewEmail(smtpParams)
assert.NotNil(t, email, "email returned")
assert.Equal(t, "mailto", email.Schema())
assert.Equal(t, smtpParams.TimeOut, email.TimeOut, "SMTPParams.TimOut unchanged after creation")
assert.Equal(t, smtpParams.Host, email.Host, "SMTPParams.Host unchanged after creation")
assert.Equal(t, smtpParams.Username, email.Username, "SMTPParams.Username unchanged after creation")
assert.Equal(t, smtpParams.Password, email.Password, "SMTPParams.Password unchanged after creation")
assert.Equal(t, smtpParams.Port, email.Port, "SMTPParams.Port unchanged after creation")
assert.Equal(t, smtpParams.TLS, email.TLS, "SMTPParams.TLS unchanged after creation")
assert.Equal(t, smtpParams.ContentType, email.ContentType, "SMTPParams.ContentType unchanged after creation")
assert.Equal(t, smtpParams.Charset, email.Charset, "SMTPParams.Charset unchanged after creation")
assert.Equal(t, smtpParams.LoginAuth, email.LoginAuth, "SMTPParams.LoginAuth unchanged after creation")
}
func TestEmailSendClientError(t *testing.T) {
email := NewEmail(SMTPParams{Host: "test@host", Username: "user", TLS: true})
assert.Equal(t, "email: with username 'user' at server test@host:0 with TLS", email.String())
// no destination set
assert.EqualError(t, email.Send(context.Background(), "", ""),
"problem parsing destination: unsupported scheme , should be mailto")
// wrong scheme
assert.EqualError(t, email.Send(context.Background(), "https://example.org", ""),
"problem parsing destination: unsupported scheme https, should be mailto")
// bad destination set
assert.EqualError(t, email.Send(context.Background(), "%", ""),
`problem parsing destination: parse "%": invalid URL escape "%"`)
// bad recipient
assert.EqualError(t, email.Send(context.Background(), "mailto:bad", ""),
`problem parsing destination: problem parsing email recipients: mail: missing '@' or angle-addr`)
// unable to find host, with advanced destination parsing test
assert.Contains(t,
email.Send(
context.Background(),
`mailto:[email protected],"John Wayne"<[email protected]>?subject=test-subj&from="Notifier"<[email protected]>`,
"test",
).Error(),
"no such host",
)
// canceled context
ctx, cancel := context.WithCancel(context.Background())
cancel()
assert.EqualError(t, email.Send(ctx, "mailto:[email protected]", ""), "context canceled")
}