diff --git a/app/email/email.go b/app/email/email.go index abd1091e15..ffc19ae847 100644 --- a/app/email/email.go +++ b/app/email/email.go @@ -552,7 +552,7 @@ func (es *Service) SendGuestInviteEmails(team *model.Team, channels []*model.Cha data.Props["ButtonURL"] = fmt.Sprintf("%s/signup_user_complete/?d=%s&t=%s", siteURL, url.QueryEscape(tokenData), url.QueryEscape(token.Token)) if !*es.config().EmailSettings.SendEmailNotifications { - mlog.Info("sending invitation ", mlog.String("to", invite), mlog.String("link", data.Props["ButtomURL"].(string))) + mlog.Info("sending invitation ", mlog.String("to", invite), mlog.String("link", data.Props["ButtonURL"].(string))) } embeddedFiles := make(map[string]io.Reader) diff --git a/app/email/email_test.go b/app/email/email_test.go index 98b0fd3c90..4b0ebb7844 100644 --- a/app/email/email_test.go +++ b/app/email/email_test.go @@ -38,29 +38,20 @@ func TestSendInviteEmails(t *testing.T) { defer th.TearDown() th.ConfigureInbucketMail() - th.UpdateConfig(func(cfg *model.Config) { - *cfg.ServiceSettings.EnableEmailInvitations = true - }) - - require.NotNil(t, th.BasicUser) - require.NotNil(t, th.BasicChannel) - emailTo := "test@example.com" - mail.DeleteMailBox(emailTo) + verifyMailbox := func(t *testing.T) { + t.Helper() - err := th.service.SendInviteEmails(th.BasicTeam, "test-user", th.BasicUser.Id, []string{emailTo}, "http://testserver") - require.NoError(t, err) + var resultsMailbox mail.JSONMessageHeaderInbucket + err2 := mail.RetryInbucket(5, func() error { + var err error + resultsMailbox, err = mail.GetMailBox(emailTo) + return err + }) + if err2 != nil { + t.Skipf("No email was received, maybe due load on the server: %v", err2) + } - var resultsMailbox mail.JSONMessageHeaderInbucket - err2 := mail.RetryInbucket(5, func() error { - var err error - resultsMailbox, err = mail.GetMailBox(emailTo) - return err - }) - if err2 != nil { - t.Log(err2) - t.Log("No email was received, maybe due load on the server. Skipping this verification") - } else if len(resultsMailbox) > 0 { require.Len(t, resultsMailbox, 1) require.Contains(t, resultsMailbox[0].To[0], emailTo, "Wrong To: recipient") resultsEmail, err := mail.GetMessageFromMailbox(emailTo, resultsMailbox[0].ID) @@ -70,4 +61,35 @@ func TestSendInviteEmails(t *testing.T) { require.Contains(t, resultsEmail.Body.Text, "http://testserver", "Wrong received message %s", resultsEmail.Body.Text) require.Contains(t, resultsEmail.Body.Text, "test-user", "Wrong received message %s", resultsEmail.Body.Text) } + + th.UpdateConfig(func(cfg *model.Config) { + *cfg.ServiceSettings.EnableEmailInvitations = true + *cfg.EmailSettings.SendEmailNotifications = false + }) + t.Run("SendInviteEmails", func(t *testing.T) { + mail.DeleteMailBox(emailTo) + + err := th.service.SendInviteEmails(th.BasicTeam, "test-user", th.BasicUser.Id, []string{emailTo}, "http://testserver") + require.NoError(t, err) + + verifyMailbox(t) + }) + + t.Run("SendGuestInviteEmails", func(t *testing.T) { + mail.DeleteMailBox(emailTo) + + err := th.service.SendGuestInviteEmails( + th.BasicTeam, + []*model.Channel{th.BasicChannel}, + "test-user", + th.BasicUser.Id, + nil, + []string{emailTo}, + "http://testserver", + "hello world", + ) + require.NoError(t, err) + + verifyMailbox(t) + }) }