mirror of
https://github.com/gotify/server.git
synced 2024-01-28 15:20:56 +03:00
183 lines
5.9 KiB
Go
183 lines
5.9 KiB
Go
package database
|
|
|
|
import (
|
|
"github.com/gotify/server/v2/model"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func (s *DatabaseSuite) TestUser() {
|
|
user, err := s.db.GetUserByID(55)
|
|
require.NoError(s.T(), err)
|
|
assert.Nil(s.T(), user, "not existing user")
|
|
|
|
user, err = s.db.GetUserByName("nicories")
|
|
require.NoError(s.T(), err)
|
|
assert.Nil(s.T(), user, "not existing user")
|
|
|
|
jmattheis, err := s.db.GetUserByID(1)
|
|
require.NoError(s.T(), err)
|
|
assert.NotNil(s.T(), jmattheis, "on bootup the first user should be automatically created")
|
|
|
|
adminCount, err := s.db.CountUser("admin = ?", true)
|
|
require.NoError(s.T(), err)
|
|
assert.Equal(s.T(), 1, adminCount, 1, "there is initially one admin")
|
|
|
|
users, err := s.db.GetUsers()
|
|
require.NoError(s.T(), err)
|
|
assert.Len(s.T(), users, 1)
|
|
assert.Contains(s.T(), users, jmattheis)
|
|
|
|
nicories := &model.User{Name: "nicories", Pass: []byte{1, 2, 3, 4}, Admin: false}
|
|
s.db.CreateUser(nicories)
|
|
assert.NotEqual(s.T(), 0, nicories.ID, "on create user a new id should be assigned")
|
|
userCount, err := s.db.CountUser()
|
|
require.NoError(s.T(), err)
|
|
assert.Equal(s.T(), 2, userCount, "two users should exist")
|
|
|
|
user, err = s.db.GetUserByName("nicories")
|
|
require.NoError(s.T(), err)
|
|
assert.Equal(s.T(), nicories, user)
|
|
|
|
users, err = s.db.GetUsers()
|
|
require.NoError(s.T(), err)
|
|
assert.Len(s.T(), users, 2)
|
|
assert.Contains(s.T(), users, jmattheis)
|
|
assert.Contains(s.T(), users, nicories)
|
|
|
|
nicories.Name = "tom"
|
|
nicories.Pass = []byte{12}
|
|
nicories.Admin = true
|
|
require.NoError(s.T(), s.db.UpdateUser(nicories))
|
|
|
|
tom, err := s.db.GetUserByID(nicories.ID)
|
|
require.NoError(s.T(), err)
|
|
assert.Equal(s.T(), &model.User{ID: nicories.ID, Name: "tom", Pass: []byte{12}, Admin: true}, tom)
|
|
|
|
users, err = s.db.GetUsers()
|
|
require.NoError(s.T(), err)
|
|
assert.Len(s.T(), users, 2)
|
|
|
|
adminCount, err = s.db.CountUser(&model.User{Admin: true})
|
|
require.NoError(s.T(), err)
|
|
assert.Equal(s.T(), 2, adminCount, "two admins exist")
|
|
|
|
require.NoError(s.T(), s.db.DeleteUserByID(tom.ID))
|
|
users, err = s.db.GetUsers()
|
|
require.NoError(s.T(), err)
|
|
assert.Len(s.T(), users, 1)
|
|
assert.Contains(s.T(), users, jmattheis)
|
|
|
|
s.db.DeleteUserByID(jmattheis.ID)
|
|
users, err = s.db.GetUsers()
|
|
require.NoError(s.T(), err)
|
|
assert.Empty(s.T(), users)
|
|
}
|
|
|
|
func (s *DatabaseSuite) TestUserPlugins() {
|
|
assert.NoError(s.T(), s.db.CreateUser(&model.User{Name: "geek", ID: 16}))
|
|
if geekUser, err := s.db.GetUserByName("geek"); assert.NoError(s.T(), err) {
|
|
s.db.CreatePluginConf(&model.PluginConf{
|
|
UserID: geekUser.ID,
|
|
ModulePath: "github.com/gotify/example-plugin",
|
|
Token: "P1234",
|
|
Enabled: true,
|
|
})
|
|
s.db.CreatePluginConf(&model.PluginConf{
|
|
UserID: geekUser.ID,
|
|
ModulePath: "github.com/gotify/example-plugin/v2",
|
|
Token: "P5678",
|
|
Enabled: true,
|
|
})
|
|
}
|
|
|
|
if geekUser, err := s.db.GetUserByName("geek"); assert.NoError(s.T(), err) {
|
|
if pluginConfs, err := s.db.GetPluginConfByUser(geekUser.ID); assert.NoError(s.T(), err) {
|
|
assert.Len(s.T(), pluginConfs, 2)
|
|
}
|
|
}
|
|
if pluginConf, err := s.db.GetPluginConfByToken("P1234"); assert.NoError(s.T(), err) {
|
|
assert.Equal(s.T(), "github.com/gotify/example-plugin", pluginConf.ModulePath)
|
|
}
|
|
}
|
|
|
|
func (s *DatabaseSuite) TestDeleteUserDeletesApplicationsAndClientsAndPluginConfs() {
|
|
require.NoError(s.T(), s.db.CreateUser(&model.User{Name: "nicories", ID: 10}))
|
|
require.NoError(s.T(), s.db.CreateApplication(&model.Application{ID: 100, Token: "apptoken", UserID: 10}))
|
|
require.NoError(s.T(), s.db.CreateMessage(&model.Message{ID: 1000, ApplicationID: 100}))
|
|
require.NoError(s.T(), s.db.CreateClient(&model.Client{ID: 10000, Token: "clienttoken", UserID: 10}))
|
|
require.NoError(s.T(), s.db.CreatePluginConf(&model.PluginConf{ID: 1000, Token: "plugintoken", UserID: 10}))
|
|
|
|
require.NoError(s.T(), s.db.CreateUser(&model.User{Name: "nicories2", ID: 20}))
|
|
require.NoError(s.T(), s.db.CreateApplication(&model.Application{ID: 200, Token: "apptoken2", UserID: 20}))
|
|
require.NoError(s.T(), s.db.CreateMessage(&model.Message{ID: 2000, ApplicationID: 200}))
|
|
require.NoError(s.T(), s.db.CreateClient(&model.Client{ID: 20000, Token: "clienttoken2", UserID: 20}))
|
|
require.NoError(s.T(), s.db.CreatePluginConf(&model.PluginConf{ID: 2000, Token: "plugintoken2", UserID: 20}))
|
|
|
|
require.NoError(s.T(), s.db.DeleteUserByID(10))
|
|
|
|
app, err := s.db.GetApplicationByToken("apptoken")
|
|
require.NoError(s.T(), err)
|
|
assert.Nil(s.T(), app)
|
|
|
|
client, err := s.db.GetClientByToken("clienttoken")
|
|
require.NoError(s.T(), err)
|
|
assert.Nil(s.T(), client)
|
|
|
|
clients, err := s.db.GetClientsByUser(10)
|
|
require.NoError(s.T(), err)
|
|
assert.Empty(s.T(), clients)
|
|
|
|
apps, err := s.db.GetApplicationsByUser(10)
|
|
require.NoError(s.T(), err)
|
|
assert.Empty(s.T(), apps)
|
|
|
|
msgs, err := s.db.GetMessagesByApplication(100)
|
|
require.NoError(s.T(), err)
|
|
assert.Empty(s.T(), msgs)
|
|
|
|
msgs, err = s.db.GetMessagesByUser(10)
|
|
require.NoError(s.T(), err)
|
|
assert.Empty(s.T(), msgs)
|
|
|
|
pluginConfs, err := s.db.GetPluginConfByUser(10)
|
|
require.NoError(s.T(), err)
|
|
assert.Empty(s.T(), pluginConfs)
|
|
|
|
msg, err := s.db.GetMessageByID(1000)
|
|
require.NoError(s.T(), err)
|
|
assert.Nil(s.T(), msg)
|
|
|
|
app, err = s.db.GetApplicationByToken("apptoken2")
|
|
require.NoError(s.T(), err)
|
|
assert.NotNil(s.T(), app)
|
|
|
|
client, err = s.db.GetClientByToken("clienttoken2")
|
|
require.NoError(s.T(), err)
|
|
assert.NotNil(s.T(), client)
|
|
|
|
clients, err = s.db.GetClientsByUser(20)
|
|
require.NoError(s.T(), err)
|
|
assert.NotEmpty(s.T(), clients)
|
|
|
|
apps, err = s.db.GetApplicationsByUser(20)
|
|
require.NoError(s.T(), err)
|
|
assert.NotEmpty(s.T(), apps)
|
|
|
|
pluginConf, err := s.db.GetPluginConfByUser(20)
|
|
require.NoError(s.T(), err)
|
|
assert.NotEmpty(s.T(), pluginConf)
|
|
|
|
msgs, err = s.db.GetMessagesByApplication(200)
|
|
require.NoError(s.T(), err)
|
|
assert.NotEmpty(s.T(), msgs)
|
|
|
|
msgs, err = s.db.GetMessagesByUser(20)
|
|
require.NoError(s.T(), err)
|
|
assert.NotEmpty(s.T(), msgs)
|
|
|
|
msg, err = s.db.GetMessageByID(2000)
|
|
require.NoError(s.T(), err)
|
|
assert.NotNil(s.T(), msg)
|
|
}
|