sharded-gotify/database/plugin_test.go

72 lines
2.1 KiB
Go

package database
import (
"github.com/gotify/server/model"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func (s *DatabaseSuite) TestPluginConf() {
plugin := model.PluginConf{
ModulePath: "github.com/gotify/example-plugin",
Token: "Pabc",
UserID: 1,
Enabled: true,
Config: nil,
ApplicationID: 2,
}
assert.Nil(s.T(), s.db.CreatePluginConf(&plugin))
assert.Equal(s.T(), uint(1), plugin.ID)
pluginConf, err := s.db.GetPluginConfByUserAndPath(1, "github.com/gotify/example-plugin")
require.NoError(s.T(), err)
assert.Equal(s.T(), "Pabc", pluginConf.Token)
pluginConf, err = s.db.GetPluginConfByToken("Pabc")
require.NoError(s.T(), err)
assert.Equal(s.T(), true, pluginConf.Enabled)
pluginConf, err = s.db.GetPluginConfByApplicationID(2)
require.NoError(s.T(), err)
assert.Equal(s.T(), "Pabc", pluginConf.Token)
pluginConf, err = s.db.GetPluginConfByID(1)
require.NoError(s.T(), err)
assert.Equal(s.T(), "github.com/gotify/example-plugin", pluginConf.ModulePath)
pluginConf, err = s.db.GetPluginConfByToken("Pnotexist")
require.NoError(s.T(), err)
assert.Nil(s.T(), pluginConf)
pluginConf, err = s.db.GetPluginConfByID(12)
require.NoError(s.T(), err)
assert.Nil(s.T(), pluginConf)
pluginConf, err = s.db.GetPluginConfByUserAndPath(1, "not/exist")
require.NoError(s.T(), err)
assert.Nil(s.T(), pluginConf)
pluginConf, err = s.db.GetPluginConfByApplicationID(99)
require.NoError(s.T(), err)
assert.Nil(s.T(), pluginConf)
pluginConfs, err := s.db.GetPluginConfByUser(1)
require.NoError(s.T(), err)
assert.Len(s.T(), pluginConfs, 1)
pluginConfs, err = s.db.GetPluginConfByUser(0)
require.NoError(s.T(), err)
assert.Len(s.T(), pluginConfs, 0)
testConf := `{"test_config_key":"hello"}`
plugin.Enabled = false
plugin.Config = []byte(testConf)
assert.Nil(s.T(), s.db.UpdatePluginConf(&plugin))
pluginConf, err = s.db.GetPluginConfByToken("Pabc")
require.NoError(s.T(), err)
assert.Equal(s.T(), false, pluginConf.Enabled)
assert.Equal(s.T(), testConf, string(pluginConf.Config))
}