summaryrefslogtreecommitdiffstats
path: root/web
diff options
context:
space:
mode:
Diffstat (limited to 'web')
-rw-r--r--web/web_test.go85
1 files changed, 66 insertions, 19 deletions
diff --git a/web/web_test.go b/web/web_test.go
index f4e231b30..23b43ba93 100644
--- a/web/web_test.go
+++ b/web/web_test.go
@@ -4,6 +4,8 @@
package web
import (
+ "fmt"
+ "os"
"testing"
"github.com/mattermost/mattermost-server/api"
@@ -11,37 +13,59 @@ import (
"github.com/mattermost/mattermost-server/app"
"github.com/mattermost/mattermost-server/model"
"github.com/mattermost/mattermost-server/store"
+ "github.com/mattermost/mattermost-server/store/sqlstore"
+ "github.com/mattermost/mattermost-server/store/storetest"
"github.com/mattermost/mattermost-server/utils"
)
var ApiClient *model.Client
var URL string
-func Setup() *app.App {
- a := app.New()
- if a.Srv == nil {
- utils.TranslationsPreInit()
- utils.LoadConfig("config.json")
- utils.InitTranslations(utils.Cfg.LocalizationSettings)
- a.NewServer()
- a.InitStores()
- a.Srv.Router = api.NewRouter()
- a.StartServer()
- api4.Init(a, a.Srv.Router, false)
- api3 := api.Init(a, a.Srv.Router)
- Init(api3)
- URL = "http://localhost" + *utils.Cfg.ServiceSettings.ListenAddress
- ApiClient = model.NewClient(URL)
-
- a.Srv.Store.MarkSystemRanUnitTests()
-
- *utils.Cfg.TeamSettings.EnableOpenServer = true
+type persistentTestStore struct {
+ store.Store
+}
+
+func (*persistentTestStore) Close() {}
+
+var testStoreContainer *storetest.RunningContainer
+var testStore *persistentTestStore
+
+func StopTestStore() {
+ if testStoreContainer != nil {
+ testStoreContainer.Stop()
+ testStoreContainer = nil
}
+}
+
+func Setup() *app.App {
+ utils.TranslationsPreInit()
+ utils.LoadConfig("config.json")
+ utils.InitTranslations(utils.Cfg.LocalizationSettings)
+
+ a := app.New(app.StoreOverride(testStore), app.ConfigOverride(func(cfg *model.Config) {
+ cfg.ServiceSettings.ListenAddress = new(string)
+ *cfg.ServiceSettings.ListenAddress = ":0"
+ }))
+ a.StartServer()
+ api4.Init(a, a.Srv.Router, false)
+ api3 := api.Init(a, a.Srv.Router)
+ Init(api3)
+ URL = fmt.Sprintf("http://localhost:%v", a.Srv.ListenAddr.Port)
+ ApiClient = model.NewClient(URL)
+
+ a.Srv.Store.MarkSystemRanUnitTests()
+
+ *utils.Cfg.TeamSettings.EnableOpenServer = true
+
return a
}
func TearDown(a *app.App) {
a.Shutdown()
+ if err := recover(); err != nil {
+ StopTestStore()
+ panic(err)
+ }
}
/* Test disabled for now so we don't requrie the client to build. Maybe re-enable after client gets moved out.
@@ -111,3 +135,26 @@ func TestIncomingWebhook(t *testing.T) {
}
}
}
+
+func TestMain(m *testing.M) {
+ utils.TranslationsPreInit()
+ utils.LoadConfig("config.json")
+ utils.InitTranslations(utils.Cfg.LocalizationSettings)
+
+ status := 0
+
+ container, settings, err := storetest.NewPostgreSQLContainer()
+ if err != nil {
+ panic(err)
+ }
+
+ testStoreContainer = container
+ testStore = &persistentTestStore{store.NewLayeredStore(sqlstore.NewSqlSupplier(*settings, nil), nil, nil)}
+
+ defer func() {
+ StopTestStore()
+ os.Exit(status)
+ }()
+
+ status = m.Run()
+}