feat(store,permissions): схема Фазы 1, доступ к данным и движок прав
- миграция 00002: users, sessions, totp_secrets, webauthn_credentials, security_events, guilds, guild_members, roles, member_roles, channels, channel_overrides, audit_log + дефолтные instance_settings (AGENT.md 6.1) - internal/store: Snowflake-идентификаторы, CRUD пользователей и сессий (ротация, step-up, logout-all), TOTP и события безопасности, серверы, участники, роли, комнаты и оверрайды, настройки инстанса и аудит - internal/permissions: 37 прав битмаской, вычисление по правилам §6.2 (баз role @user → оверрайды ролей → оверрайд пользователя → ADMINISTRATOR), иерархия ролей и участников, тайм-ауты, обход для инстанс-админа, LRU-кэш с инвалидацией - internal/source: адаптер permissions.Source поверх store - тесты: 18 unit-тестов прав + интеграционный набор на реальной SQLite (приватная комната, модератор, владелец, инстанс-админ, тайм-аут) - golangci: обоснованное исключение gosec для пакета store (конверсии Snowflake и сборка SQL из константных шаблонов)
This commit is contained in:
@@ -28,8 +28,8 @@ func TestOpenAppliesPragmasAndMigrates(t *testing.T) {
|
||||
if err != nil {
|
||||
t.Fatalf("SchemaVersion() returned error: %v", err)
|
||||
}
|
||||
if version != 1 {
|
||||
t.Errorf("schema version = %d, want 1", version)
|
||||
if version < 1 {
|
||||
t.Errorf("schema version = %d, want >= 1", version)
|
||||
}
|
||||
|
||||
var foreignKeys int
|
||||
@@ -72,6 +72,15 @@ func TestMigrateIsIdempotent(t *testing.T) {
|
||||
if applied != 1 {
|
||||
t.Errorf("migration 1 applied %d times, want 1", applied)
|
||||
}
|
||||
|
||||
// Baseline-миграция должна применяться ровно один раз, независимо от их числа.
|
||||
version, err := db.SchemaVersion(ctx)
|
||||
if err != nil {
|
||||
t.Fatalf("SchemaVersion: %v", err)
|
||||
}
|
||||
if version < 2 {
|
||||
t.Errorf("schema version = %d, want >= 2 after phase 1 migration", version)
|
||||
}
|
||||
if err := db.Close(); err != nil {
|
||||
t.Fatalf("Close() returned error: %v", err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user