github.com/masterhung0112/hk_server/v5@v5.0.0-20220302090640-ec71aef15e1c/app/plugin_api_tests/test_db_driver/main.go (about) 1 // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. 2 // See LICENSE.txt for license information. 3 4 package main_test 5 6 import ( 7 "database/sql" 8 "testing" 9 10 "github.com/masterhung0112/hk_server/v5/app/plugin_api_tests" 11 "github.com/masterhung0112/hk_server/v5/model" 12 "github.com/masterhung0112/hk_server/v5/plugin" 13 "github.com/masterhung0112/hk_server/v5/shared/driver" 14 "github.com/masterhung0112/hk_server/v5/store/sqlstore" 15 "github.com/masterhung0112/hk_server/v5/store/storetest" 16 ) 17 18 type MyPlugin struct { 19 plugin.MattermostPlugin 20 config plugin_api_tests.BasicConfig 21 t *testing.T 22 } 23 24 func (p *MyPlugin) OnConfigurationChange() error { 25 if err := p.API.LoadPluginConfiguration(&p.config); err != nil { 26 return err 27 } 28 return nil 29 } 30 31 func (p *MyPlugin) MessageWillBePosted(_ *plugin.Context, _ *model.Post) (*model.Post, string) { 32 store := sqlstore.New(p.API.GetUnsanitizedConfig().SqlSettings, nil) 33 store.GetMaster().Db.Close() 34 35 for _, isMaster := range []bool{true, false} { 36 // We replace the master DB with master and replica both just to make 37 // gorp APIs work. 38 store.GetMaster().Db = sql.OpenDB(driver.NewConnector(p.Driver, isMaster)) 39 40 // Testing with a handful of stores 41 // storetest.TestPostStore(p.t, store, store) 42 storetest.StoreTestSuiteExecute(p.t, &storetest.PostStoreTestSuite{}, store, store) 43 storetest.StoreTestSuiteExecute(p.t, &storetest.UserStoreTS{}, store, store) 44 storetest.StoreTestSuiteExecute(p.t, &storetest.UserStoreGetAllProfilesTS{}, store, store) 45 storetest.StoreTestSuiteExecute(p.t, &storetest.UserStoreGetProfilesTS{}, store, store) 46 storetest.StoreTestSuiteExecute(p.t, &storetest.UserStoreGetProfilesByIdsTS{}, store, store) 47 48 // storetest.TestUserStore(p.t, store, store) 49 // storetest.TestTeamStore(p.t, store) 50 storetest.StoreTestSuiteExecute(p.t, &storetest.TeamStoreTestSuite{}, store, store) 51 // storetest.TestChannelStore(p.t, store, store) 52 storetest.StoreTestSuiteExecute(p.t, &storetest.ChannelStoreTestSuite{}, store, store) 53 // storetest.TestBotStore(p.t, store, store) 54 55 store.GetMaster().Db.Close() 56 } 57 58 // Use the API to instantiate the driver 59 // And then run the full suite of tests. 60 return nil, "OK" 61 } 62 63 // TestDBAPI is a test function which actually runs a plugin. The objective 64 // is to run the storetest suite from inside a plugin. 65 // 66 // The test runner compiles the test code to a binary, and runs it as a normal 67 // binary. But under the hood, a test runs. 68 func TestDBAPI(t *testing.T) { 69 plugin.ClientMain(&MyPlugin{t: t}) 70 }