feat: add backfill for new permissions in super admin role during catalog seeding

This commit is contained in:
2026-07-30 12:29:58 +08:00
parent 96c20a3b1d
commit a9b89f72e9
2 changed files with 55 additions and 0 deletions

View File

@@ -95,6 +95,42 @@ public sealed class BuiltinBackofficeCatalogSeederTests
!dbContext.BackendPermissions.Any(permission => permission.Code == menu.PermissionCode)));
}
[Fact]
public async Task Seed_backfills_new_permissions_for_existing_system_super_admin()
{
using var database = PostgresTestDatabase.Create();
await using var dbContext = CreateDbContext(database.ConnectionString);
var seeder = new BuiltinBackofficeCatalogSeeder(dbContext);
await seeder.SeedAsync();
var role = new PlatformBackendRole
{
Code = PlatformAdminBootstrapper.SuperAdminRoleCode,
Name = "超级管理员",
Status = BackendRoleStatus.Active,
IsSystem = true
};
dbContext.PlatformBackendRoles.Add(role);
dbContext.PlatformBackendRolePermissions.Add(new PlatformBackendRolePermission
{
RoleId = role.Id,
PermissionCode = BackendPermissions.PlatformDashboardView
});
await dbContext.SaveChangesAsync();
dbContext.ChangeTracker.Clear();
await seeder.SeedAsync();
dbContext.ChangeTracker.Clear();
await seeder.SeedAsync();
var permissionCodes = await dbContext.PlatformBackendRolePermissions.AsNoTracking()
.Where(binding => binding.RoleId == role.Id)
.Select(binding => binding.PermissionCode)
.ToArrayAsync();
Assert.Equal(BackendPermissions.Platform.Count, permissionCodes.Length);
Assert.Contains(BackendPermissions.PlatformQuestionBankManage, permissionCodes);
Assert.Equal(BackendPermissions.Platform.Count, permissionCodes.Distinct(StringComparer.Ordinal).Count());
}
private static TikuDbContext CreateDbContext(string connectionString)
{
var options = new DbContextOptionsBuilder<TikuDbContext>()