summaryrefslogtreecommitdiffstats
path: root/api4
diff options
context:
space:
mode:
authorCarlos Tadeu Panato Junior <ctadeu@gmail.com>2017-03-13 16:09:00 +0100
committerGeorge Goldberg <george@gberg.me>2017-03-13 15:09:00 +0000
commit38958d9ac4f415d9ae99dfcdb53bfdc355d96764 (patch)
tree6a92500ed7b9f13f0da0c1f84fc43b674621b36e /api4
parent19c67d7fe35f92ae8a288dcdb9877d3bede41a61 (diff)
downloadchat-38958d9ac4f415d9ae99dfcdb53bfdc355d96764.tar.gz
chat-38958d9ac4f415d9ae99dfcdb53bfdc355d96764.tar.bz2
chat-38958d9ac4f415d9ae99dfcdb53bfdc355d96764.zip
Add implementation for POST /email/test apiV4 - Send Test Email (#5716)
Diffstat (limited to 'api4')
-rw-r--r--api4/apitestlib.go15
-rw-r--r--api4/system.go17
-rw-r--r--api4/system_test.go30
3 files changed, 62 insertions, 0 deletions
diff --git a/api4/apitestlib.go b/api4/apitestlib.go
index 30dbfadae..2b7b707c7 100644
--- a/api4/apitestlib.go
+++ b/api4/apitestlib.go
@@ -495,6 +495,21 @@ func CheckErrorMessage(t *testing.T, resp *model.Response, errorId string) {
}
}
+func CheckInternalErrorStatus(t *testing.T, resp *model.Response) {
+ if resp.Error == nil {
+ debug.PrintStack()
+ t.Fatal("should have errored with status:" + strconv.Itoa(http.StatusNotImplemented))
+ return
+ }
+
+ if resp.StatusCode != http.StatusInternalServerError {
+ debug.PrintStack()
+ t.Log("actual: " + strconv.Itoa(resp.StatusCode))
+ t.Log("expected: " + strconv.Itoa(http.StatusNotImplemented))
+ t.Fatal("wrong status code")
+ }
+}
+
func readTestFile(name string) ([]byte, error) {
path := utils.FindDir("tests")
file, err := os.Open(path + "/" + name)
diff --git a/api4/system.go b/api4/system.go
index 4f86213c6..f7a3918a5 100644
--- a/api4/system.go
+++ b/api4/system.go
@@ -17,12 +17,29 @@ func InitSystem() {
BaseRoutes.System.Handle("/ping", ApiHandler(getSystemPing)).Methods("GET")
BaseRoutes.ApiRoot.Handle("/config", ApiSessionRequired(getConfig)).Methods("GET")
+ BaseRoutes.ApiRoot.Handle("/email/test", ApiSessionRequired(testEmail)).Methods("POST")
}
func getSystemPing(c *Context, w http.ResponseWriter, r *http.Request) {
ReturnStatusOK(w)
}
+func testEmail(c *Context, w http.ResponseWriter, r *http.Request) {
+
+ if !app.SessionHasPermissionTo(c.Session, model.PERMISSION_MANAGE_SYSTEM) {
+ c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
+ return
+ }
+
+ err := app.TestEmail(c.Session.UserId, utils.Cfg)
+ if err != nil {
+ c.Err = err
+ return
+ }
+
+ ReturnStatusOK(w)
+}
+
func getConfig(c *Context, w http.ResponseWriter, r *http.Request) {
if !app.SessionHasPermissionTo(c.Session, model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
diff --git a/api4/system_test.go b/api4/system_test.go
index 2e8b8f70f..ae133183b 100644
--- a/api4/system_test.go
+++ b/api4/system_test.go
@@ -5,6 +5,7 @@ import (
"testing"
"github.com/mattermost/platform/model"
+ "github.com/mattermost/platform/utils"
)
func TestGetPing(t *testing.T) {
@@ -64,3 +65,32 @@ func TestGetConfig(t *testing.T) {
t.Fatal("did not sanitize properly")
}
}
+
+func TestEmailTest(t *testing.T) {
+ th := Setup().InitBasic().InitSystemAdmin()
+ defer TearDown()
+ Client := th.Client
+
+ SendEmailNotifications := utils.Cfg.EmailSettings.SendEmailNotifications
+ SMTPServer := utils.Cfg.EmailSettings.SMTPServer
+ SMTPPort := utils.Cfg.EmailSettings.SMTPPort
+ FeedbackEmail := utils.Cfg.EmailSettings.FeedbackEmail
+ defer func() {
+ utils.Cfg.EmailSettings.SendEmailNotifications = SendEmailNotifications
+ utils.Cfg.EmailSettings.SMTPServer = SMTPServer
+ utils.Cfg.EmailSettings.SMTPPort = SMTPPort
+ utils.Cfg.EmailSettings.FeedbackEmail = FeedbackEmail
+ }()
+
+ utils.Cfg.EmailSettings.SendEmailNotifications = false
+ utils.Cfg.EmailSettings.SMTPServer = ""
+ utils.Cfg.EmailSettings.SMTPPort = ""
+ utils.Cfg.EmailSettings.FeedbackEmail = ""
+
+ _, resp := Client.TestEmail()
+ CheckForbiddenStatus(t, resp)
+
+ _, resp = th.SystemAdminClient.TestEmail()
+ CheckErrorMessage(t, resp, "api.admin.test_email.missing_server")
+ CheckInternalErrorStatus(t, resp)
+}