You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
103 lines
2.4 KiB
103 lines
2.4 KiB
package models
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"git.devices.local/mawas/golang-api-skeleton/lib/cache"
|
|
"git.devices.local/mawas/golang-api-skeleton/lib/common"
|
|
"gorm.io/driver/sqlite"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
const username = "unittest"
|
|
|
|
func usermock(t *testing.T) (*gorm.DB, cache.Cache, User) {
|
|
db, err := gorm.Open(
|
|
sqlite.Open(":memory:"),
|
|
&gorm.Config{DisableForeignKeyConstraintWhenMigrating: true},
|
|
)
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
if err := db.AutoMigrate(&User{}); err != nil {
|
|
t.Error(err)
|
|
}
|
|
appCache, err := cache.Bootstrap()
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
userID, err := common.NewGUID()
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
if err := appCache.Set("user:"+userID.String(), username); err != nil {
|
|
t.Error(err)
|
|
}
|
|
if err := appCache.Set("user:"+username, userID.String()); err != nil {
|
|
t.Error(err)
|
|
}
|
|
user := User{
|
|
Username: username,
|
|
Firstname: "Unit",
|
|
Lastname: "Test",
|
|
}
|
|
user.ID = userID
|
|
return db, appCache, user
|
|
}
|
|
|
|
func TestUserAfterCreate(t *testing.T) {
|
|
db, _, user := usermock(t)
|
|
err := user.AfterCreate(db.Set("username", username))
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
if user.CreatedByJSON != username {
|
|
t.Error("User AfterCreate doesn't set CreatedByJSON")
|
|
}
|
|
if user.UpdatedByJSON != username {
|
|
t.Error("User AfterCreate doesn't set UpdatedByJSON")
|
|
}
|
|
if user.Tokens == nil {
|
|
t.Error("User AfterCreate doesn't initialize Tokens")
|
|
}
|
|
}
|
|
|
|
func TestUserAfterFind(t *testing.T) {
|
|
db, appCache, user := usermock(t)
|
|
defer appCache.Close()
|
|
now := time.Now()
|
|
user.CreatedByDB = user.ID
|
|
user.UpdatedByDB = user.ID
|
|
user.DeletedAtDB = gorm.DeletedAt{
|
|
Valid: true,
|
|
Time: now,
|
|
}
|
|
token, err := common.NewGUID()
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
user.TokensRef = []Token{{Token: token}}
|
|
err = user.AfterFind(db.Set("username", username).Set("cache", appCache))
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
if user.DeletedAtJSON == nil {
|
|
t.Error("User AfterFind doesn't set DeletedAtJSON")
|
|
}
|
|
if *user.DeletedAtJSON != now {
|
|
t.Error("User AfterFind doesn't proper set DeletedAtJSON")
|
|
}
|
|
if user.Tokens == nil {
|
|
t.Error("User AfterFind doesn't initialize Tokens")
|
|
}
|
|
if user.Tokens[0] != token.String() {
|
|
t.Error("User AfterFind Tokens assignment broken")
|
|
}
|
|
if user.CreatedByJSON != username {
|
|
t.Error("User AfterFind doesn't set CreatedByJSON")
|
|
}
|
|
if user.UpdatedByJSON != username {
|
|
t.Error("User AfterFind doesn't set UpdatedByJSON")
|
|
}
|
|
}
|