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

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")
}
}