operation_permission_seed_test.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package initialize
  2. import (
  3. "testing"
  4. "github.com/glebarez/sqlite"
  5. "github.com/stretchr/testify/require"
  6. "gorm.io/gorm"
  7. "wails-app/internal/dao"
  8. "wails-app/internal/global"
  9. )
  10. func TestEnsureOperationPermissionsIsIdempotent(t *testing.T) {
  11. db, err := gorm.Open(sqlite.Open(":memory:"), &gorm.Config{})
  12. require.NoError(t, err)
  13. require.NoError(t, db.AutoMigrate(&dao.SysApi{}))
  14. global.GVA_DB = db
  15. t.Cleanup(func() { global.GVA_DB = nil })
  16. require.NoError(t, EnsureOperationPermissions())
  17. require.NoError(t, EnsureOperationPermissions())
  18. routes := [][2]string{
  19. {"/vehicle/entry", "POST"},
  20. {"/vehicle/operation/context", "POST"},
  21. {"/vehicle/passage", "POST"},
  22. {"/channel/events", "GET"},
  23. {"/parking/gate/devices", "GET"},
  24. {"/parking/gate/open", "POST"},
  25. {"/parking/gate/close", "POST"},
  26. }
  27. for _, route := range routes {
  28. var apiCount int64
  29. require.NoError(t, db.Model(&dao.SysApi{}).
  30. Where("path = ? AND method = ?", route[0], route[1]).Count(&apiCount).Error)
  31. require.EqualValues(t, 1, apiCount, route)
  32. var ruleCount int64
  33. require.NoError(t, db.Table("casbin_rule").
  34. Where("v0 IN ? AND v1 = ? AND v2 = ?", []string{"618", "888", "9527"}, route[0], route[1]).
  35. Count(&ruleCount).Error)
  36. require.EqualValues(t, 3, ruleCount, route)
  37. }
  38. }