46 lines
1.0 KiB
Go
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")
|
|
}
|
|
}
|