Some checks failed
CI / init (pull_request) Has been cancelled
CI / Frontend node 18.16.0 (pull_request) Has been cancelled
CI / Backend go (1.22) (pull_request) Has been cancelled
CI / release-pr (pull_request) Has been cancelled
CI / devops-test (1.22, 18.16.0) (pull_request) Has been cancelled
CI / release-please (pull_request) Has been cancelled
CI / devops-prod (1.22, 18.x) (pull_request) Has been cancelled
CI / docker (pull_request) Has been cancelled
85 lines
2.3 KiB
Go
85 lines
2.3 KiB
Go
package system
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/flipped-aurora/gin-vue-admin/server/global"
|
|
systemModel "github.com/flipped-aurora/gin-vue-admin/server/model/system"
|
|
systemRes "github.com/flipped-aurora/gin-vue-admin/server/model/system/response"
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/glebarez/sqlite"
|
|
"github.com/stretchr/testify/require"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
func setupApiServiceTestDB(t *testing.T) {
|
|
t.Helper()
|
|
|
|
db, err := gorm.Open(sqlite.Open(":memory:"), &gorm.Config{})
|
|
require.NoError(t, err)
|
|
require.NoError(t, db.AutoMigrate(&systemModel.SysApi{}, &systemModel.SysIgnoreApi{}))
|
|
|
|
global.GVA_DB = db
|
|
global.GVA_ROUTERS = gin.RoutesInfo{
|
|
{
|
|
Method: "POST",
|
|
Path: "/book/createBook",
|
|
},
|
|
}
|
|
|
|
t.Cleanup(func() {
|
|
global.GVA_DB = nil
|
|
global.GVA_ROUTERS = nil
|
|
})
|
|
}
|
|
|
|
func TestApiService_EnterSyncApiSyncsRoutesWhenPayloadIsEmpty(t *testing.T) {
|
|
setupApiServiceTestDB(t)
|
|
|
|
err := ApiServiceApp.EnterSyncApi(systemRes.SysSyncApis{})
|
|
require.NoError(t, err)
|
|
|
|
var api systemModel.SysApi
|
|
err = global.GVA_DB.Where("path = ? AND method = ?", "/book/createBook", "POST").First(&api).Error
|
|
require.NoError(t, err)
|
|
require.Equal(t, "/book/createBook", api.Path)
|
|
require.Equal(t, "POST", api.Method)
|
|
}
|
|
|
|
func TestApiService_EnterSyncApiKeepsExistingApiMetadata(t *testing.T) {
|
|
setupApiServiceTestDB(t)
|
|
err := global.GVA_DB.Create(&systemModel.SysApi{
|
|
Path: "/book/createBook",
|
|
Method: "POST",
|
|
ApiGroup: "book-admin",
|
|
Description: "创建书籍",
|
|
}).Error
|
|
require.NoError(t, err)
|
|
|
|
err = ApiServiceApp.EnterSyncApi(systemRes.SysSyncApis{})
|
|
require.NoError(t, err)
|
|
|
|
var api systemModel.SysApi
|
|
err = global.GVA_DB.Where("path = ? AND method = ?", "/book/createBook", "POST").First(&api).Error
|
|
require.NoError(t, err)
|
|
require.Equal(t, "book-admin", api.ApiGroup)
|
|
require.Equal(t, "创建书籍", api.Description)
|
|
}
|
|
|
|
func TestApiService_EnterSyncApiSkipsIgnoredRoutes(t *testing.T) {
|
|
setupApiServiceTestDB(t)
|
|
err := global.GVA_DB.Create(&systemModel.SysIgnoreApi{
|
|
Path: "/book/createBook",
|
|
Method: "POST",
|
|
}).Error
|
|
require.NoError(t, err)
|
|
|
|
err = ApiServiceApp.EnterSyncApi(systemRes.SysSyncApis{})
|
|
require.NoError(t, err)
|
|
|
|
var count int64
|
|
err = global.GVA_DB.Model(&systemModel.SysApi{}).Where("path = ? AND method = ?", "/book/createBook", "POST").Count(&count).Error
|
|
require.NoError(t, err)
|
|
require.Zero(t, count)
|
|
}
|