Browse Source

refactor: extract ApplyPermissionProperties to eliminate duplication and add StateCheckers test

pull/25017/head
maliming 4 weeks ago
parent
commit
0722e74ba1
No known key found for this signature in database GPG Key ID: A646B9CB645ECEA4
  1. 35
      modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/DynamicPermissionDefinitionStoreInMemoryCache.cs
  2. 28
      modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/DynamicPermissionDefinitionStoreInMemoryCache_Tests.cs

35
modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/DynamicPermissionDefinitionStoreInMemoryCache.cs

@ -58,25 +58,7 @@ public class DynamicPermissionDefinitionStoreInMemoryCache :
resourcePermissionRecord.MultiTenancySide, resourcePermissionRecord.MultiTenancySide,
resourcePermissionRecord.IsEnabled); resourcePermissionRecord.IsEnabled);
if (!resourcePermissionRecord.Providers.IsNullOrWhiteSpace()) ApplyPermissionProperties(resourcePermission, resourcePermissionRecord);
{
resourcePermission.Providers.AddRange(resourcePermissionRecord.Providers.Split(','));
}
if (!resourcePermissionRecord.StateCheckers.IsNullOrWhiteSpace())
{
var checkers = StateCheckerSerializer
.DeserializeArray(
resourcePermissionRecord.StateCheckers,
resourcePermission
);
resourcePermission.StateCheckers.AddRange(checkers);
}
foreach (var property in resourcePermissionRecord.ExtraProperties)
{
resourcePermission[property.Key] = property.Value;
}
ResourcePermissionDefinitions.Add(resourcePermission); ResourcePermissionDefinitions.Add(resourcePermission);
} }
@ -146,6 +128,16 @@ public class DynamicPermissionDefinitionStoreInMemoryCache :
PermissionDefinitions[permission.Name] = permission; PermissionDefinitions[permission.Name] = permission;
ApplyPermissionProperties(permission, permissionRecord);
foreach (var subPermission in allPermissionRecords.Where(p => p.ParentName == permissionRecord.Name))
{
AddPermissionRecursively(permission, subPermission, allPermissionRecords);
}
}
private void ApplyPermissionProperties(PermissionDefinition permission, PermissionDefinitionRecord permissionRecord)
{
if (!permissionRecord.Providers.IsNullOrWhiteSpace()) if (!permissionRecord.Providers.IsNullOrWhiteSpace())
{ {
permission.Providers.AddRange(permissionRecord.Providers.Split(',')); permission.Providers.AddRange(permissionRecord.Providers.Split(','));
@ -165,10 +157,5 @@ public class DynamicPermissionDefinitionStoreInMemoryCache :
{ {
permission[property.Key] = property.Value; permission[property.Key] = property.Value;
} }
foreach (var subPermission in allPermissionRecords.Where(p => p.ParentName == permissionRecord.Name))
{
AddPermissionRecursively(permission, subPermission, allPermissionRecords);
}
} }
} }

28
modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/DynamicPermissionDefinitionStoreInMemoryCache_Tests.cs

@ -141,6 +141,34 @@ public class DynamicPermissionDefinitionStoreInMemoryCache_Tests : PermissionTes
_cache.GetResourcePermissionOrNull("TestResource", "RegularPerm1").ShouldBeNull(); _cache.GetResourcePermissionOrNull("TestResource", "RegularPerm1").ShouldBeNull();
} }
[Fact]
public async Task FillAsync_Should_Populate_ResourcePermission_With_StateCheckers()
{
// Arrange
var permissionGroupRecords = new List<PermissionGroupDefinitionRecord>();
var permissionRecords = new List<PermissionDefinitionRecord>
{
new PermissionDefinitionRecord(
Guid.NewGuid(),
groupName: null,
name: "TestResourcePerm3",
resourceName: "TestResource",
managementPermissionName: "TestManagementPerm",
parentName: null,
displayName: "F:Test Resource Permission 3",
stateCheckers: "[{\"T\":\"A\"}]"
)
};
// Act
await _cache.FillAsync(permissionGroupRecords, permissionRecords);
// Assert
var resourcePermission = _cache.GetResourcePermissionOrNull("TestResource", "TestResourcePerm3");
resourcePermission.ShouldNotBeNull();
resourcePermission.StateCheckers.Count.ShouldBe(1);
}
[Fact] [Fact]
public async Task FillAsync_Should_Clear_Previous_ResourcePermissions() public async Task FillAsync_Should_Clear_Previous_ResourcePermissions()
{ {

Loading…
Cancel
Save