Browse Source

Refactor permission cache key extraction methods for improved clarity and performance

pull/25231/head
maliming 4 weeks ago
parent
commit
d5149b2088
No known key found for this signature in database GPG Key ID: A646B9CB645ECEA4
  1. 7
      modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionGrantCacheItem.cs
  2. 7
      modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/ResourcePermissionGrantCacheItem.cs
  3. 21
      modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/PermissionGrantCacheItem_Tests.cs
  4. 22
      modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/ResourcePermissionGrantCacheItem_Tests.cs

7
modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionGrantCacheItem.cs

@ -1,4 +1,6 @@
using System;
using System.Linq;
using Volo.Abp.Text.Formatting;
namespace Volo.Abp.PermissionManagement;
@ -26,8 +28,7 @@ public class PermissionGrantCacheItem
public static string GetPermissionNameFormCacheKeyOrNull(string cacheKey)
{
const string separator = ",n:";
var index = cacheKey.LastIndexOf(separator, StringComparison.Ordinal);
return index >= 0 ? cacheKey.Substring(index + separator.Length) : null;
var result = FormattedStringValueExtracter.Extract(cacheKey, CacheKeyFormat, true);
return result.IsMatch ? result.Matches.Last().Value : null;
}
}

7
modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/ResourcePermissionGrantCacheItem.cs

@ -1,4 +1,6 @@
using System;
using System.Linq;
using Volo.Abp.Text.Formatting;
namespace Volo.Abp.PermissionManagement;
@ -26,8 +28,7 @@ public class ResourcePermissionGrantCacheItem
public static string GetPermissionNameFormCacheKeyOrNull(string cacheKey)
{
const string separator = ",n:";
var index = cacheKey.LastIndexOf(separator, StringComparison.Ordinal);
return index >= 0 ? cacheKey.Substring(index + separator.Length) : null;
var result = FormattedStringValueExtracter.Extract(cacheKey, CacheKeyFormat, true);
return result.IsMatch ? result.Matches.Last().Value : null;
}
}

21
modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/PermissionGrantCacheItem_Tests.cs

@ -12,25 +12,4 @@ public class PermissionGrantCacheItem_Tests
PermissionGrantCacheItem.GetPermissionNameFormCacheKeyOrNull(key).ShouldBe("aaa");
PermissionGrantCacheItem.GetPermissionNameFormCacheKeyOrNull("aaabbbccc").ShouldBeNull();
}
[Theory]
[InlineData("MyModule.Users.Create", "R", "admin")]
[InlineData("AbpIdentity.Users", "U", "550e8400-e29b-41d4-a716-446655440000")]
[InlineData("Permission.With.Many.Dots", "T", "tenant-key-123")]
[InlineData("Simple", "R", "")]
public void GetPermissionNameFormCacheKeyOrNull_Should_Extract_PermissionName(
string permissionName, string providerName, string providerKey)
{
var key = PermissionGrantCacheItem.CalculateCacheKey(permissionName, providerName, providerKey);
PermissionGrantCacheItem.GetPermissionNameFormCacheKeyOrNull(key).ShouldBe(permissionName);
}
[Theory]
[InlineData("")]
[InlineData("no-separator-here")]
[InlineData("pn:R,pk:admin")]
public void GetPermissionNameFormCacheKeyOrNull_Should_Return_Null_For_Invalid_Keys(string invalidKey)
{
PermissionGrantCacheItem.GetPermissionNameFormCacheKeyOrNull(invalidKey).ShouldBeNull();
}
}

22
modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/ResourcePermissionGrantCacheItem_Tests.cs

@ -12,26 +12,4 @@ public class ResourcePermissionGrantCacheItem_Tests
ResourcePermissionGrantCacheItem.GetPermissionNameFormCacheKeyOrNull(key).ShouldBe("aaa");
ResourcePermissionGrantCacheItem.GetPermissionNameFormCacheKeyOrNull("aaabbbccc").ShouldBeNull();
}
[Theory]
[InlineData("MyModule.Users.Create", "R", "admin")]
[InlineData("AbpIdentity.Users", "U", "550e8400-e29b-41d4-a716-446655440000")]
[InlineData("Permission.With.Many.Dots", "T", "tenant-key-123")]
[InlineData("Simple", "R", "")]
public void GetPermissionNameFormCacheKeyOrNull_Should_Extract_PermissionName(
string permissionName, string providerName, string providerKey)
{
var key = ResourcePermissionGrantCacheItem.CalculateCacheKey(
permissionName, TestEntityResource.ResourceName, TestEntityResource.ResourceKey1, providerName, providerKey);
ResourcePermissionGrantCacheItem.GetPermissionNameFormCacheKeyOrNull(key).ShouldBe(permissionName);
}
[Theory]
[InlineData("")]
[InlineData("no-separator-here")]
[InlineData("rn:res,rk:key,pn:R,pk:admin")]
public void GetPermissionNameFormCacheKeyOrNull_Should_Return_Null_For_Invalid_Keys(string invalidKey)
{
ResourcePermissionGrantCacheItem.GetPermissionNameFormCacheKeyOrNull(invalidKey).ShouldBeNull();
}
}

Loading…
Cancel
Save