Files
chorus/admin/common/database/casbin_test.go
T

46 lines
1.0 KiB
Go

package database
import (
"testing"
"gorm.io/driver/sqlite"
"gorm.io/gorm"
)
func TestSetupCasbinUsesMigratedSystemTableWithoutAutoMigrate(t *testing.T) {
db, err := gorm.Open(sqlite.Open("file::memory:?cache=shared"), &gorm.Config{})
if err != nil {
t.Fatal(err)
}
if err := db.Exec(`CREATE TABLE sys_casbin_rule (
id INTEGER PRIMARY KEY AUTOINCREMENT,
ptype TEXT NOT NULL,
v0 TEXT,
v1 TEXT,
v2 TEXT,
v3 TEXT,
v4 TEXT,
v5 TEXT
)`).Error; err != nil {
t.Fatal(err)
}
if err := db.Exec(`INSERT INTO sys_casbin_rule (ptype, v0, v1, v2) VALUES ('p', 'chorus_operator', '/api/v1/chorus/providers', 'GET')`).Error; err != nil {
t.Fatal(err)
}
enforcer, err := setupCasbin(db)
if err != nil {
t.Fatal(err)
}
allowed, err := enforcer.Enforce("chorus_operator", "/api/v1/chorus/providers", "GET")
if err != nil {
t.Fatal(err)
}
if !allowed {
t.Fatal("migrated Chorus policy was not loaded")
}
if db.Migrator().HasTable("casbin_rule") {
t.Fatal("Casbin adapter must not create its default table")
}
}