package initialize import ( "testing" "github.com/glebarez/sqlite" "github.com/stretchr/testify/require" "gorm.io/gorm" "wails-app/internal/dao" "wails-app/internal/global" ) func TestEnsureOperationPermissionsIsIdempotent(t *testing.T) { db, err := gorm.Open(sqlite.Open(":memory:"), &gorm.Config{}) require.NoError(t, err) require.NoError(t, db.AutoMigrate(&dao.SysApi{})) global.GVA_DB = db t.Cleanup(func() { global.GVA_DB = nil }) require.NoError(t, EnsureOperationPermissions()) require.NoError(t, EnsureOperationPermissions()) routes := [][2]string{ {"/vehicle/entry", "POST"}, {"/vehicle/operation/context", "POST"}, {"/vehicle/passage", "POST"}, {"/channel/events", "GET"}, {"/parking/gate/devices", "GET"}, {"/parking/gate/open", "POST"}, {"/parking/gate/close", "POST"}, } for _, route := range routes { var apiCount int64 require.NoError(t, db.Model(&dao.SysApi{}). Where("path = ? AND method = ?", route[0], route[1]).Count(&apiCount).Error) require.EqualValues(t, 1, apiCount, route) var ruleCount int64 require.NoError(t, db.Table("casbin_rule"). Where("v0 IN ? AND v1 = ? AND v2 = ?", []string{"618", "888", "9527"}, route[0], route[1]). Count(&ruleCount).Error) require.EqualValues(t, 3, ruleCount, route) } }