44 lines
1.6 KiB
Go
44 lines
1.6 KiB
Go
package business
|
|
|
|
import (
|
|
"github.com/glebarez/sqlite"
|
|
"gorm.io/gorm"
|
|
datasystem "kra/internal/data/system"
|
|
"path/filepath"
|
|
"testing"
|
|
)
|
|
|
|
func TestActivationUpgradeGivesAllBusinessLevelsApplicationAccess(t *testing.T) {
|
|
db, err := gorm.Open(sqlite.Open(filepath.Join(t.TempDir(), "surface.db")), &gorm.Config{})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
pool, _ := db.DB()
|
|
defer pool.Close()
|
|
for _, step := range datasystem.Migrations() {
|
|
if err := step.Migrate(db); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
for _, sql := range []string{"INSERT INTO sys_authorities(authority_id,business_level) VALUES(888,NULL),(41,1),(57,2),(83,3),(100,NULL)", "INSERT INTO sys_base_menus(id,name,title) VALUES(1,'sw_BusMgmt','商务管理'),(2,'sw_ChannelActivationList','渠道激活')"} {
|
|
if err := db.Exec(sql).Error; err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
for i := 0; i < 2; i++ {
|
|
if err := migrateActivationSurface(db); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
var count int64
|
|
if err := db.Table("sys_authority_menus").Where("sys_base_menu_id=2 AND sys_authority_authority_id IN (41,57,83)").Count(&count).Error; err != nil || count != 3 {
|
|
t.Fatalf("business menu access %d: %v", count, err)
|
|
}
|
|
if err := db.Table("casbin_rule").Where("v0 IN ('41','57','83') AND v1='/sw/promoteActivePool/apply' AND v2='POST'").Count(&count).Error; err != nil || count != 3 {
|
|
t.Fatalf("application grants %d: %v", count, err)
|
|
}
|
|
if err := db.Table("casbin_rule").Where("v0='100' AND v1='/sw/promoteActivePool/apply'").Count(&count).Error; err != nil || count != 0 {
|
|
t.Fatal("unrelated role received grant")
|
|
}
|
|
}
|