Browse Source

Add resource permission checker tests and update permission definitions

pull/24374/head
maliming 9 months ago
parent
commit
da995d427c
No known key found for this signature in database GPG Key ID: A646B9CB645ECEA4
  1. 58
      framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/ResourcePermissionChecker_Tests.cs
  2. 18
      framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/TestServices/Resources/AuthorizationTestResourcePermissionDefinitionProvider.cs
  3. 16
      framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/TestServices/Resources/FakeResourcePermissionStore.cs
  4. 10
      framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/TestServices/Resources/TestEntityResource.cs
  5. 8
      framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/TestServices/Resources/TestResourcePermissionValueProvider1.cs
  6. 8
      framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/TestServices/Resources/TestResourcePermissionValueProvider2.cs

58
framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/ResourcePermissionChecker_Tests.cs

@ -0,0 +1,58 @@
using System.Threading.Tasks;
using Shouldly;
using Volo.Abp.Authorization.Permissions;
using Volo.Abp.Authorization.Permissions.Resources;
using Volo.Abp.Authorization.TestServices.Resources;
using Xunit;
namespace Volo.Abp.Authorization;
public class ResourcePermissionChecker_Tests: AuthorizationTestBase
{
private readonly IResourcePermissionChecker _resourcePermissionChecker;
public ResourcePermissionChecker_Tests()
{
_resourcePermissionChecker = GetRequiredService<IResourcePermissionChecker>();
}
[Fact]
public async Task IsGrantedAsync()
{
(await _resourcePermissionChecker.IsGrantedAsync("MyResourcePermission5", TestEntityResource.ResourceName, TestEntityResource.ResourceKey5)).ShouldBe(true);
(await _resourcePermissionChecker.IsGrantedAsync("UndefinedResourcePermission", TestEntityResource.ResourceName, TestEntityResource.ResourceKey5)).ShouldBe(false);
}
[Fact]
public async Task IsGranted_Multiple_Result_Async()
{
var result = await _resourcePermissionChecker.IsGrantedAsync(new []
{
"MyResourcePermission1",
"MyResourcePermission2",
"UndefinedPermission",
"MyResourcePermission3",
"MyResourcePermission4",
"MyResourcePermission5"
}, TestEntityResource.ResourceName, TestEntityResource.ResourceKey5);
result.Result["MyResourcePermission1"].ShouldBe(PermissionGrantResult.Undefined);
result.Result["MyResourcePermission2"].ShouldBe(PermissionGrantResult.Prohibited);
result.Result["UndefinedPermission"].ShouldBe(PermissionGrantResult.Prohibited);
result.Result["MyResourcePermission3"].ShouldBe(PermissionGrantResult.Granted);
result.Result["MyResourcePermission4"].ShouldBe(PermissionGrantResult.Prohibited);
result.Result["MyResourcePermission5"].ShouldBe(PermissionGrantResult.Granted);
result = await _resourcePermissionChecker.IsGrantedAsync(new []
{
"MyResourcePermission6",
}, TestEntityResource.ResourceName, TestEntityResource.ResourceKey6);
result.Result["MyResourcePermission6"].ShouldBe(PermissionGrantResult.Granted);
result = await _resourcePermissionChecker.IsGrantedAsync(new []
{
"MyResourcePermission7",
}, TestEntityResource.ResourceName, TestEntityResource.ResourceKey7);
result.Result["MyResourcePermission7"].ShouldBe(PermissionGrantResult.Granted);
}
}

18
framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/TestServices/Resources/AuthorizationTestResourcePermissionDefinitionProvider.cs

@ -7,17 +7,17 @@ public class AuthorizationTestResourcePermissionDefinitionProvider : PermissionD
{
public override void Define(IPermissionDefinitionContext context)
{
var permission1 = context.AddResourcePermission("MyResourcePermissions1", resourceName: typeof(TestEntityResource).FullName!);
var permission1 = context.AddResourcePermission("MyResourcePermission1", resourceName: TestEntityResource.ResourceName);
permission1.StateCheckers.Add(new TestRequireEditionPermissionSimpleStateChecker());;
permission1[PermissionDefinitionContext.KnownPropertyNames.CurrentProviderName].ShouldBe(typeof(AuthorizationTestResourcePermissionDefinitionProvider).FullName);
context.AddResourcePermission("MyResourcePermissions1", resourceName: typeof(TestEntityResource).FullName!).StateCheckers.Add(new TestRequireEditionPermissionSimpleStateChecker());
context.AddResourcePermission("MyResourcePermissions2", resourceName: typeof(TestEntityResource).FullName!);
context.AddResourcePermission("MyResourcePermissions3", resourceName: typeof(TestEntityResource).FullName!);
context.AddResourcePermission("MyResourcePermissions4", resourceName: typeof(TestEntityResource).FullName!);
context.AddResourcePermission("MyResourcePermissions5", resourceName: typeof(TestEntityResource).FullName!);
context.AddResourcePermission("MyResourcePermissions6", resourceName: typeof(TestEntityResource).FullName!).WithProviders(nameof(TestPermissionValueProvider1));
context.AddResourcePermission("MyResourcePermissions7", resourceName: typeof(TestEntityResource).FullName!).WithProviders(nameof(TestPermissionValueProvider2));
context.AddResourcePermission("MyResourcePermission2", resourceName: typeof(TestEntityResource).FullName!);
context.AddResourcePermission("MyResourcePermission3", resourceName: typeof(TestEntityResource).FullName!);
context.AddResourcePermission("MyResourcePermission4", resourceName: typeof(TestEntityResource).FullName!);
context.AddResourcePermission("MyResourcePermission5", resourceName: typeof(TestEntityResource).FullName!);
context.AddResourcePermission("MyResourcePermission6", resourceName: typeof(TestEntityResource).FullName!).WithProviders(nameof(TestResourcePermissionValueProvider1));
context.AddResourcePermission("MyResourcePermission7", resourceName: typeof(TestEntityResource).FullName!).WithProviders(nameof(TestResourcePermissionValueProvider2));
context.GetResourcePermissionOrNull("MyResourcePermissions1").ShouldNotBeNull();
context.GetResourcePermissionOrNull("MyResourcePermission1").ShouldNotBeNull();
}
}

