diff --git a/app/email_test.go b/app/email_test.go index 120c817420..d276309541 100644 --- a/app/email_test.go +++ b/app/email_test.go @@ -12,6 +12,7 @@ import ( "github.com/stretchr/testify/require" "github.com/mattermost/mattermost-server/v5/model" + "github.com/mattermost/mattermost-server/v5/services/mailservice" ) func TestCondenseSiteURL(t *testing.T) { @@ -133,3 +134,39 @@ func TestSendAdminUpgradeRequestEmailOnJoin(t *testing.T) { require.NotNil(t, err) assert.Equal(t, err.Id, "app.email.rate_limit_exceeded.app_error") } + +func TestSendInviteEmails(t *testing.T) { + th := Setup(t).InitBasic() + defer th.TearDown() + th.ConfigureInbucketMail() + + th.App.UpdateConfig(func(cfg *model.Config) { + *cfg.ServiceSettings.EnableEmailInvitations = true + }) + + emailTo := "test@example.com" + mailservice.DeleteMailBox(emailTo) + + appErr := th.App.Srv().EmailService.SendInviteEmails(th.BasicTeam, "test-user", th.BasicUser.Id, []string{emailTo}, "http://testserver") + require.Nil(t, appErr) + + var resultsMailbox mailservice.JSONMessageHeaderInbucket + err2 := mailservice.RetryInbucket(5, func() error { + var err error + resultsMailbox, err = mailservice.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 := mailservice.GetMessageFromMailbox(emailTo, resultsMailbox[0].ID) + require.NoError(t, err, "Could not get message from mailbox") + require.Contains(t, resultsEmail.Body.HTML, "http://testserver", "Wrong received message %s", resultsEmail.Body.Text) + require.Contains(t, resultsEmail.Body.HTML, "test-user", "Wrong received message %s", resultsEmail.Body.Text) + 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) + } +} diff --git a/app/helper_test.go b/app/helper_test.go index 33116dd090..f9a6e10c19 100644 --- a/app/helper_test.go +++ b/app/helper_test.go @@ -530,6 +530,21 @@ func (*TestHelper) GetSqlStore() *sqlstore.SqlStore { return mainHelper.GetSQLStore() } +func (th *TestHelper) ConfigureInbucketMail() { + inbucket_host := os.Getenv("CI_INBUCKET_HOST") + if inbucket_host == "" { + inbucket_host = "localhost" + } + inbucket_port := os.Getenv("CI_INBUCKET_SMTP_PORT") + if inbucket_port == "" { + inbucket_port = "10025" + } + th.App.UpdateConfig(func(cfg *model.Config) { + *cfg.EmailSettings.SMTPServer = inbucket_host + *cfg.EmailSettings.SMTPPort = inbucket_port + }) +} + func (*TestHelper) ResetRoleMigration() { sqlStore := mainHelper.GetSQLStore() if _, err := sqlStore.GetMaster().Exec("DELETE from Roles"); err != nil { diff --git a/templates/invite_body.html b/templates/invite_body.html index fb6d8e045c..99361ae76a 100644 --- a/templates/invite_body.html +++ b/templates/invite_body.html @@ -19,7 +19,7 @@
{{.Html.Info}}
+{{.HTML.Info}}
@@ -37,7 +37,7 @@ {{end}}{{.Html.ExtraInfo}}
{{.Props.TeamURL}}
{{.HTML.ExtraInfo}}
{{.Props.TeamURL}}