Browse Source

lib/common unit test added

master
Bernd-René Predota 5 years ago
parent
commit
40a03192a4
  1. 2
      README.md
  2. 136
      lib/common/common_test.go
  3. 36
      models/token_test.go
  4. 36
      models/user_test.go

2
README.md

@ -1,6 +1,6 @@
# golang API Skeleton
[![Build Status](https://drone.devices.local/api/badges/mawas/golang-api-skeleton/status.svg)](https://drone.devices.local/mawas/golang-api-skeleton)<a href='https://github.com/jpoles1/gopherbadger' target='_blank'>![gopherbadger-tag-do-not-edit](https://img.shields.io/badge/Go%20Coverage-77%25-brightgreen.svg?longCache=true&style=flat)</a>
[![Build Status](https://drone.devices.local/api/badges/mawas/golang-api-skeleton/status.svg)](https://drone.devices.local/mawas/golang-api-skeleton)<a href='https://github.com/jpoles1/gopherbadger' target='_blank'>![gopherbadger-tag-do-not-edit](https://img.shields.io/badge/Go%20Coverage-75%25-brightgreen.svg?longCache=true&style=flat)</a>
refined skeleton future apis should be based on

136
lib/common/common_test.go

@ -0,0 +1,136 @@
package common
import (
"encoding/json"
"testing"
"git.devices.local/mawas/golang-api-skeleton/lib/cache"
"github.com/oklog/ulid/v2"
"gorm.io/driver/sqlite"
"gorm.io/gorm"
)
const (
username = "unittest"
userID = "01F5Z7CFER2D9QH2VY2V7PVQHF"
)
func mock(t *testing.T) (*gorm.DB, cache.Cache) {
db, err := gorm.Open(
sqlite.Open(":memory:"),
&gorm.Config{DisableForeignKeyConstraintWhenMigrating: true},
)
if err != nil {
t.Error(err)
}
appCache, err := cache.Bootstrap()
if err != nil {
t.Error(err)
}
if err := appCache.Set("user:"+userID, username); err != nil {
t.Error(err)
}
if err := appCache.Set("user:"+username, userID); err != nil {
t.Error(err)
}
return db, appCache
}
func basicfieldsMock(t *testing.T) (*gorm.DB, cache.Cache, BasicFields) {
db, appCache := mock(t)
return db, appCache, BasicFields{}
}
func modelGUIDPKMock(t *testing.T) (*gorm.DB, cache.Cache, ModelGUIDPK) {
db, appCache := mock(t)
return db, appCache, ModelGUIDPK{}
}
func modelHiddenGUIDPKMock(t *testing.T) (*gorm.DB, cache.Cache, ModelHiddenGUIDPK) {
db, appCache := mock(t)
return db, appCache, ModelHiddenGUIDPK{}
}
func TestBasicFieldsBeforeCreate(t *testing.T) {
db, _, basicFields := basicfieldsMock(t)
err := basicFields.BeforeCreate(db.Set("userID", userID))
if err != nil {
t.Error(err)
}
if basicFields.CreatedByDB.String() != userID {
t.Error("BeforeCreate doesn't set CreatedByDB")
}
if basicFields.UpdatedByDB.String() != userID {
t.Error("BeforeCreate doesn't set UpdatedByDB")
}
}
func TestBasicFieldsAfterCreate(t *testing.T) {
db, _, basicFields := basicfieldsMock(t)
err := basicFields.AfterCreate(db.Set("username", username))
if err != nil {
t.Error(err)
}
if basicFields.CreatedByJSON != username {
t.Error("BasicFields AfterCreate doesn't set CreatedByJSON")
}
if basicFields.UpdatedByJSON != username {
t.Error("BasicFields AfterCreate doesn't set UpdatedByJSON")
}
}
func TestModelGUIDPKBeforeCreate(t *testing.T) {
db, _, modelGUIDPK := modelGUIDPKMock(t)
err := modelGUIDPK.BeforeCreate(db.Set("userID", userID))
if err != nil {
t.Error(err)
}
if modelGUIDPK.CreatedByDB.String() != userID {
t.Error("ModelGUIDPK BeforeCreate doesn't set CreatedByDB")
}
if modelGUIDPK.UpdatedByDB.String() != userID {
t.Error("ModelGUIDPK BeforeCreate doesn't set UpdatedByDB")
}
if _, err := ulid.Parse(modelGUIDPK.ID.String()); err != nil {
t.Error("ModelGUIDPK BeforeCreate doesn't set proper ID ->", err.Error())
}
jsonString, err := json.Marshal(modelGUIDPK)
if err != nil {
t.Error(err)
}
var j map[string]interface{}
if err := json.Unmarshal([]byte(jsonString), &j); err != nil {
t.Error(err)
}
if _, exists := j["id"]; !exists {
t.Error("ModelGUIDPK ID must be visible in json")
}
}
func TestModelHiddenGUIDPKBeforeCreate(t *testing.T) {
db, _, modelHiddenGUIDPK := modelHiddenGUIDPKMock(t)
err := modelHiddenGUIDPK.BeforeCreate(db.Set("userID", userID))
if err != nil {
t.Error(err)
}
if modelHiddenGUIDPK.CreatedByDB.String() != userID {
t.Error("ModelHiddenGUIDPK BeforeCreate doesn't set CreatedByDB")
}
if modelHiddenGUIDPK.UpdatedByDB.String() != userID {
t.Error("ModelHiddenGUIDPK BeforeCreate doesn't set UpdatedByDB")
}
if _, err := ulid.Parse(modelHiddenGUIDPK.ID.String()); err != nil {
t.Error("ModelHiddenGUIDPK BeforeCreate doesn't set proper ID ->", err.Error())
}
jsonString, err := json.Marshal(modelHiddenGUIDPK)
if err != nil {
t.Error(err)
}
var j map[string]interface{}
if err := json.Unmarshal([]byte(jsonString), &j); err != nil {
t.Error(err)
}
if _, exists := j["id"]; exists {
t.Error("ModelGUIDPK ID must be hidden in json")
}
}

36
models/token_test.go

@ -20,24 +20,24 @@ func tokenmock(t *testing.T) (*gorm.DB, cache.Cache, Token) {
&gorm.Config{DisableForeignKeyConstraintWhenMigrating: true},
)
if err != nil {
t.Fatal(err)
t.Error(err)
}
if err := db.AutoMigrate(&User{}); err != nil {
t.Fatal(err)
t.Error(err)
}
appCache, err := cache.Bootstrap()
if err != nil {
t.Fatal(err)
t.Error(err)
}
if err := appCache.Set("user:"+userID, username); err != nil {
t.Fatal(err)
t.Error(err)
}
if err := appCache.Set("user:"+username, userID); err != nil {
t.Fatal(err)
t.Error(err)
}
guid, err := common.StringToGUID(userID)
if err != nil {
t.Fatal(err)
t.Error(err)
}
return db, appCache, Token{UserID: guid}
}
@ -46,16 +46,16 @@ func TestTokenBeforeCreate(t *testing.T) {
db, _, token := tokenmock(t)
err := token.BeforeCreate(db.Set("userID", userID))
if err != nil {
t.Fatal(err)
t.Error(err)
}
if token.CreatedByDB.String() != userID {
t.Fatal("BeforeCreate doesn't set CreatedByDB")
t.Error("Token BeforeCreate doesn't set CreatedByDB")
}
if token.UpdatedByDB.String() != userID {
t.Fatal("BeforeCreate doesn't set UpdatedByDB")
t.Error("Token BeforeCreate doesn't set UpdatedByDB")
}
if _, err := ulid.Parse(token.Token.String()); err != nil {
t.Fatal("BeforeCreate doesn't set proper token ->", err.Error())
t.Error("Token BeforeCreate doesn't set proper Token ->", err.Error())
}
}
@ -75,27 +75,27 @@ func TestTokenAfterFind(t *testing.T) {
}
err := token.AfterFind(db.Set("cache", appCache))
if err != nil {
t.Fatal(err)
t.Error(err)
}
if token.DeletedAtJSON == nil {
t.Fatal("Token AfterFind doesn't set DeletedAtJSON")
t.Error("Token AfterFind doesn't set DeletedAtJSON")
}
if *token.DeletedAtJSON != now {
t.Fatal("Token AfterFind doesn't set DeletedAtJSON proper")
t.Error("Token AfterFind doesn't set DeletedAtJSON proper")
}
if token.LastUsedJSON == nil {
t.Fatal("Token AfterFind doesn't set LastUsedJSON")
t.Error("Token AfterFind doesn't set LastUsedJSON")
}
if *token.LastUsedJSON != now {
t.Fatal("Token AfterFind doesn't proper set LastUsedJSON")
t.Error("Token AfterFind doesn't proper set LastUsedJSON")
}
if token.CreatedByJSON != username {
t.Fatal("Token AfterFind doesn't set CreatedByJSON")
t.Error("Token AfterFind doesn't set CreatedByJSON")
}
if token.UpdatedByJSON != username {
t.Fatal("Token AfterFind doesn't set UpdatedByJSON")
t.Error("Token AfterFind doesn't set UpdatedByJSON")
}
if token.Username != username {
t.Fatal("Token AfterFind doesn't set Username")
t.Error("Token AfterFind doesn't set Username")
}
}

36
models/user_test.go

@ -18,24 +18,24 @@ func usermock(t *testing.T) (*gorm.DB, cache.Cache, User) {
&gorm.Config{DisableForeignKeyConstraintWhenMigrating: true},
)
if err != nil {
t.Fatal(err)
t.Error(err)
}
if err := db.AutoMigrate(&User{}); err != nil {
t.Fatal(err)
t.Error(err)
}
appCache, err := cache.Bootstrap()
if err != nil {
t.Fatal(err)
t.Error(err)
}
userID, err := common.NewGUID()
if err != nil {
t.Fatal(err)
t.Error(err)
}
if err := appCache.Set("user:"+userID.String(), username); err != nil {
t.Fatal(err)
t.Error(err)
}
if err := appCache.Set("user:"+username, userID.String()); err != nil {
t.Fatal(err)
t.Error(err)
}
user := User{
Username: username,
@ -50,16 +50,16 @@ func TestUserAfterCreate(t *testing.T) {
db, _, user := usermock(t)
err := user.AfterCreate(db.Set("username", username))
if err != nil {
t.Fatal(err)
t.Error(err)
}
if user.CreatedByJSON != username {
t.Fatal("User AfterCreate doesn't set CreatedByJSON")
t.Error("User AfterCreate doesn't set CreatedByJSON")
}
if user.UpdatedByJSON != username {
t.Fatal("User AfterCreate doesn't set UpdatedByJSON")
t.Error("User AfterCreate doesn't set UpdatedByJSON")
}
if user.Tokens == nil {
t.Fatal("User AfterCreate doesn't initialize Tokens")
t.Error("User AfterCreate doesn't initialize Tokens")
}
}
@ -75,29 +75,29 @@ func TestUserAfterFind(t *testing.T) {
}
token, err := common.NewGUID()
if err != nil {
t.Fatal(err)
t.Error(err)
}
user.TokensRef = []Token{{Token: token}}
err = user.AfterFind(db.Set("username", username).Set("cache", appCache))
if err != nil {
t.Fatal(err)
t.Error(err)
}
if user.DeletedAtJSON == nil {
t.Fatal("User AfterFind doesn't set DeletedAtJSON")
t.Error("User AfterFind doesn't set DeletedAtJSON")
}
if *user.DeletedAtJSON != now {
t.Fatal("User AfterFind doesn't proper set DeletedAtJSON")
t.Error("User AfterFind doesn't proper set DeletedAtJSON")
}
if user.Tokens == nil {
t.Fatal("User AfterFind doesn't initialize Tokens")
t.Error("User AfterFind doesn't initialize Tokens")
}
if user.Tokens[0] != token.String() {
t.Fatal("User AfterFind Tokens assignment broken")
t.Error("User AfterFind Tokens assignment broken")
}
if user.CreatedByJSON != username {
t.Fatal("User AfterFind doesn't set CreatedByJSON")
t.Error("User AfterFind doesn't set CreatedByJSON")
}
if user.UpdatedByJSON != username {
t.Fatal("User AfterFind doesn't set UpdatedByJSON")
t.Error("User AfterFind doesn't set UpdatedByJSON")
}
}
Loading…
Cancel
Save