16
framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/TestServices/Resources/FakeResourcePermissionStore.cs

@ -9,12 +9,24 @@ public class FakeResourcePermissionStore : IResourcePermissionStore, ITransientD
{
public Task<bool> IsGrantedAsync(string name, string resourceName, string resourceKey, string providerName, string providerKey)
{
throw new System.NotImplementedException();
return Task.FromResult((name == "MyResourcePermission3" || name == "MyResourcePermission5") &&
resourceName == TestEntityResource.ResourceName &&
(resourceKey == TestEntityResource.ResourceKey3 || resourceKey == TestEntityResource.ResourceKey5));
}
public Task<MultiplePermissionGrantResult> IsGrantedAsync(string[] names, string resourceName, string resourceKey, string providerName, string providerKey)
{
throw new System.NotImplementedException();
var result = new MultiplePermissionGrantResult();
foreach (var name in names)
{
result.Result.Add(name, (name == "MyResourcePermission3" || name == "MyResourcePermission5" &&
resourceName == TestEntityResource.ResourceName &&
(resourceKey == TestEntityResource.ResourceKey3 || resourceKey == TestEntityResource.ResourceKey5)
? PermissionGrantResult.Granted
: PermissionGrantResult.Prohibited));
}
return Task.FromResult(result);
}
public Task<MultiplePermissionGrantResult> GetPermissionsAsync(string resourceName, string resourceKey)

10
framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/TestServices/Resources/TestEntityResource.cs

@ -1,6 +1,16 @@
using System;
namespace Volo.Abp.Authorization.TestServices.Resources;
public class TestEntityResource
{
public static readonly string ResourceName = typeof(TestEntityResource).FullName;
public static readonly string ResourceKey1 = Guid.NewGuid().ToString();
public static readonly string ResourceKey2 = Guid.NewGuid().ToString();
public static readonly string ResourceKey3 = Guid.NewGuid().ToString();
public static readonly string ResourceKey4 = Guid.NewGuid().ToString();
public static readonly string ResourceKey5 = Guid.NewGuid().ToString();
public static readonly string ResourceKey6 = Guid.NewGuid().ToString();
public static readonly string ResourceKey7 = Guid.NewGuid().ToString();
}

8
framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/TestServices/Resources/TestResourcePermissionValueProvider1.cs

@ -16,7 +16,9 @@ public class TestResourcePermissionValueProvider1 : ResourcePermissionValueProvi
public override Task<PermissionGrantResult> CheckAsync(ResourcePermissionValueCheckContext context)
{
var result = PermissionGrantResult.Undefined;
if (context.Permission.Name == "MyPermission6")
if (context.Permission.Name == "MyResourcePermission6" &&
context.ResourceName == TestEntityResource.ResourceName &&
context.ResourceKey == TestEntityResource.ResourceKey6)
{
result = PermissionGrantResult.Granted;
}
@ -29,7 +31,9 @@ public class TestResourcePermissionValueProvider1 : ResourcePermissionValueProvi
var result = new MultiplePermissionGrantResult();
foreach (var name in context.Permissions.Select(x => x.Name))
{
result.Result.Add(name, name == "MyPermission6"
result.Result.Add(name, name == "MyResourcePermission6" &&
context.ResourceName == TestEntityResource.ResourceName &&
context.ResourceKey == TestEntityResource.ResourceKey6
? PermissionGrantResult.Granted
: PermissionGrantResult.Undefined);
}

8
framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/TestServices/Resources/TestResourcePermissionValueProvider2.cs

@ -16,7 +16,9 @@ public class TestResourcePermissionValueProvider2 : ResourcePermissionValueProvi
public override Task<PermissionGrantResult> CheckAsync(ResourcePermissionValueCheckContext context)
{
var result = PermissionGrantResult.Undefined;
if (context.Permission.Name == "MyPermission7")
if (context.Permission.Name == "MyResourcePermission7" &&
context.ResourceName == TestEntityResource.ResourceName &&
context.ResourceKey == TestEntityResource.ResourceKey7)
{
result = PermissionGrantResult.Granted;
}
@ -29,7 +31,9 @@ public class TestResourcePermissionValueProvider2 : ResourcePermissionValueProvi
var result = new MultiplePermissionGrantResult();
foreach (var name in context.Permissions.Select(x => x.Name))
{
result.Result.Add(name, name == "MyPermission7"
result.Result.Add(name, name == "MyResourcePermission7" &&
context.ResourceName == TestEntityResource.ResourceName &&
context.ResourceKey == TestEntityResource.ResourceKey7
? PermissionGrantResult.Granted
: PermissionGrantResult.Undefined);
}

Loading…
Cancel
Save