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") } }