Browse Source

Add `ResourcePermissionStore_Tests`

pull/24374/head
maliming 10 months ago
parent
commit
3679b0b4b2
No known key found for this signature in database GPG Key ID: A646B9CB645ECEA4
  1. 2
      framework/src/Volo.Abp.Authorization.Abstractions/Volo/Abp/Authorization/Permissions/Resources/IResourcePermissionStore.cs
  2. 2
      modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/ResourcePermissionStore.cs
  3. 117
      modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/ResourcePermissionStore_Tests.cs

2
framework/src/Volo.Abp.Authorization.Abstractions/Volo/Abp/Authorization/Permissions/Resources/IResourcePermissionStore.cs

@ -49,7 +49,7 @@ public interface IResourcePermissionStore
/// <param name="resourceName">Resource name</param>
/// <param name="resourceKey">Resource key</param>
/// <returns>
/// A dictionary of permission names and their states.
/// A <see cref="MultiplePermissionGrantResult"/> object containing the grant results for each permission.
/// </returns>
Task<MultiplePermissionGrantResult> GetPermissionsAsync(
string resourceName,

2
modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/ResourcePermissionStore.cs

@ -233,7 +233,7 @@ public class ResourcePermissionStore : IResourcePermissionStore, ITransientDepen
public virtual async Task<string[]> GetGrantedResourceKeysAsync(string resourceName, string name)
{
return (await ResourcePermissionGrantRepository.GetResourceKeys(resourceName, name)).Select(x => x.Name).ToArray();
return (await ResourcePermissionGrantRepository.GetResourceKeys(resourceName, name)).Select(x => x.ResourceKey).ToArray();
}
protected virtual string GetPermissionNameFormCacheKeyOrNull(string key)

117
modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/ResourcePermissionStore_Tests.cs

@ -0,0 +1,117 @@
using System.Linq;
using System.Threading.Tasks;
using Shouldly;
using Volo.Abp.Authorization.Permissions;
using Volo.Abp.Authorization.Permissions.Resources;
using Xunit;
namespace Volo.Abp.PermissionManagement;
public class ResourcePermissionStore_Tests : PermissionTestBase
{
private readonly IResourcePermissionStore _resourcePermissionStore;
public ResourcePermissionStore_Tests()
{
_resourcePermissionStore = GetRequiredService<IResourcePermissionStore>();
}
[Fact]
public async Task IsGrantedAsync()
{
(await _resourcePermissionStore.IsGrantedAsync(
"MyResourcePermission1",
TestEntityResource.ResourceName,
TestEntityResource.ResourceKey1,
UserPermissionValueProvider.ProviderName,
PermissionTestDataBuilder.User1Id.ToString())).ShouldBeTrue();
(await _resourcePermissionStore.IsGrantedAsync(
"MyPermission1NotExist",
TestEntityResource.ResourceName,
TestEntityResource.ResourceKey1,
UserPermissionValueProvider.ProviderName,
PermissionTestDataBuilder.User1Id.ToString())).ShouldBeFalse();
}
[Fact]
public async Task IsGranted_Multiple()
{
var result = await _resourcePermissionStore.IsGrantedAsync(
new[] { "MyResourcePermission1", "MyResourcePermission1NotExist" },
TestEntityResource.ResourceName,
TestEntityResource.ResourceKey1,
UserPermissionValueProvider.ProviderName,
PermissionTestDataBuilder.User1Id.ToString());
result.Result.Count.ShouldBe(2);
result.Result.FirstOrDefault(x => x.Key == "MyResourcePermission1").Value.ShouldBe(PermissionGrantResult.Granted);
result.Result.FirstOrDefault(x => x.Key == "MyResourcePermission1NotExist").Value.ShouldBe(PermissionGrantResult.Undefined);
}
[Fact]
public async Task GetPermissionsAsync()
{
var permissions = await _resourcePermissionStore.GetPermissionsAsync(
TestEntityResource.ResourceName,
TestEntityResource.ResourceKey1);
permissions.Result.Count.ShouldBe(10);
permissions.Result.ShouldContain(p => p.Key == "MyResourcePermission1" && p.Value == PermissionGrantResult.Granted);
permissions.Result.ShouldContain(p => p.Key == "MyResourceDisabledPermission1" && p.Value == PermissionGrantResult.Undefined);
permissions.Result.ShouldContain(p => p.Key == "MyResourcePermission2" && p.Value == PermissionGrantResult.Undefined);
permissions.Result.ShouldContain(p => p.Key == "MyResourcePermission3" && p.Value == PermissionGrantResult.Undefined);
permissions.Result.ShouldContain(p => p.Key == "MyResourcePermission4" && p.Value == PermissionGrantResult.Undefined);
permissions.Result.ShouldContain(p => p.Key == "MyResourcePermission5" && p.Value == PermissionGrantResult.Undefined);
permissions.Result.ShouldContain(p => p.Key == "MyResourcePermission6" && p.Value == PermissionGrantResult.Undefined);
permissions.Result.ShouldContain(p => p.Key == "MyResourceDisabledPermission2" && p.Value == PermissionGrantResult.Undefined);
permissions.Result.ShouldContain(p => p.Key == "MyResourcePermission7" && p.Value == PermissionGrantResult.Undefined);
permissions.Result.ShouldContain(p => p.Key == "MyResourcePermission8" && p.Value == PermissionGrantResult.Undefined);
permissions = await _resourcePermissionStore.GetPermissionsAsync(
TestEntityResource.ResourceName,
TestEntityResource.ResourceKey2);
permissions.Result.ShouldAllBe(x => x.Value == PermissionGrantResult.Undefined);
}
[Fact]
public async Task GetGrantedPermissionsAsync()
{
var grantedPermissions = await _resourcePermissionStore.GetGrantedPermissionsAsync(
TestEntityResource.ResourceName,
TestEntityResource.ResourceKey1);
grantedPermissions.Length.ShouldBe(1);
grantedPermissions.ShouldContain("MyResourcePermission1");
grantedPermissions = await _resourcePermissionStore.GetGrantedPermissionsAsync(
TestEntityResource.ResourceName,
TestEntityResource.ResourceKey3);
grantedPermissions.Length.ShouldBe(2);
grantedPermissions.ShouldContain("MyResourcePermission3");
grantedPermissions.ShouldContain("MyResourcePermission5");
}
[Fact]
public async Task GetGrantedResourceKeysAsync()
{
var grantedResourceKeys = await _resourcePermissionStore.GetGrantedResourceKeysAsync(
TestEntityResource.ResourceName,
"MyResourcePermission1");
grantedResourceKeys.Length.ShouldBe(1);
grantedResourceKeys.ShouldContain(TestEntityResource.ResourceKey1);
grantedResourceKeys = await _resourcePermissionStore.GetGrantedResourceKeysAsync(
TestEntityResource.ResourceName,
"MyResourcePermission5");
grantedResourceKeys.Length.ShouldBe(2);
grantedResourceKeys.ShouldContain(TestEntityResource.ResourceKey3);
grantedResourceKeys.ShouldContain(TestEntityResource.ResourceKey5);
}
}
Loading…
Cancel
Save