|
|
|
|
@ -5,13 +5,13 @@ import ( |
|
|
|
|
"regexp" |
|
|
|
|
"testing" |
|
|
|
|
|
|
|
|
|
"github.com/stretchr/testify/assert" |
|
|
|
|
"github.com/stretchr/testify/require" |
|
|
|
|
|
|
|
|
|
"github.com/grafana/grafana/pkg/bus" |
|
|
|
|
"github.com/grafana/grafana/pkg/infra/tracing" |
|
|
|
|
"github.com/grafana/grafana/pkg/models" |
|
|
|
|
"github.com/grafana/grafana/pkg/services/user" |
|
|
|
|
"github.com/grafana/grafana/pkg/setting" |
|
|
|
|
"github.com/stretchr/testify/assert" |
|
|
|
|
"github.com/stretchr/testify/require" |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
func newBus(t *testing.T) bus.Bus { |
|
|
|
|
@ -53,8 +53,8 @@ func TestSendEmailSync(t *testing.T) { |
|
|
|
|
|
|
|
|
|
t.Run("When sending emails synchronously", func(t *testing.T) { |
|
|
|
|
ns, mailer := createSut(t, bus) |
|
|
|
|
cmd := &models.SendEmailCommandSync{ |
|
|
|
|
SendEmailCommand: models.SendEmailCommand{ |
|
|
|
|
cmd := &SendEmailCommandSync{ |
|
|
|
|
SendEmailCommand: SendEmailCommand{ |
|
|
|
|
Subject: "subject", |
|
|
|
|
To: []string{"asdf@grafana.com"}, |
|
|
|
|
SingleEmail: false, |
|
|
|
|
@ -72,8 +72,8 @@ func TestSendEmailSync(t *testing.T) { |
|
|
|
|
|
|
|
|
|
t.Run("When using Single Email mode with multiple recipients", func(t *testing.T) { |
|
|
|
|
ns, mailer := createSut(t, bus) |
|
|
|
|
cmd := &models.SendEmailCommandSync{ |
|
|
|
|
SendEmailCommand: models.SendEmailCommand{ |
|
|
|
|
cmd := &SendEmailCommandSync{ |
|
|
|
|
SendEmailCommand: SendEmailCommand{ |
|
|
|
|
Subject: "subject", |
|
|
|
|
To: []string{"1@grafana.com", "2@grafana.com", "3@grafana.com"}, |
|
|
|
|
SingleEmail: true, |
|
|
|
|
@ -89,8 +89,8 @@ func TestSendEmailSync(t *testing.T) { |
|
|
|
|
|
|
|
|
|
t.Run("When using Multi Email mode with multiple recipients", func(t *testing.T) { |
|
|
|
|
ns, mailer := createSut(t, bus) |
|
|
|
|
cmd := &models.SendEmailCommandSync{ |
|
|
|
|
SendEmailCommand: models.SendEmailCommand{ |
|
|
|
|
cmd := &SendEmailCommandSync{ |
|
|
|
|
SendEmailCommand: SendEmailCommand{ |
|
|
|
|
Subject: "subject", |
|
|
|
|
To: []string{"1@grafana.com", "2@grafana.com", "3@grafana.com"}, |
|
|
|
|
SingleEmail: false, |
|
|
|
|
@ -106,13 +106,13 @@ func TestSendEmailSync(t *testing.T) { |
|
|
|
|
|
|
|
|
|
t.Run("When attaching files to emails", func(t *testing.T) { |
|
|
|
|
ns, mailer := createSut(t, bus) |
|
|
|
|
cmd := &models.SendEmailCommandSync{ |
|
|
|
|
SendEmailCommand: models.SendEmailCommand{ |
|
|
|
|
cmd := &SendEmailCommandSync{ |
|
|
|
|
SendEmailCommand: SendEmailCommand{ |
|
|
|
|
Subject: "subject", |
|
|
|
|
To: []string{"asdf@grafana.com"}, |
|
|
|
|
SingleEmail: true, |
|
|
|
|
Template: "welcome_on_signup", |
|
|
|
|
AttachedFiles: []*models.SendEmailAttachFile{ |
|
|
|
|
AttachedFiles: []*SendEmailAttachFile{ |
|
|
|
|
{ |
|
|
|
|
Name: "attachment.txt", |
|
|
|
|
Content: []byte("text file content"), |
|
|
|
|
@ -137,8 +137,8 @@ func TestSendEmailSync(t *testing.T) { |
|
|
|
|
cfg.Smtp.Enabled = false |
|
|
|
|
ns, mailer, err := createSutWithConfig(t, bus, cfg) |
|
|
|
|
require.NoError(t, err) |
|
|
|
|
cmd := &models.SendEmailCommandSync{ |
|
|
|
|
SendEmailCommand: models.SendEmailCommand{ |
|
|
|
|
cmd := &SendEmailCommandSync{ |
|
|
|
|
SendEmailCommand: SendEmailCommand{ |
|
|
|
|
Subject: "subject", |
|
|
|
|
To: []string{"1@grafana.com", "2@grafana.com", "3@grafana.com"}, |
|
|
|
|
SingleEmail: true, |
|
|
|
|
@ -148,7 +148,7 @@ func TestSendEmailSync(t *testing.T) { |
|
|
|
|
|
|
|
|
|
err = ns.SendEmailCommandHandlerSync(context.Background(), cmd) |
|
|
|
|
|
|
|
|
|
require.ErrorIs(t, err, models.ErrSmtpNotEnabled) |
|
|
|
|
require.ErrorIs(t, err, ErrSmtpNotEnabled) |
|
|
|
|
require.Empty(t, mailer.Sent) |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
@ -157,8 +157,8 @@ func TestSendEmailSync(t *testing.T) { |
|
|
|
|
cfg.Smtp.ContentTypes = append(cfg.Smtp.ContentTypes, "multipart/form-data") |
|
|
|
|
ns, mailer, err := createSutWithConfig(t, bus, cfg) |
|
|
|
|
require.NoError(t, err) |
|
|
|
|
cmd := &models.SendEmailCommandSync{ |
|
|
|
|
SendEmailCommand: models.SendEmailCommand{ |
|
|
|
|
cmd := &SendEmailCommandSync{ |
|
|
|
|
SendEmailCommand: SendEmailCommand{ |
|
|
|
|
Subject: "subject", |
|
|
|
|
To: []string{"1@grafana.com", "2@grafana.com", "3@grafana.com"}, |
|
|
|
|
SingleEmail: false, |
|
|
|
|
@ -174,8 +174,8 @@ func TestSendEmailSync(t *testing.T) { |
|
|
|
|
|
|
|
|
|
t.Run("When SMTP dialer is disconnected", func(t *testing.T) { |
|
|
|
|
ns := createDisconnectedSut(t, bus) |
|
|
|
|
cmd := &models.SendEmailCommandSync{ |
|
|
|
|
SendEmailCommand: models.SendEmailCommand{ |
|
|
|
|
cmd := &SendEmailCommandSync{ |
|
|
|
|
SendEmailCommand: SendEmailCommand{ |
|
|
|
|
Subject: "subject", |
|
|
|
|
To: []string{"1@grafana.com", "2@grafana.com", "3@grafana.com"}, |
|
|
|
|
SingleEmail: false, |
|
|
|
|
@ -195,7 +195,7 @@ func TestSendEmailAsync(t *testing.T) { |
|
|
|
|
t.Run("When sending reset email password", func(t *testing.T) { |
|
|
|
|
sut, _ := createSut(t, bus) |
|
|
|
|
testuser := user.User{Email: "asd@asd.com", Login: "asd@asd.com"} |
|
|
|
|
err := sut.SendResetPasswordEmail(context.Background(), &models.SendResetPasswordEmailCommand{User: &testuser}) |
|
|
|
|
err := sut.SendResetPasswordEmail(context.Background(), &SendResetPasswordEmailCommand{User: &testuser}) |
|
|
|
|
|
|
|
|
|
require.NoError(t, err) |
|
|
|
|
|
|
|
|
|
@ -212,7 +212,7 @@ func TestSendEmailAsync(t *testing.T) { |
|
|
|
|
code := match[len("code="):] |
|
|
|
|
|
|
|
|
|
// verify code
|
|
|
|
|
query := models.ValidateResetPasswordCodeQuery{Code: code} |
|
|
|
|
query := ValidateResetPasswordCodeQuery{Code: code} |
|
|
|
|
getUserByLogin := func(ctx context.Context, login string) (*user.User, error) { |
|
|
|
|
return &testuser, nil |
|
|
|
|
} |
|
|
|
|
@ -225,7 +225,7 @@ func TestSendEmailAsync(t *testing.T) { |
|
|
|
|
cfg.Smtp.Enabled = false |
|
|
|
|
ns, mailer, err := createSutWithConfig(t, bus, cfg) |
|
|
|
|
require.NoError(t, err) |
|
|
|
|
cmd := &models.SendEmailCommand{ |
|
|
|
|
cmd := &SendEmailCommand{ |
|
|
|
|
Subject: "subject", |
|
|
|
|
To: []string{"1@grafana.com", "2@grafana.com", "3@grafana.com"}, |
|
|
|
|
SingleEmail: true, |
|
|
|
|
@ -234,7 +234,7 @@ func TestSendEmailAsync(t *testing.T) { |
|
|
|
|
|
|
|
|
|
err = ns.SendEmailCommandHandler(context.Background(), cmd) |
|
|
|
|
|
|
|
|
|
require.ErrorIs(t, err, models.ErrSmtpNotEnabled) |
|
|
|
|
require.ErrorIs(t, err, ErrSmtpNotEnabled) |
|
|
|
|
require.Empty(t, mailer.Sent) |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
@ -243,7 +243,7 @@ func TestSendEmailAsync(t *testing.T) { |
|
|
|
|
cfg.Smtp.ContentTypes = append(cfg.Smtp.ContentTypes, "multipart/form-data") |
|
|
|
|
ns, mailer, err := createSutWithConfig(t, bus, cfg) |
|
|
|
|
require.NoError(t, err) |
|
|
|
|
cmd := &models.SendEmailCommand{ |
|
|
|
|
cmd := &SendEmailCommand{ |
|
|
|
|
Subject: "subject", |
|
|
|
|
To: []string{"1@grafana.com", "2@grafana.com", "3@grafana.com"}, |
|
|
|
|
SingleEmail: false, |
|
|
|
|
@ -258,7 +258,7 @@ func TestSendEmailAsync(t *testing.T) { |
|
|
|
|
|
|
|
|
|
t.Run("When SMTP dialer is disconnected", func(t *testing.T) { |
|
|
|
|
ns := createDisconnectedSut(t, bus) |
|
|
|
|
cmd := &models.SendEmailCommand{ |
|
|
|
|
cmd := &SendEmailCommand{ |
|
|
|
|
Subject: "subject", |
|
|
|
|
To: []string{"1@grafana.com", "2@grafana.com", "3@grafana.com"}, |
|
|
|
|
SingleEmail: false, |
|
|
|
|
|