2017-02-17 11:57:19 +01:00
|
|
|
package api4
|
|
|
|
|
|
|
|
|
|
import (
|
2018-03-01 00:12:11 +01:00
|
|
|
"fmt"
|
2017-03-27 09:19:53 -04:00
|
|
|
"net/http"
|
2018-03-01 00:12:11 +01:00
|
|
|
"os"
|
2017-03-13 13:27:27 +01:00
|
|
|
"strings"
|
2017-02-17 11:57:19 +01:00
|
|
|
"testing"
|
2017-03-13 13:27:27 +01:00
|
|
|
|
2017-03-16 14:59:44 -04:00
|
|
|
l4g "github.com/alecthomas/log4go"
|
2017-09-06 23:05:10 -07:00
|
|
|
"github.com/mattermost/mattermost-server/model"
|
2018-02-13 11:08:49 -05:00
|
|
|
"github.com/stretchr/testify/assert"
|
2017-02-17 11:57:19 +01:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func TestGetPing(t *testing.T) {
|
2017-05-31 06:47:27 +02:00
|
|
|
th := Setup().InitBasic().InitSystemAdmin()
|
2017-10-02 03:50:56 -05:00
|
|
|
defer th.TearDown()
|
2017-02-17 11:57:19 +01:00
|
|
|
Client := th.Client
|
|
|
|
|
|
2017-10-18 15:36:43 -07:00
|
|
|
goRoutineHealthThreshold := *th.App.Config().ServiceSettings.GoroutineHealthThreshold
|
2017-05-31 06:47:27 +02:00
|
|
|
defer func() {
|
2017-10-18 15:36:43 -07:00
|
|
|
th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.GoroutineHealthThreshold = goRoutineHealthThreshold })
|
2017-05-31 06:47:27 +02:00
|
|
|
}()
|
|
|
|
|
|
|
|
|
|
status, resp := Client.GetPing()
|
|
|
|
|
CheckNoError(t, resp)
|
|
|
|
|
if status != "OK" {
|
|
|
|
|
t.Fatal("should return OK")
|
|
|
|
|
}
|
|
|
|
|
|
2017-10-18 15:36:43 -07:00
|
|
|
th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.GoroutineHealthThreshold = 10 })
|
2017-05-31 06:47:27 +02:00
|
|
|
status, resp = th.SystemAdminClient.GetPing()
|
|
|
|
|
CheckInternalErrorStatus(t, resp)
|
|
|
|
|
if status != "unhealthy" {
|
|
|
|
|
t.Fatal("should return unhealthy")
|
2017-02-17 11:57:19 +01:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2017-03-13 13:27:27 +01:00
|
|
|
func TestGetConfig(t *testing.T) {
|
|
|
|
|
th := Setup().InitBasic().InitSystemAdmin()
|
2017-10-02 03:50:56 -05:00
|
|
|
defer th.TearDown()
|
2017-03-13 13:27:27 +01:00
|
|
|
Client := th.Client
|
|
|
|
|
|
|
|
|
|
_, resp := Client.GetConfig()
|
|
|
|
|
CheckForbiddenStatus(t, resp)
|
|
|
|
|
|
|
|
|
|
cfg, resp := th.SystemAdminClient.GetConfig()
|
|
|
|
|
CheckNoError(t, resp)
|
2017-02-17 11:57:19 +01:00
|
|
|
|
2017-03-13 13:27:27 +01:00
|
|
|
if len(cfg.TeamSettings.SiteName) == 0 {
|
|
|
|
|
t.Fatal()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if *cfg.LdapSettings.BindPassword != model.FAKE_SETTING && len(*cfg.LdapSettings.BindPassword) != 0 {
|
|
|
|
|
t.Fatal("did not sanitize properly")
|
|
|
|
|
}
|
|
|
|
|
if *cfg.FileSettings.PublicLinkSalt != model.FAKE_SETTING {
|
|
|
|
|
t.Fatal("did not sanitize properly")
|
|
|
|
|
}
|
|
|
|
|
if cfg.FileSettings.AmazonS3SecretAccessKey != model.FAKE_SETTING && len(cfg.FileSettings.AmazonS3SecretAccessKey) != 0 {
|
|
|
|
|
t.Fatal("did not sanitize properly")
|
|
|
|
|
}
|
|
|
|
|
if cfg.EmailSettings.InviteSalt != model.FAKE_SETTING {
|
|
|
|
|
t.Fatal("did not sanitize properly")
|
|
|
|
|
}
|
|
|
|
|
if cfg.EmailSettings.SMTPPassword != model.FAKE_SETTING && len(cfg.EmailSettings.SMTPPassword) != 0 {
|
|
|
|
|
t.Fatal("did not sanitize properly")
|
|
|
|
|
}
|
|
|
|
|
if cfg.GitLabSettings.Secret != model.FAKE_SETTING && len(cfg.GitLabSettings.Secret) != 0 {
|
|
|
|
|
t.Fatal("did not sanitize properly")
|
|
|
|
|
}
|
2017-08-31 01:54:16 +08:00
|
|
|
if *cfg.SqlSettings.DataSource != model.FAKE_SETTING {
|
2017-03-13 13:27:27 +01:00
|
|
|
t.Fatal("did not sanitize properly")
|
|
|
|
|
}
|
|
|
|
|
if cfg.SqlSettings.AtRestEncryptKey != model.FAKE_SETTING {
|
|
|
|
|
t.Fatal("did not sanitize properly")
|
|
|
|
|
}
|
|
|
|
|
if !strings.Contains(strings.Join(cfg.SqlSettings.DataSourceReplicas, " "), model.FAKE_SETTING) && len(cfg.SqlSettings.DataSourceReplicas) != 0 {
|
|
|
|
|
t.Fatal("did not sanitize properly")
|
|
|
|
|
}
|
2017-05-01 05:19:58 +01:00
|
|
|
if !strings.Contains(strings.Join(cfg.SqlSettings.DataSourceSearchReplicas, " "), model.FAKE_SETTING) && len(cfg.SqlSettings.DataSourceSearchReplicas) != 0 {
|
|
|
|
|
t.Fatal("did not sanitize properly")
|
|
|
|
|
}
|
2017-03-13 13:27:27 +01:00
|
|
|
}
|
2017-03-13 16:09:00 +01:00
|
|
|
|
2017-03-14 13:52:27 +01:00
|
|
|
func TestReloadConfig(t *testing.T) {
|
|
|
|
|
th := Setup().InitBasic().InitSystemAdmin()
|
2017-10-02 03:50:56 -05:00
|
|
|
defer th.TearDown()
|
2017-03-14 13:52:27 +01:00
|
|
|
Client := th.Client
|
|
|
|
|
|
|
|
|
|
flag, resp := Client.ReloadConfig()
|
|
|
|
|
CheckForbiddenStatus(t, resp)
|
2017-10-30 11:57:24 -05:00
|
|
|
if flag {
|
2017-03-14 13:52:27 +01:00
|
|
|
t.Fatal("should not Reload the config due no permission.")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
flag, resp = th.SystemAdminClient.ReloadConfig()
|
|
|
|
|
CheckNoError(t, resp)
|
2017-10-30 11:57:24 -05:00
|
|
|
if !flag {
|
2017-03-14 13:52:27 +01:00
|
|
|
t.Fatal("should Reload the config")
|
|
|
|
|
}
|
|
|
|
|
|
2017-10-18 15:36:43 -07:00
|
|
|
th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.MaxUsersPerTeam = 50 })
|
|
|
|
|
th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.EnableOpenServer = true })
|
2017-03-14 13:52:27 +01:00
|
|
|
}
|
|
|
|
|
|
2017-03-20 13:37:34 +01:00
|
|
|
func TestUpdateConfig(t *testing.T) {
|
|
|
|
|
th := Setup().InitBasic().InitSystemAdmin()
|
2017-10-02 03:50:56 -05:00
|
|
|
defer th.TearDown()
|
2017-03-20 13:37:34 +01:00
|
|
|
Client := th.Client
|
|
|
|
|
|
2018-02-13 11:08:49 -05:00
|
|
|
cfg, resp := th.SystemAdminClient.GetConfig()
|
|
|
|
|
CheckNoError(t, resp)
|
2017-03-20 13:37:34 +01:00
|
|
|
|
2018-02-13 11:08:49 -05:00
|
|
|
_, resp = Client.UpdateConfig(cfg)
|
2017-03-20 13:37:34 +01:00
|
|
|
CheckForbiddenStatus(t, resp)
|
|
|
|
|
|
2017-10-18 15:36:43 -07:00
|
|
|
SiteName := th.App.Config().TeamSettings.SiteName
|
2017-03-20 13:37:34 +01:00
|
|
|
|
|
|
|
|
cfg.TeamSettings.SiteName = "MyFancyName"
|
|
|
|
|
cfg, resp = th.SystemAdminClient.UpdateConfig(cfg)
|
|
|
|
|
CheckNoError(t, resp)
|
|
|
|
|
|
|
|
|
|
if len(cfg.TeamSettings.SiteName) == 0 {
|
|
|
|
|
t.Fatal()
|
|
|
|
|
} else {
|
|
|
|
|
if cfg.TeamSettings.SiteName != "MyFancyName" {
|
|
|
|
|
t.Log("It should update the SiteName")
|
|
|
|
|
t.Fatal()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//Revert the change
|
|
|
|
|
cfg.TeamSettings.SiteName = SiteName
|
|
|
|
|
cfg, resp = th.SystemAdminClient.UpdateConfig(cfg)
|
|
|
|
|
CheckNoError(t, resp)
|
|
|
|
|
|
|
|
|
|
if len(cfg.TeamSettings.SiteName) == 0 {
|
|
|
|
|
t.Fatal()
|
|
|
|
|
} else {
|
|
|
|
|
if cfg.TeamSettings.SiteName != SiteName {
|
|
|
|
|
t.Log("It should update the SiteName")
|
|
|
|
|
t.Fatal()
|
|
|
|
|
}
|
|
|
|
|
}
|
2018-02-13 11:08:49 -05:00
|
|
|
|
|
|
|
|
t.Run("Should not be able to modify PluginSettings.EnableUploads", func(t *testing.T) {
|
|
|
|
|
oldEnableUploads := *th.App.GetConfig().PluginSettings.EnableUploads
|
|
|
|
|
*cfg.PluginSettings.EnableUploads = !oldEnableUploads
|
|
|
|
|
|
|
|
|
|
cfg, resp = th.SystemAdminClient.UpdateConfig(cfg)
|
|
|
|
|
CheckNoError(t, resp)
|
|
|
|
|
assert.Equal(t, oldEnableUploads, *cfg.PluginSettings.EnableUploads)
|
|
|
|
|
assert.Equal(t, oldEnableUploads, *th.App.GetConfig().PluginSettings.EnableUploads)
|
|
|
|
|
|
|
|
|
|
cfg.PluginSettings.EnableUploads = nil
|
|
|
|
|
cfg, resp = th.SystemAdminClient.UpdateConfig(cfg)
|
|
|
|
|
CheckNoError(t, resp)
|
|
|
|
|
assert.Equal(t, oldEnableUploads, *cfg.PluginSettings.EnableUploads)
|
|
|
|
|
assert.Equal(t, oldEnableUploads, *th.App.GetConfig().PluginSettings.EnableUploads)
|
|
|
|
|
})
|
2017-03-21 09:06:08 -04:00
|
|
|
}
|
|
|
|
|
|
2018-04-09 12:16:11 -04:00
|
|
|
func TestGetEnvironmentConfig(t *testing.T) {
|
|
|
|
|
os.Setenv("MM_SERVICESETTINGS_SITEURL", "http://example.mattermost.com")
|
|
|
|
|
os.Setenv("MM_SERVICESETTINGS_ENABLECUSTOMEMOJI", "true")
|
|
|
|
|
defer os.Unsetenv("MM_SERVICESETTINGS_SITEURL")
|
|
|
|
|
|
|
|
|
|
th := Setup().InitBasic().InitSystemAdmin()
|
|
|
|
|
defer th.TearDown()
|
|
|
|
|
|
|
|
|
|
t.Run("as system admin", func(t *testing.T) {
|
|
|
|
|
SystemAdminClient := th.SystemAdminClient
|
|
|
|
|
|
|
|
|
|
envConfig, resp := SystemAdminClient.GetEnvironmentConfig()
|
|
|
|
|
CheckNoError(t, resp)
|
|
|
|
|
|
|
|
|
|
if serviceSettings, ok := envConfig["ServiceSettings"]; !ok {
|
|
|
|
|
t.Fatal("should've returned ServiceSettings")
|
|
|
|
|
} else if serviceSettingsAsMap, ok := serviceSettings.(map[string]interface{}); !ok {
|
|
|
|
|
t.Fatal("should've returned ServiceSettings as a map")
|
|
|
|
|
} else {
|
|
|
|
|
if siteURL, ok := serviceSettingsAsMap["SiteURL"]; !ok {
|
|
|
|
|
t.Fatal("should've returned ServiceSettings.SiteURL")
|
|
|
|
|
} else if siteURLAsBool, ok := siteURL.(bool); !ok {
|
|
|
|
|
t.Fatal("should've returned ServiceSettings.SiteURL as a boolean")
|
|
|
|
|
} else if !siteURLAsBool {
|
|
|
|
|
t.Fatal("should've returned ServiceSettings.SiteURL as true")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if enableCustomEmoji, ok := serviceSettingsAsMap["EnableCustomEmoji"]; !ok {
|
|
|
|
|
t.Fatal("should've returned ServiceSettings.EnableCustomEmoji")
|
|
|
|
|
} else if enableCustomEmojiAsBool, ok := enableCustomEmoji.(bool); !ok {
|
|
|
|
|
t.Fatal("should've returned ServiceSettings.EnableCustomEmoji as a boolean")
|
|
|
|
|
} else if !enableCustomEmojiAsBool {
|
|
|
|
|
t.Fatal("should've returned ServiceSettings.EnableCustomEmoji as true")
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if _, ok := envConfig["TeamSettings"]; ok {
|
|
|
|
|
t.Fatal("should not have returned TeamSettings")
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
t.Run("as team admin", func(t *testing.T) {
|
|
|
|
|
TeamAdminClient := th.CreateClient()
|
|
|
|
|
th.LoginTeamAdminWithClient(TeamAdminClient)
|
|
|
|
|
|
|
|
|
|
_, resp := TeamAdminClient.GetEnvironmentConfig()
|
|
|
|
|
CheckForbiddenStatus(t, resp)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
t.Run("as regular user", func(t *testing.T) {
|
|
|
|
|
Client := th.Client
|
|
|
|
|
|
|
|
|
|
_, resp := Client.GetEnvironmentConfig()
|
|
|
|
|
CheckForbiddenStatus(t, resp)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
t.Run("as not-regular user", func(t *testing.T) {
|
|
|
|
|
Client := th.CreateClient()
|
|
|
|
|
|
|
|
|
|
_, resp := Client.GetEnvironmentConfig()
|
|
|
|
|
CheckUnauthorizedStatus(t, resp)
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
2017-03-27 09:19:53 -04:00
|
|
|
func TestGetOldClientConfig(t *testing.T) {
|
|
|
|
|
th := Setup().InitBasic().InitSystemAdmin()
|
2017-10-02 03:50:56 -05:00
|
|
|
defer th.TearDown()
|
2017-03-27 09:19:53 -04:00
|
|
|
Client := th.Client
|
|
|
|
|
|
|
|
|
|
config, resp := Client.GetOldClientConfig("")
|
|
|
|
|
CheckNoError(t, resp)
|
|
|
|
|
|
|
|
|
|
if len(config["Version"]) == 0 {
|
|
|
|
|
t.Fatal("config not returned correctly")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Client.Logout()
|
|
|
|
|
|
|
|
|
|
_, resp = Client.GetOldClientConfig("")
|
|
|
|
|
CheckNoError(t, resp)
|
|
|
|
|
|
|
|
|
|
if _, err := Client.DoApiGet("/config/client", ""); err == nil || err.StatusCode != http.StatusNotImplemented {
|
|
|
|
|
t.Fatal("should have errored with 501")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if _, err := Client.DoApiGet("/config/client?format=junk", ""); err == nil || err.StatusCode != http.StatusBadRequest {
|
|
|
|
|
t.Fatal("should have errored with 400")
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestGetOldClientLicense(t *testing.T) {
|
|
|
|
|
th := Setup().InitBasic().InitSystemAdmin()
|
2017-10-02 03:50:56 -05:00
|
|
|
defer th.TearDown()
|
2017-03-27 09:19:53 -04:00
|
|
|
Client := th.Client
|
|
|
|
|
|
|
|
|
|
license, resp := Client.GetOldClientLicense("")
|
|
|
|
|
CheckNoError(t, resp)
|
|
|
|
|
|
|
|
|
|
if len(license["IsLicensed"]) == 0 {
|
|
|
|
|
t.Fatal("license not returned correctly")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Client.Logout()
|
|
|
|
|
|
|
|
|
|
_, resp = Client.GetOldClientLicense("")
|
|
|
|
|
CheckNoError(t, resp)
|
|
|
|
|
|
|
|
|
|
if _, err := Client.DoApiGet("/license/client", ""); err == nil || err.StatusCode != http.StatusNotImplemented {
|
|
|
|
|
t.Fatal("should have errored with 501")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if _, err := Client.DoApiGet("/license/client?format=junk", ""); err == nil || err.StatusCode != http.StatusBadRequest {
|
|
|
|
|
t.Fatal("should have errored with 400")
|
|
|
|
|
}
|
2017-04-27 10:57:58 -04:00
|
|
|
|
|
|
|
|
license, resp = th.SystemAdminClient.GetOldClientLicense("")
|
|
|
|
|
CheckNoError(t, resp)
|
|
|
|
|
|
|
|
|
|
if len(license["IsLicensed"]) == 0 {
|
|
|
|
|
t.Fatal("license not returned correctly")
|
|
|
|
|
}
|
2017-03-27 09:19:53 -04:00
|
|
|
}
|
|
|
|
|
|
2017-03-21 09:06:08 -04:00
|
|
|
func TestGetAudits(t *testing.T) {
|
|
|
|
|
th := Setup().InitBasic().InitSystemAdmin()
|
2017-10-02 03:50:56 -05:00
|
|
|
defer th.TearDown()
|
2017-03-21 09:06:08 -04:00
|
|
|
Client := th.Client
|
|
|
|
|
|
|
|
|
|
audits, resp := th.SystemAdminClient.GetAudits(0, 100, "")
|
|
|
|
|
CheckNoError(t, resp)
|
|
|
|
|
|
|
|
|
|
if len(audits) == 0 {
|
|
|
|
|
t.Fatal("should not be empty")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
audits, resp = th.SystemAdminClient.GetAudits(0, 1, "")
|
|
|
|
|
CheckNoError(t, resp)
|
2017-03-20 13:37:34 +01:00
|
|
|
|
2017-03-21 09:06:08 -04:00
|
|
|
if len(audits) != 1 {
|
|
|
|
|
t.Fatal("should only be 1")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
audits, resp = th.SystemAdminClient.GetAudits(1, 1, "")
|
|
|
|
|
CheckNoError(t, resp)
|
|
|
|
|
|
|
|
|
|
if len(audits) != 1 {
|
|
|
|
|
t.Fatal("should only be 1")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_, resp = th.SystemAdminClient.GetAudits(-1, -1, "")
|
|
|
|
|
CheckNoError(t, resp)
|
|
|
|
|
|
|
|
|
|
_, resp = Client.GetAudits(0, 100, "")
|
|
|
|
|
CheckForbiddenStatus(t, resp)
|
|
|
|
|
|
|
|
|
|
Client.Logout()
|
|
|
|
|
_, resp = Client.GetAudits(0, 100, "")
|
|
|
|
|
CheckUnauthorizedStatus(t, resp)
|
2017-03-20 13:37:34 +01:00
|
|
|
}
|
|
|
|
|
|
2017-03-13 16:09:00 +01:00
|
|
|
func TestEmailTest(t *testing.T) {
|
|
|
|
|
th := Setup().InitBasic().InitSystemAdmin()
|
2017-10-02 03:50:56 -05:00
|
|
|
defer th.TearDown()
|
2017-03-13 16:09:00 +01:00
|
|
|
Client := th.Client
|
|
|
|
|
|
2018-03-13 16:42:56 +01:00
|
|
|
config := model.Config{
|
|
|
|
|
EmailSettings: model.EmailSettings{
|
|
|
|
|
SMTPServer: "",
|
|
|
|
|
SMTPPort: "",
|
|
|
|
|
},
|
|
|
|
|
}
|
2017-03-13 16:09:00 +01:00
|
|
|
|
2018-03-13 16:42:56 +01:00
|
|
|
_, resp := Client.TestEmail(&config)
|
2017-03-13 16:09:00 +01:00
|
|
|
CheckForbiddenStatus(t, resp)
|
|
|
|
|
|
2018-03-13 16:42:56 +01:00
|
|
|
_, resp = th.SystemAdminClient.TestEmail(&config)
|
2017-03-13 16:09:00 +01:00
|
|
|
CheckErrorMessage(t, resp, "api.admin.test_email.missing_server")
|
2017-09-01 16:42:02 +01:00
|
|
|
CheckBadRequestStatus(t, resp)
|
2018-03-13 16:42:56 +01:00
|
|
|
|
|
|
|
|
inbucket_host := os.Getenv("CI_HOST")
|
|
|
|
|
if inbucket_host == "" {
|
|
|
|
|
inbucket_host = "dockerhost"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
inbucket_port := os.Getenv("CI_INBUCKET_PORT")
|
|
|
|
|
if inbucket_port == "" {
|
|
|
|
|
inbucket_port = "9000"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
config.EmailSettings.SMTPServer = inbucket_host
|
|
|
|
|
config.EmailSettings.SMTPPort = inbucket_port
|
|
|
|
|
_, resp = th.SystemAdminClient.TestEmail(&config)
|
|
|
|
|
CheckOKStatus(t, resp)
|
2017-03-13 16:09:00 +01:00
|
|
|
}
|
2017-03-13 16:47:33 +01:00
|
|
|
|
|
|
|
|
func TestDatabaseRecycle(t *testing.T) {
|
|
|
|
|
th := Setup().InitBasic().InitSystemAdmin()
|
2017-10-02 03:50:56 -05:00
|
|
|
defer th.TearDown()
|
2017-03-13 16:47:33 +01:00
|
|
|
Client := th.Client
|
|
|
|
|
|
|
|
|
|
_, resp := Client.DatabaseRecycle()
|
|
|
|
|
CheckForbiddenStatus(t, resp)
|
|
|
|
|
|
|
|
|
|
_, resp = th.SystemAdminClient.DatabaseRecycle()
|
|
|
|
|
CheckNoError(t, resp)
|
2017-03-14 17:06:07 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestInvalidateCaches(t *testing.T) {
|
|
|
|
|
th := Setup().InitBasic().InitSystemAdmin()
|
2017-10-02 03:50:56 -05:00
|
|
|
defer th.TearDown()
|
2017-03-14 17:06:07 +01:00
|
|
|
Client := th.Client
|
|
|
|
|
|
|
|
|
|
flag, resp := Client.InvalidateCaches()
|
|
|
|
|
CheckForbiddenStatus(t, resp)
|
2017-10-30 11:57:24 -05:00
|
|
|
if flag {
|
2017-03-14 17:06:07 +01:00
|
|
|
t.Fatal("should not clean the cache due no permission.")
|
|
|
|
|
}
|
2017-03-13 16:47:33 +01:00
|
|
|
|
2017-03-14 17:06:07 +01:00
|
|
|
flag, resp = th.SystemAdminClient.InvalidateCaches()
|
|
|
|
|
CheckNoError(t, resp)
|
2017-10-30 11:57:24 -05:00
|
|
|
if !flag {
|
2017-03-14 17:06:07 +01:00
|
|
|
t.Fatal("should clean the cache")
|
|
|
|
|
}
|
2017-03-13 16:47:33 +01:00
|
|
|
}
|
2017-03-16 14:59:44 -04:00
|
|
|
|
|
|
|
|
func TestGetLogs(t *testing.T) {
|
|
|
|
|
th := Setup().InitBasic().InitSystemAdmin()
|
2017-10-02 03:50:56 -05:00
|
|
|
defer th.TearDown()
|
2017-03-16 14:59:44 -04:00
|
|
|
Client := th.Client
|
|
|
|
|
|
|
|
|
|
for i := 0; i < 20; i++ {
|
|
|
|
|
l4g.Info(i)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
logs, resp := th.SystemAdminClient.GetLogs(0, 10)
|
|
|
|
|
CheckNoError(t, resp)
|
|
|
|
|
|
2017-12-14 04:04:55 +09:00
|
|
|
if len(logs) != 10 {
|
|
|
|
|
t.Log(len(logs))
|
|
|
|
|
t.Fatal("wrong length")
|
|
|
|
|
}
|
2017-03-16 14:59:44 -04:00
|
|
|
|
|
|
|
|
logs, resp = th.SystemAdminClient.GetLogs(1, 10)
|
|
|
|
|
CheckNoError(t, resp)
|
|
|
|
|
|
2017-12-14 04:04:55 +09:00
|
|
|
if len(logs) != 10 {
|
|
|
|
|
t.Log(len(logs))
|
|
|
|
|
t.Fatal("wrong length")
|
|
|
|
|
}
|
2017-03-16 14:59:44 -04:00
|
|
|
|
|
|
|
|
logs, resp = th.SystemAdminClient.GetLogs(-1, -1)
|
|
|
|
|
CheckNoError(t, resp)
|
|
|
|
|
|
2017-03-21 09:06:08 -04:00
|
|
|
if len(logs) == 0 {
|
2017-03-16 14:59:44 -04:00
|
|
|
t.Fatal("should not be empty")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_, resp = Client.GetLogs(0, 10)
|
|
|
|
|
CheckForbiddenStatus(t, resp)
|
|
|
|
|
|
|
|
|
|
Client.Logout()
|
|
|
|
|
_, resp = Client.GetLogs(0, 10)
|
|
|
|
|
CheckUnauthorizedStatus(t, resp)
|
|
|
|
|
}
|
2017-04-21 11:16:35 +02:00
|
|
|
|
|
|
|
|
func TestPostLog(t *testing.T) {
|
|
|
|
|
th := Setup().InitBasic().InitSystemAdmin()
|
2017-10-02 03:50:56 -05:00
|
|
|
defer th.TearDown()
|
2017-04-21 11:16:35 +02:00
|
|
|
Client := th.Client
|
|
|
|
|
|
2017-10-20 20:26:12 -04:00
|
|
|
enableDev := *th.App.Config().ServiceSettings.EnableDeveloper
|
|
|
|
|
defer func() {
|
|
|
|
|
*th.App.Config().ServiceSettings.EnableDeveloper = enableDev
|
|
|
|
|
}()
|
|
|
|
|
*th.App.Config().ServiceSettings.EnableDeveloper = true
|
|
|
|
|
|
2017-04-21 11:16:35 +02:00
|
|
|
message := make(map[string]string)
|
|
|
|
|
message["level"] = "ERROR"
|
|
|
|
|
message["message"] = "this is a test"
|
|
|
|
|
|
|
|
|
|
_, resp := Client.PostLog(message)
|
2017-10-20 20:26:12 -04:00
|
|
|
CheckNoError(t, resp)
|
|
|
|
|
|
|
|
|
|
Client.Logout()
|
|
|
|
|
|
|
|
|
|
_, resp = Client.PostLog(message)
|
|
|
|
|
CheckNoError(t, resp)
|
|
|
|
|
|
|
|
|
|
*th.App.Config().ServiceSettings.EnableDeveloper = false
|
|
|
|
|
|
|
|
|
|
_, resp = Client.PostLog(message)
|
2017-04-21 11:16:35 +02:00
|
|
|
CheckForbiddenStatus(t, resp)
|
|
|
|
|
|
|
|
|
|
logMessage, resp := th.SystemAdminClient.PostLog(message)
|
|
|
|
|
CheckNoError(t, resp)
|
|
|
|
|
if len(logMessage) == 0 {
|
|
|
|
|
t.Fatal("should return the log message")
|
|
|
|
|
}
|
|
|
|
|
}
|
2017-06-19 13:46:51 -04:00
|
|
|
|
|
|
|
|
func TestUploadLicenseFile(t *testing.T) {
|
|
|
|
|
th := Setup().InitBasic().InitSystemAdmin()
|
2017-10-02 03:50:56 -05:00
|
|
|
defer th.TearDown()
|
2017-06-19 13:46:51 -04:00
|
|
|
Client := th.Client
|
|
|
|
|
|
|
|
|
|
ok, resp := Client.UploadLicenseFile([]byte{})
|
|
|
|
|
CheckForbiddenStatus(t, resp)
|
|
|
|
|
if ok {
|
|
|
|
|
t.Fatal("should fail")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ok, resp = th.SystemAdminClient.UploadLicenseFile([]byte{})
|
|
|
|
|
CheckBadRequestStatus(t, resp)
|
|
|
|
|
if ok {
|
|
|
|
|
t.Fatal("should fail")
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestRemoveLicenseFile(t *testing.T) {
|
|
|
|
|
th := Setup().InitBasic().InitSystemAdmin()
|
2017-10-02 03:50:56 -05:00
|
|
|
defer th.TearDown()
|
2017-06-19 13:46:51 -04:00
|
|
|
Client := th.Client
|
|
|
|
|
|
|
|
|
|
ok, resp := Client.RemoveLicenseFile()
|
|
|
|
|
CheckForbiddenStatus(t, resp)
|
|
|
|
|
if ok {
|
|
|
|
|
t.Fatal("should fail")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ok, resp = th.SystemAdminClient.RemoveLicenseFile()
|
|
|
|
|
CheckNoError(t, resp)
|
|
|
|
|
if !ok {
|
|
|
|
|
t.Fatal("should pass")
|
|
|
|
|
}
|
|
|
|
|
}
|
2017-06-19 16:35:53 -04:00
|
|
|
|
|
|
|
|
func TestGetAnalyticsOld(t *testing.T) {
|
|
|
|
|
th := Setup().InitBasic().InitSystemAdmin()
|
2017-10-02 03:50:56 -05:00
|
|
|
defer th.TearDown()
|
2017-06-19 16:35:53 -04:00
|
|
|
Client := th.Client
|
|
|
|
|
|
|
|
|
|
rows, resp := Client.GetAnalyticsOld("", "")
|
|
|
|
|
CheckForbiddenStatus(t, resp)
|
|
|
|
|
if rows != nil {
|
|
|
|
|
t.Fatal("should be nil")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
rows, resp = th.SystemAdminClient.GetAnalyticsOld("", "")
|
|
|
|
|
CheckNoError(t, resp)
|
|
|
|
|
|
|
|
|
|
found := false
|
|
|
|
|
for _, row := range rows {
|
|
|
|
|
if row.Name == "unique_user_count" {
|
|
|
|
|
found = true
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if !found {
|
|
|
|
|
t.Fatal("should return unique user count")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_, resp = th.SystemAdminClient.GetAnalyticsOld("post_counts_day", "")
|
|
|
|
|
CheckNoError(t, resp)
|
|
|
|
|
|
|
|
|
|
_, resp = th.SystemAdminClient.GetAnalyticsOld("user_counts_with_posts_day", "")
|
|
|
|
|
CheckNoError(t, resp)
|
|
|
|
|
|
|
|
|
|
_, resp = th.SystemAdminClient.GetAnalyticsOld("extra_counts", "")
|
|
|
|
|
CheckNoError(t, resp)
|
|
|
|
|
|
|
|
|
|
_, resp = th.SystemAdminClient.GetAnalyticsOld("", th.BasicTeam.Id)
|
|
|
|
|
CheckNoError(t, resp)
|
|
|
|
|
|
2018-04-27 10:38:40 -07:00
|
|
|
rows2, resp2 := th.SystemAdminClient.GetAnalyticsOld("standard", "")
|
|
|
|
|
CheckNoError(t, resp2)
|
|
|
|
|
assert.Equal(t, "total_websocket_connections", rows2[5].Name)
|
|
|
|
|
assert.Equal(t, float64(0), rows2[5].Value)
|
|
|
|
|
|
|
|
|
|
WebSocketClient, err := th.CreateWebSocketClient()
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Fatal(err)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
rows2, resp2 = th.SystemAdminClient.GetAnalyticsOld("standard", "")
|
|
|
|
|
CheckNoError(t, resp2)
|
|
|
|
|
assert.Equal(t, "total_websocket_connections", rows2[5].Name)
|
|
|
|
|
assert.Equal(t, float64(1), rows2[5].Value)
|
|
|
|
|
|
|
|
|
|
WebSocketClient.Close()
|
|
|
|
|
|
|
|
|
|
rows2, resp2 = th.SystemAdminClient.GetAnalyticsOld("standard", "")
|
|
|
|
|
CheckNoError(t, resp2)
|
|
|
|
|
assert.Equal(t, "total_websocket_connections", rows2[5].Name)
|
|
|
|
|
assert.Equal(t, float64(0), rows2[5].Value)
|
|
|
|
|
|
2017-06-19 16:35:53 -04:00
|
|
|
Client.Logout()
|
|
|
|
|
_, resp = Client.GetAnalyticsOld("", th.BasicTeam.Id)
|
|
|
|
|
CheckUnauthorizedStatus(t, resp)
|
|
|
|
|
}
|
2018-03-01 00:12:11 +01:00
|
|
|
|
|
|
|
|
func TestS3TestConnection(t *testing.T) {
|
|
|
|
|
th := Setup().InitBasic().InitSystemAdmin()
|
|
|
|
|
defer th.TearDown()
|
|
|
|
|
Client := th.Client
|
|
|
|
|
|
|
|
|
|
s3Host := os.Getenv("CI_HOST")
|
|
|
|
|
if s3Host == "" {
|
|
|
|
|
s3Host = "dockerhost"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
s3Port := os.Getenv("CI_MINIO_PORT")
|
|
|
|
|
if s3Port == "" {
|
|
|
|
|
s3Port = "9001"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
s3Endpoint := fmt.Sprintf("%s:%s", s3Host, s3Port)
|
|
|
|
|
config := model.Config{
|
|
|
|
|
FileSettings: model.FileSettings{
|
|
|
|
|
DriverName: model.NewString(model.IMAGE_DRIVER_S3),
|
|
|
|
|
AmazonS3AccessKeyId: model.MINIO_ACCESS_KEY,
|
|
|
|
|
AmazonS3SecretAccessKey: model.MINIO_SECRET_KEY,
|
|
|
|
|
AmazonS3Bucket: "",
|
2018-03-13 17:26:56 +01:00
|
|
|
AmazonS3Endpoint: s3Endpoint,
|
2018-03-01 00:12:11 +01:00
|
|
|
AmazonS3SSL: model.NewBool(false),
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_, resp := Client.TestS3Connection(&config)
|
|
|
|
|
CheckForbiddenStatus(t, resp)
|
|
|
|
|
|
|
|
|
|
_, resp = th.SystemAdminClient.TestS3Connection(&config)
|
|
|
|
|
CheckBadRequestStatus(t, resp)
|
|
|
|
|
if resp.Error.Message != "S3 Bucket is required" {
|
|
|
|
|
t.Fatal("should return error - missing s3 bucket")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
config.FileSettings.AmazonS3Bucket = model.MINIO_BUCKET
|
2018-03-13 17:26:56 +01:00
|
|
|
config.FileSettings.AmazonS3Region = "us-east-1"
|
2018-03-01 00:12:11 +01:00
|
|
|
_, resp = th.SystemAdminClient.TestS3Connection(&config)
|
2018-03-13 17:26:56 +01:00
|
|
|
CheckOKStatus(t, resp)
|
2018-03-01 00:12:11 +01:00
|
|
|
|
2018-03-13 17:26:56 +01:00
|
|
|
config.FileSettings.AmazonS3Region = ""
|
2018-03-01 00:12:11 +01:00
|
|
|
_, resp = th.SystemAdminClient.TestS3Connection(&config)
|
|
|
|
|
CheckOKStatus(t, resp)
|
|
|
|
|
|
|
|
|
|
config.FileSettings.AmazonS3Bucket = "Wrong_bucket"
|
|
|
|
|
_, resp = th.SystemAdminClient.TestS3Connection(&config)
|
|
|
|
|
CheckInternalErrorStatus(t, resp)
|
|
|
|
|
if resp.Error.Message != "Error checking if bucket exists." {
|
|
|
|
|
t.Fatal("should return error ")
|
|
|
|
|
}
|
|
|
|
|
}
|
2018-03-22 06:53:43 -07:00
|
|
|
|
|
|
|
|
func TestSupportedTimezones(t *testing.T) {
|
|
|
|
|
th := Setup().InitBasic()
|
|
|
|
|
defer th.TearDown()
|
|
|
|
|
Client := th.Client
|
|
|
|
|
|
|
|
|
|
supportedTimezonesFromConfig := th.App.Timezones()
|
|
|
|
|
supportedTimezones, resp := Client.GetSupportedTimezone()
|
|
|
|
|
|
|
|
|
|
CheckNoError(t, resp)
|
|
|
|
|
assert.Equal(t, supportedTimezonesFromConfig, supportedTimezones)
|
|
|
|
|
}
|